Commit Graph
58 Commits
Author SHA1 Message Date
Ryan Hughes f451b504eb install: route theme setup through split scripts 2026-06-04 18:35:01 -04:00
Ryan Hughes 0cfa1b66c4 installer: route install through system and user phases 2026-06-04 18:35:01 -04:00
Ryan Hughes 53e2611507 install: add split system and user targets 2026-06-04 18:35:01 -04:00
Ryan Hughes 99de786ce1 Drop install/first-run/gdk-scale.sh
The lua-based monitors config (~/.config/hypr/monitors.lua) ships from
skel with sensible defaults (omarchy_gdk_scale = 2, omarchy_monitor_scale
= "auto"). Hyprland handles the dynamic monitor scale at runtime via
"auto"; 'omarchy hyprland monitor scaling <N>' already updates both
omarchy_monitor_scale and omarchy_gdk_scale in monitors.lua when the
user wants to adjust.

The first-run 'detect what hyprland picked and write it back' dance
was leftover from the .conf-based config; it's redundant on the lua
flow and was the script that aborted omarchy-first-run under set -e
when it sed'd a missing monitors.conf.
2026-06-04 18:34:35 -04:00
Ryan Hughes 0dd91106e7 omarchy-first-run: run setup-user first; fix gdk-scale.sh for lua config
Two bugs caused fresh users to land without branding files / AI skill
symlinks / nautilus extensions / xdg dirs / etc.:

