Commit Graph
5633 Commits
Author SHA1 Message Date
David Heinemeier HanssonandClaude Fable 5 3f72553110 Unpack the initramfs synchronously so Plymouth survives early boot
Kernel 7.1 unpacks the initramfs asynchronously, which races /init: the
early /proc, /sys, /dev, and /run mounts fail with EPERM while unpacking
settles, so plymouthd exits when it can't read /proc/cmdline and encrypted
boots fall back to an unthemed text LUKS prompt. Boot still completes only
because the kernel passes key=value cmdline params to init as environment
variables and devtmpfs is automounted.

Force synchronous unpacking via initramfs_async=0 until the race is fixed
upstream: in the packaged defaults for fresh installs, and via migration
for existing systems.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 11:30:55 -07:00
David Heinemeier HanssonandGitHub b31036f604 Merge pull request #6334 from KazeTachinuu/enterprise-8021x-wifi
Connect to enterprise (802.1X) Wi-Fi networks from the network panel
2026-07-24 10:51:04 -07:00
David Heinemeier HanssonandClaude Fable 5 6963432600 Send the 802.1X password over stdin instead of argv
argv is world-readable in /proc for every local process while the
connection attempt runs. Create the profile without the secret, then
set it through nmcli's scriptable connection editor, which reads from
stdin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 10:50:58 -07:00
David Heinemeier HanssonandGitHub 3cc3aa7ea3 Merge pull request #6368 from basecamp/drop-wifi-powersave-toggle
Keep Wi-Fi power save off instead of toggling it with AC state
2026-07-24 10:37:47 -07:00
David Heinemeier HanssonandClaude Fable 5 da157fb9c0 Drop Wi-Fi power save toggling in favor of keeping it off
The on-battery toggle bought a fraction of a watt while the radio
idled -- twenty-some minutes across a full discharge in the best case
-- and paid for it with 20-300ms latency spikes on idle links and
outright link drops on Intel BE200/BE211 firmware. NetworkManager can
keep power save off natively with one conf.d line, which replaces the
udev rule, the setter script, and any per-card deny-listing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 10:34:19 -07:00
David Heinemeier HanssonandGitHub 1d4077287b Merge pull request #6353 from zainsyedz/fix-clamshell-internal-monitor-config
Respect internal monitor config in clamshell recovery
2026-07-24 10:31:00 -07:00
David Heinemeier HanssonandGitHub a62e95d2e1 Merge pull request #6367 from khpark43/fix-bar-plugin-json-values
Fix bar plugin JSON value validation
2026-07-24 10:24:34 -07:00
7faf53c4c0 Name the monitor SCALE targets when multiple displays are connected
SCALE only applies to the focused monitor, which is easy to lose track
of with several displays. Show the focused monitor's name on the right
of the SCALE header (matching the BRIGHTNESS/TEXT SIZE value
convention), hidden when only one display is enabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 10:12:28 -07:00
Kyunghyun Park 876d6bcd23 Fix bar plugin JSON value validation 2026-07-25 01:33:30 +09:00
David Heinemeier HanssonandGitHub ea549a74d5 Merge pull request #6364 from scottjones/fix-screensaver-multimonitor
Run the screensaver on every monitor, not just the last one
2026-07-24 09:32:02 -07:00
David Heinemeier HanssonandClaude Fable 5 26630a9796 Check terminal support once and bound the window wait overall
An unsupported terminal notified once per monitor and each monitor
paid a wasted wait; check before the loop instead. The per-read
timeout also let a chatty event stream extend the wait indefinitely,
so spend the 5 seconds against one deadline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:31:55 -07:00
David Heinemeier Hansson 5a046035d5 Fix shell restart across dev path changes 2026-07-24 09:31:09 -07:00
David Heinemeier HanssonandGitHub abc9ff03e1 Merge pull request #6366 from scottjones/fix-notification-surface-resize
Fix notification popups stretching/squishing when the count changes
2026-07-24 09:24:51 -07:00
David Heinemeier HanssonandClaude Opus 4.8 b6bd486c39 Bind notification popup mask to the toast column item
Use Region { item: popupColumn } instead of manually mirroring the
column's x/y/width/height. It tracks the item's mapped geometry directly,
so it stays correct without assuming the column shares the window's
coordinate space.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 09:24:30 -07:00
David Heinemeier HanssonandGitHub 4e550b75c2 Merge pull request #6350 from husamemadH/fix-mise-install-wrapper-recursion
Fix infinite loop in omarchy-mise-install wrappers
2026-07-24 09:20:15 -07:00
David Heinemeier HanssonandClaude Fable 5 5c1b31ada9 Regenerate existing mise wrappers via migration
The generator fix only helps fresh installs; existing wrappers in
~/.local/bin keep the recursive exec line until rewritten. Detect the
generated wrapper shape, extract package and bin, and reinstall each
one, which also repairs wrappers users created for their own packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:19:56 -07:00
David Heinemeier HanssonandGitHub bc33381d84 Merge pull request #6348 from InfeCtlll3/agent/scroll-long-tray-menus
Make long tray menus scrollable
2026-07-24 09:09:17 -07:00
David Heinemeier HanssonandClaude Fable 5 332a982a1d Drop source-grep regression assertion
A regex over the QML text breaks on innocent reformatting and passes
even when the scrolling behavior regresses.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:09:02 -07:00
David Heinemeier HanssonandGitHub e135508257 Merge pull request #6356 from khpark43/fix-default-browser-xdg-settings
Fix XDG browser defaults when BROWSER is set
2026-07-24 09:01:39 -07:00
David Heinemeier HanssonandClaude Fable 5 e61ff1ef4f Unset BROWSER for xdg-settings reads and don't abort removal on fallback failure
xdg-settings get also consults $BROWSER, so unset it for the getters too.
A failed best-effort fallback default should not abort the browser removal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:01:17 -07:00
Scott JonesandClaude Opus 4.8 b1a9d7912e Give notification popups a fixed-size surface to stop resize scaling
The popups used one Wayland layer surface per output sized to their content
(implicitWidth/Height bound to the toast column), so every time a toast was
added or removed the surface resized. During that resize the compositor
briefly scaled a stale buffer, stretching or squishing the cards mid-
transition -- worst with only one or two toasts, where each resize is a
larger relative change.

