Commit Graph
525 Commits
Author SHA1 Message Date
David Heinemeier Hansson 8510a81921 Toggle weather panel from shortcut 2026-05-21 13:31:28 +02:00
David Heinemeier Hansson 190c31503c Merge branch 'dev' into omarchy-shell 2026-05-21 09:56:50 +02:00
Pavel KaderaandGitHub b911a6f8ba Only bind F9 to Voxtype if installed (#5882) (#5897) 2026-05-21 06:48:20 +02:00
David Heinemeier Hansson e1066e67d5 Switch media controls to QS MPRIS 2026-05-20 22:53:50 +02:00
David Heinemeier Hansson ed3320cb8d Just emojis 2026-05-20 14:12:06 +02:00
David Heinemeier Hansson b7c0e10288 Just clipboard 2026-05-20 14:09:09 +02:00
David Heinemeier Hansson 41425481db app-launcher to just launcher 2026-05-20 13:57:22 +02:00
David Heinemeier Hansson ea1b0e7ced Extract panels out into their own top-level concern 2026-05-20 13:51:39 +02:00
David Heinemeier Hansson 97d4e908af Use the helpers where applicable 2026-05-19 22:18:13 +02:00
David Heinemeier Hansson 42f03655df Extract commonality 2026-05-19 22:13:09 +02:00
David Heinemeier Hansson 463ea96910 Simpler 2026-05-19 22:07:53 +02:00
David Heinemeier Hansson 109d17b95b One rule 2026-05-19 21:53:57 +02:00
David Heinemeier Hansson 0f4490c9fc Leave this to the themes 2026-05-19 21:01:51 +02:00
David Heinemeier Hansson abf0a68b54 Drop walker + elephant 2026-05-19 20:54:20 +02:00
Ryan Hughes b59a8d0bb0 Add Battle.net installer 2026-05-19 14:09:04 -04:00
David Heinemeier Hansson a157b98d5b No longer need wiremix 2026-05-19 18:51:05 +02:00
David Heinemeier Hansson 0f5044167c Move from hypridle to QS 2026-05-19 12:02:28 +02:00
David Heinemeier Hansson c6d7aa9494 Drop the systemd running on advice from outfoxxed 2026-05-19 11:20:29 +02:00
David Heinemeier Hansson 2ac069e72b Drop bluetui and impala in favor of shell controls 2026-05-19 08:20:13 +02:00
Ryan Hughes 6fa6e6cc91 Merge remote-tracking branch 'origin/omarchy-shell' into omarchy-shell
# Conflicts:
#	shell/Ui/PillButton.qml
#	shell/plugins/bar/widgets/monitorPanel.qml
#	shell/plugins/bar/widgets/networkPanel.qml
2026-05-18 21:11:37 -04:00
Ryan Hughes 8b2bb217d6 Standardize shell UI theme tokens 2026-05-18 20:13:12 -04:00
David Heinemeier Hansson 196dcd2472 Open power panel on super + ctrl + p 2026-05-18 21:13:37 +02:00
David Heinemeier Hansson bbdc485a62 Open the right panels 2026-05-18 15:54:21 +02:00
David Heinemeier Hansson acf617e05e No animations for any of these pickers 2026-05-18 15:53:49 +02:00
David Heinemeier Hansson b0f5d941ba Switch to running quickshell as a systemd service that is auto-restarted if it crashes 2026-05-18 13:58:07 +02:00
David Heinemeier Hansson 8424718d1b No animations on bar location changes 2026-05-18 13:56:26 +02:00
Ryan Hughes ae17436089 Update bindings 2026-05-18 03:19:58 -04:00
Ryan Hughes e3fff41c0e Keyboard-driven wifi panel
The wifi panel was a bar-widget xdg-popup which Hyprland doesn't grant
keyboard focus to until the user clicks or hovers it — keys typed after
a SUPER+CTRL+W summon went to whatever previously had focus.

New shared Common.KeyboardPanel scaffolding: layer-shell PanelWindow
with WlrKeyboardFocus.Exclusive (granted at map time, the protocol-level
equivalent of focus-on-launch for xdg-toplevels), full-screen anchored
with a Region mask that subtracts the bar strip so bar widgets stay
clickable, MouseArea for outside-click dismissal, TransformWatcher for
reactive anchor-position tracking. API is a subset of Common.PopupCard
(no centerOnBar / triggerMode / containsMouse yet — adding when the
other bar popups migrate).

networkPanel.qml uses it. Adds full keyboard navigation:
  j/k or Up/Down  — move selection
  Return/Space    — connect (or disconnect if already connected)
  x               — forget the highlighted network
  r               — refresh scan
  Esc             — close

ListView (with positionViewAtIndex on currentIndex) replaces the
Repeater+Column inside Flickable so the selected row stays visible as
j/k walks past the cap. A 1.5s Timer re-polls detailsProc while open
so the connection details (IP, gateway, signal) populate when routing
actually comes up after a connect rather than waiting for re-summon.

Rows: lock glyph on the right for protected-and-not-connected, X
(forget) for connected — aligned to the same 22-wide column. Connect
glyph in the passphrase prompt switched to a check, no separate cancel
(Esc handles it).

SUPER+CTRL+W in utilities.lua now toggles this panel via
omarchy-shell-ipc instead of launching Impala. Right-click on the bar
icon still launches Impala as a fallback for hidden SSIDs / enterprise
auth / iwd edge cases.
2026-05-17 18:18:53 -04:00
David Heinemeier Hansson 89a6517018 Simplify scaling 2026-05-17 21:44:08 +02:00
David Heinemeier Hansson 2918b4fd33 Instant 2026-05-17 11:04:41 +02:00
David Heinemeier Hansson a0267e032d Fix clipboard manager launch helper signature 2026-05-17 10:49:53 +02:00
David Heinemeier Hansson 2713d43f35 Replace Walker clipboard with native Quickshell clipboard picker 2026-05-17 10:49:53 +02:00
David Heinemeier Hansson 25c718e3df Add QS emoji picker 2026-05-17 09:47:45 +02:00
David Heinemeier Hansson 52ce411c2b Use our built-in notifications 2026-05-17 09:36:13 +02:00
David Heinemeier Hansson 80da45dd1c Use the new weather overlay instead 2026-05-17 08:49:35 +02:00
David Heinemeier Hansson 8f643282b9 Switch from gnome polkit to QS 2026-05-16 22:20:25 +02:00
David Heinemeier Hansson eaea4cd577 Reduce Settings to just Bar Settings
The other don't add enough over the Omarchy Menu
2026-05-16 21:47:54 +02:00
David Heinemeier Hansson 1eab0cffc9 Integrate swaybg and swayosd into the new shell 2026-05-16 20:34:09 +02:00
David Heinemeier Hansson f7f2838776 Hyprland expects lowercase comma 2026-05-16 15:09:07 +02:00
David Heinemeier Hansson 5d938dac92 Convert to lua 2026-05-16 13:07:18 +02:00
David Heinemeier Hansson 78de3c76d2 Merge branch 'dev' into omarchy-shell 2026-05-15 18:33:09 +02:00
Ryan Hughes 679e14c37f Restore menu toggle behavior on keybinds and bar clicks
The old bash bin short-circuited with close_visible_quickshell_menu at
the top of open_quickshell_menu, so pressing any menu keybind while the
menu was open just closed it. The IPC path I introduced summoned every
time, so keyboard shortcuts couldn't dismiss \u2014 only outside clicks did
(which is why the bar icon appeared to toggle: clicking it while the
menu was open hit the menu's outer-click MouseArea, not the icon).

Add a menu.toggle IPC method:
  - if root.opened: cancel() and return "closed"
  - otherwise: behaves exactly like summon

Switch every Hyprland binding and the two bar-icon click handlers
(omarchy logo, battery right-click \u2192 power menu) to toggle. summon stays
as the always-open primitive for callers that want explicit summon
semantics (rare \u2014 right now nothing internal uses it).
2026-05-14 18:04:25 -04:00
Ryan Hughes 4a665af581 Drop bin/omarchy-menu; sweep JSONC actions to bare commands
The shell now owns the menu — both data and dispatch. The 821-line bash
bin was carrying the open path (cold spawn + jq pipeline + tempfile dance
+ IPC + poll) and a grab-bag of helpers that only existed inside it. Both
go away in this commit.

New bins for the few composite helpers that were genuinely worth keeping:

  - omarchy-install-app NAME PKG
  - omarchy-install-and-launch NAME PKG DESKTOP_ID
  - omarchy-install-font LABEL PKG FAMILY
  - omarchy-launch-config-editor PATH
  - omarchy-reminder-set-interactive
  - omarchy-capture-screenrecording-with-webcam

Sweep through default/omarchy/omarchy-menu.jsonc rewrites:

  - present_terminal X   -> omarchy-launch-floating-terminal-with-presentation X
  - install_terminal X   -> omarchy-launch-floating-terminal-with-presentation 'omarchy-install-terminal X'
  - install / install_and_launch / install_font / open_in_editor -> new bins above
  - terminal X           -> xdg-terminal-exec --app-id=org.omarchy.terminal X
  - default_browser_is X -> [[ "$(omarchy-default-browser)" == "X" ]]
  - default_terminal_is X / default_editor_is X / haptic_touchpad_is X same shape
  - $(hypr_config_file X) -> ~/.config/hypr/X.lua
  - show_custom_reminder_input -> omarchy-reminder-set-interactive
  - screenrecord_with_webcam   -> omarchy-capture-screenrecording-with-webcam
  - stop_active_screenrecording -> omarchy-capture-screenrecording --stop-recording

Hyprland bindings switch from `omarchy-menu X` to
`omarchy-shell-ipc menu summon X` (the keybind hot path now skips bash
entirely). The Bar.qml omarchy widget and the battery right-click do the
same. ALT+PRINT becomes a one-liner: stop the recording if one is going,
otherwise summon the screenrecord submenu.

Measured: keybind-to-visible is ~30ms (was ~235ms). The shell's plugin
keepLoaded:true stops being theoretical \u2014 the menu data lives in memory
across opens, and the only work between keypress and paint is the IPC
roundtrip and the layer-shell window mount.
2026-05-14 17:43:12 -04:00
Ryan Hughes 883d8554f3 Polish first-party shell plugin docs, Hyprland rules, and bar-position seed
- omarchy-bar-settings.lua is gone: the Hyprland rules it carried for
    the old standalone bar-settings window no longer match anything,
    since settings is now a panel plugin summoned via IPC. The still-
    needed "Widget settings" sub-dialog rules move into
    omarchy-shell.lua next to the existing "Omarchy Settings" rules.

  - plugins README documents the `bar` plugin kind so third-party
    plugin authors aren't surprised to see it on the first-party
    omarchy.bar manifest. The note also calls out that they should ship
    `bar-widget`s, not replace the host bar.

  - omarchy-style-bar-position seeds from shell-defaults.json before
    mutating, so a user without a shell.json (or with a malformed one)
    no longer ends up with a stub config that blanks the bar layout.
2026-05-14 16:34:32 -04:00
Ryan Hughes 90f0475a9d Rename refresh-bar -> refresh-shell, restart-quickshell -> restart-shell
The bin names should reflect the thing they manage. `refresh bar` is
misleading because the command resets the entire shell.json (which holds
plugins beyond just the bar), and `restart quickshell` names the runtime
rather than the product. Both now end in `-shell` to match the rest of
omarchy-shell.

Updates every caller in autostart, the menu, voxtype helpers, and the
shell README. No behavior changes.
2026-05-14 16:33:51 -04:00
Ryan Hughes c101591284 Replace mako with quickshell-backed notification daemon
Adds first-party omarchy.notifications service plugin that hosts a
freedesktop notification server and renders popups + a history popup
inside the shell. Uninstalls mako and retargets every helper, keybind,
indicator, and migration entry to the new daemon.

Plugin (default/quickshell/omarchy-shell/plugins/notifications/):
- Service.qml: NotificationServer, popupModel + pendingModel + pastModel
  (two-tier history, see below), DND via PersistentProperties +
  cache-file backstop, image cache for /tmp screenshots, IpcHandler with
  toggleDnd/setDnd/isDnd/showHistory/clear/clearPending/markAllSeen/
  dismissAll/dismissOne/invokeLast/dismiss, per-theme override file
  ~/.config/omarchy/current/theme/notifications.json honoring
  borderColor/backgroundColor/textColor/countdownColor.
- components/NotificationCard.qml: theme-driven card (Color.foreground/
  background/border tokens from Commons/Color.qml), 32x32 icon slot,
  Nerd Font glyph fallback via omarchy-glyph hint, hero image strip
  for screenshot/image-path notifications, hover-pause progress bar,
  uses bar.fontFamily so all surfaces share one font.

Filtering and DND:
- transient hint and CLI-style senders (app_name in notify-send /
  omarchy-action) bypass history but still pop.
- DND only allows omarchy-action toasts and notify-send -u critical
  through; real-app urgency=critical (Discord, Slack, Vesktop) is
  silenced and lands in pending instead.
- Pending vs past split surfaced via tabs in the bar widget popup;
  past tab is auto-pruned at the 15-minute mark.
- Click-to-jump: notifications without a libnotify default action focus
  the matching Hyprland window via class lookup.

Shell host:
- shell.qml: generic first-party service loader (mirrors the existing
  noctalia-compat path) and an alias for the bar so plugins can read
  barSize / barHidden / position for anchoring.
- Commons/Color.qml: parses the theme's hyprland.conf for
  $activeBorderColor so notifications match Hyprland window borders;
  picks the explicit accent= key over the color4= alias.

Bar widget rebase (plugins/bar/widgets/notificationCenter.qml):
- Drops the chunk-1 stub server, binds count/dnd state to the service,
  hosts the history popup via PopupCard so it drops down from the
  notification glyph the same way Quick Settings does.
- Pending/Past tabs, dismiss-individual close X, mark-all-as-seen and
  clear-recent action buttons, theme-driven palette.

Quick Settings rework (plugins/bar/widgets/controlCenter.qml):
- DND tile binds directly to service.doNotDisturb for instant feedback.
- Drops the volume slider (already in audioPanel) and the no-op Theme
  tile; adds a Bluetooth toggle bound to Quickshell.Bluetooth.
- Bigger 44x44 wallet was scaled back to 32x32 for tighter rows.

Notification scripts (bin/omarchy-*):
- omarchy-notification-send: passes glyph as a custom hint instead of
  prepending to the summary; adds -a omarchy-action and -u urgency
  automatically; supports -e/--transient passthrough.
- User-action toasts in the capture / toggle / hyprland / default-*
  scripts and bindings/utilities.lua now tag themselves
  -a omarchy-action so DND treats them as intent-based bypass.
- omarchy-toggle-notification-silencing, omarchy-notification-dismiss,
  default/waybar/indicators/notification-silencing.sh, and the Hyprland
  comma-keybinds all route through omarchy-shell-ipc notifications.
- omarchy-capture-screenshot / -screenrecording set the image-path
  hint properly so the hero-image rendering kicks in.

Mako removal (migrations/1778743515.sh):
- pkill -x mako, systemctl --user stop mako.service, pacman -Rns mako
  (uninstalling deletes /usr/lib/systemd/user/mako.service so D-Bus
  activation can't respawn it). Removes ~/.config/mako/ and the legacy
  toggle file. Restarts quickshell so it claims the bus name.
- Drops mako from install/omarchy-base.packages, autostart.lua,
  install/config/theme.sh + toggles.sh, default/themed/mako.ini.tpl,
  default/mako/, the omarchy-menu Mako restart row, bin/omarchy
  GROUP_DESCRIPTIONS, the settings panel catalogue, and the
  default/omarchy-skill paths table.
- Removed scripts: bin/omarchy-restart-mako,
  bin/omarchy-style-corners-mako.
- bin/omarchy-style-corners summary updated; corner radius for the
  notification card reads ~/.local/state/omarchy/toggles/quickshell-menu.json
  alongside the rest of the shell.
2026-05-14 14:21:07 -04:00
David Heinemeier Hansson e916491c9f More helpers to cleanup configs 2026-05-14 13:15:03 +02:00
David Heinemeier Hansson a4e4b4b1ed Extract launch_sole 2026-05-14 12:58:39 +02:00
David Heinemeier Hansson 84de3d3a2e Extract more helpers 2026-05-14 12:51:03 +02:00
David Heinemeier Hansson 4c48d83952 More helpers 2026-05-14 12:02:53 +02:00