app-launcher to just launcher

This commit is contained in:
David Heinemeier Hansson
2026-05-20 13:57:22 +02:00
parent ea1b0e7ced
commit 41425481db
20 changed files with 75 additions and 55 deletions
+2 -2
View File
@@ -5,8 +5,8 @@
-- Keep the bar instant: no layer-shell fade/slide animation.
hl.layer_rule({ match = { namespace = "omarchy-bar" }, no_anim = true, animation = "none" })
-- App launcher, image selector, emoji picker, and clipboard overlays should also pop without animation.
hl.layer_rule({ match = { namespace = "^(omarchy-menu|omarchy-app-launcher|omarchy-image-selector|omarchy-emoji-picker|omarchy-clipboard-picker)$" }, no_anim = true, animation = "none" })
-- Launcher, image selector, emoji picker, and clipboard overlays should also pop without animation.
hl.layer_rule({ match = { namespace = "^(omarchy-menu|omarchy-launcher|omarchy-image-selector|omarchy-emoji-picker|omarchy-clipboard-picker)$" }, no_anim = true, animation = "none" })
-- Bar settings floats centered with a sensible default size instead of
-- tiling — it's a transient dialog, not a workspace surface.
+1 -1
View File
@@ -1,4 +1,4 @@
o.bind("SUPER + SPACE", "Launch apps", "omarchy-shell shell toggle omarchy.app-launcher \"{}\"")
o.bind("SUPER + SPACE", "Launch apps", "omarchy-shell shell toggle omarchy.launcher \"{}\"")
o.bind("SUPER + CTRL + E", "Emoji picker", "omarchy-shell shell toggle omarchy.emoji-picker \"{}\"")
o.bind("SUPER + CTRL + C", "Capture menu", "omarchy-shell menu toggle capture")
o.bind("SUPER + CTRL + O", "Toggle menu", "omarchy-shell menu toggle toggle")
+2 -2
View File
@@ -78,7 +78,7 @@ Omarchy is built on:
| **Arch Linux** | Base OS | `/etc/`, `~/.config/` |
| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` |
| **Omarchy shell** | Status bar + notifications (Quickshell) | `~/.config/omarchy/shell.json` |
| **App launcher** | Quickshell app launcher | `~/.config/omarchy/shell.json` |
| **Launcher** | Quickshell launcher | `~/.config/omarchy/shell.json` |
| **Alacritty/Foot/Kitty/Ghostty** | Terminals | `~/.config/<terminal>/` |
| **Omarchy OSD** | On-screen display | Quickshell plugin |
@@ -201,7 +201,7 @@ cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
# 4. Apply changes
# - Hyprland: auto-reloads on save, but MUST validate with `hyprctl reload` and `hyprctl configerrors`
# - Omarchy shell: shell.json hot-reloads; use `omarchy-restart-shell` for plugin/widget code changes
# - App launcher: restart with `omarchy restart shell`
# - Launcher: restart with `omarchy restart shell`
# - Terminals: MUST restart with `omarchy restart terminal`
```
+1 -1
View File
@@ -13,7 +13,7 @@
// checked shell condition; append ✓ when it succeeds
// Root Menu
"apps": {"icon":"󰀻","label":"Apps","aliases":["app","applications"],"keywords":"launch launcher quickshell","action":"omarchy-shell shell summon omarchy.app-launcher '{}'"},
"apps": {"icon":"󰀻","label":"Apps","aliases":["app","applications"],"keywords":"launch launcher quickshell","action":"omarchy-shell shell summon omarchy.launcher '{}'"},
"learn": {"icon":"󰧑","label":"Learn","keywords":"manual docs help reference"},
"trigger": {"icon":"󱓞","label":"Trigger","keywords":"actions capture share toggle hardware reminder"},
"style": {"icon":"","label":"Style","keywords":"theme background font bar quickshell hyprland appearance"},
+2 -2
View File
@@ -127,8 +127,8 @@ border = "{{ accent }}"
border-alpha = 1.0
countdown = "{{ accent }}"
[app-launcher]
# Same six tokens as [menu], applied to the app launcher overlay. Alpha
[launcher]
# Same six tokens as [menu], applied to the launcher overlay. Alpha
# companions go from 0 (invisible) to 1 (opaque). scrim is the full-screen
# dim layer behind the card; background is the card itself. Defaults
# mirror [menu] with the card at 0.95 to preserve the legacy translucency.
+2 -2
View File
@@ -116,7 +116,7 @@ The shell exposes these tokens to QML via two singletons in
- `Color` — palette (`foreground`, `background`, `accent`, `urgent`)
and per-surface roles (`Color.bar.*`, `Color.popups.*`,
`Color.tooltip.*`, `Color.notifications.*`, `Color.menu.*`,
`Color.appLauncher.*`, `Color.imagePicker.*`, `Color.polkit.*`,
`Color.launcher.*`, `Color.imagePicker.*`, `Color.polkit.*`,
`Color.lock.*`). The clipboard and emoji pickers share `Color.menu.*`.
- `Style` — structural tokens (`cornerRadius`), shared interactive
state tokens/helpers, spacing (`Style.spacing.*` / `Style.space(px)`),
@@ -131,7 +131,7 @@ and `selected`. State colors accept palette roles (`foreground`,
`accent`, `urgent`, `background`) or hex strings; the default template
ships hex values. Fill/border alphas are applied to that state's color.
Surfaces like `[menu]`, `[app-launcher]`, and `[image-picker]` define
Surfaces like `[menu]`, `[launcher]`, and `[image-picker]` define
their own `selected-*` tokens and do **not** inherit from `[controls]`.
`[controls]` only governs the shared button/dropdown chrome.
+2 -2
View File
@@ -1,4 +1,4 @@
echo "Remove Walker app-launcher services and Elephant providers"
echo "Remove Walker launcher services and Elephant providers"
pkill elephant 2>/dev/null || true
systemctl --user disable --now elephant.service 2>/dev/null || true
@@ -10,7 +10,7 @@ sudo rm -f /etc/pacman.d/hooks/walker-restart.hook
for bindings_file in ~/.config/hypr/bindings/utilities.lua ~/.config/hypr/bindings.lua; do
if [[ -f $bindings_file ]]; then
sed -i 's#omarchy-launch-walker#omarchy-shell shell toggle omarchy.app-launcher \\"{}\\"#g' "$bindings_file"
sed -i 's#omarchy-launch-walker#omarchy-shell shell toggle omarchy.launcher \\"{}\\"#g' "$bindings_file"
fi
done
+20
View File
@@ -0,0 +1,20 @@
echo "Rename app launcher shell plugin to launcher"
config_files=(
"$HOME/.config/hypr/bindings/utilities.lua"
"$HOME/.config/hypr/bindings.lua"
"$HOME/.config/hypr/apps/omarchy-shell.lua"
"$HOME/.config/omarchy/omarchy-menu.jsonc"
"$HOME/.config/omarchy/current/theme/shell.toml"
)
for config_file in "${config_files[@]}"; do
if [[ -f $config_file ]]; then
sed -i \
-e 's/omarchy\.app-launcher/omarchy.launcher/g' \
-e 's/omarchy-app-launcher/omarchy-launcher/g' \
-e 's/\[app-launcher\]/[launcher]/g' \
-e 's/app-launcher\./launcher./g' \
"$config_file"
fi
done
+8 -8
View File
@@ -66,14 +66,14 @@ QtObject {
property color border: root.composed("notifications.border", "notifications.border-alpha", root.accent, 1.0)
property color countdown: root.pick("notifications.countdown", root.accent)
}
readonly property QtObject appLauncher: QtObject {
property color background: root.composed("app-launcher.background", "app-launcher.background-alpha", root.background, 1.0)
property color text: root.pick("app-launcher.text", root.foreground)
property color border: root.composed("app-launcher.border", "app-launcher.border-alpha", root.foreground, 1.0)
property color scrim: root.composed("app-launcher.scrim", "app-launcher.scrim-alpha", root.background, 0.5)
property color selectedBackground: root.composed("app-launcher.selected-background", "app-launcher.selected-background-alpha", root.foreground, 0.08)
property color selectedText: root.pick("app-launcher.selected-text", root.accent)
property color selectedBorder: root.composed("app-launcher.selected-border", "app-launcher.selected-border-alpha", root.foreground, 0.0)
readonly property QtObject launcher: QtObject {
property color background: root.composed("launcher.background", "launcher.background-alpha", root.background, 1.0)
property color text: root.pick("launcher.text", root.foreground)
property color border: root.composed("launcher.border", "launcher.border-alpha", root.foreground, 1.0)
property color scrim: root.composed("launcher.scrim", "launcher.scrim-alpha", root.background, 0.5)
property color selectedBackground: root.composed("launcher.selected-background", "launcher.selected-background-alpha", root.foreground, 0.08)
property color selectedText: root.pick("launcher.selected-text", root.accent)
property color selectedBorder: root.composed("launcher.selected-border", "launcher.selected-border-alpha", root.foreground, 0.0)
}
readonly property QtObject menu: QtObject {
property color background: root.composed("menu.background", "menu.background-alpha", root.background, 1.0)
+1 -1
View File
@@ -29,7 +29,7 @@ shell/
plugins/
bar/ first-party plugins (see plugins/README.md)
settings/
app-launcher/
launcher/
image-picker/
menu/
notifications/
+3 -3
View File
@@ -13,7 +13,7 @@ User-installed plugins live alongside these conceptually but on disk under
|---------------|---------------------------|-----------|---------------------------------------|
| Bar | `omarchy.bar` | `bar` | `bar/Bar.qml` |
| Bar settings | `omarchy.settings` | `panel` | `settings/SettingsPanel.qml` |
| App launcher | `omarchy.app-launcher` | `overlay` | `app-launcher/AppLauncher.qml` |
| Launcher | `omarchy.launcher` | `overlay` | `launcher/Launcher.qml` |
| Image picker | `omarchy.image-picker` | `overlay` | `image-picker/ImagePicker.qml` |
| Emoji picker | `omarchy.emoji-picker` | `overlay` | `emoji-picker/EmojiPicker.qml` |
| Clipboard mgr | `omarchy.clipboard-picker`| `overlay` | `clipboard-picker/ClipboardPicker.qml`|
@@ -45,9 +45,9 @@ Visual editor for the bar layout. Summoned by
- dynamic per-widget settings forms that write inline back to the
corresponding shell.json entry
## App launcher
## Launcher
Quickshell-powered app launcher. It uses Quickshell's native
Quickshell-powered launcher. It uses Quickshell's native
`DesktopEntries` model for discovery/activation and renders inside the
long-running shell with the legacy launcher card dimensions, colors, row
spacing, icon sizing, and keyboard behavior. Summoned directly over shell IPC
-15
View File
@@ -1,15 +0,0 @@
{
"schemaVersion": 1,
"id": "omarchy.app-launcher",
"name": "App launcher",
"version": "1.0.0",
"author": "Omarchy",
"description": "A Quickshell-powered application launcher",
"kinds": [
"overlay"
],
"keepLoaded": true,
"entryPoints": {
"overlay": "AppLauncher.qml"
}
}
@@ -26,16 +26,16 @@ Item {
property string launchOsdMessage: ""
property var hiddenEntryIds: ({})
// Bound to the central [app-launcher] section in shell.toml via Color.qml.
// Bound to the central [launcher] section in shell.toml via Color.qml.
// Each color already includes its alpha companion (composed in the
// singleton), so consumers can drop them straight into a Rectangle.
property color background: Color.appLauncher.background
property color foreground: Color.appLauncher.text
property color border: Color.appLauncher.border
property color scrim: Color.appLauncher.scrim
property color selectedBackground: Color.appLauncher.selectedBackground
property color selectedText: Color.appLauncher.selectedText
property color selectedBorder: Color.appLauncher.selectedBorder
property color background: Color.launcher.background
property color foreground: Color.launcher.text
property color border: Color.launcher.border
property color scrim: Color.launcher.scrim
property color selectedBackground: Color.launcher.selectedBackground
property color selectedText: Color.launcher.selectedText
property color selectedBorder: Color.launcher.selectedBorder
property string fontFamily: Quickshell.env("OMARCHY_MENU_FONT") || "monospace"
property int cardWidth: 644
@@ -75,7 +75,7 @@ Item {
function dismiss() {
root.opened = false
if (root.shell && typeof root.shell.hide === "function")
root.shell.hide((root.manifest && root.manifest.id) || "omarchy.app-launcher")
root.shell.hide((root.manifest && root.manifest.id) || "omarchy.launcher")
}
function iconSource(icon) {
@@ -127,7 +127,7 @@ Item {
function hiddenEntryScanCommand() {
var desktop = [Quickshell.env("XDG_CURRENT_DESKTOP"), Quickshell.env("XDG_SESSION_DESKTOP"), Quickshell.env("DESKTOP_SESSION")].filter(function(v) { return String(v || "").length > 0 }).join(":")
var script = root.omarchyPath + "/shell/scripts/app-launcher-hidden-entries.sh"
var script = root.omarchyPath + "/shell/scripts/launcher-hidden-entries.sh"
return Util.shellQuote(script) + " " + Util.shellQuote(desktop)
}
@@ -318,7 +318,7 @@ Item {
visible: root.opened
anchors { top: true; bottom: true; left: true; right: true }
color: "transparent"
WlrLayershell.namespace: "omarchy-app-launcher"
WlrLayershell.namespace: "omarchy-launcher"
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
exclusionMode: ExclusionMode.Ignore
+15
View File
@@ -0,0 +1,15 @@
{
"schemaVersion": 1,
"id": "omarchy.launcher",
"name": "Launcher",
"version": "1.0.0",
"author": "Omarchy",
"description": "A Quickshell-powered launcher",
"kinds": [
"overlay"
],
"keepLoaded": true,
"entryPoints": {
"overlay": "Launcher.qml"
}
}
+1 -1
View File
@@ -568,7 +568,7 @@ for block in re.split(r"(?m)^Sink #", sys.stdin.read())[1:]:
KeyboardPanel {
id: panel
anchorItem: button
owner: ctrl
owner: root
bar: root.bar
open: root.opened
focusTarget: keyCatcher
+1 -1
View File
@@ -343,7 +343,7 @@ Panel {
KeyboardPanel {
id: panel
anchorItem: button
owner: ctrl
owner: root
bar: root.bar
open: root.opened
focusTarget: keyCatcher
+1 -1
View File
@@ -351,7 +351,7 @@ Panel {
KeyboardPanel {
id: panel
anchorItem: button
owner: ctrl
owner: root
bar: root.bar
open: root.opened
focusTarget: keyCatcher
+1 -1
View File
@@ -643,7 +643,7 @@ fi
KeyboardPanel {
id: panel
anchorItem: button
owner: ctrl
owner: root
bar: root.bar
open: root.opened
focusTarget: keyCatcher
+1 -1
View File
@@ -165,7 +165,7 @@ printf 'time\t%s\n' "$($OMARCHY_PATH/bin/omarchy-battery-remaining-time 2>/dev/n
KeyboardPanel {
id: panel
anchorItem: button
owner: ctrl
owner: root
bar: root.bar
open: root.opened
focusTarget: keyCatcher