Make the surface full-screen and fixed, like the OSD overlay, so adding or
removing a toast only changes the content inside it and the surface never
resizes. Mask the input region to the toast column so the otherwise-
invisible full-screen overlay stays click-through.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 11:47:53 -04:00
Scott JonesandClaude Opus 4.8 6ecb1dbb56 Run the screensaver on every monitor, not just the last one
omarchy-launch-screensaver loops over the monitors, focusing each and
spawning a terminal on it -- but the spawn is asynchronous. Slow-starting
terminals mapped their windows after focus had already moved to the next
monitor, so every screensaver landed on the last-focused monitor and the
others got none (and the fullscreen rule applied inconsistently when two
windows mapped at once).

Listen on Hyprland's event socket and wait for each monitor's screensaver
window to open before moving focus to the next one, so there is exactly one
screensaver per monitor. The stream is opened before spawning so a
fast-mapping window can't be missed, with a read timeout as a safety net.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 01:14:09 -04:00
David Heinemeier HanssonandClaude Fable 5 2c8639ffbd Persist workspace layout toggles across Hyprland reloads
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:03:43 -07:00
David Heinemeier Hansson 202296324a Keep display scaling options consistent 2026-07-23 20:37:25 -07:00
David Heinemeier Hansson f20da3f94a Tmux jumps are not that important 2026-07-23 20:09:50 -07:00
David Heinemeier Hansson 3e664286cc Use upcase consistently for menu tooltips 2026-07-23 20:09:39 -07:00
David Heinemeier HanssonandClaude Fable 5 ffd3c79ab2 Resend pending invitations after restarting the shell
Restarting the shell kills its notification server, and a pending
invitation's notify-send waiter then hangs forever: the dying server
never emits NotificationClosed. So a still-running
omarchy-*-invitation unit means an unanswered invitation — re-run it
once the new shell is up so its toast reappears.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 19:25:11 -07:00
David Heinemeier HanssonandClaude Fable 5 00eae9a5ef Invite fingerprint setup after the first system update
The setup installs packages (libfprint-git, fprintd, usbutils), which
isn't reliable on a fresh install before the databases have been
synced. Defer the invitation with a post-update hook, like Voxtype.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 19:25:06 -07:00
David Heinemeier Hansson 86f616cfb3 Add emoji picker to Trigger menu 2026-07-23 19:23:50 -07:00
David Heinemeier Hansson 9b09a3c142 Clear update inhibitors before reboot prompt 2026-07-23 18:58:55 -07:00
David Heinemeier HanssonandClaude Fable 5 a0e6d65ba8 Keep universal clipboard shortcuts working in terminals
Sending the shortcut through wtype's virtual keyboard let the physically
held SUPER merge into the injected chord, so terminals saw
SUPER+CTRL+Insert instead of CTRL+Insert, and injected CTRL+V could even
trigger the SUPER+CTRL+V clipboard manager bind. Send via send_key_state
with no window target instead: explicit mods go straight to the focused
surface, layer-shell panels included.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XnMDbwJXQA3fvW8o8Pwr97
2026-07-23 18:08:31 -07:00
David Heinemeier Hansson 63955e787f Hide unavailable display scale options 2026-07-23 18:06:19 -07:00
David Heinemeier Hansson 58ec29f20a Move direct boot command to setup 2026-07-23 17:43:36 -07:00
David Heinemeier HanssonandClaude Fable 5 5b130c1063 Make tmux alert parsing and focus more robust
Session names can contain pipes but never colons, so split fields on
colons instead. Remember refreshes that arrive while the indicator is
already polling, and jump to the most recently used tmux client rather
than an arbitrary one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 17:40:47 -07:00
David Heinemeier HanssonandClaude Opus 4.8 a382be2645 Indicate and jump to tmux panes waiting for attention
Show a bar indicator whenever tmux has flagged a window, the same state
that highlights the tab, and jump to it on click or with Super + Ctrl + J.
Tmux hooks push the state to the shell, so nothing polls while no pane is
waiting.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 17:40:47 -07:00
David Heinemeier HanssonandClaude Opus 4.8 98e88723ae Reload tmux config when the server is running
pgrep -x tmux never matched, since the processes are named "tmux: server"
and "tmux: client", so config reloads were silently skipped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 17:40:47 -07:00
David Heinemeier Hansson 6d7268eb65 Support clipboard shortcuts in shell panels 2026-07-23 17:12:39 -07:00
David Heinemeier Hansson c844277749 Activate dev checkout before updates 2026-07-23 17:05:29 -07:00
David Heinemeier Hansson ed9e68957f Match display scale highlights to clean scales 2026-07-23 16:48:29 -07:00
David Heinemeier Hansson 534746e05b No needless exit wounds 2026-07-23 16:47:20 -07:00
David Heinemeier Hansson 85a8453e20 Stick with one-liners 2026-07-23 16:42:59 -07:00
David Heinemeier Hansson 2d3d1e2a3c Only offer webcam recording when available 2026-07-23 16:33:12 -07:00
David Heinemeier Hansson 7798ed34b1 Keep apps menu alphabetically sorted 2026-07-23 16:32:31 -07:00
David Heinemeier Hansson 5d83402e75 No need to count the displays 2026-07-23 16:19:29 -07:00
David Heinemeier HanssonandClaude Opus 4.8 cb9485f216 Gate sudo fingerprint behind lid state too
Extend the clamshell gate to /etc/pam.d/sudo, not just polkit-1. When the
lid is shut the reader is unreachable, so a terminal sudo would block on
"Place your finger" until pam_fprintd timed out before letting you type the
password. The same pam_exec gate (success=1 skips fingerprint when the lid
is closed) now runs ahead of pam_fprintd in the sudo stack as well.

setup and removal share one gate definition across sudo and polkit; the
migration now gates both stacks on existing installs.

Resolves the clamshell case in #856 and supersedes #6003.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 15:29:22 -07:00
David Heinemeier Hansson 8e549c27d0 Update active dev checkout with system 2026-07-23 15:28:32 -07:00
David Heinemeier Hansson 7a9947a732 Combine the Omarchy menu and the launcher
Now that we can deep search, they don't need to be different
2026-07-23 15:04:22 -07:00
David Heinemeier Hansson 347997871e Defer channel switch reboot until after update 2026-07-23 14:19:24 -07:00
David Heinemeier Hansson b2f1bb6ae3 Merge branch 'fingerprint-first-run-invite' into quattro 2026-07-23 14:11:19 -07:00
David Heinemeier Hansson b6e75d5e48 Language improvements 2026-07-23 14:08:08 -07:00