<?xml version="1.0" encoding="utf-8"?>
<!--
  Group Policy template for 1Start (0101 Inc).
  Copy 1Start.admx to %SystemRoot%\PolicyDefinitions (or the domain Central Store) and
  en-US\1Start.adml to the en-US sub-folder. Settings appear under
  Computer Configuration / User Configuration > Administrative Templates > 0101 > 1Start.
  Values are written to Software\Policies\0101\1Start; computer policy wins over user policy.
  Intune: use the same registry values through a Settings Catalog custom OMA-URI or an ADMX import.
-->
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
  <policyNamespaces>
    <target prefix="onestart" namespace="ZeroOneZeroOne.Policies.OneStart" />
    <using prefix="windows" namespace="Microsoft.Policies.Windows" />
  </policyNamespaces>
  <resources minRequiredRevision="1.0" />
  <supportedOn>
    <definitions>
      <definition name="SUPPORTED_1Start" displayName="$(string.SUPPORTED_1Start)" />
    </definitions>
  </supportedOn>
  <categories>
    <category name="ZeroOneZeroOne" displayName="$(string.Cat_0101)" />
    <category name="OneStart" displayName="$(string.Cat_OneStart)">
      <parentCategory ref="ZeroOneZeroOne" />
    </category>
    <category name="Taskbar" displayName="$(string.Cat_Taskbar)">
      <parentCategory ref="OneStart" />
    </category>
  </categories>
  <policies>

    <!-- ===================== Remote policy ===================== -->
    <policy name="PolicyUrl" class="Both" displayName="$(string.PolicyUrl)" explainText="$(string.PolicyUrl_Help)" presentation="$(presentation.PolicyUrl)" key="Software\Policies\0101\1Start">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <text id="PolicyUrl_Text" valueName="PolicyUrl" required="true" />
        <decimal id="PolicyRefreshMinutes_Dec" valueName="PolicyRefreshMinutes" minValue="1" maxValue="1440" />
      </elements>
    </policy>

    <!-- ===================== Content ===================== -->
    <policy name="SourceFolder" class="Both" displayName="$(string.SourceFolder)" explainText="$(string.SourceFolder_Help)" presentation="$(presentation.SourceFolder)" key="Software\Policies\0101\1Start">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <text id="SourceFolder_Text" valueName="SourceFolder" required="true" />
        <text id="RootFolder_Text" valueName="RootFolder" />
        <decimal id="SyncIntervalMinutes_Dec" valueName="SyncIntervalMinutes" minValue="1" maxValue="1440" />
      </elements>
    </policy>

    <!-- ===================== Branding ===================== -->
    <policy name="Branding" class="Both" displayName="$(string.Branding)" explainText="$(string.Branding_Help)" presentation="$(presentation.Branding)" key="Software\Policies\0101\1Start">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <text id="OrganizationName_Text" valueName="OrganizationName" />
        <text id="OrganizationLogo_Text" valueName="OrganizationLogo" />
        <text id="AccentColor_Text" valueName="AccentColor" />
        <text id="SectionsLabel_Text" valueName="SectionsLabel" />
        <text id="SupportContact_Text" valueName="SupportContact" />
      </elements>
    </policy>

    <!-- ===================== Lockdown (one policy per switch so each can be Enabled/Disabled) ===================== -->
    <policy name="AllowWindowsStart" class="Both" displayName="$(string.AllowWindowsStart)" explainText="$(string.AllowWindowsStart_Help)" key="Software\Policies\0101\1Start" valueName="AllowWindowsStart">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowPowerActions" class="Both" displayName="$(string.AllowPowerActions)" explainText="$(string.AllowPowerActions_Help)" key="Software\Policies\0101\1Start" valueName="AllowPowerActions">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowOpenContentFolder" class="Both" displayName="$(string.AllowOpenContentFolder)" explainText="$(string.AllowOpenContentFolder_Help)" key="Software\Policies\0101\1Start" valueName="AllowOpenContentFolder">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowLayoutSwitch" class="Both" displayName="$(string.AllowLayoutSwitch)" explainText="$(string.AllowLayoutSwitch_Help)" key="Software\Policies\0101\1Start" valueName="AllowLayoutSwitch">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="ShowTrayIcon" class="Both" displayName="$(string.ShowTrayIcon)" explainText="$(string.ShowTrayIcon_Help)" key="Software\Policies\0101\1Start" valueName="ShowTrayIcon">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="SeedSampleContent" class="Both" displayName="$(string.SeedSampleContent)" explainText="$(string.SeedSampleContent_Help)" key="Software\Policies\0101\1Start" valueName="SeedSampleContent">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <enabledValue><decimal value="1" /></enabledValue>
      <disabledValue><decimal value="0" /></disabledValue>
    </policy>

    <!-- ===================== Power and session actions in the menu ===================== -->
    <policy name="AllowShutDown" class="Both" displayName="$(string.AllowShutDown)" explainText="$(string.PowerItem_Help)" key="Software\Policies\0101\1Start" valueName="AllowShutDown">
      <parentCategory ref="OneStart" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowRestart" class="Both" displayName="$(string.AllowRestart)" explainText="$(string.PowerItem_Help)" key="Software\Policies\0101\1Start" valueName="AllowRestart">
      <parentCategory ref="OneStart" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowSleep" class="Both" displayName="$(string.AllowSleep)" explainText="$(string.PowerItem_Help)" key="Software\Policies\0101\1Start" valueName="AllowSleep">
      <parentCategory ref="OneStart" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowSignOut" class="Both" displayName="$(string.AllowSignOut)" explainText="$(string.PowerItem_Help)" key="Software\Policies\0101\1Start" valueName="AllowSignOut">
      <parentCategory ref="OneStart" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="AllowLock" class="Both" displayName="$(string.AllowLock)" explainText="$(string.PowerItem_Help)" key="Software\Policies\0101\1Start" valueName="AllowLock">
      <parentCategory ref="OneStart" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>

    <!-- ===================== Taskbar (applied live per user) ===================== -->
    <policy name="TaskbarSearch" class="Both" displayName="$(string.TaskbarSearch)" explainText="$(string.TaskbarSearch_Help)" presentation="$(presentation.TaskbarSearch)" key="Software\Policies\0101\1Start">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <enum id="TaskbarSearch_Enum" valueName="TaskbarSearch">
          <item displayName="$(string.TaskbarSearch_Hidden)"><value><string>Hidden</string></value></item>
          <item displayName="$(string.TaskbarSearch_Icon)"><value><string>Icon</string></value></item>
          <item displayName="$(string.TaskbarSearch_Box)"><value><string>Box</string></value></item>
          <item displayName="$(string.TaskbarSearch_Label)"><value><string>Label</string></value></item>
        </enum>
      </elements>
    </policy>
    <policy name="TaskbarAlignment" class="Both" displayName="$(string.TaskbarAlignment)" explainText="$(string.TaskbarAlignment_Help)" presentation="$(presentation.TaskbarAlignment)" key="Software\Policies\0101\1Start">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <enum id="TaskbarAlignment_Enum" valueName="TaskbarAlignment">
          <item displayName="$(string.TaskbarAlignment_Left)"><value><string>Left</string></value></item>
          <item displayName="$(string.TaskbarAlignment_Center)"><value><string>Center</string></value></item>
        </enum>
      </elements>
    </policy>
    <policy name="TaskbarTaskView" class="Both" displayName="$(string.TaskbarTaskView)" explainText="$(string.TaskbarLive_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarTaskView">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="TaskbarWidgets" class="Both" displayName="$(string.TaskbarWidgets)" explainText="$(string.TaskbarWidgets_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarWidgets">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="TaskbarCopilot" class="Both" displayName="$(string.TaskbarCopilot)" explainText="$(string.TaskbarLive_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarCopilot">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="TaskbarChat" class="Both" displayName="$(string.TaskbarChat)" explainText="$(string.TaskbarLive_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarChat">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="TaskbarAutoHide" class="Both" displayName="$(string.TaskbarAutoHide)" explainText="$(string.TaskbarLive_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarAutoHide">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="TaskbarLocked" class="Both" displayName="$(string.TaskbarLocked)" explainText="$(string.TaskbarLive_Help)" key="Software\Policies\0101\1Start" valueName="TaskbarLocked">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="BlockedWinShortcuts" class="Both" displayName="$(string.BlockedWinShortcuts)" explainText="$(string.BlockedWinShortcuts_Help)" presentation="$(presentation.BlockedWinShortcuts)" key="Software\Policies\0101\1Start">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" />
      <elements><text id="BlockedWinShortcuts_Text" valueName="BlockedWinShortcuts" required="true" /></elements>
    </policy>
    <policy name="TaskbarPins" class="Both" displayName="$(string.TaskbarPins)" explainText="$(string.TaskbarPins_Help)" presentation="$(presentation.TaskbarPins)" key="Software\Policies\0101\1Start">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" />
      <elements><text id="TaskbarPins_Text" valueName="TaskbarPins" required="true" /></elements>
    </policy>

    <!-- ===================== Taskbar (Windows policy values, applied by the 1Start Agent) ===================== -->
    <policy name="HideClock" class="Both" displayName="$(string.HideClock)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="HideClock">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="HideNotificationArea" class="Both" displayName="$(string.HideNotificationArea)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="HideNotificationArea">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="HideNetworkIcon" class="Both" displayName="$(string.HideNetworkIcon)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="HideNetworkIcon">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="HideVolumeIcon" class="Both" displayName="$(string.HideVolumeIcon)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="HideVolumeIcon">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="HideBatteryIcon" class="Both" displayName="$(string.HideBatteryIcon)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="HideBatteryIcon">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="DisableTaskbarContextMenu" class="Both" displayName="$(string.DisableTaskbarContextMenu)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="DisableTaskbarContextMenu">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="DisableTaskbarSettings" class="Both" displayName="$(string.DisableTaskbarSettings)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="DisableTaskbarSettings">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="DisableRunDialog" class="Both" displayName="$(string.DisableRunDialog)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="DisableRunDialog">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="DisableTaskbarNotifications" class="Both" displayName="$(string.DisableTaskbarNotifications)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="DisableTaskbarNotifications">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="DisableLockWorkstation" class="Both" displayName="$(string.DisableLockWorkstation)" explainText="$(string.TaskbarAgent_Help)" key="Software\Policies\0101\1Start" valueName="DisableLockWorkstation">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="HideWindowsPowerOptions" class="Both" displayName="$(string.HideWindowsPowerOptions)" explainText="$(string.HideWindowsPowerOptions_Help)" key="Software\Policies\0101\1Start" valueName="HideWindowsPowerOptions">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>
    <policy name="RestartExplorerForPolicy" class="Both" displayName="$(string.RestartExplorerForPolicy)" explainText="$(string.RestartExplorerForPolicy_Help)" key="Software\Policies\0101\1Start" valueName="RestartExplorerForPolicy">
      <parentCategory ref="Taskbar" /><supportedOn ref="SUPPORTED_1Start" /><enabledValue><decimal value="1" /></enabledValue><disabledValue><decimal value="0" /></disabledValue>
    </policy>

    <!-- ===================== Admin code ===================== -->
    <policy name="ExitCodeSha256" class="Both" displayName="$(string.ExitCodeSha256)" explainText="$(string.ExitCodeSha256_Help)" presentation="$(presentation.ExitCodeSha256)" key="Software\Policies\0101\1Start">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <text id="ExitCodeSha256_Text" valueName="ExitCodeSha256" required="true" />
      </elements>
    </policy>

    <!-- ===================== Layout ===================== -->
    <policy name="Layout" class="Both" displayName="$(string.Layout)" explainText="$(string.Layout_Help)" presentation="$(presentation.Layout)" key="Software\Policies\0101\1Start">
      <parentCategory ref="OneStart" />
      <supportedOn ref="SUPPORTED_1Start" />
      <elements>
        <enum id="Layout_Enum" valueName="Layout">
          <item displayName="$(string.Layout_Sidebar)"><value><string>Sidebar</string></value></item>
          <item displayName="$(string.Layout_Modern)"><value><string>Modern</string></value></item>
          <item displayName="$(string.Layout_Classic)"><value><string>Classic</string></value></item>
        </enum>
      </elements>
    </policy>

  </policies>
</policyDefinitions>