1. install/first-run/gdk-scale.sh sed-edited ~/.config/hypr/monitors.conf,
   but the lua-based config flow uses ~/.config/hypr/monitors.lua. sed -i
   on the missing .conf returned non-zero, set -e fired, omarchy-first-run
   aborted mid-block AFTER deleting ~/.local/state/omarchy/first-run.mode.
   omarchy-setup-user (called at the bottom of the script, outside the
   if-block) never ran, so setup-user.done never got written and the
   per-user defaults (~/.config/omarchy/branding/*, ~/.agents/skills/omarchy,
   xdg dirs, etc.) never got created.

   Replace the .conf sed with a call to omarchy-hyprland-monitor-scaling
   which already knows how to persist into monitors.lua.

2. Move 'omarchy-setup-user || true' to the TOP of omarchy-first-run, before
   the privileged first-run block. setup-user is idempotent and gated on
   its own marker, so running it first is safe and means a failure in any
   of the privileged steps can't prevent user setup from completing.
2026-06-04 18:34:35 -04:00
David Heinemeier Hansson dd3080251d Fix Voxtype install notification hook 2026-05-26 00:11:51 +02:00
David Heinemeier Hansson af5e918dd5 Improve actionable notification wrapper 2026-05-25 23:51:48 +02:00
David Heinemeier Hansson 9fb52fa37a Fix cleaning up the first-run sudo rm 2026-05-25 22:50:24 +02:00
David Heinemeier Hansson 2d86736fb0 Update for the new monitors.lua 2026-05-25 22:41:01 +02:00
Ryan Hughes 4cd6593ba3 Use plugin IPC routes 2026-05-23 04:32:20 -04: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 1a630b1239 Pull low battery warning into shell 2026-05-19 21:28:32 +02:00
David Heinemeier Hansson abf0a68b54 Drop walker + elephant 2026-05-19 20:54:20 +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
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 89a6517018 Simplify scaling 2026-05-17 21:44:08 +02:00
David Heinemeier Hansson 4e2da8480a Standardize all notification sending 2026-05-17 19:51:29 +02:00
David Heinemeier Hansson 1eab0cffc9 Integrate swaybg and swayosd into the new shell 2026-05-16 20:34:09 +02: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 890e3fc8c5 Set the initial GDK_SCALE to match the monitor scale 2026-05-09 19:55:15 +02:00
David Heinemeier Hansson fb174bfa70 Fix perms 2026-05-08 22:04:41 +02:00
fa1ed01cd7 Run SwayOSD as a session service (#5656)
* Run SwayOSD as a session service

* Restart SwayOSD after clean exits

* We don't need the input backend (as we manage the hotkeys in Hyprland)

* Ensure we cleanup the old service starter

* Not needed

* Not needed either

* Clean up migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-05-07 19:43:27 +02:00
David Heinemeier Hansson 42cd7472cf Give people an invitation to install dictation after the first update 2026-05-07 10:35:23 +02:00
Pete JacksonandGitHub 3d87216efd Make middle-click paste consistent across apps by enabling GTK/Chromium apps to receive selection buffer on button3 (#5577)
* Enable middle-click primary paste for GTK/Chromium apps

gsettings-desktop-schemas 50.x ships gtk-enable-primary-paste=false as
the default. GTK4 apps (Ghostty 1.3.0+) and Chromium-family browsers
honor that setting and silently no-op middle-click paste, even though
the primary selection itself works (wl-paste --primary returns text,
Firefox/LibreOffice paste fine because they implement primary paste
themselves rather than going through GTK).

Flip the GSetting to true so middle-click paste behaves the way Linux
desktop users expect across Ghostty, Brave, and Chromium.

Closes #5371

* Address Copilot review on #5577

Move install-time GSetting from install/config/ to install/first-run/
so it runs after login when a session D-Bus is guaranteed (matching the
existing gnome-theme.sh convention). Make the migration's gsettings
call best-effort with `|| true` so a missing dconf service doesn't
trigger the omarchy-migrate skip prompt.
2026-05-05 14:11:54 +02:00
David ZuckerandGitHub 858916783f Allow Docker DNS from 192.168 networks (#5465)
* Allow Docker DNS from 192.168 networks

* Only add Docker DNS rule when UFW is active
2026-04-29 14:10:02 +02:00
David Heinemeier Hansson a74afeb4e5 Switch to an earlier recovery for the internal monitor on reboot 2026-04-23 11:54:11 +02:00
David Heinemeier Hansson 1f697ecc6d No longer need first-run to set these powerprofilectl rules 2026-04-15 10:36:45 +02:00
a49b8d255c Fix AC power udev rules failing silently at boot (#5275)
* Don't use the names here since they break the all-themes setup in omarchy-nvim

* Fix AC power udev rules to use systemd-run

* Migrate AC power udev rules to systemd-run

* Add --collect and stable unit names to systemd-run udev rules

* Add unit name, replace, and After ordering to power profile udev rules

* Remove invalid --replace flag from systemd-run power profile rules

* We don't need --replace becuase it's not needed

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-15 10:28:42 +02:00
David Heinemeier Hansson 6171d0ee8f Setup power profile defaults on first run since that's when the daemon is available 2026-04-08 14:35:52 +02:00
David Heinemeier Hansson e567020e1b Use the new helper 2026-01-29 17:38:50 +01:00
David Heinemeier Hansson db7070f9d6 Ensure elephant is setup on first run 2025-11-21 18:02:04 +01:00
David Heinemeier Hansson 962aca303d Change order and let it live forever 2025-11-06 09:14:33 +01:00
David Heinemeier Hansson 9490e714c3 Moved 2025-10-28 18:19:28 +01:00
David Heinemeier Hansson d3a54dc32e Show keybindings notice right away and vary update based on internet or not 2025-10-28 18:19:17 +01:00
ctarxandGitHub 1060a54c1a Remove default SSH allow rule from UFW (#2887)
* UFW: limit LocalSend (53317) to LAN and remove default SSH (22) rule

* Revert LocalSend change and drop SSH allow rule
2025-10-27 15:43:48 +01:00
David Heinemeier Hansson fecf83d07b Hookup keybindings notification to actual keybindings menu 2025-10-15 22:04:06 +03:00
David Heinemeier Hansson 06668cf20f Reveal main keybindings on welcome 2025-10-15 17:48:17 +03:00
Ryan Hughes 779fd5a9f5 Prevent polkit error on reboot (fixes #2175) 2025-10-08 20:40:53 -04:00
e6d1a2f754 Use systemd-resolved's stub resolver (#2150)
* Fix comment

* Use systemd-resolved's stub resolver

On first run, symlink systemd-resolved's resolver into /etc/resolv.conf

Matches migration 1754984623

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 14:27:01 +02:00
Alexander ZaytsevandGitHub 2326018341 Group mako settings and adjust notification styles (#2273)
* Move common mako settings to `core.ini`

* Use monospace font, set font size in px

* Increase line height

* Adjust paddings

* Add 10px width so the Welcome notification fits on one line

* Remove extra whitespace

* Remove extra whitespace, adjust wording

* Improve text-to-bg contrast in Tokyo Night

* Follow the system font

* Use sans-serif font

* Restore width and extra space characters

* Adjust vertical paddings

* Remove `omarchy-restart-mako` (no longer needed)
2025-10-07 13:14:48 +02:00
David Heinemeier Hansson e81994f182 Dont let the update system notification expire 2025-09-17 16:36:11 +02:00
David Heinemeier Hansson 5582c51676 Add invitation to update the system to the latest 2025-09-15 11:36:07 +02:00
David Heinemeier Hansson 0f09febf4d Tweak the welcome 2025-09-14 13:29:06 +02:00
David Heinemeier Hansson d58fe8b4a0 Lower timeout test
Network should be up and runn
2025-09-14 11:41:42 +02:00
David Heinemeier Hansson 47bdbec9f1 Wording 2025-09-14 10:17:45 +02:00
David Heinemeier Hansson 5b0deb90ba Add a basic welcome inviting you to start with the Omarchy Menu 2025-09-14 10:13:04 +02:00
David Heinemeier Hansson 3e1e466938 Invite new installations to setup wifi 2025-09-14 10:07:37 +02:00
David Heinemeier Hansson 9de375648e Still need proper set of $TERMINAL 2025-09-13 21:25:17 +02:00
David Heinemeier Hansson 115fcb786d Ensure we detach when starting terminal for impala 2025-09-13 21:24:37 +02:00