From 0fe985b45d221e83ce56aca859a63798d27904dd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 18 May 2026 14:56:59 +0200 Subject: [PATCH] Promote shell to its own top-level directory --- AGENTS.md | 6 +++--- bin/omarchy-shell | 2 +- bin/omarchy-style-bar-position | 2 +- config/systemd/user/omarchy-shell.service | 2 +- default/omarchy-skill/SKILL.md | 7 ++++--- docs/omarchy-shell.md | 2 +- migrations/1779047753.sh | 3 ++- migrations/1779107651.sh | 13 +++++++++++++ .../omarchy-shell => shell}/Commons/Color.qml | 0 .../omarchy-shell => shell}/Commons/Style.qml | 0 .../omarchy-shell => shell}/Commons/qmldir | 0 .../quickshell/omarchy-shell => shell}/README.md | 10 +++++----- .../omarchy-shell => shell}/Ui/ChoiceButton.qml | 0 .../omarchy-shell => shell}/Ui/CursorPill.qml | 0 .../omarchy-shell => shell}/Ui/CursorSurface.qml | 0 .../omarchy-shell => shell}/Ui/Dropdown.qml | 0 .../omarchy-shell => shell}/Ui/KeyboardPanel.qml | 0 .../omarchy-shell => shell}/Ui/NumberField.qml | 0 .../Ui/PanelActionButton.qml | 0 .../omarchy-shell => shell}/Ui/PanelKeyCatcher.qml | 0 .../Ui/PanelSectionHeader.qml | 0 .../omarchy-shell => shell}/Ui/PanelSeparator.qml | 0 .../omarchy-shell => shell}/Ui/PanelSlider.qml | 0 .../omarchy-shell => shell}/Ui/PanelToolTip.qml | 0 .../omarchy-shell => shell}/Ui/PillButton.qml | 0 .../omarchy-shell => shell}/Ui/PopupCard.qml | 0 .../Ui/SearchableDropdown.qml | 0 .../omarchy-shell => shell}/Ui/TextField.qml | 0 .../omarchy-shell => shell}/Ui/Toggle.qml | 0 .../omarchy-shell => shell}/Ui/WidgetButton.qml | 0 .../quickshell/omarchy-shell => shell}/Ui/qmldir | 0 .../omarchy-shell => shell}/plugins/README.md | 0 .../plugins/background/Background.qml | 0 .../plugins/background/manifest.json | 0 .../omarchy-shell => shell}/plugins/bar/Bar.qml | 4 ++-- .../omarchy-shell => shell}/plugins/bar/README.md | 0 .../plugins/bar/manifest.json | 0 .../plugins/bar/widgets/activeWindow.qml | 0 .../plugins/bar/widgets/audioPanel.qml | 0 .../plugins/bar/widgets/bluetoothPanel.qml | 0 .../plugins/bar/widgets/calendar.qml | 0 .../plugins/bar/widgets/idleInhibitor.qml | 0 .../plugins/bar/widgets/keyboardLayout.qml | 0 .../plugins/bar/widgets/lockKeys.qml | 0 .../plugins/bar/widgets/media.qml | 0 .../plugins/bar/widgets/microphone.qml | 0 .../plugins/bar/widgets/monitorPanel.qml | 0 .../plugins/bar/widgets/networkPanel.qml | 0 .../plugins/bar/widgets/notificationCenter.qml | 0 .../plugins/bar/widgets/spacer.qml | 0 .../plugins/bar/widgets/systemStats.qml | 0 .../plugins/bar/widgets/weatherFlyout.qml | 2 +- .../plugins/clipboard-picker/ClipboardPicker.qml | 0 .../plugins/clipboard-picker/manifest.json | 0 .../plugins/dev-gallery/GalleryPanel.qml | 0 .../plugins/dev-gallery/manifest.json | 0 .../plugins/emoji-picker/EmojiPicker.qml | 2 +- .../plugins/emoji-picker/emojis.json | 0 .../plugins/emoji-picker/manifest.json | 0 .../plugins/image-picker/ImagePicker.qml | 2 +- .../plugins/image-picker/manifest.json | 0 .../omarchy-shell => shell}/plugins/menu/Menu.qml | 0 .../plugins/menu/manifest.json | 0 .../plugins/notifications/Service.qml | 0 .../notifications/components/NotificationCard.qml | 0 .../plugins/notifications/manifest.json | 0 .../omarchy-shell => shell}/plugins/osd/Osd.qml | 0 .../plugins/osd/manifest.json | 0 .../plugins/polkit/PolkitAgent.qml | 0 .../plugins/polkit/manifest.json | 0 .../plugins/settings/SettingsPanel.qml | 9 ++++++--- .../plugins/settings/components/NDropdown.qml | 0 .../plugins/settings/manifest.json | 0 .../scripts/image-picker-list.sh | 0 .../scripts/indicators/idle.sh | 0 .../scripts/indicators/notification-silencing.sh | 0 .../scripts/indicators/screen-recording.sh | 0 .../omarchy-shell => shell}/scripts/weather.sh | 0 .../services/BarWidgetRegistry.qml | 0 .../services/PluginRegistry.qml | 0 .../omarchy-shell => shell}/shell-defaults.json | 0 .../quickshell/omarchy-shell => shell}/shell.qml | 12 ++++++++---- .../ui/settings/DynamicSettingsForm.qml | 0 83 files changed, 50 insertions(+), 28 deletions(-) create mode 100644 migrations/1779107651.sh rename {default/quickshell/omarchy-shell => shell}/Commons/Color.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Commons/Style.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Commons/qmldir (100%) rename {default/quickshell/omarchy-shell => shell}/README.md (96%) rename {default/quickshell/omarchy-shell => shell}/Ui/ChoiceButton.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/CursorPill.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/CursorSurface.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/Dropdown.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/KeyboardPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/NumberField.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelActionButton.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelKeyCatcher.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelSectionHeader.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelSeparator.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelSlider.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PanelToolTip.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PillButton.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/PopupCard.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/SearchableDropdown.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/TextField.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/Toggle.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/WidgetButton.qml (100%) rename {default/quickshell/omarchy-shell => shell}/Ui/qmldir (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/README.md (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/background/Background.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/background/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/Bar.qml (99%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/README.md (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/activeWindow.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/audioPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/bluetoothPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/calendar.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/idleInhibitor.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/keyboardLayout.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/lockKeys.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/media.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/microphone.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/monitorPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/networkPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/notificationCenter.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/spacer.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/systemStats.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/bar/widgets/weatherFlyout.qml (99%) rename {default/quickshell/omarchy-shell => shell}/plugins/clipboard-picker/ClipboardPicker.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/clipboard-picker/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/dev-gallery/GalleryPanel.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/dev-gallery/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/emoji-picker/EmojiPicker.qml (99%) rename {default/quickshell/omarchy-shell => shell}/plugins/emoji-picker/emojis.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/emoji-picker/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/image-picker/ImagePicker.qml (99%) rename {default/quickshell/omarchy-shell => shell}/plugins/image-picker/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/menu/Menu.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/menu/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/notifications/Service.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/notifications/components/NotificationCard.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/notifications/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/osd/Osd.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/osd/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/polkit/PolkitAgent.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/polkit/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/settings/SettingsPanel.qml (99%) rename {default/quickshell/omarchy-shell => shell}/plugins/settings/components/NDropdown.qml (100%) rename {default/quickshell/omarchy-shell => shell}/plugins/settings/manifest.json (100%) rename {default/quickshell/omarchy-shell => shell}/scripts/image-picker-list.sh (100%) rename {default/quickshell/omarchy-shell => shell}/scripts/indicators/idle.sh (100%) rename {default/quickshell/omarchy-shell => shell}/scripts/indicators/notification-silencing.sh (100%) rename {default/quickshell/omarchy-shell => shell}/scripts/indicators/screen-recording.sh (100%) rename {default/quickshell/omarchy-shell => shell}/scripts/weather.sh (100%) rename {default/quickshell/omarchy-shell => shell}/services/BarWidgetRegistry.qml (100%) rename {default/quickshell/omarchy-shell => shell}/services/PluginRegistry.qml (100%) rename {default/quickshell/omarchy-shell => shell}/shell-defaults.json (100%) rename {default/quickshell/omarchy-shell => shell}/shell.qml (97%) rename {default/quickshell/omarchy-shell => shell}/ui/settings/DynamicSettingsForm.qml (100%) diff --git a/AGENTS.md b/AGENTS.md index 26cf032e..5e227ff2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -107,7 +107,7 @@ When testing layer-shell UI, capture the reference and candidate states as separ # Omarchy shell The Quickshell desktop runs as a single long-running process out of -`default/quickshell/omarchy-shell/`. The `omarchy-shell.service` user unit +`shell/`. The `omarchy-shell.service` user unit keeps it running for the graphical session; do not start additional standalone `quickshell -p` instances for individual components. @@ -116,7 +116,7 @@ Run `omarchy-restart-shell` after making changes to QML files. Plugin contract: - Each plugin lives in its own directory under - `default/quickshell/omarchy-shell/plugins//` (first-party) or + `shell/plugins//` (first-party) or `~/.config/omarchy/plugins//` (third-party). - Every plugin ships a `manifest.json` declaring `id`, `kinds`, `activation`, and `entryPoints`. The full schema is in @@ -137,7 +137,7 @@ IPC: plugins can register additional IPC targets (the bar registers `bar`, the background switcher registers `image-selector`). -Widget files in `plugins/bar/widgets/` contain Nerd Font glyphs as raw +Widget files in `shell/plugins/bar/widgets/` contain Nerd Font glyphs as raw unicode characters. The `Write` and `Edit` tools strip multi-byte codepoints in some positions — do **not** rewrite widget files wholesale through those tools. For glyph fixes, use the targeted `Edit` tool with diff --git a/bin/omarchy-shell b/bin/omarchy-shell index 128d5d2f..213f1461 100755 --- a/bin/omarchy-shell +++ b/bin/omarchy-shell @@ -30,7 +30,7 @@ if [[ -z ${OMARCHY_PATH:-} ]]; then exit 1 fi -SHELL_QML="$OMARCHY_PATH/default/quickshell/omarchy-shell/shell.qml" +SHELL_QML="$OMARCHY_PATH/shell/shell.qml" perl -MCwd=abs_path -MEncode=encode,decode -MSocket -MIO::Handle \ -e ' diff --git a/bin/omarchy-style-bar-position b/bin/omarchy-style-bar-position index a6fe127d..a5dd4317 100755 --- a/bin/omarchy-style-bar-position +++ b/bin/omarchy-style-bar-position @@ -7,7 +7,7 @@ set -e CONFIG_FILE="$HOME/.config/omarchy/shell.json" -DEFAULTS_FILE="$OMARCHY_PATH/default/quickshell/omarchy-shell/shell-defaults.json" +DEFAULTS_FILE="$OMARCHY_PATH/shell/shell-defaults.json" position=$1 if [[ ! $position =~ ^(top|bottom|left|right)$ ]]; then diff --git a/config/systemd/user/omarchy-shell.service b/config/systemd/user/omarchy-shell.service index 30fc93e6..96fd1a31 100644 --- a/config/systemd/user/omarchy-shell.service +++ b/config/systemd/user/omarchy-shell.service @@ -8,7 +8,7 @@ StartLimitBurst=5 [Service] Type=exec Environment=OMARCHY_PATH=%h/.local/share/omarchy -ExecStart=/usr/bin/quickshell -p %h/.local/share/omarchy/default/quickshell/omarchy-shell +ExecStart=/usr/bin/quickshell -p %h/.local/share/omarchy/shell Restart=always RestartSec=2 Slice=session-graphical.slice diff --git a/default/omarchy-skill/SKILL.md b/default/omarchy-skill/SKILL.md index 6f2d96a6..7d84b279 100644 --- a/default/omarchy-skill/SKILL.md +++ b/default/omarchy-skill/SKILL.md @@ -51,13 +51,14 @@ This directory contains Omarchy's source files managed by git. Any changes will ├── config/ # Default config templates ├── themes/ # Stock themes ├── default/ # System defaults +├── shell/ # Omarchy shell source and defaults ├── migrations/ # Update migrations └── install/ # Installation scripts ``` **Reading `~/.local/share/omarchy/` is SAFE and useful** - do it freely to: - Understand how omarchy commands work: `omarchy theme set --help` or `cat $(which omarchy-theme-set)` -- See default configs before customizing: `cat ~/.local/share/omarchy/default/quickshell/omarchy-shell/shell-defaults.json` +- See default configs before customizing: `cat ~/.local/share/omarchy/shell/shell-defaults.json` - Check stock theme files to copy for customization - Reference default hyprland settings: `cat ~/.local/share/omarchy/default/hypr/*` @@ -154,7 +155,7 @@ inside a single long-running Quickshell process (`omarchy-shell`). ``` ~/.config/omarchy/shell.json # User overrides: bar.position, bar.layout, plugins[] -~/.local/share/omarchy/default/quickshell/omarchy-shell/shell-defaults.json # Canonical defaults +~/.local/share/omarchy/shell/shell-defaults.json # Canonical defaults ``` The shell hot-reloads `shell.json` on save — no restart needed for layout @@ -375,7 +376,7 @@ omarchy reminder clear ## Out of Scope This skill intentionally does not cover Omarchy source development. Do not use this skill for: -- Editing files in `~/.local/share/omarchy/` (`bin/`, `config/`, `default/`, `themes/`, `migrations/`, etc.) +- Editing files in `~/.local/share/omarchy/` (`bin/`, `config/`, `default/`, `shell/`, `themes/`, `migrations/`, etc.) - Creating or editing migrations - Running `omarchy dev ...` commands diff --git a/docs/omarchy-shell.md b/docs/omarchy-shell.md index a0ea4e6f..338e55f5 100644 --- a/docs/omarchy-shell.md +++ b/docs/omarchy-shell.md @@ -36,7 +36,7 @@ first call. (loaded by `shell summon`, unloaded by `shell hide`). On-demand plugins can set `keepLoaded: true` to survive between summons. -Full schema: `services/PluginRegistry.qml`. +Full schema: [`shell/services/PluginRegistry.qml`](../shell/services/PluginRegistry.qml). ## Installing a third-party plugin diff --git a/migrations/1779047753.sh b/migrations/1779047753.sh index 4ba65754..7222788b 100644 --- a/migrations/1779047753.sh +++ b/migrations/1779047753.sh @@ -10,7 +10,8 @@ for file in ~/.config/hypr/bindings.lua ~/.config/hypr/bindings/*.lua; do done if ! systemctl --user is-active --quiet omarchy-shell.service && omarchy-cmd-present quickshell; then - quickshell kill -p "$OMARCHY_PATH/default/quickshell/omarchy-shell" >/dev/null 2>&1 || true + quickshell kill -p "$OMARCHY_PATH/shell" >/dev/null 2>&1 || true + quickshell kill -p "$OMARCHY_PATH/default/quickshell"/omarchy-shell >/dev/null 2>&1 || true fi systemctl --user enable --now omarchy-shell.service || true diff --git a/migrations/1779107651.sh b/migrations/1779107651.sh new file mode 100644 index 00000000..4f492f3e --- /dev/null +++ b/migrations/1779107651.sh @@ -0,0 +1,13 @@ +echo "Move omarchy-shell to the top-level shell directory" + +mkdir -p ~/.config/systemd/user +cp "$OMARCHY_PATH/config/systemd/user/omarchy-shell.service" ~/.config/systemd/user/omarchy-shell.service +systemctl --user daemon-reload + +if omarchy-cmd-present quickshell; then + quickshell kill -p "$OMARCHY_PATH/default/quickshell"/omarchy-shell >/dev/null 2>&1 || true +fi + +if systemctl --user is-enabled --quiet omarchy-shell.service || systemctl --user is-active --quiet omarchy-shell.service; then + systemctl --user restart omarchy-shell.service || true +fi diff --git a/default/quickshell/omarchy-shell/Commons/Color.qml b/shell/Commons/Color.qml similarity index 100% rename from default/quickshell/omarchy-shell/Commons/Color.qml rename to shell/Commons/Color.qml diff --git a/default/quickshell/omarchy-shell/Commons/Style.qml b/shell/Commons/Style.qml similarity index 100% rename from default/quickshell/omarchy-shell/Commons/Style.qml rename to shell/Commons/Style.qml diff --git a/default/quickshell/omarchy-shell/Commons/qmldir b/shell/Commons/qmldir similarity index 100% rename from default/quickshell/omarchy-shell/Commons/qmldir rename to shell/Commons/qmldir diff --git a/default/quickshell/omarchy-shell/README.md b/shell/README.md similarity index 96% rename from default/quickshell/omarchy-shell/README.md rename to shell/README.md index b81af154..652c9435 100644 --- a/default/quickshell/omarchy-shell/README.md +++ b/shell/README.md @@ -14,10 +14,10 @@ Hosting everything inside one shell means: - third-party plugins can be loaded from disk without changing any source code in Omarchy itself -The runtime layout in this branch: +The runtime layout: ``` -default/quickshell/omarchy-shell/ +shell/ shell.qml entry point (ShellRoot) shell-defaults.json canonical out-of-the-box config services/ @@ -94,7 +94,7 @@ The full schema lives in `services/PluginRegistry.qml`. 3. Enable the plugin with `omarchy-shell shell setPluginEnabled true`. 4. If it's a `bar-widget`, add it to a layout section from the bar editor. -First-party plugins under `default/quickshell/omarchy-shell/plugins/` +First-party plugins under `shell/plugins/` are discovered the same way and cannot be disabled. ## IPC contract @@ -118,14 +118,14 @@ running a separate Quickshell instance. Direct invocation: ``` -quickshell ipc -p $OMARCHY_PATH/default/quickshell/omarchy-shell call shell ping +quickshell ipc -p $OMARCHY_PATH/shell call shell ping ``` The `omarchy-shell.service` user unit starts the shell for the graphical session and restarts it if it exits. Use `omarchy-restart-shell` to reload the long-running shell process. -A convenience wrapper, [`omarchy-shell`](../../../bin/omarchy-shell), +A convenience wrapper, [`omarchy-shell`](../bin/omarchy-shell), forwards IPC calls to the running service. It does not start the shell; the systemd unit owns the shell lifecycle. diff --git a/default/quickshell/omarchy-shell/Ui/ChoiceButton.qml b/shell/Ui/ChoiceButton.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/ChoiceButton.qml rename to shell/Ui/ChoiceButton.qml diff --git a/default/quickshell/omarchy-shell/Ui/CursorPill.qml b/shell/Ui/CursorPill.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/CursorPill.qml rename to shell/Ui/CursorPill.qml diff --git a/default/quickshell/omarchy-shell/Ui/CursorSurface.qml b/shell/Ui/CursorSurface.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/CursorSurface.qml rename to shell/Ui/CursorSurface.qml diff --git a/default/quickshell/omarchy-shell/Ui/Dropdown.qml b/shell/Ui/Dropdown.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/Dropdown.qml rename to shell/Ui/Dropdown.qml diff --git a/default/quickshell/omarchy-shell/Ui/KeyboardPanel.qml b/shell/Ui/KeyboardPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/KeyboardPanel.qml rename to shell/Ui/KeyboardPanel.qml diff --git a/default/quickshell/omarchy-shell/Ui/NumberField.qml b/shell/Ui/NumberField.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/NumberField.qml rename to shell/Ui/NumberField.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelActionButton.qml b/shell/Ui/PanelActionButton.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelActionButton.qml rename to shell/Ui/PanelActionButton.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelKeyCatcher.qml b/shell/Ui/PanelKeyCatcher.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelKeyCatcher.qml rename to shell/Ui/PanelKeyCatcher.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelSectionHeader.qml b/shell/Ui/PanelSectionHeader.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelSectionHeader.qml rename to shell/Ui/PanelSectionHeader.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelSeparator.qml b/shell/Ui/PanelSeparator.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelSeparator.qml rename to shell/Ui/PanelSeparator.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelSlider.qml b/shell/Ui/PanelSlider.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelSlider.qml rename to shell/Ui/PanelSlider.qml diff --git a/default/quickshell/omarchy-shell/Ui/PanelToolTip.qml b/shell/Ui/PanelToolTip.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PanelToolTip.qml rename to shell/Ui/PanelToolTip.qml diff --git a/default/quickshell/omarchy-shell/Ui/PillButton.qml b/shell/Ui/PillButton.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PillButton.qml rename to shell/Ui/PillButton.qml diff --git a/default/quickshell/omarchy-shell/Ui/PopupCard.qml b/shell/Ui/PopupCard.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/PopupCard.qml rename to shell/Ui/PopupCard.qml diff --git a/default/quickshell/omarchy-shell/Ui/SearchableDropdown.qml b/shell/Ui/SearchableDropdown.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/SearchableDropdown.qml rename to shell/Ui/SearchableDropdown.qml diff --git a/default/quickshell/omarchy-shell/Ui/TextField.qml b/shell/Ui/TextField.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/TextField.qml rename to shell/Ui/TextField.qml diff --git a/default/quickshell/omarchy-shell/Ui/Toggle.qml b/shell/Ui/Toggle.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/Toggle.qml rename to shell/Ui/Toggle.qml diff --git a/default/quickshell/omarchy-shell/Ui/WidgetButton.qml b/shell/Ui/WidgetButton.qml similarity index 100% rename from default/quickshell/omarchy-shell/Ui/WidgetButton.qml rename to shell/Ui/WidgetButton.qml diff --git a/default/quickshell/omarchy-shell/Ui/qmldir b/shell/Ui/qmldir similarity index 100% rename from default/quickshell/omarchy-shell/Ui/qmldir rename to shell/Ui/qmldir diff --git a/default/quickshell/omarchy-shell/plugins/README.md b/shell/plugins/README.md similarity index 100% rename from default/quickshell/omarchy-shell/plugins/README.md rename to shell/plugins/README.md diff --git a/default/quickshell/omarchy-shell/plugins/background/Background.qml b/shell/plugins/background/Background.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/background/Background.qml rename to shell/plugins/background/Background.qml diff --git a/default/quickshell/omarchy-shell/plugins/background/manifest.json b/shell/plugins/background/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/background/manifest.json rename to shell/plugins/background/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/bar/Bar.qml b/shell/plugins/bar/Bar.qml similarity index 99% rename from default/quickshell/omarchy-shell/plugins/bar/Bar.qml rename to shell/plugins/bar/Bar.qml index 45218a84..1baaf84e 100644 --- a/default/quickshell/omarchy-shell/plugins/bar/Bar.qml +++ b/shell/plugins/bar/Bar.qml @@ -577,7 +577,7 @@ Item { Process { id: screenRecordingProc - command: ["bash", "-lc", root.commandWithOmarchyPath(root.shellQuote(root.omarchyPath + "/default/quickshell/omarchy-shell/scripts/indicators/screen-recording.sh"))] + command: ["bash", "-lc", root.commandWithOmarchyPath(root.shellQuote(root.omarchyPath + "/shell/scripts/indicators/screen-recording.sh"))] stdout: StdioCollector { waitForEnd: true onStreamFinished: root.updateIndicator("screenRecording", text) @@ -586,7 +586,7 @@ Item { Process { id: notificationSilencingProc - command: ["bash", "-lc", root.commandWithOmarchyPath(root.shellQuote(root.omarchyPath + "/default/quickshell/omarchy-shell/scripts/indicators/notification-silencing.sh"))] + command: ["bash", "-lc", root.commandWithOmarchyPath(root.shellQuote(root.omarchyPath + "/shell/scripts/indicators/notification-silencing.sh"))] stdout: StdioCollector { waitForEnd: true onStreamFinished: root.updateIndicator("notifications", text) diff --git a/default/quickshell/omarchy-shell/plugins/bar/README.md b/shell/plugins/bar/README.md similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/README.md rename to shell/plugins/bar/README.md diff --git a/default/quickshell/omarchy-shell/plugins/bar/manifest.json b/shell/plugins/bar/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/manifest.json rename to shell/plugins/bar/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/activeWindow.qml b/shell/plugins/bar/widgets/activeWindow.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/activeWindow.qml rename to shell/plugins/bar/widgets/activeWindow.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/audioPanel.qml b/shell/plugins/bar/widgets/audioPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/audioPanel.qml rename to shell/plugins/bar/widgets/audioPanel.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/bluetoothPanel.qml b/shell/plugins/bar/widgets/bluetoothPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/bluetoothPanel.qml rename to shell/plugins/bar/widgets/bluetoothPanel.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/calendar.qml b/shell/plugins/bar/widgets/calendar.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/calendar.qml rename to shell/plugins/bar/widgets/calendar.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/idleInhibitor.qml b/shell/plugins/bar/widgets/idleInhibitor.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/idleInhibitor.qml rename to shell/plugins/bar/widgets/idleInhibitor.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/keyboardLayout.qml b/shell/plugins/bar/widgets/keyboardLayout.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/keyboardLayout.qml rename to shell/plugins/bar/widgets/keyboardLayout.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/lockKeys.qml b/shell/plugins/bar/widgets/lockKeys.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/lockKeys.qml rename to shell/plugins/bar/widgets/lockKeys.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/media.qml b/shell/plugins/bar/widgets/media.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/media.qml rename to shell/plugins/bar/widgets/media.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/microphone.qml b/shell/plugins/bar/widgets/microphone.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/microphone.qml rename to shell/plugins/bar/widgets/microphone.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/monitorPanel.qml b/shell/plugins/bar/widgets/monitorPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/monitorPanel.qml rename to shell/plugins/bar/widgets/monitorPanel.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/networkPanel.qml b/shell/plugins/bar/widgets/networkPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/networkPanel.qml rename to shell/plugins/bar/widgets/networkPanel.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/notificationCenter.qml b/shell/plugins/bar/widgets/notificationCenter.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/notificationCenter.qml rename to shell/plugins/bar/widgets/notificationCenter.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/spacer.qml b/shell/plugins/bar/widgets/spacer.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/spacer.qml rename to shell/plugins/bar/widgets/spacer.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/systemStats.qml b/shell/plugins/bar/widgets/systemStats.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/systemStats.qml rename to shell/plugins/bar/widgets/systemStats.qml diff --git a/default/quickshell/omarchy-shell/plugins/bar/widgets/weatherFlyout.qml b/shell/plugins/bar/widgets/weatherFlyout.qml similarity index 99% rename from default/quickshell/omarchy-shell/plugins/bar/widgets/weatherFlyout.qml rename to shell/plugins/bar/widgets/weatherFlyout.qml index cb1b3c11..94c15197 100644 --- a/default/quickshell/omarchy-shell/plugins/bar/widgets/weatherFlyout.qml +++ b/shell/plugins/bar/widgets/weatherFlyout.qml @@ -548,7 +548,7 @@ Item { // Poll the weather pill text/class every minute. Local to this widget. Process { id: weatherProc - command: ["bash", "-lc", root.bar ? root.bar.commandWithOmarchyPath(root.bar.shellQuote(root.bar.omarchyPath + "/default/quickshell/omarchy-shell/scripts/weather.sh")) : ""] + command: ["bash", "-lc", root.bar ? root.bar.commandWithOmarchyPath(root.bar.shellQuote(root.bar.omarchyPath + "/shell/scripts/weather.sh")) : ""] stdout: StdioCollector { waitForEnd: true onStreamFinished: root.updateWeather(text) diff --git a/default/quickshell/omarchy-shell/plugins/clipboard-picker/ClipboardPicker.qml b/shell/plugins/clipboard-picker/ClipboardPicker.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/clipboard-picker/ClipboardPicker.qml rename to shell/plugins/clipboard-picker/ClipboardPicker.qml diff --git a/default/quickshell/omarchy-shell/plugins/clipboard-picker/manifest.json b/shell/plugins/clipboard-picker/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/clipboard-picker/manifest.json rename to shell/plugins/clipboard-picker/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/dev-gallery/GalleryPanel.qml b/shell/plugins/dev-gallery/GalleryPanel.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/dev-gallery/GalleryPanel.qml rename to shell/plugins/dev-gallery/GalleryPanel.qml diff --git a/default/quickshell/omarchy-shell/plugins/dev-gallery/manifest.json b/shell/plugins/dev-gallery/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/dev-gallery/manifest.json rename to shell/plugins/dev-gallery/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml b/shell/plugins/emoji-picker/EmojiPicker.qml similarity index 99% rename from default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml rename to shell/plugins/emoji-picker/EmojiPicker.qml index 39fbff0d..0f38c648 100644 --- a/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml +++ b/shell/plugins/emoji-picker/EmojiPicker.qml @@ -152,7 +152,7 @@ Item { } FileView { - path: root.omarchyPath + "/default/quickshell/omarchy-shell/plugins/emoji-picker/emojis.json" + path: root.omarchyPath + "/shell/plugins/emoji-picker/emojis.json" onLoaded: root.loadEmojis(text()) } PanelWindow { diff --git a/default/quickshell/omarchy-shell/plugins/emoji-picker/emojis.json b/shell/plugins/emoji-picker/emojis.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/emoji-picker/emojis.json rename to shell/plugins/emoji-picker/emojis.json diff --git a/default/quickshell/omarchy-shell/plugins/emoji-picker/manifest.json b/shell/plugins/emoji-picker/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/emoji-picker/manifest.json rename to shell/plugins/emoji-picker/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/image-picker/ImagePicker.qml b/shell/plugins/image-picker/ImagePicker.qml similarity index 99% rename from default/quickshell/omarchy-shell/plugins/image-picker/ImagePicker.qml rename to shell/plugins/image-picker/ImagePicker.qml index 56a5c790..e1ce47d0 100644 --- a/default/quickshell/omarchy-shell/plugins/image-picker/ImagePicker.qml +++ b/shell/plugins/image-picker/ImagePicker.qml @@ -61,7 +61,7 @@ Item { function scriptPath(name) { var base = omarchyPath || Quickshell.env("OMARCHY_PATH") || (Quickshell.env("HOME") + "/.local/share/omarchy") - return base + "/default/quickshell/omarchy-shell/scripts/" + name + return base + "/shell/scripts/" + name } function focusPicker() { diff --git a/default/quickshell/omarchy-shell/plugins/image-picker/manifest.json b/shell/plugins/image-picker/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/image-picker/manifest.json rename to shell/plugins/image-picker/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/menu/Menu.qml b/shell/plugins/menu/Menu.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/menu/Menu.qml rename to shell/plugins/menu/Menu.qml diff --git a/default/quickshell/omarchy-shell/plugins/menu/manifest.json b/shell/plugins/menu/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/menu/manifest.json rename to shell/plugins/menu/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/notifications/Service.qml b/shell/plugins/notifications/Service.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/notifications/Service.qml rename to shell/plugins/notifications/Service.qml diff --git a/default/quickshell/omarchy-shell/plugins/notifications/components/NotificationCard.qml b/shell/plugins/notifications/components/NotificationCard.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/notifications/components/NotificationCard.qml rename to shell/plugins/notifications/components/NotificationCard.qml diff --git a/default/quickshell/omarchy-shell/plugins/notifications/manifest.json b/shell/plugins/notifications/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/notifications/manifest.json rename to shell/plugins/notifications/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/osd/Osd.qml b/shell/plugins/osd/Osd.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/osd/Osd.qml rename to shell/plugins/osd/Osd.qml diff --git a/default/quickshell/omarchy-shell/plugins/osd/manifest.json b/shell/plugins/osd/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/osd/manifest.json rename to shell/plugins/osd/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/polkit/PolkitAgent.qml b/shell/plugins/polkit/PolkitAgent.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/polkit/PolkitAgent.qml rename to shell/plugins/polkit/PolkitAgent.qml diff --git a/default/quickshell/omarchy-shell/plugins/polkit/manifest.json b/shell/plugins/polkit/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/polkit/manifest.json rename to shell/plugins/polkit/manifest.json diff --git a/default/quickshell/omarchy-shell/plugins/settings/SettingsPanel.qml b/shell/plugins/settings/SettingsPanel.qml similarity index 99% rename from default/quickshell/omarchy-shell/plugins/settings/SettingsPanel.qml rename to shell/plugins/settings/SettingsPanel.qml index 847e67e6..f4802c73 100644 --- a/default/quickshell/omarchy-shell/plugins/settings/SettingsPanel.qml +++ b/shell/plugins/settings/SettingsPanel.qml @@ -37,13 +37,16 @@ Item { var env = Quickshell.env("OMARCHY_PATH") if (env) return env var dir = String(Quickshell.shellDir || "") - if (dir.indexOf("/default/quickshell/omarchy-shell") !== -1) - return dir.substring(0, dir.indexOf("/default/quickshell/omarchy-shell")) + while (dir.length > 1 && dir.charAt(dir.length - 1) === "/") + dir = dir.substring(0, dir.length - 1) + var suffix = "/shell" + if (dir.length > suffix.length && dir.substring(dir.length - suffix.length) === suffix) + return dir.substring(0, dir.length - suffix.length) return Quickshell.env("HOME") + "/.local/share/omarchy" } readonly property string home: Quickshell.env("HOME") readonly property string userConfigPath: home + "/.config/omarchy/shell.json" - readonly property string defaultsPath: omarchyPath + "/default/quickshell/omarchy-shell/shell-defaults.json" + readonly property string defaultsPath: omarchyPath + "/shell/shell-defaults.json" // ---------------- theme -------------------------------------------------- // Bar settings deliberately isn't a themable surface in shell.toml — it diff --git a/default/quickshell/omarchy-shell/plugins/settings/components/NDropdown.qml b/shell/plugins/settings/components/NDropdown.qml similarity index 100% rename from default/quickshell/omarchy-shell/plugins/settings/components/NDropdown.qml rename to shell/plugins/settings/components/NDropdown.qml diff --git a/default/quickshell/omarchy-shell/plugins/settings/manifest.json b/shell/plugins/settings/manifest.json similarity index 100% rename from default/quickshell/omarchy-shell/plugins/settings/manifest.json rename to shell/plugins/settings/manifest.json diff --git a/default/quickshell/omarchy-shell/scripts/image-picker-list.sh b/shell/scripts/image-picker-list.sh similarity index 100% rename from default/quickshell/omarchy-shell/scripts/image-picker-list.sh rename to shell/scripts/image-picker-list.sh diff --git a/default/quickshell/omarchy-shell/scripts/indicators/idle.sh b/shell/scripts/indicators/idle.sh similarity index 100% rename from default/quickshell/omarchy-shell/scripts/indicators/idle.sh rename to shell/scripts/indicators/idle.sh diff --git a/default/quickshell/omarchy-shell/scripts/indicators/notification-silencing.sh b/shell/scripts/indicators/notification-silencing.sh similarity index 100% rename from default/quickshell/omarchy-shell/scripts/indicators/notification-silencing.sh rename to shell/scripts/indicators/notification-silencing.sh diff --git a/default/quickshell/omarchy-shell/scripts/indicators/screen-recording.sh b/shell/scripts/indicators/screen-recording.sh similarity index 100% rename from default/quickshell/omarchy-shell/scripts/indicators/screen-recording.sh rename to shell/scripts/indicators/screen-recording.sh diff --git a/default/quickshell/omarchy-shell/scripts/weather.sh b/shell/scripts/weather.sh similarity index 100% rename from default/quickshell/omarchy-shell/scripts/weather.sh rename to shell/scripts/weather.sh diff --git a/default/quickshell/omarchy-shell/services/BarWidgetRegistry.qml b/shell/services/BarWidgetRegistry.qml similarity index 100% rename from default/quickshell/omarchy-shell/services/BarWidgetRegistry.qml rename to shell/services/BarWidgetRegistry.qml diff --git a/default/quickshell/omarchy-shell/services/PluginRegistry.qml b/shell/services/PluginRegistry.qml similarity index 100% rename from default/quickshell/omarchy-shell/services/PluginRegistry.qml rename to shell/services/PluginRegistry.qml diff --git a/default/quickshell/omarchy-shell/shell-defaults.json b/shell/shell-defaults.json similarity index 100% rename from default/quickshell/omarchy-shell/shell-defaults.json rename to shell/shell-defaults.json diff --git a/default/quickshell/omarchy-shell/shell.qml b/shell/shell.qml similarity index 97% rename from default/quickshell/omarchy-shell/shell.qml rename to shell/shell.qml index 2b4c35bf..81295957 100644 --- a/default/quickshell/omarchy-shell/shell.qml +++ b/shell/shell.qml @@ -26,13 +26,17 @@ ShellRoot { var env = Quickshell.env("OMARCHY_PATH") if (env) return env var dir = String(Quickshell.shellDir || "") - if (dir.indexOf("/default/quickshell/omarchy-shell") !== -1) - return dir.substring(0, dir.indexOf("/default/quickshell/omarchy-shell")) + while (dir.length > 1 && dir.charAt(dir.length - 1) === "/") + dir = dir.substring(0, dir.length - 1) + var suffix = "/shell" + if (dir.length > suffix.length && dir.substring(dir.length - suffix.length) === suffix) + return dir.substring(0, dir.length - suffix.length) return home + "/.local/share/omarchy" } property string omarchyPath: deriveOmarchyPath() - readonly property string firstPartyPluginsDir: omarchyPath + "/default/quickshell/omarchy-shell/plugins" - readonly property string defaultsPath: omarchyPath + "/default/quickshell/omarchy-shell/shell-defaults.json" + readonly property string shellPath: omarchyPath + "/shell" + readonly property string firstPartyPluginsDir: shellPath + "/plugins" + readonly property string defaultsPath: shellPath + "/shell-defaults.json" readonly property string userConfigPath: home + "/.config/omarchy/shell.json" // Bundled fallback so the shell can start even when shell-defaults.json is diff --git a/default/quickshell/omarchy-shell/ui/settings/DynamicSettingsForm.qml b/shell/ui/settings/DynamicSettingsForm.qml similarity index 100% rename from default/quickshell/omarchy-shell/ui/settings/DynamicSettingsForm.qml rename to shell/ui/settings/DynamicSettingsForm.qml