Compare commits

...
993 Commits
Author SHA1 Message Date
David Heinemeier HanssonandGitHub 31247484dc Merge pull request #4525 from basecamp/dev
Omarchy 3.4.0
2026-02-26 13:21:40 -05:00
David Heinemeier Hansson c3f7575474 Allow for a second AI 2026-02-26 14:48:42 +01:00
David Heinemeier Hansson 91855a56b4 Just go straight to build 2026-02-26 13:15:46 +01:00
David Heinemeier Hansson b1960fe870 Fix for many panes 2026-02-26 13:15:36 +01:00
David Heinemeier Hansson 74c9703ea3 Add usage docs 2026-02-26 13:12:17 +01:00
David Heinemeier Hansson 3408445880 Use consistent style 2026-02-26 12:13:05 +01:00
David Heinemeier Hansson ab615092ab Fix comment 2026-02-26 12:10:53 +01:00
David Heinemeier Hansson 57f07cc9c8 Follow style guide 2026-02-26 12:08:20 +01:00
David Heinemeier Hansson b1fabda701 Make sure toe escape directory and names 2026-02-26 12:03:17 +01:00
David Heinemeier Hansson cc3d8e4abe Fix quoting for file inputs in transcoding functions 2026-02-26 12:00:08 +01:00
David Heinemeier HanssonandGitHub 35862eb907 Merge pull request #4708 from sgruendel/remove_legacy_gpu_terminal
Remove legacy GPU terminal script and its invocation
2026-02-26 05:57:33 -05:00
David Heinemeier Hansson 3ab91b663a Fix bad font reference 2026-02-26 11:51:18 +01:00
David Heinemeier Hansson 7593511600 Remove debug info that wasn't useful 2026-02-26 11:49:23 +01:00
David Heinemeier Hansson 47829841f3 Fix quoting 2026-02-26 11:47:19 +01:00
David Heinemeier Hansson f6c7b96e01 Use const path 2026-02-26 11:45:07 +01:00
David Heinemeier Hansson 05f1ba9fd8 Excess CR 2026-02-26 11:44:12 +01:00
David Heinemeier Hansson 81522701f2 Can't have any migrations before the update that doesn't do this 2026-02-26 11:17:49 +01:00
David Heinemeier Hansson b3867f1294 Even earlier 2026-02-26 10:44:07 +01:00
David Heinemeier Hansson 244bb03877 Need this even earlier too 2026-02-26 10:41:50 +01:00
David Heinemeier Hansson 9ae56e30a2 Needed for older updates 2026-02-26 10:39:51 +01:00
David Heinemeier Hansson 7642cb9cc9 No longer using wayfreeze 2026-02-26 10:36:07 +01:00
David Heinemeier Hansson a491a414d5 Use correct package 2026-02-26 10:24:40 +01:00
David Heinemeier Hansson 119534038a Nothing recursive needed 2026-02-26 10:22:30 +01:00
David Heinemeier Hansson 24e7afefc5 Backup login.keyring instead of just deleting it 2026-02-26 10:20:32 +01:00
David Heinemeier Hansson 8d3d4e797e Make it clear that we're starting a new session 2026-02-26 10:18:38 +01:00
David Heinemeier Hansson b0aa10abb3 Fix conditional 2026-02-26 10:13:36 +01:00
David Heinemeier HanssonandGitHub f3f1468914 Merge pull request #4742 from pomartel/hide-fcitx5-icon
Hide fcitx5 icon from waybar
2026-02-26 04:01:48 -05:00
Pierre Olivier Martel 8bc2a7cf22 Revert "Hide fcitx5 tray icon from waybar"
This reverts commit b5dbb23c9f.
2026-02-25 21:52:12 -05:00
Pierre Olivier Martel 7ae27d4253 hide fcitx5 tray icon 2026-02-25 21:44:08 -05:00
David Heinemeier Hansson 8e88b780d3 Rearrange and proper branding 2026-02-25 21:47:17 +01:00
David Heinemeier Hansson 3775d93099 Disable Ruby compilation in mise (if mise and ruby are installed) 2026-02-25 21:41:46 +01:00
David Heinemeier Hansson 95e5a5a754 Better naming 2026-02-25 21:40:39 +01:00
David Heinemeier Hansson a7f83a576a Usage 2026-02-25 21:37:44 +01:00
David Heinemeier Hansson 0bb3973a8c Reduce this to generic functions 2026-02-25 21:32:51 +01:00
David Heinemeier Hansson 1785fb6185 Add tpl for creating multi-pane layouts for the same command
All the agents, all at once!
2026-02-25 21:21:45 +01:00
David Heinemeier Hansson 53f026292d Do global toggles and include border_size 2026-02-25 20:33:43 +01:00
David Heinemeier Hansson 1609fd74ed Add Tmux keybinding on Super + Alt + Return 2026-02-24 07:46:15 -05:00
David Heinemeier Hansson fe21bb1fad Split out functions and add multi mode for tml 2026-02-23 06:59:21 -05:00
David Heinemeier Hansson 8e9bd2484e Add claude code by default
Now that we have aliases depending on it. But also include it and
opencode in the removal of preinstalls.
2026-02-23 06:27:28 -05:00
David Heinemeier Hansson 74ce6c9943 Try a way to start multiple tmls 2026-02-23 12:06:17 +01:00
David Heinemeier Hansson a612d71bc7 Ensure we're inside tmux 2026-02-23 12:01:58 +01:00
David Heinemeier Hansson 0d50a01a41 Name the current window after the base directory name 2026-02-23 12:00:53 +01:00
David Heinemeier HanssonandGitHub 3e952ca745 Merge pull request #4718 from RyanLatimer/fix-voxtype-notification
fix: update voxtype dictation notification phrasing
2026-02-23 02:15:42 +01:00
Ryan Latimer 6ec3fa3acc fix: update voxtype dictation notification phrasing 2026-02-21 17:08:19 -05:00
David Heinemeier HanssonandGitHub 6cb036d769 Merge pull request #4711 from bjarneo/add-theme-white
Add theme white
2026-02-21 22:18:28 +01:00
David Heinemeier Hansson 71b553a9aa Only source the file if tmux is running 2026-02-21 21:57:33 +01:00
Bjarne Øverli 1ea2abb602 Make the accent brighter 2026-02-21 19:16:37 +01:00
Bjarne Øverli 5067cf5430 Load from repo 2026-02-21 18:57:50 +01:00
Bjarne Øverli ed228e7042 Rename file extenstion 2026-02-21 18:55:31 +01:00
Bjarne Øverli 94d668bcc3 Add theme white 2026-02-21 18:53:58 +01:00
David Heinemeier Hansson 72d575c679 Add linux-firmware-marvell for Surface laptops 2026-02-21 18:18:45 +01:00
David Heinemeier Hansson 3936378ca5 Try harder to ensure that even online installs have the intended packages for their channel 2026-02-21 18:11:04 +01:00
David Heinemeier Hansson ac3a5ca32e Exit mildly so we can continue even if we can't do a setup 2026-02-21 18:01:39 +01:00
David Heinemeier Hansson 5c70555308 Setup hibernation as part of post-install
So limine will be ready
2026-02-21 17:52:15 +01:00
David Heinemeier Hansson 3223e33de3 Ensure this wasn't the problem 2026-02-21 17:42:25 +01:00
Ryan Hughes c45b46cfbb Fix upload command 2026-02-21 11:37:01 -05:00
David Heinemeier Hansson d0a39976b2 Merge branch 'rc' into dev 2026-02-21 17:31:40 +01:00
David Heinemeier Hansson 23604fbaec Fail loudly if we haven't added any boot entries 2026-02-21 17:31:35 +01:00
David Heinemeier Hansson add6ca6292 Merge branch 'dev' into rc 2026-02-21 17:13:55 +01:00
David Heinemeier Hansson f1cd65ca7a Ensure that Alacritty is set to take xterm variables out of the box 2026-02-21 17:13:51 +01:00
Stefan Gründel e6f7c94fcf Remove legacy GPU terminal script and its invocation 2026-02-21 16:51:25 +01:00
David Heinemeier Hansson 105c5e20ea Merge branch 'dev' into rc 2026-02-21 16:37:01 +01:00
David Heinemeier Hansson 311fbe8576 Group system menu bins together 2026-02-21 16:36:56 +01:00
David Heinemeier Hansson d889fd52e4 Merge branch 'dev' into rc 2026-02-21 16:31:38 +01:00
David Heinemeier Hansson 1c527e0cd7 Fix perms 2026-02-21 16:31:29 +01:00
David Heinemeier Hansson 5a2ec94a93 Trim the first 100ms of the video to avoid the noise problem 2026-02-21 16:22:37 +01:00
David Heinemeier Hansson adca719e33 Use h264 for better compatibility when sharing videos with mac 2026-02-21 16:22:18 +01:00
David Heinemeier Hansson 07988bff05 Merge branch 'dev' into rc 2026-02-21 16:11:33 +01:00
David Heinemeier Hansson 6298fdf788 Style 2026-02-21 16:10:07 +01:00
David Heinemeier Hansson 3cab707016 Fix font match 2026-02-21 16:09:57 +01:00
David Heinemeier Hansson aa3b60e0a7 Move Caskaydia Mono to install fonts
Now that we've doubled down on JetBrains as the default
2026-02-21 16:04:51 +01:00
David Heinemeier Hansson 1418e33a0d We don't need this 300MB package by default 2026-02-21 16:01:43 +01:00
David Heinemeier Hansson 11316e7d22 Let ghostty install when it's selected via Install > Terminal like Kitty 2026-02-21 15:56:34 +01:00
David Heinemeier Hansson ba381e28bf Merge branch 'dev' into rc 2026-02-21 15:47:45 +01:00
David Heinemeier Hansson 262fadd531 Revert "Ensure /home is indexed on Btrfs"
This reverts commit 9f561e0123.
2026-02-21 15:32:15 +01:00
David Heinemeier Hansson cc2e7edca4 Merge branch 'dev' into rc 2026-02-21 15:29:42 +01:00
David Heinemeier Hansson 1a564500ac Switch back to Alacritty for the default terminal
It's more broadly compatible with older hardware which is otherwise left
in a bad/confusing situation where nothing works. And it's easy to
switch to Ghostty for those where it works.
2026-02-21 15:29:35 +01:00
David Heinemeier Hansson 0a77df56a5 Merge branch 'dev' into rc 2026-02-21 15:20:11 +01:00
David Heinemeier Hansson 43cebbeb00 More natural order 2026-02-21 15:19:52 +01:00
David Heinemeier Hansson e140badbb2 Make suspend opt-out rather than opt-in 2026-02-21 15:16:15 +01:00
David Heinemeier Hansson 8a36536bf2 Merge branch 'dev' into rc 2026-02-21 15:13:42 +01:00
David Heinemeier Hansson d52ae29e66 Fix User Manager hanging on shutdown 2026-02-21 15:13:32 +01:00
David Heinemeier Hansson 09c421021d Login to the right session 2026-02-21 15:03:26 +01:00
David Heinemeier Hansson 1a743d3467 Prevent password-based SDDM logins from creating an encrypted login keyring 2026-02-21 15:03:16 +01:00
David Heinemeier Hansson 3b2db4b98b Use omarchy-refresh-sddm 2026-02-21 14:18:35 +01:00
David Heinemeier Hansson 21e33b5cd7 Fix sizing 2026-02-21 14:16:27 +01:00
David Heinemeier Hansson 20be495889 Allow updating the script 2026-02-21 14:14:30 +01:00
David Heinemeier Hansson 2a38dc7d2e Add Logout to system menu and style the SDDM login screen 2026-02-21 14:09:14 +01:00
David Heinemeier HanssonandGitHub c24c184d8f Merge pull request #4676 from CryptoCain/dev
Comment out mouse acceleration setting
2026-02-21 11:30:39 +01:00
David Heinemeier Hansson 78742792b8 It just drifts, GH releases are the truth 2026-02-21 11:20:30 +01:00
David Heinemeier Hansson 29cf5e3ee4 Cleanup 2026-02-21 11:14:08 +01:00
David Heinemeier Hansson de76ea3448 Separate the note about restart from the include 2026-02-21 11:10:06 +01:00
David Heinemeier Hansson 24a5de2f99 Add option to configure direct boot 2026-02-21 11:08:52 +01:00
David Heinemeier Hansson c8b1431c8f Update skill to focus on end-user customizations
We have AGENTS.md inside for developers of Omarchy
2026-02-21 11:01:08 +01:00
David Heinemeier HanssonandGitHub 7a5b55c3df Merge pull request #4705 from foucist/patch-1
Keep the mouse cursor in sync with the last focused window when switching workspaces.
2026-02-21 10:53:50 +01:00
David Heinemeier Hansson f7cd7a94b4 Merge branch 'dev' into rc 2026-02-21 10:51:55 +01:00
David Heinemeier Hansson a69f332869 Fix colored gutter in nvim by making line numbers transparent 2026-02-21 10:51:50 +01:00
David Heinemeier Hansson 8dfd36fb2a Excess space 2026-02-21 10:44:25 +01:00
David Heinemeier Hansson a2f99b771e A few more examples 2026-02-21 10:44:02 +01:00
David Heinemeier Hansson 825a12c0b6 Suggest a few more possible tweaks 2026-02-21 10:41:09 +01:00
David Heinemeier Hansson 84359dbd0d Merge branch 'dev' into rc 2026-02-21 10:34:56 +01:00
David Heinemeier Hansson b5dbb23c9f Hide fcitx5 tray icon from waybar 2026-02-21 10:34:52 +01:00
David Heinemeier Hansson 497a755927 Clearer to use the same name 2026-02-21 10:27:19 +01:00
David Heinemeier Hansson 29c3355e3f Group hyprland toggles correctly 2026-02-21 10:24:49 +01:00
David Heinemeier Hansson 49890ec068 Merge branch 'dev' into rc 2026-02-21 10:19:00 +01:00
David Heinemeier Hansson 7514ae7dcf Use consistent bash5 style for conditionals and quoting 2026-02-21 10:18:47 +01:00
David Heinemeier Hansson d2acf3b6ba Use our pkg helpers consistently 2026-02-21 09:52:17 +01:00
David Heinemeier Hansson c6ac6de366 Correct checks 2026-02-21 09:48:11 +01:00
David Heinemeier Hansson d557c016f2 No longer used 2026-02-21 09:46:43 +01:00
James RobeyandGitHub 047e48885c Add cursor warp_on_change_workspace setting
enables "Move the cursor to the last focused window after changing the workspace." setting
2026-02-21 15:36:29 +07:00
David Heinemeier Hansson bac5ceef57 Assume https if no protocol is entered 2026-02-21 09:24:43 +01:00
David Heinemeier Hansson 1f074308b7 Merge branch 'dev' into rc 2026-02-21 09:22:23 +01:00
David Heinemeier Hansson ffd8509da6 Fix Hibernation resume on nvidia computers 2026-02-21 09:22:17 +01:00
David Heinemeier Hansson 76ab172334 Scala needs java to be installed 2026-02-21 09:17:26 +01:00
David Heinemeier Hansson 47c12a6888 Only ask for icon URL if we can't get a favicon 2026-02-21 09:14:50 +01:00
David Heinemeier Hansson 778c203209 Ensure we are using compiled binaries for Ruby 2026-02-21 09:14:50 +01:00
Ryan HughesandGitHub 2a4e4080a7 Merge pull request #2953 from riozee/fix/screenshot-portrait-transform
Fix: omarchy-cmd-screenshot geometry for transformed monitors
2026-02-21 03:02:52 -05:00
David Heinemeier Hansson ac075d1b00 Add Google as a DNS provider option 2026-02-21 09:02:09 +01:00
David Heinemeier Hansson 8e38f70832 Cleanup duplication 2026-02-21 08:52:02 +01:00
David Heinemeier Hansson d1757b25f3 No lazydocker either 2026-02-21 08:43:53 +01:00
David Heinemeier Hansson d32b94f369 Merge branch 'dev' into rc 2026-02-21 08:32:32 +01:00
David Heinemeier Hansson 4c1594572b Need to reload for the keybindings to disappear from Super + K 2026-02-21 08:32:27 +01:00
David Heinemeier Hansson 3bfe42ffad Merge branch 'dev' into rc 2026-02-21 08:29:42 +01:00
David Heinemeier Hansson 49c7b63677 Group these 2026-02-21 08:29:37 +01:00
David Heinemeier Hansson 5e63cf9d1d Ensure we only have plain bindings after doing Remove > Preinstalls 2026-02-21 08:26:46 +01:00
David Heinemeier Hansson aaeafa441e Merge branch 'dev' into rc 2026-02-21 07:55:26 +01:00
David Heinemeier Hansson 06494e99a8 Merge branch 'master' into dev 2026-02-21 07:44:22 +01:00
David Heinemeier HanssonandClaude Opus 4.6 6a2b0f1963 Fix Bluetooth device showing bluez ID instead of friendly name (#4260)
Look up device.id first for Bluetooth friendly names, falling back to
object.id for non-Bluetooth devices. Also fix conditionals to use [[ ]].

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 07:43:46 +01:00
David Heinemeier Hansson 7c0adf7d40 Revert "Merge pull request #4260 from shawnyeager/fix-bluetooth-device-name-display"
This reverts commit 517bc8920f, reversing
changes made to cd01b3cedf.
2026-02-21 07:43:14 +01:00
David Heinemeier HanssonandGitHub 517bc8920f Merge pull request #4260 from shawnyeager/fix-bluetooth-device-name-display
Fix Bluetooth device showing bluez ID instead of friendly name
2026-02-21 07:42:12 +01:00
David Heinemeier HanssonandGitHub 9c7f260f3b Merge pull request #3755 from zachfleeman/nvidia_rtx_pro_support
Nvidia RTX Pro Support
2026-02-21 07:39:31 +01:00
David Heinemeier Hansson 031ea32614 Merge branch 'dev' into rc 2026-02-21 07:34:59 +01:00
David Heinemeier Hansson 6927e77f51 Fix permissions 2026-02-21 07:34:55 +01:00
David Heinemeier Hansson 618b957e23 Fix missing extension 2026-02-21 07:34:24 +01:00
David Heinemeier Hansson f25584949c Remove duplicate or no longer relevant migrations 2026-02-21 07:06:30 +01:00
David Heinemeier Hansson 3df37f999c Hide wiremix and limine-snapper-restore from app launcher
Never meant to be exposed
2026-02-21 06:54:29 +01:00
David Heinemeier Hansson d1b00daf53 Decided not to use this after all
Stuck with more prefix-based keys
2026-02-21 06:32:11 +01:00
David Heinemeier Hansson ea6c92d569 Merge branch 'dev' into rc 2026-02-21 06:29:00 +01:00
CryptoCainandGitHub fcf8d96e10 Comment out mouse acceleration setting
Comment out mouse acceleration setting in input.conf
2026-02-20 23:39:41 -03:30
Zach Fleeman 2e3500cbd5 Nvidia RTX Pro Support
Support detection of Nvidia RTX Pro GPU during install
2026-02-20 18:05:00 -05:00
Ryan Hughes 929b09c4fb Remove. Doesn't work right. 2026-02-20 17:57:26 -05:00
Ryan Hughes 5711f42ac3 Don't delete snapshot on error 2026-02-20 17:48:24 -05:00
David Heinemeier Hansson 9b02df37c2 Merge branch 'dev' into rc 2026-02-20 22:42:50 +01:00
David Heinemeier HanssonandGitHub d6e8983a8c Merge pull request #4646 from dipeshbabu/fix/upload-log-system-info-alias
Fix upload-log usage and support system-info alias
2026-02-20 22:42:35 +01:00
Dipesh BabuandGitHub 413ddd2ea7 docs: correct omarchy-debug journalctl section label (#4654) 2026-02-20 22:41:00 +01:00
Luca PattocchioandGitHub e5b58a3e68 Add remove scala option (#4675) 2026-02-20 22:39:51 +01:00
David Heinemeier HanssonandGitHub 1b2f08e8d9 Merge pull request #4665 from dipeshbabu/fix/migration-hyprland-flag-newline
Fix Hyprland Chromium flags migration newline handling
2026-02-20 22:38:34 +01:00
Ryan HughesandGitHub 747a0f2698 Merge pull request #3107 from jtaw5649/fix/omarchy-cmd-screenshot
Fix HDR omarchy-cmd-screenshot
2026-02-20 16:34:03 -05:00
David Heinemeier Hansson 381c8a9664 Merge branch 'dev' into rc 2026-02-20 22:31:55 +01:00
David Heinemeier Hansson 7d4cc63d20 Clean up and offer reboot 2026-02-20 22:28:14 +01:00
David Heinemeier Hansson 79fb802e34 The nordvpn gui is just too heavy with too many dependencies 2026-02-20 22:25:58 +01:00
David Heinemeier HanssonandGitHub c644408b51 Merge pull request #4468 from jamerrq/feat/nordvpn-service
feat: add NordVPN to installable services with optional GUI
2026-02-20 22:22:23 +01:00
David Heinemeier Hansson 9a7bf34fcc Order 2026-02-20 22:22:02 +01:00
David Heinemeier Hansson c3f3628185 Slim down and use existing services 2026-02-20 22:21:05 +01:00
David Heinemeier Hansson 9f561e0123 Ensure /home is indexed on Btrfs
Closes #4292
Co-authored-by: @jorge-campo
2026-02-20 22:19:22 +01:00
David Heinemeier HanssonandGitHub b7544ecf3c Merge pull request #4290 from prepin/fix-format-drive-compatibility
Fix format-drive compatibility with macOS
2026-02-20 22:15:14 +01:00
David Heinemeier Hansson 91470cb31f Switch from push-to-talk to toggle
Works around the fact that push to talk is just inconsistent regarding
the precise timing of letting go of buttons.

Closes #4178
2026-02-20 22:08:49 +01:00
jtaw5649andRyan Hughes f93c9307ba Fix HDR omarchy-cmd-screenshot 2026-02-20 16:00:51 -05:00
David Heinemeier Hansson 864df215bb Improve description 2026-02-20 21:58:00 +01:00
David Heinemeier HanssonandGitHub 8fed694305 Merge pull request #3596 from defer/defer/kernel-modules-hook
kernel: Keep modules functional after a kernel upgrade
2026-02-20 21:56:55 +01:00
David Heinemeier HanssonandGitHub 949a892052 Merge branch 'dev' into defer/kernel-modules-hook 2026-02-20 21:56:41 +01:00
David Heinemeier Hansson 1c0f735e96 Merge branch 'dev' into rc 2026-02-20 21:49:01 +01:00
David Heinemeier Hansson cea45c4e8b Include vendor for drives where it's not part of the model string
Closes #3681
Co-authored-by: @KR9SIS
2026-02-20 21:48:51 +01:00
David Heinemeier Hansson 640ca725bb More clues for agents 2026-02-20 21:47:43 +01:00
David Heinemeier Hansson fc36b5ef7a Merge branch 'dev' into rc 2026-02-20 21:45:00 +01:00
David Heinemeier Hansson 5f1eca3b79 Show partitions to help decide on drive via omarchy-drive-select
Closes #3731
Co-authored-by: @johnbarney
2026-02-20 21:30:11 +01:00
David Heinemeier HanssonandGitHub c8a3796d36 Merge pull request #3730 from hattapauzi/master
Added a reminder to run omarchy-restart-xcompose for applying changes
2026-02-20 21:25:42 +01:00
David Heinemeier HanssonandGitHub c6df7ee199 More direct
Updated comment to clarify the command for applying changes.
2026-02-20 21:25:29 +01:00
David Heinemeier Hansson 0cc91ce71c Simplify the kernel change check and make it work with any kernel
Closes #3785
2026-02-20 21:22:59 +01:00
David Heinemeier Hansson 9b4140abc9 Turn off keyboard backlighting when idle
Closes #3319
Co-authored-by: @pukljak
2026-02-20 21:13:02 +01:00
David Heinemeier HanssonandGitHub bc05c1c849 Merge pull request #4673 from guidovicino/fix-obsidian-muted-contrast
Fix low contrast for muted/faint text in Obsidian theme template
2026-02-20 20:52:51 +01:00
David Heinemeier HanssonandGitHub 84c57d97bd Merge pull request #2868 from timohubois/feat-config-docker-with-on-demand-startup
Feat config docker with on demand startup
2026-02-20 20:51:42 +01:00
David Heinemeier Hansson fae8f6e2ce Fix emoji rendering in Alacritty
Closes #2698
Co-authored-by: @glauberdmo
2026-02-20 20:35:12 +01:00
David Heinemeier Hansson 44d9d17d21 Merge branch 'dev' into rc 2026-02-20 20:23:48 +01:00
David Heinemeier Hansson d3ab84bb05 Merge branch 'master' into dev 2026-02-20 20:23:43 +01:00
David Heinemeier Hansson cd01b3cedf Fix list 2026-02-20 20:23:31 +01:00
David Heinemeier Hansson 4db9620cb5 Merge branch 'master' into dev 2026-02-20 20:21:43 +01:00
David Heinemeier HanssonandGitHub 316bffa73d Merge pull request #2602 from saftacatalinmihai/scala-dev-env
Added Scala to the Deveopment Omarchy Menu and implementation
2026-02-20 20:20:45 +01:00
David Heinemeier Hansson 1babb32c05 Merge branch 'dev' into rc 2026-02-20 20:20:22 +01:00
Guido Vicino b50a388726 Fix low contrast for muted/faint text in Obsidian theme 2026-02-20 19:59:39 +01:00
guidovicinoandGitHub 5ef4426577 Add Tmux to the config refresh menu (#4671) 2026-02-20 19:39:34 +01:00
db3ba3501a Support single-key keyboard backlight cycling (#4672)
* Support single-key keyboard backlight cycling (like Asus F4) and add keyboard specific OSD icon

* We don't need an alias

---------

Co-authored-by: Ryan Latimer <ryan@example.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-02-20 19:37:55 +01:00
David Heinemeier Hansson f3f36e2525 Fix perms 2026-02-20 18:37:26 +01:00
Michael D LambertandGitHub e99afc98f8 Simplified battery percentage retrieval command (#2922)
* Simplified battery percentage retrieval command

Simplified the battery percentage extraction command.

* Used int instead of adding 0, put exit back in

Changed to use int.
Put exit back in to only return first battery in case of systems with multiple batteries.
2026-02-20 18:29:45 +01:00
David Heinemeier Hansson b14b9fb1e7 Merge branch 'dev' into rc 2026-02-20 18:13:24 +01:00
David Heinemeier Hansson 694eb8c698 Install vulkan drivers by default
Closes #2926
Co-authored-by: @ElBrodino
2026-02-20 18:12:54 +01:00
David Heinemeier Hansson 4cf3a6191b Add Super + Ctrl + Z to zoom in (repeat for more) and Super + Ctrl + Alt + Z to zoom out
Closes #2940
Co-authored-by: @pelephant2
2026-02-20 18:02:25 +01:00
David Heinemeier Hansson 667820fdd3 Merge branch 'dev' into rc 2026-02-20 17:53:16 +01:00
David Heinemeier Hansson 518349e490 Use new hyprland rules for changing the scrolltouchpad
Closes #4670
2026-02-20 17:53:02 +01:00
David Heinemeier Hansson e231697430 Raise inotify file watchers 2026-02-20 17:52:19 +01:00
David Heinemeier Hansson 645118830e Restart follows in second migration 2026-02-20 17:33:40 +01:00
88c8695ee5 Add full OSC 52 support to Alacritty configuration (#4603)
* Add full OSC 52 support to Alacritty configuration

* Simplify OSC 52 support addition in Alacritty config

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-02-20 17:32:37 +01:00
David Heinemeier Hansson f8aff270db Merge branch 'dev' into rc 2026-02-20 17:06:25 +01:00
David Heinemeier Hansson a493fc8b96 Humans would think vertical = vertical split, horizontal = horizontal split
Gotta love Linux nerds
2026-02-20 17:06:20 +01:00
David Heinemeier Hansson 5788da54af Use proper notification icons 2026-02-20 16:54:08 +01:00
David Heinemeier Hansson fcf883e827 Add notification silencing indicator to waybar 2026-02-20 16:52:09 +01:00
David Heinemeier Hansson bf962f0042 Add idle lock indicator 2026-02-20 16:48:36 +01:00
David Heinemeier Hansson 1303fa92fa Merge branch 'dev' into rc 2026-02-20 15:58:20 +01:00
David Heinemeier Hansson 87600497da Delay after sleep for PAM readiness before turning on display 2026-02-20 15:58:15 +01:00
David Heinemeier Hansson b98ff9a044 Merge branch 'dev' into rc 2026-02-20 15:55:53 +01:00
David Heinemeier Hansson 718ac2236c Attempt to fix PAM timing issue 2026-02-20 15:55:43 +01:00
David Heinemeier Hansson 0672cc4647 Merge branch 'dev' into rc 2026-02-20 15:53:22 +01:00
David Heinemeier Hansson ccc88a0111 Ensure config is available so starting the service immediately will work 2026-02-20 15:53:15 +01:00
David Heinemeier Hansson 0f4c64665e Merge branch 'dev' into rc 2026-02-20 15:06:49 +01:00
Dipesh BabuandGitHub 1fa33ce670 Fix typo (#4664)
* fix typo

* fix typo
2026-02-20 14:58:13 +01:00
Dipesh Babu 093a53b2a0 fix: add system-info alias for upload-log 2026-02-20 08:37:04 -05:00
David Heinemeier Hansson d7423c646d Merge branch 'dev' into rc 2026-02-20 08:28:24 +01:00
David Heinemeier Hansson a449e4f108 Fix wake 2026-02-20 07:52:49 +01:00
Dipesh Babu d04599a769 fix: append hyprland chromium flag as separate line 2026-02-19 23:15:38 -05:00
Dipesh BabuandGitHub f8df232902 docs: list deno and zig in install-dev-env usage (#4657) 2026-02-19 21:57:44 +01:00
Dipesh BabuandGitHub 5914d12c21 fix typo (#4658) 2026-02-19 21:44:12 +01:00
David Heinemeier Hansson 3b6174763c Merge branch 'dev' into rc 2026-02-19 21:33:16 +01:00
David Heinemeier Hansson 6d2e99f1c0 Restore opening present folder 2026-02-19 21:33:08 +01:00
David Heinemeier Hansson 5068e32044 Merge branch 'dev' into rc 2026-02-19 21:04:07 +01:00
David Heinemeier Hansson ae8b9b748b Have to start it right away 2026-02-19 21:03:55 +01:00
David Heinemeier Hansson c266a4d7f4 Correct offset to icon 2026-02-19 20:50:48 +01:00
David Heinemeier Hansson d27bc60be7 Correct offset to icon 2026-02-19 20:50:39 +01:00
David Heinemeier Hansson 88e86fa697 Match the new name 2026-02-19 20:44:00 +01:00
David Heinemeier Hansson 2a207f9e72 We don't need to restart walker 2026-02-19 20:42:07 +01:00
David Heinemeier Hansson 1f19ede7e3 Match art naming 2026-02-19 20:27:01 +01:00
David Heinemeier Hansson 0729f25905 Typo 2026-02-19 19:15:39 +01:00
David Heinemeier Hansson ea6311b80a Merge 2026-02-19 19:14:33 +01:00
Pierre Olivier MartelandGitHub 51cab758d0 Provide default icon URL if none given in omarchy-webapp-install (#4650) 2026-02-19 19:10:17 +01:00
David Heinemeier Hansson b17a22d47e Protect against nvim alias override
Closes #4558, #4559
Co-authored-by: @grumpydumpty
2026-02-19 19:03:44 +01:00
David Heinemeier Hansson 8a2e65e5d4 Silence the scaling notifications 2026-02-19 16:07:12 +01:00
David Heinemeier Hansson 83aa9aeb86 Ask before we close chromium and swap to mainline 2026-02-19 15:48:01 +01:00
David Heinemeier Hansson da0122c85a Allow proper downgrades of packages 2026-02-19 15:35:15 +01:00
David Heinemeier Hansson 2548395f8a Here too 2026-02-19 14:53:14 +01:00
David Heinemeier Hansson 9843f0a07e Allow for rc here too 2026-02-19 14:52:11 +01:00
5002279e3c Improve windows vm (#4512)
Co-authored-by: developer <developer@localhost>
2026-02-19 12:38:21 +01:00
Nate StottandGitHub ea14de4c37 Fix try init in bash when launched from fish shell (#4640)
The try command detects shell type from $SHELL variable. When bash is
launched from fish, $SHELL is still set to /usr/bin/fish, causing try
to output fish syntax which fails in bash with syntax errors.

Explicitly set SHELL=/bin/bash for the try init call to ensure correct
shell detection.
2026-02-19 12:36:04 +01:00
David Heinemeier Hansson 88f18727ae Too cumbersome to use on a laptop keyboard 2026-02-19 09:31:25 +01:00
zachfleemanandGitHub 4aeb4ab79e Fix firefox detection command in omarchy-launch-browser (#4641) 2026-02-19 07:58:07 +01:00
Pierre Olivier MartelandGitHub 055d9285b1 Unbind ctrl+shift+page_up/down in Ghostty config so it doesn't interfere with tmux keybindings (#4645)
* Unbind ctrl+shift+page_up/down in Ghostty config

* Add guard clause
2026-02-19 07:53:03 +01:00
David Heinemeier Hansson 0feb35a436 Use consistent width like theme selector 2026-02-18 22:45:41 +01:00
David Heinemeier Hansson c254f890aa Named for direct selection 2026-02-18 22:42:43 +01:00
6b4109faba Background selector (#4519)
* UPDATE: select background method

* ADD: migration file for background selector

* Add symlink for background selector in walker-elephant.sh

Forgot about this file. Should be added to make sure the background selector feature available in the fresh install

* clean up the code a bit

Updated omarchy background selector to hide from provider list and removed subtext from entries.

* Make the background selector the default

* Fix migration

* FIX: typo on background symlink target

* UPDATE: add ~/.config/omarchy/backgrounds/theme.name

* UPDATE: Cache = false

* Fix escaping for all extensions

* Extract omarchy-theme-bg-set

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-02-18 22:24:43 +01:00
Tommy MartinandGitHub eec15803fc Allow user themes to override individual files from official themes (#4547)
Instead of choosing exclusively between the official or user theme
directory, copy the official theme first, then overlay any user
customizations on top. This allows users to override specific files
(e.g. colors, backgrounds, keyboard backlight) without having to
duplicate the entire theme.
2026-02-18 22:07:49 +01:00
73dc11286b make omarchy-launch-browser check for firefox exclusive flag to detect base (#4572)
Co-authored-by: Mrid22 <mridulaga@outlook.com>
2026-02-18 21:59:05 +01:00
David Heinemeier Hansson 3657b1bc84 Quiet the output and give it a header 2026-02-18 21:40:38 +01:00
David Heinemeier Hansson c47bb34c25 Don't halt, just update 2026-02-18 21:34:12 +01:00
David Heinemeier Hansson b2d09849bd Actually was missing! 2026-02-18 21:33:58 +01:00
Diogo FerreiraandGitHub a3cdd187c9 update: Update archlinux-keyring before updating packages (#4639)
Maintainer keys might have been added/revoked, let's ensure that we have
the latest before updating the packages, otherwise users might have to
do this manually.

Fixes https://github.com/basecamp/omarchy/issues/4608
2026-02-18 21:33:32 +01:00
James BarsonandGitHub 15a847474b Adds completion cycle to inputrc (#4634) 2026-02-18 21:26:41 +01:00
Steve GodlewskiandGitHub 43ae186a80 Add Framework 16 RGB keyboard theme syncing (#4524)
* Add framwork 16 RGB syncing

* fixed install script, fixed color changing when style changes

* added framework scripts to the main install scripts

* renamed theme-set scripts, added migration

* use omarchy-pkg-add, shared keyboard template, tracked udev rule

* call the install file from the migration file
2026-02-18 21:19:30 +01:00
David Heinemeier Hansson 5f978a9ea9 Excess CR 2026-02-18 21:10:27 +01:00
David Heinemeier Hansson 7d011c0249 Match 2026-02-18 21:10:07 +01:00
David Heinemeier Hansson ab52d79ef2 Excess 2026-02-18 21:09:54 +01:00
David Heinemeier Hansson 082e870f06 Need a way to kill the pane 2026-02-18 21:09:28 +01:00
David Heinemeier Hansson 940914cffc Similar groupings 2026-02-18 20:50:33 +01:00
David Heinemeier Hansson 3757955b4b Yank this until we can find a compatible way to bring it back
I ain't giving up ctrl+l to clear the scrollback!
2026-02-18 18:39:25 +01:00
David Heinemeier Hansson 7a19cee727 Take out for now
Was starting tmux inside tmux for some reason
2026-02-18 18:04:13 +01:00
David Heinemeier Hansson b68afc10b5 Fix perms 2026-02-18 17:58:46 +01:00
David Heinemeier Hansson 3484b85439 Version 3.4.0 2026-02-18 17:56:29 +01:00
David Heinemeier Hansson d96ff4e556 Just rely on Hyprland finding the right nearest valid scale 2026-02-18 15:51:14 +01:00
David Heinemeier Hansson 965778b8ea Work with any resolution monitor 2026-02-18 15:32:46 +01:00
David Heinemeier Hansson aebc554efe Tweak language 2026-02-18 15:29:24 +01:00
David Heinemeier Hansson 43fffc4474 Excess CR 2026-02-18 12:52:51 +01:00
David Heinemeier Hansson e1d2b996b0 Too loud/scary for no actionable benefit right at the end 2026-02-18 12:51:48 +01:00
David Heinemeier Hansson 4079c57fc7 Make this the nord default 2026-02-18 10:40:29 +01:00
David Heinemeier Hansson d36c9d0a77 Merge branch 'master' into dev 2026-02-18 09:33:24 +01:00
David Heinemeier Hansson ff217012fc Cure Chromium crash bug caused by mixing 145 and 144 sync logs 2026-02-18 09:30:04 +01:00
David Heinemeier Hansson 0c5cb0480f Cure Chromium crash bug caused by mixing 145 and 144 sync logs 2026-02-18 09:28:58 +01:00
David Heinemeier Hansson 4119824b31 Merge branch 'master' into dev 2026-02-18 09:25:19 +01:00
David Heinemeier Hansson 0c50bd893f So the migration doesn't appear anonymous even when lmstudio isn't installed 2026-02-18 09:25:14 +01:00
David Heinemeier Hansson 7305152414 Add third background to Nord 2026-02-18 08:27:20 +01:00
Ryan Hughes 35f527f643 Add vim-tmux-navigator for seamless pane navigation 2026-02-17 23:27:16 -05:00
Ryan HughesandGitHub f0c5b97546 Merge pull request #4286 from robzolkos/add-no-audio-screenrecord
Add "Without audio" option to screenrecord menu
2026-02-17 16:28:53 -05:00
Ryan Hughes 5df1cd6523 Add cx alias 2026-02-17 16:12:22 -05:00
Ryan Hughes 55cb2498b3 Hotfix: Swap lmstudio -> lmstudio-bin 2026-02-17 16:07:39 -05:00
Ryan Hughes 69617397f5 Allow tmux layout to work outside of tmux 2026-02-17 16:02:09 -05:00
dhimasandGitHub 7bb35f82ae UPDATE: omarchy-aur-install add sudo -v (#4631) 2026-02-17 21:24:44 +01:00
David Heinemeier Hansson 34f0a4215d Four-way 2026-02-17 17:59:16 +01:00
David Heinemeier Hansson 47863b2408 Add 1.6x as option too 2026-02-17 17:59:03 +01:00
David Heinemeier Hansson de4d866754 Two new ones 2026-02-17 17:57:02 +01:00
David Heinemeier Hansson ec76c2acdb Add Super + Ctrl + Alt + Backspace to toggle single-window square aspect ratio 2026-02-17 17:55:43 +01:00
David Heinemeier Hansson f6719b1784 Add Super + Ctrl + Backspace to toggle resolution between 1-2-3x 2026-02-17 17:55:19 +01:00
David Heinemeier Hansson 6ef727ab0b Merge branch 'master' into dev 2026-02-17 17:32:48 +01:00
David Heinemeier Hansson 106d664573 Just the changes 2026-02-17 17:31:10 +01:00
David Heinemeier Hansson 70a188a5cd Start tracking changes in md files inside 2026-02-17 17:30:58 +01:00
Rob ZolkosandGitHub dce2f62071 Merge branch 'basecamp:dev' into add-no-audio-screenrecord 2026-02-17 10:40:00 -05:00
David Heinemeier Hansson d346f5d522 Style 2026-02-17 12:12:30 +01:00
David Heinemeier Hansson f152ff68ea Tweak screenshot notification 2026-02-17 12:11:48 +01:00
David Heinemeier Hansson 01d7296616 We no longer need early exit since default is not to edit
Closes #4569
2026-02-17 12:07:47 +01:00
David Heinemeier Hansson b573a37e33 Ensure packages available on both AUR and other repos are installed from AUR
Closes #4578, #4577, #4581
2026-02-17 12:03:04 +01:00
David Heinemeier HanssonandGitHub 68b4939993 Revert "fix(aur): add -a flag to yay command to assume AUR packages (#4581)" (#4627)
This reverts commit b3dd14a038.
2026-02-17 11:55:28 +01:00
Andrej BenzandGitHub b3dd14a038 fix(aur): add -a flag to yay command to assume AUR packages (#4581) 2026-02-17 11:53:39 +01:00
7dc638358b disable opencode auto-update feature as we rely on pacman (#4582)
* disable opencode auto-update feature as we rely on pacman

* Refreshing already produces a .bak, so that's enough

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-02-17 11:42:54 +01:00
David Heinemeier Hansson 3e07255fbc Better split 2026-02-17 11:26:41 +01:00
David Heinemeier Hansson 02fd1961b9 Interactive drive picker if a drive is not selected
Co-authored-by: @Mrid22
Closes #4596
2026-02-17 11:25:09 +01:00
Shreyansh MalviyaandGitHub 40bff09c84 Remove Wayland color manager disabling flag from Chromium configs (#4610) (#4615)
Signed-off-by: Shreyansh Malviya <shreyanshmalviya0012@gmail.com>
2026-02-17 10:51:24 +01:00
David Heinemeier Hansson 6ff13fc071 These are window keys, not pane keys 2026-02-16 21:52:19 +01:00
David Heinemeier Hansson a33cf4f287 Reload the config live when we refresh 2026-02-16 21:48:21 +01:00
David Heinemeier Hansson 2e2d78088a Direct access to windows 2026-02-16 21:47:08 +01:00
David Heinemeier Hansson b1af966819 Go straight to the new unified screenshot flow 2026-02-16 14:27:29 +01:00
David Heinemeier Hansson e055358721 Add eff to open the result of the fuzzy find directly in your editor 2026-02-16 14:08:14 +01:00
David Heinemeier Hansson 8b6e2466a3 Add the tmux dev layout 2026-02-16 10:33:56 +01:00
David Heinemeier Hansson 560500d8ec Allow passthrough 2026-02-16 10:26:31 +01:00
[1;13DDavid Heinemeier Hansson 9aff0d4b3b Note about consequences 2026-02-15 23:06:07 +01:00
Horace KoandGitHub 463417a281 Use a thin space to increase spacing between Omarchy glyph and its label. (#4586) 2026-02-13 18:43:23 +01:00
David Heinemeier Hansson bcd52fa289 Switch back to mainline chromium
We no longer need the fork, as the themeing is now fully natively
supported
2026-02-13 18:08:42 +01:00
Ryan Hughes bbb57e98c1 Update screenshot behavior
- Unifies screenshot to a single shortcut
- Provides easy override for screenshot editor of choice via env var or
flag
- Edit screenshots via clicking the notification
- Screenshots are copied to clipboard + saved by default
2026-02-12 17:04:48 -05:00
David Heinemeier Hansson e38dd063a6 Latest version 2026-02-12 11:20:47 +01:00
David Heinemeier Hansson a4d6e3ab03 More natural this way 2026-02-11 22:53:12 +01:00
David Heinemeier Hansson fc529b368d Match direction from the sessino list 2026-02-11 16:46:05 +01:00
David Heinemeier Hansson ce01b6e0d6 Improve navigation ease 2026-02-11 14:17:32 +01:00
David Heinemeier Hansson 450d4dd82b No wifi power saving when connected to power 2026-02-11 14:06:52 +01:00
David Heinemeier Hansson 8895384b0e This is producing double pastes everywhere else 2026-02-11 12:22:58 +01:00
David Heinemeier Hansson e4b7372666 Cannot get suspend to hibernate to work consistently across different laptops
Too many failures where it's stuck in a suspend-wake-up loop
2026-02-10 14:07:40 +01:00
David Heinemeier Hansson a30448ceec Allow the ssh forwarding functions to take multiple ports 2026-02-10 13:39:48 +01:00
David Heinemeier Hanssonand@naxels 4fadf666e6 Add nautilus compatibility with the unified clipboard commands
Co-authored-by: @naxels
2026-02-10 12:32:56 +01:00
David Heinemeier Hansson 07ede07193 Add port forwarding functions for web dev
So we can forward a port on localhost to an Omaterm
2026-02-10 12:00:04 +01:00
David Heinemeier Hansson 527819b750 Rely on alt-arrow doing 5s, then shift-arrow does 1s 2026-02-10 11:30:03 +01:00
David Heinemeier Hansson 98bfe20839 Add example of using alacritty with ssh
Since ghostty requires the TERM setting thing which is a bit odd
2026-02-10 10:20:21 +01:00
David Heinemeier Hansson 4d48409926 Just rely on terminal for coloring
We don't need a full theme
2026-02-10 08:31:15 +01:00
David Heinemeier HanssonandGitHub ffafe1727e Add Tmux (#4562)
* Add Tmux

Being able to use a unified terminal setup between local and remote
hosts has some real advantages.

* Renaming is more important than reloading

* Self-explanatory, really

* Add alias for it

* Attach to last used session or start a new if we have none

* Just stick to n/p

* Make it a clean 10x

* We don't need this

* Keep similar fixes together

* Keep bindings together

* Hate looking at that 0

* Add way to refresh theme from its templates (when they've changed)

* Fix
2026-02-09 23:01:46 +01:00
SerpentandGitHub f2f306269a Avoid error if opencode isn't running. (#4566) 2026-02-09 22:58:34 +01:00
David Heinemeier Hansson e4913ca2db Update boot entry 2026-02-09 22:34:43 +01:00
David Heinemeier HanssonandGitHub ff234bba1f Ensure Walker can't just die and stay dead (#4555) 2026-02-09 13:08:13 +01:00
David Heinemeier Hansson ecf48a3b4c Use ACPI alarm for RTC wakeup on s2idle systems for hibernation 2026-02-08 11:27:49 +01:00
David Heinemeier Hansson 74eea9e716 The AC Power detection is buggy on several laptops
Just commit to always going from suspend to hibernate on the specified
delay
2026-02-08 10:22:39 +01:00
David Heinemeier Hansson 66cb888a2e Don't try to hibernate based on battery level checks
We just rely on the fixed hibernate delay
2026-02-08 09:09:16 +01:00
David Heinemeier Hansson 0a5755e51f Pick something that doesn't conflict with existing command 2026-02-08 08:42:14 +01:00
bjarneoandGitHub 7bd5bf25cd Remove the aether.nvim dependency (#4543)
* Remove the aether.nvim dependency

* Fix a blooper
2026-02-07 22:16:21 +01:00
bjarneoandGitHub 0c9b38e507 Set the aether dependency using v2 directly (#4537)
* Set the aether dependency using v2 directly

* Format the object properly
2026-02-07 15:53:05 +01:00
David Heinemeier Hansson 0e2ed5439e Suggestion for claude 2026-02-07 15:32:12 +01:00
David Heinemeier Hansson 75a0ee6149 Follow existing naming convention 2026-02-07 14:09:16 +01:00
Sameer PaudelandGitHub 2c9c0f883a Enable Synaptics InterTouch for confirmed touchpads if not already loaded (#4499)
* Enable Synaptics InterTouch for confirmed touchpads if not already loaded

* fix echo message

* remove shebang and echo messages

* check for synaptics intertouch and enable it only if available
2026-02-07 14:07:01 +01:00
8a58b8153c delete snapshot if update fails since it takes up space, esspecially when redoing the update as it makes another snapshot (#4531)
Co-authored-by: Mrid22 <mridulaga@outlook.com>
2026-02-07 12:37:58 +01:00
David Heinemeier Hansson badd1f8495 Reorder backgrounds for default 2026-02-07 12:35:27 +01:00
David Heinemeier Hansson 67ee1450f0 Add aether to the preinstalls removal list 2026-02-07 12:33:18 +01:00
bjarneoandGitHub c289cd0730 Add vantablack theme (#4533) 2026-02-07 11:23:27 +01:00
David Heinemeier Hansson cbcd0e49be Not used/needed 2026-02-07 11:22:28 +01:00
David Heinemeier Hansson ae45f06847 Fix gum confirm color for no 2026-02-07 11:06:35 +01:00
David Heinemeier Hansson 1070a87a47 Add option to remove all preinstalls
To get a bare-bones Omarchy
2026-02-07 11:05:56 +01:00
David Heinemeier Hansson 9741b29a7c Describe the rest of the bins 2026-02-07 10:50:48 +01:00
David Heinemeier Hansson ea24b0dc68 Setup hibernation by default on new installs 2026-02-07 10:45:24 +01:00
David Heinemeier Hansson 3bbb57b54d Use real config files as much as possible 2026-02-07 10:37:39 +01:00
David Heinemeier Hansson ebfb7f16e8 Raise sleep-to-hibernate to survive a long lunch 2026-02-07 10:18:01 +01:00
Ryan HughesandGitHub 347afae8c0 Merge pull request #4491 from johnzfitch/fix/pascal-maxwell-nvidia-backend
Expanded Legacy NVIDIA GPU support with correct backend selection
2026-02-07 01:24:30 -05:00
Ryan Hughes ebfcefa553 Consolidate migration sed cleanup and quote heredoc paths 2026-02-07 00:34:13 -05:00
David Heinemeier Hansson 2087d96ad8 Fix perms 2026-02-06 22:08:23 +01:00
David Heinemeier Hansson b638cbc57a Revert "Fix Realtek RTL8111/8168 ethernet adapter support for ASUS TUF Gaming laptops (#4497)"
This reverts commit cf72c02ea5.
2026-02-06 18:22:14 +01:00
David Heinemeier Hansson 636a7cefda Actually run the yt6801 fix 2026-02-06 17:41:44 +01:00
David Heinemeier Hansson f7e22fcfd8 Fix IO pressure on some machines with Ghostty 2026-02-06 17:19:47 +01:00
Nicolas DorierandGitHub b0e8a4dcea Fix: High IO pressure caused by ghostty (#4507) 2026-02-06 16:51:18 +01:00
amrxtghandGitHub f57234b991 fix: simple typo in omarchy-launch-walker (#4514) 2026-02-06 16:48:21 +01:00
David Heinemeier Hansson be7f316371 Add Super + Shift + Return for browser binding to existing installs 2026-02-06 12:03:37 +01:00
David Heinemeier Hansson b1553d3b31 Add Super + Shift + Return as an alternative for launching the browser 2026-02-06 12:00:55 +01:00
David Heinemeier Hansson 055e969a56 Let's help our agent friends a little to understand the Omarchy code base 2026-02-06 11:32:03 +01:00
David Heinemeier Hansson 050899e5b3 Echo the migration description 2026-02-06 11:25:05 +01:00
David Heinemeier Hansson bd8b12b23b Ensure hyprlock only looks for a fingerprint auth when that's configured
This should eradicate the first failed auth attempt after
sleep/hibernation
2026-02-06 11:24:12 +01:00
David Heinemeier Hansson c268fb6c9b Turn off backlighting before sleep
So it cant keep the computer awake
2026-02-06 11:16:18 +01:00
David Heinemeier Hansson 248a7a611b Fix perms 2026-02-05 14:48:21 +01:00
David Heinemeier Hansson e487dace43 Install asusctl on ROG machines to get out-of-the-box keyboard light sync 2026-02-05 09:23:00 +01:00
David Heinemeier Hansson ba14cd36dd Sync keyboard colors with theme if asusctl is installed 2026-02-05 09:05:30 +01:00
David Heinemeier Hansson 34b22a23f6 Revert "Fix correct suspend-then-hibernate options"
This reverts commit f0d5c35271.
2026-02-04 21:56:34 +01:00
David Heinemeier Hansson f0d5c35271 Fix correct suspend-then-hibernate options
So we don't try to hibernate when sleeping while on power
2026-02-04 21:54:26 +01:00
David Heinemeier Hansson 63fc96a541 Timeout isn't actually nice in reality 2026-02-04 21:43:41 +01:00
Nathan NutterandGitHub 4ba39ba73c Prevent premature exit of omarchy-update-firmware (#4503)
This adds the `--force` option to `fwupdmgr refresh` so that this script will not exit, due to `set -e`, when `fwupdmgr refresh` exits non-zero due to the metadata being up-to-date, i.e.,

```
Metadata is up to date; use --force to refresh again.
```

Another option would be to use `|| true` but that might hide a legitimate error.

This was motivated when I cancelled a run of this script and then later invoked it again, via Update > Firmware, and it would not run `sudo fwupdmgr update` because `fwupdmgr refresh` was exiting non-zero with the above metadata up-to-date "error".
2026-02-04 21:41:14 +01:00
LewisandGitHub 1a14938382 Update style path in swayosd config (#4502) 2026-02-04 21:35:44 +01:00
Pierre Olivier MartelandGitHub 9581cce1af Fix Windows VM timezone and add a confirmation prompt before removing the VM (#4489)
* Add confirmation prompt before removing Windows VM

* Fix Windows VM timezone defaults to UTC
2026-02-04 10:46:15 +01:00
JamoladdinandGitHub cf72c02ea5 Fix Realtek RTL8111/8168 ethernet adapter support for ASUS TUF Gaming laptops (#4497) 2026-02-04 10:18:56 +01:00
johnzfitch a8ce084460 Fix NVIDIA environment variables for Maxwell/Pascal/Volta GPUs
Maxwell, Pascal, and Volta GPUs lack GSP (GPU System Processor) firmware
required by NVD_BACKEND=direct. Applying direct backend unconditionally
causes Aquamarine v3.3.0+ to fail with "Unknown-1" displays and blank screens.

Changes:
- Add GPU generation detection (Turing+ vs Maxwell/Pascal/Volta)
- Turing+ (RTX 20xx+, GTX 16xx): NVD_BACKEND=direct + LIBVA_DRIVER_NAME=nvidia
- Maxwell/Pascal/Volta: NVD_BACKEND=egl only (no GSP support)
- Both generations: __GLX_VENDOR_LIBRARY_NAME=nvidia (universal)

Regex improvements:
- Fix Turing+ detection (was using Maxwell/Pascal pattern)
- GT series: GT 1030 now properly detected (was missed)
- Quadro: P/M series only (exclude Kepler K-series)
- Volta: Titan V, Tesla V100, Quadro GV100
- Modern datacenter: A100, H100, T4, L-series
- MX series: Fixed to match MX150/250/450 (was only MX1-9)

Migration script (1770159912.sh) fixes existing broken installations by:
- Detecting legacy NVIDIA GPUs on existing systems
- Rewriting incompatible NVD_BACKEND=direct entries to egl
- Creating automatic backups before modification

Testing:
Validated against GT 1030, GTX 960/1080, Quadro P620 (legacy egl backend)
and GTX 1650, RTX 3080 (modern direct backend).

Preserves existing Turing+ behavior exactly. No impact on non-NVIDIA systems.

Fixes hyprwm/Hyprland#7001
Fixes hyprwm/Hyprland#8519
Fixes hyprwm/Hyprland#6343
Fixes hyprwm/Hyprland#7812
2026-02-03 17:33:48 -08:00
Pierre Olivier MartelandGitHub 4b3e21445b Don't apply power profile source switching if only one profile is available (#4485) 2026-02-03 16:18:24 +01:00
David Heinemeier Hansson 8878478103 Prevent broken AUR updates from interrupted git sessions
Co-authored-by: @scale03
Closes #3995, #3917
2026-02-02 21:16:23 +01:00
David Heinemeier Hansson 74ff475693 Didn't end up being all that useful 2026-02-02 20:45:01 +01:00
David Heinemeier Hansson 22f64160f5 Fix branch setter 2026-02-02 17:04:36 +01:00
David Heinemeier Hansson ea76f8196c Add Motorcomm YT6801 ethernet adapter driver for Slimbook + Tuxedo ethernet adapters 2026-02-02 17:03:53 +01:00
Jamer Rebolledo d8660fd2c8 feat: add NordVPN to installable services with optional GUI
- Add omarchy-install-nordvpn script that:
  - Installs nordvpn-bin from AUR
  - Enables nordvpnd daemon
  - Adds user to nordvpn group
  - Optionally installs NordVPN GUI with TUI entry
  - Detects existing GUI installation to avoid conflicts

- Add NordVPN option to Install > Service menu with 󱇱 icon
2026-02-01 23:59:00 -05:00
James RobeyandGitHub 49a2941e2b Sanitize prompt before starship init (#4269)
Add prompt sanitization to clear stale terminal line state after abnormal exits, preventing prompt artifacts.
2026-02-01 17:49:59 +01:00
David Heinemeier Hansson 6a5b64b4bc Add the new wiremix icon if there isn't already a wiremix config 2026-02-01 17:47:57 +01:00
l1ghtyandGitHub c484b66bcb wiremix: less confusing audio default device character (#4404) 2026-02-01 17:46:07 +01:00
David Heinemeier Hansson 87da28a965 Fix the video PWAs 2026-02-01 17:39:26 +01:00
David Heinemeier Hansson 23b74c6212 Fix opacity issues by using a tag to apply the default opacity that can be removed
Fixes #4168
2026-02-01 16:30:27 +01:00
David Heinemeier Hansson 69dbee75cd Match existing term 2026-01-31 21:59:32 +01:00
David Heinemeier Hansson d9c5df29d1 DRY 2026-01-31 21:58:29 +01:00
David Heinemeier Hansson 7c9708d647 Respect rc too 2026-01-31 21:52:09 +01:00
David Heinemeier Hansson 5a9f0318e8 Respect rc 2026-01-31 21:51:18 +01:00
David Heinemeier Hansson ab4694e3f5 Introduce rc channel 2026-01-31 21:49:07 +01:00
David Heinemeier Hansson bebf14a18c In order of appearance 2026-01-31 18:14:47 +01:00
ff2a47c67e feat: allow overloading for the about menu action via the ~/.config/omarchy/extensions/menu.sh file. Example included (#4311)
Co-authored-by: Bhavesh Sooka <bhavesh@synthesis.co.za>
2026-01-31 18:14:25 +01:00
schwepmoandGitHub d9bd4a8db3 Open Nautilus in cwd of terminal (#4331)
* feat: Open Nautilus (files) in cwd of terminal using omarchy-cmd-termina-cwd

* feat: Add SUPER+ALT+SHIFT+F shortcut to open nautilus in cwd

* added migration script for nautilus keybind
2026-01-31 18:12:29 +01:00
Pierre Olivier MartelandGitHub 8fc5b6e346 Add nautilus-python package for 'Open in Ghostty' shortcut in Nautilus (#4345) 2026-01-31 18:11:32 +01:00
nptrandGitHub 7265c22728 Update opacity rule for Steam window class (#4386)
The steam class for opacity is missing the `.*` regular expression. Just `steam` does not match launched steam apps. Therefore, currently, steam apps have the default opacity of `0.97` of omarchy. This is usually not noticable, but very distracting on an OLED Screen and Games with dark/black scenes / menues and a brigher / any app opend 'behind' the game.
2026-01-31 18:06:11 +01:00
Stefan GründelandGitHub 32d187eab0 Add window rules for Bitwarden Chrome Extension (#4389) 2026-01-31 18:02:17 +01:00
David Heinemeier Hansson c19fc1593a Just make a separate browser ready for the authentication
Seems like the entire problem was just that GFN didn't want to
authenticate against a browser process it had started itself.
2026-01-31 15:36:27 +01:00
David Heinemeier Hansson 7ffdfdbda9 Only idleinhibit
Fullscreen does not work well with authentication
2026-01-31 15:35:46 +01:00
David Heinemeier Hansson 161fa3f313 Fix up the installer 2026-01-31 14:37:16 +01:00
David Heinemeier Hansson d6c28f317d Force fullscreen
Floating just makes it crash
2026-01-31 13:27:57 +01:00
David Heinemeier Hansson 4348ab6ef1 Let the done screen time out in 7 seconds 2026-01-31 12:43:34 +01:00
David Heinemeier Hansson 9d07cc884c Add installer and windowrule configuration for NVIDIA GeForce Now 2026-01-31 12:35:35 +01:00
David Heinemeier Hansson ba31e3073c Ensure master volume isn't muted either 2026-01-30 19:02:51 +01:00
Ryan Hughes 2df5f231cb Add x11 fallback to SDL_VIDEODRIVER for compatibility 2026-01-30 12:46:13 -05:00
Pierre Olivier MartelandGitHub 26afde34ff fix echo comment in powerprofile migration (#4388) 2026-01-30 12:25:39 +01:00
Nicolas DorierandGitHub 3b94207ba7 Fix: Jetbrains rules were not working properly anymore (#4150) 2026-01-30 11:51:33 +01:00
David Heinemeier Hansson e567020e1b Use the new helper 2026-01-29 17:38:50 +01:00
Pierre Olivier MartelandGitHub f78f5b2c2c Automatically switch power profile when plugged in (balanced) and unplugged (power saver) (#4375)
* Set Power Profiles Rules when plugged in (balanced) and unplugged (power-saver)"

* Check for battery presence before installing power profile rules

* Add battery presence check script and update powerprofilesctl rules

* fix indentation

* Simplify power profile rule creation logic
2026-01-29 17:37:18 +01:00
Ryan Hughes ec305459f8 Prevent Telegram from stealing focus on every message receipt 2026-01-29 10:24:25 -05:00
David Heinemeier Hansson 55231e9726 Add new Miasma theme
Original by OldJobobo
2026-01-29 11:42:07 +01:00
David Heinemeier Hansson a8e0762fbe Open directories in file manager 2026-01-29 10:29:56 +01:00
David Heinemeier Hansson bb91f90839 Merge branch 'master' into dev 2026-01-28 18:03:43 +01:00
David Heinemeier Hansson a7995efac2 Ensure master is used instead of dev as a default 2026-01-28 17:14:17 +01:00
David Heinemeier Hansson 5b534de6a0 Rebooting is needed for hibernation to be available 2026-01-28 13:59:11 +01:00
David Heinemeier Hansson 4fe357972e We didn't get this working 2026-01-28 13:42:55 +01:00
David Heinemeier Hansson 7015601d77 No need to start on the first install 2026-01-28 13:24:39 +01:00
David Heinemeier Hansson 532f4310d0 Fix audio mixing on ROG in migration as well 2026-01-28 12:20:20 +01:00
David Heinemeier Hansson 56b02f62b5 Switch back to mainline chromium
We no longer need the fork, as the themeing is now fully natively
supported
2026-01-28 09:49:42 +01:00
Ryan HughesandGitHub 83628ab3bd Merge pull request #4314 from jmargeta/fix-legacy-mobile-nvidia-cards
Fix driver for older NVIDIA MXxxx mobile GPUs
2026-01-27 09:41:05 -05:00
mitanjanandGitHub d89614248b auto toggle scratchpad on switching workspace (#4250) 2026-01-27 11:47:27 +01:00
ManuelandGitHub 77a57aa838 Add kb_variant to input.conf (#4330)
* add kb_variant to input.conf

* documentation + separation
2026-01-27 11:43:59 +01:00
e455d1bd68 Enable auto-pasting for the emoji picker (#4344)
* Enable auto-pasting for the emoji picker

* Excess CR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-01-27 11:42:42 +01:00
James RobeyandGitHub adfe182984 Use subshell for open() to avoid job control output (#4366)
If it is not run as a sub-shell, using open and then subsequently closing the app will pollute the existing terminal with messages like:
  [1] 287915
  [1]+  Done  xdg-open "$@" > /dev/null 2>&1

Making it a subshell removes this noise and keeps it more like the open command in macOS.
2026-01-27 11:34:16 +01:00
DominikandDavid Heinemeier Hansson febd18ce84 Replace yq with pure bash for TOML parsing (#4171)
* Replace yq with pure bash for TOML parsing

The yq-based parsing only worked with jq/yq v3 and broke with go-yq v4.
This change removes the yq and uses bash for parsing. Some additional improvments:
- Handles single and double quoted values
- Strips inline comments (e.g. "#hex" #comment)

* Remove the no-longer-needed yq packages

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-01-27 11:32:37 +01:00
Rob Zolkos 4bbf3be8f0 Add without audio option to screenrecord menu 2026-01-23 13:51:45 -05:00
MarcoGitHubincpo <nixusnekit>Ryan Hughes
768c553c4c Add missing icons to Development remove menus (#4339)
* Add missing icons to Development remove menus

The Install > Development menu shows icons for each language, but the
Remove > Development menu was missing them (only Ruby on Rails had its
icon). This adds the matching icons to:

- show_remove_development_menu
- show_remove_javascript_menu
- show_remove_php_menu
- show_remove_elixir_menu

---------

Co-authored-by: incpo <nixusnekit>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2026-01-23 08:26:30 -05:00
David Heinemeier Hansson bf99a2ddc0 Merge branch 'master' into dev 2026-01-23 08:25:43 -05:00
David Heinemeier Hansson 0930583526 Fix sourcing 2026-01-20 16:12:51 -04:00
David Heinemeier Hansson 4a6baafd05 Move all fixes for Asus ROGs to install time 2026-01-20 12:11:49 -04:00
David Heinemeier Hansson c1bf6c4694 Fix the mic on Asus ROG laptops 2026-01-20 11:59:12 -04:00
David Heinemeier Hansson 66daacb30d Now available on OPR 2026-01-20 09:45:35 -04:00
Jan Margeta 5b2c0dafbf Fix drivers for older NVIDIA MXxxx mobile GPUs
Installs legacy drivers for older Pascal and Maxwell GPUs MXxx, MX2xx, MX3xx
2026-01-20 13:45:32 +01:00
David Heinemeier Hansson 988418aea1 Make purpose clearer 2026-01-20 08:16:03 -04:00
David Heinemeier Hansson 25451f4a03 Compensate for swayosd not liking a 0.00 progress meter 2026-01-19 17:55:38 -04:00
David Heinemeier Hansson d884265d46 Add keyboard brightness controls 2026-01-19 17:53:19 -04:00
David Heinemeier Hansson 5e1ce16358 Centralize all brightness commands 2026-01-19 17:49:53 -04:00
David Heinemeier Hansson 713b6e3a36 Expose audio soft mixer as a tweak 2026-01-19 17:20:18 -04:00
David Heinemeier HanssonandGitHub 2c7b283aef Toggle hybrid GPU mode via supergfxctl (#4277)
* Toggle hybrid GPU mode via supergfxctl

Very useful for Asus G14 and other laptops with NVIDIA + AMD iGPU
combos.

* Use correct exit

* Simplify

* Wording

* Revise switching process

* Spacing

* These are sudo actions

* Make it exe

* No need for extensions

Matches existing style

* Relying on the new config should be enough since we are restarting anyway

* Prevent race condition

* Reminder to add to OPR
2026-01-19 17:11:23 -04:00
David Heinemeier Hansson 4701726c83 Split out removing orphan packages as well
And make sure failed AUR update doesn't fail the update entirely
2026-01-19 12:21:06 -05:00
David Heinemeier Hansson bfc3c69cf1 Update AUR packages after system pkgs + migrate
As AUR packages need local compiling and that might fail. Which
shouldn't prevent migrations from running.
2026-01-19 10:49:46 -05:00
David Heinemeier Hansson 21514dc577 Turn audio soft mixing into an opt-in toggle
It causes issues on some machines, but is required on the Asus G14
2026-01-17 14:43:59 -05:00
Paul Repin 2915572bca Sets partition type to msftdata 2026-01-17 16:23:27 +03:00
David Heinemeier Hansson 5ff76df5e4 Ensure default routes don't overwrite the ffix 2026-01-14 19:53:28 -05:00
David Heinemeier Hansson bab0004d08 Fix volume controls on Asus G14 2026-01-14 17:40:53 -05:00
David Heinemeier Hansson 93079858f1 Extract shared swayosd helper 2026-01-14 17:21:10 -05:00
David Heinemeier Hansson 4287472e02 Simplify 2026-01-14 17:11:50 -05:00
David Heinemeier Hansson 291786d36a Set brightness in a more broadly compatible way
Fixes brightness setting on the Asus G14
2026-01-14 16:37:22 -05:00
Shawn YeagerandClaude Opus 4.5 ac3c161fb5 Fix Bluetooth device showing bluez ID instead of friendly name
For Bluetooth audio devices, the friendly name (e.g., "Shawn's AirPods Max")
is stored on the Device entry in wpctl, not the Sink entry. The previous fix
looked up object.id (the sink), which shows the raw bluez ID like
"bluez_output.90:9C:4A:EE:01:1C".

This fix looks up device.id first to get the friendly name from the Device
entry, falling back to object.id for non-Bluetooth devices.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 10:37:57 -06:00
Ryan HughesandGitHub ed9a4a45ba Merge pull request #4247 from incpo/feat/webcam-source-selection
Add webcam source selection for screen recording
2026-01-13 18:31:44 -05:00
Pierre Olivier MartelandGitHub 05b82cbee5 Add headset icon to pulseaudio module in waybar (#4244) 2026-01-13 11:28:04 +01:00
incpo 697d09022a Add webcam source selection for screen recording
- Add --webcam-device argument to omarchy-cmd-screenrecord
- Auto-detect first available webcam if none specified
- Add webcam selection UI in omarchy-menu when multiple cameras available
- Skip selection UI when only one webcam is detected
2026-01-13 12:48:00 +03:00
Diogo Ferreira bee9c892fb kernel: Keep modules functional after a kernel upgrade
When a kernel upgrade is taken in, we replace current modules with new
ones and they are not available until we reboot. This can cause the
system to appear broken, especially when plugging new hardwaare like a
pen drive or odd input device.

This patch adds kernel-modules-hook which keeps the current modules even
if the package is replaced. A one-off clean-up service runs on startup
  to remove older modules.
2026-01-12 16:53:12 +00:00
Yaroslav YenkalaandGitHub 1ff31cfe41 Automatic fallback to Alacritty for legacy GPUs when install Omarchy (#3711)
* Use alacritty when legacy gpu when install omarchy

* Inline legacy GPU detection, install Alacritty only when needed
2026-01-12 12:24:16 +01:00
David Heinemeier Hansson cd995319bf Add img2jpg-medium 2026-01-12 11:50:07 +01:00
David Heinemeier Hansson 281f0b86d2 Add new default wallpaper for Tokyo Night
Created by @Maxteabag
Closes #4221
2026-01-12 11:20:33 +01:00
David Heinemeier Hansson 55668f4c6d Use just a single capture menu instead 2026-01-12 10:59:55 +01:00
David Heinemeier Hansson 9c71962a16 Add Super + Ctrl + P (and friends) as alternative keybinds for captures on keyboards without a printscr key
Closes #4051
2026-01-12 10:57:04 +01:00
Ryan Hughes 7d77500c33 Eliminate rdp check causing black screen 2026-01-10 22:39:01 -05:00
Ryan HughesandGitHub fb1d9ccfa3 Merge pull request #4217 from arcangelo7/fix/windows-vm-clipboard-sharing
Enable clipboard sharing for Windows VM
2026-01-10 22:38:54 -05:00
Ryan HughesandGitHub 2f75e9c7ec Merge pull request #3958 from felixzsh/fix-windows-vm-lauch-sleep
fix: dynamic Windows VM boot synchronization for RDP
2026-01-10 22:17:10 -05:00
felixzshandRyan Hughes b22ed8448a fix: dynamic windows-vm boot detection
The current 5-second sleep is not enough for all hardware. On my PC (and
likely many others), Windows takes longer to initialize. If the script
tries to connect via RDP before Windows is fully ready, the connection
fails or hangs.

I replaced the fixed sleep with a dynamic loop that checks the Docker
logs for the "Windows started successfully" message. This ensures the
RDP client only starts once Windows has confirmed it's ready, making the
launch process much more reliable across different hardware specs.

Fixes #2599
2026-01-10 22:14:19 -05:00
David Heinemeier Hansson a0d2f007fd Specialize waybar to match the backgrounds better 2026-01-10 21:08:57 +01:00
Arcangelo Massari 955844cb5d feat(windows-vm): enable clipboard sharing in RDP session
Add /clipboard flag to xfreerdp3 command to enable bidirectional
clipboard sharing between Windows VM and Omarchy.
2026-01-10 19:49:54 +01:00
David Heinemeier Hansson 295c7c91fc Fix concatenation 2026-01-10 14:33:36 +01:00
Will HampsonandGitHub bc1a531534 fix: skill name must match case of skill directory exactly (#4162) 2026-01-09 15:40:56 +01:00
4cec214a53 Replace yq with pure bash for TOML parsing (#4171)
* Replace yq with pure bash for TOML parsing

The yq-based parsing only worked with jq/yq v3 and broke with go-yq v4.
This change removes the yq and uses bash for parsing. Some additional improvments:
- Handles single and double quoted values
- Strips inline comments (e.g. "#hex" #comment)

* Remove the no-longer-needed yq packages

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-01-09 15:39:07 +01:00
David Heinemeier Hansson 0b5ba427b2 Merge branch 'master' into dev 2026-01-09 15:32:56 +01:00
David Heinemeier Hansson 53b8fc4257 Ensure we reset the DBs with the Omarchy versions 2026-01-09 14:34:38 +01:00
David Heinemeier Hansson dcb9527770 Ensure we reset the DBs with the Omarchy versions 2026-01-09 14:34:29 +01:00
Ryan Hughes 6c35e840f5 Version bump 2026-01-08 22:27:03 -05:00
Ryan Hughes da984ce243 Fix infinite waiting 2026-01-08 22:26:52 -05:00
Ryan Hughes 65bafa4f3b Bump 2026-01-08 19:33:06 -05:00
Ryan Hughes f5a35a1afe Bump 2026-01-08 19:32:32 -05:00
Ryan HughesandGitHub c9b3e13df8 Merge pull request #4174 from basecamp/dev
v3.3.3
2026-01-08 18:51:48 -05:00
Ryan Hughes 9775b01070 Don't update gcc14 2026-01-08 18:49:41 -05:00
Ryan HughesandGitHub b42dcf098b Merge pull request #4170 from basecamp/dev
v3.3.2
2026-01-08 17:18:41 -05:00
Ryan Hughes 6ae31aedae Update message 2026-01-08 17:17:32 -05:00
Ryan Hughes 63b0cd64bd Add update logger w/ analysis 2026-01-08 16:52:49 -05:00
Ryan Hughes bf779a6bbc Add additional hardening for missing headers 2026-01-08 15:28:56 -05:00
Ryan Hughes 774b4700ef Extra hardening the driver swap 2026-01-08 13:44:34 -05:00
Ryan Hughes 400a87955e Use omarchy-pkg-add 2026-01-08 13:41:20 -05:00
David Heinemeier Hansson fe48a16a90 Correct the accent color 2026-01-08 15:02:05 +01:00
David Heinemeier HanssonandGitHub 78ef351269 Merge pull request #4148 from basecamp/dev
Omarchy 3.3.1
2026-01-08 13:51:47 +01:00
David Heinemeier Hansson 558cd68810 Bump version 2026-01-08 13:44:54 +01:00
David Heinemeier Hansson 067ec2bd71 Fix migration for when current theme is a directory, not a symlink
Closes #4147
2026-01-08 13:41:26 +01:00
David Heinemeier Hansson ec4cd81e63 Fix the singletonlock issue properly 2026-01-08 13:18:55 +01:00
David Heinemeier Hansson 7c0a05cc70 Remove the SingletonLock that's present for some reason on new ISO installs
Closes #4149
2026-01-08 13:15:16 +01:00
David Heinemeier Hansson 70bdbfe545 Fix kitty cursor shape to match alacritty + ghostty 2026-01-08 10:49:44 +01:00
David Heinemeier Hansson 72b3b930c7 Drop the needless active_border_color/active_tab_background settings in favor of just using accent
Closes #4121
2026-01-08 10:32:21 +01:00
David Heinemeier Hansson e08301dee2 Remove opencode binding (prefer c alias in terminal)
Closes #4124
2026-01-08 10:26:07 +01:00
David Heinemeier Hansson 9fc65dd2de Simplify the VSCode/derivatives theme setting 2026-01-08 10:22:10 +01:00
David Heinemeier Hansson 5603fb50fd Dramatically simplify omarchy-theme-set-obsidian
The cost is that only themes with a colors.toml file will get Obsidian
themeing.
2026-01-08 10:16:14 +01:00
David Heinemeier HanssonandGitHub 037f034ece Merge pull request #4141 from timohubois/fix-migration-1767138576
fix(migrations-1767138576): split sed commands in scrolltouchpad migration
2026-01-08 10:00:19 +01:00
David Heinemeier HanssonandGitHub e95f8f2847 Merge pull request #4138 from Nm1ss/patch-1
Fix NVIDIA Legacy Driver for Older Professional/Workstation GPUs
2026-01-08 09:58:43 +01:00
Timo HuboisandGitHub 8826aa10ca fix(migrations-1767138576): split sed commands in scrolltouchpad migration
The sed expression for converting scrolltouchpad syntax to Hyprland 0.53
format was broken across two lines, causing the second substitution
pattern to fail silently. Split into separate sed commands to ensure
both class:(pattern) and class:pattern formats are migrated correctly.
2026-01-08 09:34:38 +01:00
David Heinemeier Hansson 2851687bbb Fix use of accent colors 2026-01-08 09:18:22 +01:00
GeorgeandGitHub e25a00a38c Update NVIDIA GPU detection for legacy support on professional/workstation cards 2026-01-08 07:53:11 +01:00
David Heinemeier Hansson 7d9858a013 Run the gcc14 removal as early as possible 2026-01-07 23:51:08 +01:00
David Heinemeier Hansson 95bfb16cd4 Hotfix to remove gcc14 AUR package that would take eons to update 2026-01-07 22:05:54 +01:00
David Heinemeier HanssonandGitHub 8873f03cb1 Merge pull request #4111 from basecamp/dev
Omarchy 3.3.0
2026-01-07 21:36:27 +01:00
David Heinemeier Hansson a5f8ab3194 Bump version 2026-01-07 21:16:11 +01:00
David Heinemeier Hansson 17968cb2d3 Offer to reboot after reinstall 2026-01-07 20:58:57 +01:00
David Heinemeier Hansson 6cbca7825b Excess CR 2026-01-07 20:51:40 +01:00
David Heinemeier Hansson eb8bd24d83 Now hosted on OPR 2026-01-07 20:03:41 +01:00
David Heinemeier Hansson 4bb8bfc44c Do not allow hibernation to be setup if its not supported 2026-01-07 19:51:00 +01:00
David Heinemeier Hansson f3b9a90120 Fix conditional 2026-01-07 19:46:23 +01:00
David Heinemeier Hansson 2855712158 Ensure mirror and pkgs channels are always kept in sync as stable or edge 2026-01-07 19:45:00 +01:00
David Heinemeier Hansson 3489bf5ceb Fix perms 2026-01-07 19:34:56 +01:00
David Heinemeier Hansson bc198c7270 Export the ref so we can refer to it during install 2026-01-07 19:31:42 +01:00
David Heinemeier Hansson 2063680c82 Move to correct location 2026-01-07 19:27:19 +01:00
David Heinemeier Hansson d20e8351fc Don't show the voxtype icon when not recording/transcribing 2026-01-07 19:24:46 +01:00
David Heinemeier Hansson cd8a6430e2 Use edge mirror for dev online installs 2026-01-07 19:14:32 +01:00
David Heinemeier Hansson cfded08b94 Use OPR version of voxtype-bin 2026-01-07 19:05:57 +01:00
LunarLollipopandGitHub 76b3e68c97 Fix hyprctl crash when screensaver is terminated (#4045)
Redirect hyprctl output in exit_screensaver() to prevent SIGABRT crash
when the screensaver window is closed externally (via keybind or lock screen).

The crash occurs because hyprctl's std::println() throws when writing to
a broken stdout after the terminal is killed.
2026-01-07 18:52:52 +01:00
David Heinemeier Hansson f7f28bb655 Fix idle icon 2026-01-07 18:49:58 +01:00
David Heinemeier Hansson ab5544ad61 Revise description 2026-01-07 18:41:14 +01:00
David Heinemeier Hansson 96479adbcd Get ready for opencode 1.1.6 2026-01-07 17:53:03 +01:00
Ryan HughesandGitHub d207d505f5 Add initial omarchy skill for OpenCode (and friends) (#4090) 2026-01-07 17:19:53 +01:00
David Heinemeier Hansson ed935bedef Correct download estimate 2026-01-07 13:50:14 +01:00
Rizky Fauzi IlmiandGitHub 1409cd7831 fix(fingerprint): Refactor fingerprint hardware check to use fprintd-list for device detection (#3948) 2026-01-07 13:46:08 +01:00
Pete JacksonandGitHub 5800a0f4a1 Suppress generic post-install instructions in voxtype setup (#4106)
Voxtype v0.4.9 adds a --no-post-install flag that suppresses the
"Next steps" instructions after downloading the model. Since Omarchy
handles systemd setup, hotkey configuration, and displays its own
success notification, these generic instructions are redundant and
potentially confusing to users.

The flag still shows download progress, just suppresses the
post-download instructions.
2026-01-07 07:41:36 +01:00
Pierre Olivier MartelandGitHub eb904062f5 Add icons for additional audio profiles in Waybar (#4100)
* Add icons for additional audio profiles in Waybar

* Only keep the headphone icon
2026-01-07 07:39:00 +01:00
David Heinemeier Hansson 4a88ec876b Disable Copy-on-Write for the swap subvolume per best practices 2026-01-06 22:58:24 +01:00
David Heinemeier Hansson 59a7153d02 Make system sleep setup more prominent 2026-01-06 22:53:43 +01:00
David Heinemeier Hansson 7cafdfcef3 Fix OMARCHY_PATH 2026-01-06 22:51:25 +01:00
David Heinemeier Hansson 9c4a0c2abd Add sleep-then-hibernate after 30 minutes
Taken from
https://hacktheplanet.be/spells/Linux/4-suspend-then-hibernate-in-omarchy/
2026-01-06 22:49:32 +01:00
David Heinemeier Hansson 68ca8d8083 Add Super + Shift + Ctrl + L to lock system 2026-01-06 22:43:05 +01:00
David Heinemeier Hansson a01ce9b563 Suspend example doesn't work any more 2026-01-06 22:40:19 +01:00
David Heinemeier HanssonandGitHub 3dbebd7a4d Add option to enable/disable hibernation (#4103)
* Add option to enable/disable hibernation

* Actually do it

* Match hibernation toggle words

* Both enable and disable

* Match the tense

* Match options

* Remove excess CR
2026-01-06 22:36:40 +01:00
RenoandGitHub 3a4536059a fix : typo (Nautilius -> Nautilus) (#4098) 2026-01-06 16:50:16 +01:00
David Heinemeier Hansson 9ae225a15a Add tweak to bring back suspend option to system menu 2026-01-06 16:45:12 +01:00
David Heinemeier Hansson 0b8bbdf01d Fix old tag:terminal style input config too 2026-01-06 14:01:17 +01:00
David Heinemeier Hansson df3d07e41f Fix timeout correction 2026-01-06 13:55:52 +01:00
David Heinemeier Hansson 3da77ffc36 Don't need this piping 2026-01-06 13:31:46 +01:00
David Heinemeier Hansson e08ef5866a Ensure it only matches the module activation 2026-01-06 13:26:37 +01:00
David Heinemeier Hansson 41c6048758 Patch is too brittle 2026-01-06 13:20:34 +01:00
David Heinemeier Hansson ebc8a9ef62 Make patching more resilient 2026-01-06 13:09:51 +01:00
0d42f1bafe Add voice dictation with voxtype (#4088)
* Try with voxtype

* Update delay to prevent skipped characters

* Add removal of voxtype

* Use -bin package

* Fix for yay

* Nerdicons!

* Use new, subtle nerdfont glyphs instead of standard icons

* Do this in the waybar config instead

* Make voxtype a permanent fixture so it is not lost on waybar resets

* Record purpose

* Add Dictation hotkeys

* Tweak wording and point to config

* Reuse the same help

* Better communication

* Anticipate moving the package to OPR

* Clarify where the packages are coming from

* input group not needed when using hyprland hotkey

* Explain hotkey off

* Allow for changing of the model on right click

* Allow config on right click

* Be more specific

* Focus on config editing with waybar clicks

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2026-01-06 13:00:19 +01:00
Ryan Hughes e3cd567f6f Move to themed and add sample 2026-01-05 16:32:46 -05:00
Ryan Hughes 103fc09dcf Add user-defined theme templates 2026-01-05 16:19:53 -05:00
David Heinemeier Hansson 3da8c2a023 Extract (almost) all chromium.theme files to use a template based on the background color 2026-01-05 21:47:23 +01:00
Ryan Hughes ee37be1124 Merge pull request #4089 from basecamp/improve-rdp-ready-check
Improve RDP readiness check before launching VM
2026-01-05 15:27:50 -05:00
Ryan Hughes 7118ef6b19 Correct message 2026-01-05 15:27:44 -05:00
Ryan Hughes e8880b5154 Simplify 2026-01-05 15:27:44 -05:00
David Heinemeier Hansson a41cb03ac5 Always add user to input group to prevent restarts needed for dictation or xbox controllers 2026-01-05 17:38:45 +01:00
David Heinemeier Hansson 09f696aea4 Bring back the removal of conflicting limine.confs 2026-01-05 16:14:58 +01:00
David Heinemeier Hansson 54e5be18ea Fix use of stable mirror list when doing an online installation 2026-01-05 15:57:37 +01:00
David Heinemeier Hansson 503e4c765c Arrange a few more keybindings 2026-01-05 15:54:19 +01:00
David Heinemeier Hansson 37c37c0a87 Fix perms 2026-01-05 15:44:33 +01:00
David Heinemeier Hansson 40028a7fa9 Reload the opencode config when changing themes 2026-01-05 15:22:52 +01:00
David Heinemeier Hansson 8533d7ff3b Match new syntax 2026-01-05 15:16:27 +01:00
David Heinemeier HanssonandGitHub 923d5fb0cd Extract the duplicated limine confs into distinct files (#4084)
* Extract the duplicated limine.conf into its own file

* Extract the /etc/limine/default config as well
2026-01-05 15:07:25 +01:00
David Heinemeier Hansson 88603ea9d6 Ensure the opencode directory is present 2026-01-05 13:30:08 +01:00
David WalesandGitHub b9b5de4751 Add example to enable touchpad while typing (#4075)
Useful for games!
2026-01-05 12:17:43 +01:00
TsurgcomandGitHub 1a5fdbc294 Make manifest version from 4 to 3 (#4080) 2026-01-05 12:17:18 +01:00
David Heinemeier Hansson 78b05bcc54 Just downgrade packages instead 2026-01-05 11:04:30 +01:00
David Heinemeier Hansson 3631695a7f Reinstall packages too when switching back to the stable branch 2026-01-05 11:03:29 +01:00
David Heinemeier Hansson 11d2d2f70e Extract the rest of the reinstall flow into separate parts 2026-01-05 11:00:56 +01:00
David Heinemeier Hansson 24a557ac7f Documentation 2026-01-05 10:53:24 +01:00
David Heinemeier Hansson 2fcaf4b6ff Extract all restart commands in consistent wrappers 2026-01-05 10:49:38 +01:00
David Heinemeier Hansson 13149f5fc9 Adapt to new theme setup 2026-01-05 10:47:19 +01:00
David Heinemeier Hansson 59b83b3585 Quiet config changes 2026-01-05 10:46:48 +01:00
David Heinemeier Hansson f8f3dcb3ef Quiet hyprctl reload 2026-01-05 10:46:01 +01:00
David Heinemeier Hansson 3ed8e8e3c4 Quiet the normal execution 2026-01-05 10:45:50 +01:00
David Heinemeier Hansson e2573b41c1 Silence running checks 2026-01-05 10:44:06 +01:00
David Heinemeier Hansson 2dca78cd83 Trigger the extracted new subcommand 2026-01-05 10:37:19 +01:00
David Heinemeier Hansson 60b7e4900f noconfirm 2026-01-05 10:36:12 +01:00
David Heinemeier Hansson df3b1cbb82 Add a subcommand for reinstalling packages from the stable repository 2026-01-05 10:33:47 +01:00
David Heinemeier Hansson ca40676657 Add documentation to Omarchy commands 2026-01-05 10:17:32 +01:00
David Heinemeier Hansson 3801e0e633 Move walker.desktop into default config directory
No need for a top-level directory just for this.
2026-01-05 09:13:38 +01:00
David Heinemeier Hansson f4def40181 Ensure it doesn't race the screensaver 2026-01-04 21:08:04 +01:00
David Heinemeier Hansson e8d063ef27 Ensure omarchy-cmd-shutdown can also be run from a terminal that'll be closed 2026-01-04 20:50:35 +01:00
David Heinemeier Hansson 4d81a8aaa7 Need a fully disowned schedule 2026-01-04 20:48:22 +01:00
David Heinemeier Hansson e02925f257 Ensure the reboot can be triggered from a terminal that itself will be closed 2026-01-04 20:45:58 +01:00
Ryan Hughes ef4ecdbfcf Add --no-edit option 2026-01-03 23:45:19 -05:00
David Heinemeier Hansson 7bf1c38937 Add extensions/menu.sh example 2026-01-03 18:28:46 -08:00
David Heinemeier HanssonandGitHub 4a07b94cb6 Use theme config templates with singular color definition (#4053)
* Attempt to templaterize the theme specific files

* Cleanup

* Slim down

* Combine render into -set

* Pull out the dynamic template rendering again, but simpler

* Fix vars

* Variables are lowercase

* Better presentation

* Fix missing colors

* Provide stripped values too

* Fix colors for regular hex format

* Bring back explicit btop themes

They're too involved to derive from a basic color set

* Make an atomic swap of the theme directories

* No longer used by walker to cancel

* Explain why

* Remove redundant const

* Consistent const naming

* No longe have $THEMES_DIR

* Correct the blue

* Set opencode colors too

* Fix colors for readability

* Move the templates together with the others in default

* Split user themes and default themes

* Fix paths

* Look for both user themes and default themes

Plus speed things up

* Migrate to the new setup where default themes live inside omarchy

* Explicitly store the name of the current theme

* Cleanup

* No longer need omarchy-theme-next since themes are now fully rendered, not symlinks

* Get current theme name from the new theme.name file

* Look for user background images in dedicated directory

* Need yq for toml

* Need yq to parse colors.toml

* Look for backgrounds matching the new theme.name

We no longer have symlinks

* Migrate existing user backgrounds to the new proper location

* Install user backgrounds in the correct path

* Fix quoting

* Just rely on the system theme for opencode and get ready for USRSIG2 being available to live reload

* Fix template generation for rgb colors
2026-01-03 18:22:14 -08:00
David Heinemeier HanssonandGitHub de2757466b Add opencode (#4071) 2026-01-03 16:50:10 -08:00
David Heinemeier Hansson 6dfa5f0807 This would trigger before screensaver/hyprlock
So need a different way to deal with resetting of the idle timer
2026-01-03 16:21:22 -08:00
David Heinemeier Hansson 4e802d8058 No longer used either 2026-01-03 14:18:07 -08:00
David Heinemeier Hansson 5e75c2d3a9 Never did use pinning
Better served with our stable setup
2026-01-03 14:16:22 -08:00
David Heinemeier Hansson d20ad9032f Label hyprwhspr as Dictation and launch setup post install 2026-01-03 14:02:38 -08:00
David Heinemeier Hansson 9e2ff7be1d Allow menu extensions to be set by the user
Closes #4012
Co-authored-by: @DarrenVictoriano
2026-01-03 13:57:26 -08:00
Ryan Hughes e1b3a88126 Add hyprwhspr to AI install menu 2026-01-03 16:34:53 -05:00
Ryan Hughes 16a9bc295c Add --no-sudo and --print to debug 2026-01-03 16:34:53 -05:00
David Heinemeier Hansson fdee76e2d2 Fix windowrule sizing changes 2026-01-03 13:31:50 -08:00
941e1c2dd8 omarchy remove dev (#4065)
Co-authored-by: JustinMissmahl <github@emeruslabs.com~>
2026-01-03 13:23:43 -08:00
David Heinemeier Hansson c723411049 Comply with changed layerrule syntax in Hyprland 0.53 2026-01-03 13:10:43 -08:00
Ryan Hughes c82b1bfb7e Add --print option to output keybindings to terminal 2026-01-03 13:34:30 -05:00
David Heinemeier Hansson 36095c1ac8 Fix with variable 2026-01-02 21:20:52 -08:00
David Heinemeier Hansson 57bbe425df Unused variable 2026-01-02 21:20:44 -08:00
Vaibhav VermaandGitHub d90bc6d3f3 Add theming support for VSCodium (#2519) 2026-01-02 21:09:17 -08:00
Omar SkalliandGitHub dbc3c006dd Make sure to re-install chromium google accounts when refreshing config (#1737) 2026-01-02 20:58:42 -08:00
David Heinemeier Hanssonand@marcinczenko 807c74d405 The idle counter is reset between each listener
Re: #641
Co-authored-by: @marcinczenko
2026-01-02 20:31:16 -08:00
David Heinemeier Hansson a9cea21463 Add missing up/down for moving workspaces to other monitors
Closes #844
Co-authored-by: @erdostom
2026-01-02 20:14:17 -08:00
Jeff NunnandGitHub c832b7dc75 Skip "press any key" message when user cancels TUI or Web App install (#3866)
with Ctrl+C
2026-01-02 20:03:54 -08:00
David Heinemeier Hansson b08b419bfc Use encapsulated reboot command 2026-01-02 19:49:52 -08:00
Pierre Olivier MartelandGitHub 2643967424 Use omarchy-launch-audio stub in waybar and menu (#4043)
* Use omarchy-launch-audio in waybar

* Use omarchy-launch-audio in omarchy-menu
2025-12-31 18:13:12 -07:00
Derek WiersonandGitHub 64f254653f Fix windowrule syntax change for kanagawa theme (#4032) 2025-12-31 17:12:09 -07:00
687ac4567e Add github-copilot-cli to the AI install menu (#4041)
* Add github-copilot-cli to the AI install menu

* Mark the copilot package as coming from AUR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-31 17:06:22 -07:00
72cecc600d Move btop binding to Control Panels utilities (#4042)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-31 17:03:23 -07:00
Marco TroisiandGitHub 7fbc139cb5 Google Maps as a default webapp (#4028)
* Google Maps as a default webapp

* Using icon from DashboardIcons
2025-12-30 16:27:01 -08:00
meandGitHub 7c213db46d add fresh to omarchy-launch-editor (#4015)
fixes #4014
2025-12-30 16:22:41 -08:00
5dd4bec68a Fix Hyprland 0.53 windowrule syntax breaking changes (#4025)
* Fix Hyprland 0.53 windowrule syntax breaking changes

Hyprland 0.53 introduced breaking changes to windowrule syntax:

- Props now use `match:` prefix: `class:pattern` → `match:class pattern`
- Boolean effects require `on` suffix: `float` → `float on`
- Snake_case naming: `nofocus` → `no_focus`, `stayfocused` → `stay_focused`
- `noborder` replaced with `border_size 0`
- `noanim` replaced with `animation none`
- layerrule syntax: `noanim, X` → `animation none, match:namespace X`
- `misc:new_window_takes_over_fullscreen` → `misc:on_focus_under_fullscreen`

See: https://github.com/hyprwm/hyprland-wiki/pull/1278

* Correct for the new style

* Migrate the scrolltouchpad setting in userland too

* Need a reboot to pair with new Hyprland

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-30 16:21:59 -08:00
David Heinemeier Hansson 4311a00ca4 Just install latest node 2025-12-30 15:40:02 -08:00
Ryan HughesandGitHub cd224e7ecd Merge pull request #3956 from ashddev/fix/nvidia-legacy-driver-for-older-gpus
fix(nvidia): install legacy NVIDIA driver on older GPUs
2025-12-28 13:42:13 -05:00
Ryan Hughes 7e12473f80 Don't continue if we don't have a GPU 2025-12-28 13:27:52 -05:00
Ryan Hughes 2c7480135a Add migration 2025-12-28 13:27:33 -05:00
Ryan Hughes df0a019c6a Add migration 2025-12-28 12:34:13 -05:00
Jack BlakelyandGitHub 083715c8c6 Fix omarchy-update failing outside Hyprland session (#4002) 2025-12-28 08:46:44 -08:00
Ryan Hughes d0aabc162a Add packages to others 2025-12-27 22:20:44 -05:00
Ryan Hughes e416988d4e Rearrange and don't hard-fail 2025-12-27 22:20:38 -05:00
Ryan Hughes 314abce4e8 We know what we're doing 2025-12-27 21:47:17 -05:00
Ryan Hughes fe8927b351 Simplify further 2025-12-27 21:46:43 -05:00
Ryan Hughes 13390441a9 Don't need to run this 2025-12-27 21:42:35 -05:00
Ryan Hughes 65a238d805 Simplify 2025-12-27 21:42:26 -05:00
Ryan Hughes c535b19235 These already get installed or are dependencies 2025-12-27 21:06:04 -05:00
Ryan Hughes 9c8c789453 Simplify this check 2025-12-27 21:05:45 -05:00
Jan L. GroßeandGitHub 2bc88ebf25 Update PostgresSQL version in installation script from 17 to 18 (#3990)
Bumping PostgresSQL DB from 17 to 18.
2025-12-26 21:11:03 +01:00
David Heinemeier Hansson 2573da8f5e Make impressionism the default 2025-12-24 22:40:19 +01:00
David Heinemeier Hansson e44e937284 Ensure that noidle is turned off after update is complete
Closees #3982
Co-authored-by: @sgruendel
2025-12-24 19:25:18 +01:00
David Heinemeier Hansson fd952c2323 Add The Backwater as a second Gruvbox background image 2025-12-24 18:27:49 +01:00
Ash Daly 4e09523127 fix(nvidia): do not install nvidia-580xx-dkms for GPUs older than Maxwell 2025-12-23 11:19:11 +00:00
643cf35448 fix: stop paging git diff output when running omarchy-update (#3959)
* fix: stop paging git diff output when running omarchy-update

* Keep option list similar between the two

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-22 13:56:02 -08:00
Ash Daly 1fd1b65cd0 chore: add noconfirm to yay command 2025-12-21 16:13:53 +00:00
Ash Daly 9a704fdadb chore: edit comment 2025-12-21 16:12:06 +00:00
Ash Daly a252a42772 fix(nvidia): install legacy driver on older GPUs 2025-12-21 16:11:05 +00:00
David Heinemeier Hansson c59089e9f3 Use omarchy-launch-* stubs for all control panels 2025-12-18 16:24:55 -08:00
David Heinemeier Hansson ca8f25fba1 Switch to our bluetooth launcher 2025-12-18 13:54:27 -08:00
David Heinemeier Hansson dae89574dd Add Super + Ctrl + A/B for Audio and Bluetooth controls
Also, move waybar-less information notifications to Super + Ctrl + Alt +
T/B to make room. These are very specialized and probably not broadly
used.

Closes #3909
Co-authored-by: @ddVital
2025-12-18 09:19:38 -08:00
SantiagoH10andGitHub 49a9ce14b8 fix: unquoted variable expansion was breaking omarchy-launch-about (#3933) 2025-12-18 09:08:13 -08:00
David Heinemeier Hansson d2ea6ad183 Canceling the screensaver on mouse movement doesn't work with bluetooth mice
Could not get it to stop existing with a Logitech MX4 when connected via
bluetooth.
2025-12-17 15:04:10 -08:00
David Heinemeier Hansson d5066561ca Got lost on a bad merge
Closes #3853
Co-authored-by: @nirabyte
2025-12-16 09:24:38 -08:00
Diogo FerreiraandGitHub fe9493bd86 openai-codex-bin -> openai-codex in menus (#3894)
This was done in a migration in 0588cc8e5b but the menu entry was never updated. So, installs after the migration will get the outdated version.

Added a new migration as well for those that installed after the
previous one.
2025-12-16 07:50:45 -08:00
David Heinemeier Hansson f578880bc8 Guard against crash bug when scrolling over expand icon in tray
Closes #3892
2025-12-16 07:49:17 -08:00
David Heinemeier Hansson 7ce838565c Add missing dotnet-runtime-9.0 needed for Pinta
Closes #3859
2025-12-16 07:41:52 -08:00
Ryan Hughes aacc40c954 Alert user if unable to restart 2025-12-15 19:58:59 -05:00
Ryan Hughes f3b9ca2149 Prevent error if service doesn't exist 2025-12-15 18:47:13 -05:00
David Heinemeier Hansson ee8f62d967 Only run update if limine-update is available
It won't be on grub
2025-12-15 14:48:44 -08:00
David Heinemeier HanssonandGitHub 32592e2e28 Merge pull request #3852 from basecamp/dev
Omarchy 3.2.3
2025-12-15 14:09:38 -08:00
David Heinemeier Hansson adf7fba2b3 Prepare for release 2025-12-15 10:20:44 -08:00
David Heinemeier Hansson 021d66f9b6 Channel changes should prompt a full update 2025-12-15 10:04:00 -08:00
David Heinemeier Hansson 1a34be257c Add backdoor to start alacritty
Will help folks who have trouble with ghostty to still get a terminal
going
2025-12-15 09:58:08 -08:00
David Heinemeier Hansson 1f4c50eddf Pull noidle setting out into its own step 2025-12-15 09:55:09 -08:00
Ryan Hughes 92af9f41f2 Reorder 2025-12-15 12:38:28 -05:00
Ryan Hughes 8ed20d0524 And create the folder 2025-12-15 12:35:47 -05:00
Ryan Hughes 2d00b2a02f Actually add the config in the migration 2025-12-15 12:35:05 -05:00
David Heinemeier Hansson 97396f5fb2 Fix excessive size for Fizzy 2025-12-15 08:28:28 -08:00
Wolfgang WoehlandGitHub 46c85e49a3 Quit Walker before screensaver launch (#3873)
Screensaver launch is broken when Walker is open: It will fail to go fullscreen and exits right after input read's first iteration, due to the screensaver_in_focus() check. See https://github.com/basecamp/omarchy/issues/2992 for an example report.

This addition will silently quit an opened Walker menu before launching the screensaver terminal. It is mildly intrusive, alas, as a return from screensaver will not present the pre-screensaver state exactly.
2025-12-15 08:24:31 -08:00
David Heinemeier Hansson 8357dd3da2 Use the traffic light metaphor for channel setting 2025-12-14 12:40:12 -08:00
David Heinemeier Hansson 860624d3f4 Add channel setting menu 2025-12-14 12:34:20 -08:00
Ryan Hughes a15d3740a9 Increase faillock to 10 2025-12-14 15:32:40 -05:00
Ryan HughesandGitHub 7b05dcfe0c Merge pull request #1894 from sgruendel/mkinitcpio_module_thunderbolt
Add thunderbolt module in omarchy hook.
2025-12-14 15:25:55 -05:00
Ryan Hughes df8b69bf27 Add portal restart to pickup changes 2025-12-14 15:24:48 -05:00
David Heinemeier Hansson f39c2a91a5 Run the migration after switching channel 2025-12-14 12:24:20 -08:00
Ryan Hughes 906baa8fee Rework migration 2025-12-14 15:19:35 -05:00
Ryan Hughes 457b954db5 Move module to a separate file 2025-12-14 15:19:25 -05:00
Ryan Hughes 9b78e3c571 Enable btrfs quota to allow space-aware algorithms to work
Co-authored-by: Raul Salinas <nacapulque@gmail.com>

Replaces #3858

Fixes #3850
Fixes #3055
2025-12-14 14:23:28 -05:00
Ryan Hughes 88e9c9db49 Tell the user what we're doing 2025-12-14 14:19:37 -05:00
Ryan Hughesandmadhurdhama 64a8d7bb04 Add new default limine location for archinstall
Co-authored-by: madhurdhama <madhurdhama@gmail.com>
2025-12-14 13:06:43 -05:00
Ryan HughesandGitHub c11a1c7989 Merge pull request #3492 from SoAp9035/fix-limine-uki-path
fix the UKI directory checks in omarchy-refresh-limine
2025-12-14 12:51:46 -05:00
Ryan HughesandTjalve Aarflot c37ef6d78c Update limine logic to check all .conf locations
Co-authored-by: Tjalve Aarflot <tjalve.github@proton.me>
2025-12-14 12:47:21 -05:00
Ryan Hughes 4d5dab3e32 Add walker emergency mode entry 2025-12-14 11:33:43 -05:00
Ryan Hughes 133d54f600 Refresh daemon if we change it 2025-12-14 11:32:39 -05:00
Ryan Hughes 4194c649a1 Restarts handled via systemd now 2025-12-14 11:09:16 -05:00
Ryan Hughes 33eabb0c88 Change to non-git version 2025-12-13 20:29:31 -05:00
Ryan Hughes 573cbd8ec3 Prevent idle while updating 2025-12-13 19:12:25 -05:00
Ryan HughesandGitHub fec0731c17 Merge pull request #3857 from basecamp/share-picker
Add better portal share picker
2025-12-13 00:50:27 -05:00
Ryan Hughes abffb0abfe Add hyprland-preview-share-picker 2025-12-13 00:44:24 -05:00
Ryan Hughes 5789c0a1fb Add themes for share pickers 2025-12-13 00:44:24 -05:00
Søren H JohansenandGitHub 4e37a766ac Remove deprecated and unsupported Kitty settings (#3849)
The following options are no longer recognized by Kitty and caused warnings during startup:

window_padding_height

show_window_resize_notification

single_instance

They have been removed to keep the configuration compatible with current Kitty versions.
2025-12-12 10:21:45 +01:00
David Heinemeier Hansson ccc147229e Force an update of the index DBs
This will prevent folks from ending up with index DBs that are out of
sync with their channel
2025-12-11 15:33:36 +01:00
David Heinemeier Hansson 6bd9d510d6 Add back alacritty as a default install to deal with machines that can't run Ghostty
Alacritty is more broadly supported
2025-12-11 15:30:25 +01:00
Alessandro ScalzulliandGitHub a22668fe17 fix(mako): show notifications over fullscreen apps (#3838)
Added line  layer=overlay to core.ini config
2025-12-11 15:23:48 +01:00
Ahum MaitraandGitHub 1c59f1ae62 enhancement : Fixed the messy and long command (#3842) 2025-12-11 15:22:46 +01:00
David Heinemeier Hansson c67856b9b6 Clarify purpose 2025-12-08 10:59:25 +01:00
Timo HuboisandGitHub 12cba29e2e feat(bitwarden): Use float by default (#3734)
- Similar to current 1Password configuration
2025-12-08 10:54:24 +01:00
David Heinemeier Hansson 20fde4d71a Add new Ethereal background image
Closes #3741
Co-authored-by: @s-pra1ham
2025-12-08 10:53:19 +01:00
jazzzoooandGitHub 8780db4bf0 feat: support mullvad-browser private window launch (#3756) 2025-12-08 10:41:06 +01:00
David Heinemeier Hansson b2bd95197a Include webapps in omarchy-refresh-applications 2025-12-08 10:38:13 +01:00
Dakota ChambersandGitHub c90e93b5fc Add Fizzy webapp (#3759)
* Add Fizzy webapp

* Replace icon
2025-12-08 10:34:17 +01:00
Lennart OchelandGitHub 3af42f6be1 Fix omarchy-launch-browser for microsoft-edge (#3763) 2025-12-08 10:30:57 +01:00
robergd83andGitHub 03f04386ec Enable independent screensaver effects on multi-monitor setups (#3781)
Updated the `omarchy-cmd-screensaver` script to allow screensaver effects to run independently on each monitor in multi-display configurations.

Previously, the effect loop waited for all animations on all monitors to finish before starting the next effect. With this change, each monitor handles its own effect cycle independently, improving smoothness and responsiveness in multi-monitor setups.
2025-12-08 10:27:07 +01:00
Dimitrie HoekstraandGitHub 9dc8e0c051 Enable tiny-dfr and t2fanrd services on T2 Macs (#3792) 2025-12-08 10:24:07 +01:00
c5ebad0b67 Add example to enable three-finger drag in input configuration (#3798)
* Add example to enable three-finger drag

* Clarify comment

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-08 10:22:09 +01:00
Miras MustimovandGitHub 9691e638b2 fix: avoid layout shift on screensaver close (#3804) 2025-12-08 10:18:46 +01:00
Lennart BreedeandGitHub fef12b6c0e Added Iosevka to font menu (#3811) 2025-12-08 10:14:25 +01:00
David Heinemeier Hansson fc04525f03 Suspend is not properly supported on a lot of computers
Can't suggest an option that doesn't work much of the time
2025-12-08 10:10:28 +01:00
David Heinemeier Hansson cfbfb2ffed Offer reboot if kernel was changed during channel change
Closes #3787
2025-12-08 09:50:48 +01:00
Wolfgang WoehlandGitHub ddf0d1e8e0 Exit screensaver when mouse moves or clicks (#3723)
Turns out there are control codes for tracking mouse actions in xterm-compatible terminal emulators (mind blown).

This patch adds mouse action awareness to our beloved screensaver setup:

- on setup it sends the respective control codes for movement and click detection
- in the main loop it opens up the input reader to read raw bytes and, thus, enable to detect even so much as a mouse's squeak

Personally, I love swiping my trackpad to exit screensaver. But the explicit pressing-a-key to exit is nice, also.

And I don't know if many people have jitter issues with their mouses or trackpads. Reckon, if they had they wouldn't get to see the glory that TTE is anyway, ever :)

This is tested and working in Ghostty. Sorry for the low-effort testing.
2025-12-02 12:09:02 +01:00
Hatta Pauzi b5a5b54be5 Added a reminder to run omarchy-restart-xcompose to apply changes 2025-12-02 12:32:25 +08:00
David Heinemeier Hansson 029000abb0 Overloading doesn't work when you have two tiling groups next to each other 2025-12-01 15:51:50 +01:00
Stefan Gründel 0a9e7205c3 add bolt to omarchy base packages 2025-12-01 13:34:24 +01:00
Stefan Gründel a810b8058b Merge branch 'dev' into mkinitcpio_module_thunderbolt 2025-12-01 13:29:23 +01:00
David Heinemeier Hansson b9792f7ba1 Don't submit empty passwords on lock screen 2025-12-01 11:10:21 +01:00
Stefan GründelandGitHub 9450ac868e fix expand icon in post install message (#3691) 2025-11-30 21:01:35 +01:00
Ahmed AbdelhafiezandGitHub add215c464 fix: restore last notification command typo (#3694) 2025-11-30 21:01:21 +01:00
David Heinemeier Hansson 306714f825 Ensure Walker service is started automatically on boot for new installations
Ref: #1684
2025-11-30 20:51:19 +01:00
Ryan HughesandGitHub 8a37f3dce7 Merge pull request #3683 from basecamp/dev
Omarchy 3.2.2
2025-11-28 20:13:08 -05:00
David Heinemeier Hansson 03be87b42c Bump for upcoming release 2025-11-28 16:50:09 -08:00
David Heinemeier Hansson d6aa65d03c Rely on new TTE 0.14.1 settings 2025-11-28 16:45:36 -08:00
David Heinemeier Hansson 1514e4e501 Merge branch 'master' into dev 2025-11-28 07:15:24 -08:00
91cf593b76 feat: Silently move active workspace to another workspace. (#3546)
* feat: silently move active window to target workspace

Adds a quality-of-life keybind:

  SUPER + ALT + SHIFT + [1-9, 0]

This silently moves the active window from the active workspace to the
chosen destination workspace. The destination workspace re-tiles
correctly upon receiving the window.

The currently active workspace remains active, and the moved window
retains focus throughout the operation (no workspace switch, no
animation, no extra UI noise).

Why:
- Provides fast, silent window reshuffling during multitasking.
- Avoids disruptive workspace switching.
- Matches Omarchy’s focus on efficient Hyprland ergonomics.
- Keeps the user anchored to their current workflow while reorganizing.

Testing:
1. Open multiple windows across several workspaces.
2. Focus a window on the active workspace.
3. Press SUPER + ALT + [1–9, 0].
4. Verify the window appears on the target workspace and re-tiles.
5. Confirm the **source workspace stays active**.
6. Confirm **focus remains on the moved window**.
7. Repeat with multiple applications and workspace combinations.

* We've frozen this old tiling config

* Put on Super + Shift + Alt

This is an alternative version of an existing move

* Fix description

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 07:14:51 -08:00
7327f95aa1 feat: restore the last notification keybinding (#3580)
* feat: restore the last notification.

* Stick with comma

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 07:09:04 -08:00
AlexanderandGitHub a8b8eb6f5e Reset keyboard layout to default first one on the lock screen (#3541) 2025-11-28 07:06:54 -08:00
Jeff NunnandGitHub 16d0133037 Remove theme menu now sorts themes alphabetically (like list themes does) (#3635) 2025-11-28 07:05:08 -08:00
Patrick LenzandGitHub 68c3917386 Fix usage message in omarchy-branch-set script (#3634) 2025-11-28 06:58:18 -08:00
Jeff NunnandGitHub 2cfc3b0f9e Fixes Ristretto cursor visibility in Ghostty/neovim (#3620) 2025-11-28 06:57:44 -08:00
David Heinemeier Hansson 96f140b93f Do the update too 2025-11-28 05:03:44 -08:00
David Heinemeier Hansson c97995b9ea Can just do it in one go 2025-11-28 05:03:04 -08:00
David Heinemeier Hansson 8d61c73465 Fix channel updating for edge 2025-11-28 05:00:34 -08:00
David Heinemeier Hansson 2b3c48b725 Fix issue with package DBs being wrong when switching to stable channel 2025-11-28 04:59:25 -08:00
David Heinemeier Hansson e15b2ae78c Fix emoji picker would use a 3-column design and that it would bleed into other menus
Closes #3604
2025-11-28 13:41:05 +01:00
David Heinemeier Hansson 30a5f5846c Tweaks 2025-11-28 13:15:15 +01:00
7e44ab33ac feat: show link to changelog in update confirm window (#3651)
* Update version

* feat: show link to changelog in update confirm window

* Link to scrollable changelog

You may be updating more than one version at the time.

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 13:13:16 +01:00
David Heinemeier Hansson 6a181adf0d Reset all package DBs when changing channel 2025-11-28 13:03:55 +01:00
Ahmet Burhan KayalıandGitHub 930246aee5 Merge branch 'basecamp:master' into fix-limine-uki-path 2025-11-26 10:22:13 +03:00
Ryan HughesandGitHub d7841e30b5 Update version 2025-11-26 02:07:16 -05:00
Ryan HughesandGitHub bc54b97117 Merge pull request #3588 from basecamp/dev
Omarchy 3.2.1
2025-11-26 02:06:11 -05:00
David Heinemeier Hansson a8106085aa Setup helpers to change branch and channel 2025-11-25 15:43:32 +01:00
David Heinemeier Hansson a996438eaf Add explicit reboot + shutdown scripts that close all windows first (and allow a second to save state) 2025-11-25 15:07:20 +01:00
David Heinemeier Hansson 9524259765 Ensure lockout limit is reset on restart 2025-11-25 15:03:41 +01:00
David Heinemeier Hansson 77fd86ae93 Fix lack of quotes for multi-line batches
Closes #3597
2025-11-25 11:52:43 +01:00
David Heinemeier Hansson 8cca056b90 Use Bluetooth off icon in the waybar when BlueTUI has turned off the adapter
Closes #3599
2025-11-25 11:46:59 +01:00
David Heinemeier Hansson a522a47f70 Ensure walker is set to autostart and that elephant is running as a service after running omarchy-refresh-walker
Closes #3609
2025-11-25 11:37:48 +01:00
97382274f6 Add copy-url support for Brave browser (#3017)
* Add copy-url support for Brave browser

* Add required migration

* Excess CR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-24 17:05:31 +01:00
55692e0893 Exclude long new screensaver effect (#3553)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-24 11:00:25 +01:00
David Heinemeier Hansson aa98e9307c Now included in the omarchy-refresh-pacman script 2025-11-24 09:53:49 +01:00
David Heinemeier Hansson 14b1ee317f Remove noconfirm from Zed install so user can pick correct vulkan backend
Related #1441
2025-11-24 09:48:27 +01:00
David Heinemeier Hansson 8f3f89fdfd Make sure the user gets a chance to actually pick the graphics options
Closes #3585
2025-11-24 09:30:10 +01:00
David Heinemeier Hansson 3765417d9a Wording 2025-11-24 09:25:28 +01:00
David Heinemeier Hansson a6c2576a3c Start PDF viewing as float as well 2025-11-23 11:46:33 +01:00
0d7fbbce02 Because TUI Apps are now saved with Exec=xdg-terminal-exec and not (#3552)
Exec=$TERMINAL the omarchy-tui-remove wont find newly created TUI-Apps. This fixes it and ensures backwards compability.

Co-authored-by: Gerrit Dolderer <gerrit.dolderer@hey.com>
2025-11-23 11:32:18 +01:00
602d60d3d9 feat: fullscreen for ghostty/kitty screensaver (#3510)
* feat: fullscreen for ghostty/kitty screensaver

* feat: add ghostty screensaver config

* Remove the extra two bottom lines as well

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-22 14:44:03 +01:00
David Heinemeier Hansson e3b8016e26 Bump for beta version 2025-11-22 11:39:36 +01:00
David Heinemeier Hansson c86614039e Take backups of existing pacman.conf + mirrorlist before refreshing
Closes #3479
2025-11-22 11:05:45 +01:00
Felix SanchezandGitHub aadb4fae08 fix: tte screensaver fullscreen (#3499)
to go tte full screen on 0.13, the option --reuse-canvas is needed
2025-11-22 10:59:37 +01:00
David Heinemeier Hansson e864c2da43 Add marker for when packages were last updated 2025-11-22 10:54:40 +01:00
David Heinemeier Hansson 88a1141301 Simplify mirror/pkgs to just channel 2025-11-22 10:50:23 +01:00
David Heinemeier Hansson f6cd5e076d Simplify switching between edge and stable channels 2025-11-22 10:41:30 +01:00
David Heinemeier Hansson 49f33169c1 Add mirror + pkgs channel to About menu 2025-11-22 10:37:49 +01:00
David Heinemeier HanssonandGitHub 04d2f10840 Merge pull request #3295 from basecamp/dev
Omarchy 3.2.0
2025-11-21 14:34:01 -05:00
David Heinemeier Hansson 45e3272e25 No confirm 2025-11-21 20:21:55 +01:00
David Heinemeier Hansson 934b22d4c2 Do the full pacman reset and then update 2025-11-21 20:19:27 +01:00
David Heinemeier Hansson ba7ffc39ad Ensure upgrades are sorted for later versions too 2025-11-21 20:05:23 +01:00
Ryan Hughes cb8d42ba26 Adjust screensaver for tte v13 2025-11-21 13:46:51 -05:00
dec05ebaandRyan Hughes d725058d33 Make the screenrecord hotkey and menu stop recording if already recording 2025-11-21 13:46:51 -05:00
dec05ebaandRyan Hughes 128a6125a9 Redesign screen capture option
Use desktop portal capture option which allows capturing monitors
connected to external gpus (common on laptops with dedicated gpus)
and supports capturing properly when hdr is enabled.

Desktop portal capture allows selecting capture of a window, monitor
or screen region.

Add -fallback-cpu-encoding yes to use cpu encoding if the system
doesn't support gpu encoding. Ideally omarchy should install vaapi
drivers which would fix this issue for most users, but some users
have a gpu that dont support gpu encoding at all so this option is still
needed.

Use pgrep with ^ as is done in waybar indicator screen-recording.sh
to only grep for gpu-screen-recorder program.

Update omarchy-menu to reflect not selecting region/display capture
and instead allow capturing only desktop audio or desktop + microphone
audio.

Fixes #3367 and #3303
2025-11-21 13:46:51 -05:00
David Heinemeier Hansson cb869457c4 Use the safe-if-not-there form 2025-11-21 19:34:20 +01:00
David Heinemeier Hansson a606b53cd9 Collapse the walker migrations to the one that does 2.0 2025-11-21 19:32:40 +01:00
David Heinemeier Hansson f968f2012a Just refresh the whole pacman config 2025-11-21 19:28:50 +01:00
David Heinemeier Hansson 033afbbc00 Remove other slow builders that will be dropped anyway 2025-11-21 19:28:36 +01:00
David Heinemeier Hansson 4fae366a5b Explain the migration 2025-11-21 19:22:04 +01:00
David Heinemeier Hansson 63df15c967 Stick to stable 2025-11-21 19:15:25 +01:00
David Heinemeier Hansson 6385b966e8 No longer using eza themeing 2025-11-21 19:09:50 +01:00
David Heinemeier Hansson 70fa03dbb3 We don't change the font config, but rely on general monospace 2025-11-21 19:09:04 +01:00
David Heinemeier Hansson 06de54559d Update indexes 2025-11-21 19:04:48 +01:00
David Heinemeier Hansson 2bdf3fd450 Do all the upgrade work in that initial migration for old installations 2025-11-21 19:02:19 +01:00
David Heinemeier Hansson d87f0aaa19 Improve the update for old installs 2025-11-21 18:49:34 +01:00
David Heinemeier Hansson 3e91190e50 Make sure we use stable for this too 2025-11-21 18:35:16 +01:00
David Heinemeier Hansson fc7feda70f Link the visual menu config at install too 2025-11-21 18:27:00 +01:00
David Heinemeier Hansson 8007e38d88 Bump version for new release 2025-11-21 18:17:12 +01:00
David Heinemeier Hansson 292ac8318f Remove this from the initial config too 2025-11-21 18:14:10 +01:00
David Heinemeier Hansson 597fcb8db8 Rely on a later restart of waybar
So we don't do it over and over again on a regular upgrade
2025-11-21 18:12:53 +01:00
David Heinemeier Hansson db7070f9d6 Ensure elephant is setup on first run 2025-11-21 18:02:04 +01:00
David Heinemeier Hansson 385df32daa Refresh Walker config to ensure compatibility with latest version 2025-11-21 17:54:55 +01:00
Ryan HughesandGitHub 50ec3cec42 Merge pull request #3451 from abenz1267/walkerlayout
fix(walker): update for breaking changes in latest version
2025-11-21 11:49:15 -05:00
David Heinemeier Hansson 8b6fd9eed9 Update to match current colors 2025-11-21 16:09:38 +01:00
David Heinemeier Hansson 328c26efa2 Stick to the lighter Everforest colors we have in Alacritty 2025-11-21 14:35:03 +01:00
David Heinemeier Hansson 2c4a9275d1 Revert "Reapply "feat: don't screenshare notifications (#3482)""
This reverts commit 7ebe9fd7ab.
2025-11-21 12:36:35 +01:00
David Heinemeier Hansson 4efdcc62c6 Also default to float for video playback 2025-11-21 11:20:48 +01:00
bjarneoandGitHub 62665abd0e Remove Aether nvim dependency (#3485)
This nvim theme is now standalone
2025-11-21 09:22:38 +01:00
SoAp9035 f9450e1fb7 Fix limine UKI cleanup path 2025-11-21 10:59:08 +03:00
David Heinemeier Hansson 7ebe9fd7ab Reapply "feat: don't screenshare notifications (#3482)"
This reverts commit cf6a8476c5.
2025-11-20 21:04:56 +01:00
David Heinemeier Hansson cf6a8476c5 Revert "feat: don't screenshare notifications (#3482)"
This reverts commit bdb97195d8.
2025-11-20 18:01:10 +01:00
Maxime MangelandGitHub bdb97195d8 feat: don't screenshare notifications (#3482) 2025-11-20 17:22:13 +01:00
David Heinemeier Hansson a5ceb3f860 We never ended up using this
Its very hard to properly ignore packages. So better we just double down
on the stable repo and keeping them out of general rotation.
2025-11-20 17:06:02 +01:00
David Heinemeier Hansson 9d8961915e Fix the style update too 2025-11-20 16:59:28 +01:00
David Heinemeier Hansson 661e4f5add Add migration 2025-11-20 16:52:10 +01:00
brink-labandGitHub f6786e4c23 Update Waybar tray icon (#3479)
* Update style.css

Fixes the uneven spacing between icons on waybar by updating styling.css with Propo font family.
However, Propo introduces a small issue as the volume icons don't have the same with. As a consequence, icons left of volume will move based on the displayed volume icon. To solve this, I added a non-Propo font to the pipewire module as well - this way the volume icons have fixed length but eats a bit into the spacing towards the CPU icon. But I see this as the best trade-off.

* Update waybar config.jsonc

* Update tray spacing in waybar config

* Modify margins in style.css

Adjusted margins for various elements.

* Update waybar css for even spacing

* Update Waybar config tray spacing

* Change expand-icon format character

* Adjust margin-right for custom-expand-icon
2025-11-20 16:51:42 +01:00
David Heinemeier Hansson 9626408259 Remove the menus from the general provider so themes don't show up in the app launcher 2025-11-20 14:25:24 +01:00
David Heinemeier Hansson 4c8ee6cc1a There could have been another format-no-controller actually 2025-11-20 14:21:29 +01:00
David Heinemeier Hansson 37e5ed0d9d Restart waybar not walker 2025-11-20 14:19:40 +01:00
David Heinemeier Hansson ec59388634 Make sure we just match exact 2025-11-20 13:58:39 +01:00
David Heinemeier Hansson b5002b1f1d Need to have fuzzy match to work with the web apps for matching 2025-11-20 13:57:00 +01:00
4c414f8dc2 updated omarchy-hyprland-window-pop to have an optional parameters (#3456)
* added optional argument for floating a window

* added sample comment

* Style

* This file isn't meant to be changed so not a good place for commented out recommendations

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 13:38:29 +01:00
David Heinemeier Hansson 5ea1ae260e Explain why -Sy is ok
Closes #3467
2025-11-20 13:20:08 +01:00
David Heinemeier Hansson 4dbaf5e35f Use connected bluetooth icon when appropriate
Closes #3274
Co-authored-by: @vander00
2025-11-20 13:14:24 +01:00
David Heinemeier Hansson 0fc901d4fc Add 100-line split moves to Ghostty config
Using Super + Ctrl + Shift + Alt + Arrows
2025-11-20 11:21:39 +01:00
David Heinemeier Hansson fef7efc841 Blue fits better imo 2025-11-20 11:08:27 +01:00
cd2a4e416b Add theme ethereal (#3464)
* Add theme Ethereal

* Update to follow the Omarchy hot reload

* Add aether to all themes

* Add a vscode theme

* Revert "Add aether to all themes"

This reverts commit 421f467e213150254ab10dbe09dd6382bf6c54eb.

* Format the kitty file

* Make available to all via migration

* Fix

* Add hot reload

* Change the background image to something of higher quality

This looks a lot better on a 6K monitor

* Highlight border color should be brighter than inactive color

* Add preview.png for new visual theme selector

* Add the ethereal nvim variant of aehter

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 11:05:07 +01:00
David Heinemeier Hansson c298823af4 This conflicts with Chromium when both are installed 2025-11-20 11:00:59 +01:00
a1b1eb5920 Add a new theme called Hackerman (#3317)
* Add a new theme called hackerman

* Update to follow the Omarchy hot reload

* Add high res wallpapers

* Add an initial vscode color scheme

* Excess CR

* Set the colorscheme name to aether

* Change the nvim plugin name back to aether

* Add hot reload

* Use a variant of aether

* Swap the starting background

* Add migration

* Add preview.png

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 10:54:17 +01:00
David Heinemeier Hansson 08143c5cbc No longer need these variables 2025-11-20 10:08:55 +01:00
David Heinemeier Hansson 261a7dcc1f Don't suggest invalid scale 2025-11-20 09:59:31 +01:00
David Heinemeier Hansson 44b37dafce Allow optional arguments to img transcoding functions and prevent overwrites 2025-11-20 09:37:44 +01:00
David Heinemeier Hansson 20a3c469ed Float imv by default 2025-11-20 09:16:08 +01:00
David Heinemeier Hansson 8c4bf65727 Start using the stable pkg server by default 2025-11-19 20:59:12 +01:00
David Heinemeier Hansson 3e4421a37f Ensure we are using the new stable mirror before updating 2025-11-19 15:09:56 +01:00
David Heinemeier Hansson f77f107b7e Hide Bluetooth module in waybar if there's no BT controller 2025-11-19 15:03:20 +01:00
David Heinemeier Hansson da8c3d9c64 Add bash as well 2025-11-19 14:49:21 +01:00
David Heinemeier Hansson 8f19806742 Make existing alacritty installations compatible with X-TerminalArg 2025-11-19 14:45:44 +01:00
David Heinemeier Hansson 8fe1d627f4 End good 2025-11-19 14:27:08 +01:00
David Heinemeier Hansson 1b7fca5fa4 Simplify with a launch or focus variaty for tui 2025-11-19 14:15:22 +01:00
David Heinemeier Hansson 6e83c4f661 The restart is coming later when we switch to systemd 2025-11-19 12:06:38 +01:00
David Heinemeier Hansson 8174dc7df9 Let btop float by default to match all other system terminal windows 2025-11-19 12:04:35 +01:00
David Heinemeier Hansson f8dcc7e190 Later migration does the refresh 2025-11-19 11:57:48 +01:00
David Heinemeier Hansson 13c3973c7a Spelling! 2025-11-19 11:56:45 +01:00
David Heinemeier Hansson 489ddc7fb0 Fix escaping 2025-11-19 11:52:57 +01:00
David Heinemeier Hansson 2c1a761b88 Walker is not run as a systemd service 2025-11-19 11:42:01 +01:00
David Heinemeier Hansson c50003a996 Make sure to stop and start in the new fashion 2025-11-19 11:36:15 +01:00
David Heinemeier Hansson e4a3d5e3ad Synchronize with new stable mirror 2025-11-19 11:08:44 +01:00
9af41afd06 Feature: Add bluetui integration and migration (#3207)
* Add bluetui integration and launch script

- Add omarchy-launch-bluetooth script to launch bluetui TUI
- Create migration scripts for bluetui installation
- Update omarchy-menu and waybar configuration for bluetui support
- Add bluetui to base packages

* Move unblock into launchers and reuse existing launch or focus setup

* Fix installer to remove blueberry and be more surgical with waybar changes

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 09:41:12 +01:00
335845bd26 Add install options for xpadneo driver under gaming (#2009)
* Add optional xpadneo driver prompt to Steam installer

Prompts users during Steam installation to optionally install the xpadneo driver, which fixes common Xbox/Bluetooth controller issues including detection problems and missing rumble support.

* Install xpadneo controller driver by default

* Add idempotency checks and relaunch state

* Remove Steam launch since relaunch required

* Extract xbox controller installer into separate step

* Bring back launch

* Force reinstall

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 09:20:59 +01:00
eec075bdf9 improve: uniquely identify terminal apps for window rules and focus. Unify waybar behaviour to use launch-or-focus (#3389)
* improve: uniquely identify btop when launched from waybar.

* align btop app id

* add migration to uniquely identify btop

* also add unique app ids to lazydocker and terminal editor

* introduce new omarchy-launch-tui that sets class.

* align all the tuis and behaviour in waybar

* update migration accordingly

* fixes

* separate terminal from tui

* fix: double setsid uswm-app --

* Standardize namespace on org.omarchy and lowercase

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:54:17 +01:00
438fa96291 Add preview images to the themes menu (#3444)
* Add new script for themes menu

* remove icons from the themes menu

* Make theme titles human readable and add spacing at the end

* Migrate to using a link for the new menu generator

* Retain consistent width

But we still do have movement when filtering the menu down to a
shorter-than-longest name. Should try to stabilize that.

* Update all previews to 2K resolution and same dimensions

* Update script to use first bg file if theme preview file doesn't exist

* Add padding to preview box instead of spaces to theme name

* Consistent formatting/indenting

* Prevent height jump

* Revert padding change and remove background color

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:30:24 +01:00
42e181054a fix: disable mouse focus for JetBrains (#3336)
* disable mouse focus for jetbrains

* Match existing style

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:26:30 +01:00
c1fca69de5 hypr: Adding xdph token default of true (#3404)
* hypr: Adding xdph token default of true

The `allow_token_by_default` configuration option under `screencopy` within
`xdg-dektop-portal-hyprland` (xdph) enables the "Allow restore token" checkbox
by default in the screen sharing section dialog. Enabling it to `true` ensures
the checkbox is pre-ticked, which can help avoid repeated selection prompts
during screen sharing sessions, such as those reported with Slack, Google Meet,
Zoom, etc. on Hyprland.

Signed-off-by: Larry Dewey <larry.j.dewey@gmail.com>

* Enable the XDPH config on existing installations

---------

Signed-off-by: Larry Dewey <larry.j.dewey@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-18 16:20:08 +01:00
Andrej Benz 367eb5b871 fix(walker): update for breaking changes in latest version 2025-11-18 16:05:36 +01:00
David Heinemeier Hansson 5ab2a69722 Add migration to add the 10th workspace back to waybar config 2025-11-18 16:02:13 +01:00
854b14029c add back workspace 10 (#3447)
Co-authored-by: jelenv <jelenv@users.noreply.github.com>
2025-11-18 15:53:33 +01:00
David WalesandGitHub 72dc352c1a Add exfatprogs to base packages (#3448)
Complements 279259d547
2025-11-18 09:27:43 +01:00
David Heinemeier Hansson 83a8740fc8 Match to Ghostty Mocha too 2025-11-17 17:40:36 +01:00
David Heinemeier Hansson b2b65d55a7 Match Everforest Dark Hard from Ghostty
We should standardize this so it looks the same everywhere though!
2025-11-17 17:36:39 +01:00
1ec9ccd1b1 overload lateral window navigation for grouped windows (#3325)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-17 10:17:13 +01:00
Andrej BenzandGitHub c17bd85c38 fix: start elephant as systemd service (#3405) 2025-11-17 09:51:12 +01:00
David WalesandGitHub e1745d7ff9 Avoid invalid terminal working directory (#3428)
Don't use the working directory of the last child of the active window
when opening a new terminal with Super+Enter.

Fixes #3427.
2025-11-17 09:18:56 +01:00
David Heinemeier Hansson 88684b6dd0 Merge branch 'master' into dev 2025-11-16 21:00:10 +01:00
Tony MessiasandGitHub d833b45e8b Update terminal binding to use --dir option (#3339)
In basecamp@4c97a31, a migration was added to fix this option on
existing installs, but I think the default config was never updated with
the new option.
2025-11-16 20:59:33 +01:00
David Heinemeier HanssonandGitHub 4b2ff4f329 Revert "improve: add image/video share and run share commands silently" (#3434)
* Revert "improve: add image/video share and run share commands silently (#3330)"

This reverts commit 03cbbd2f7f.

* Refactor share menu to remove terminal command
2025-11-16 20:58:54 +01:00
David Heinemeier Hansson 279259d547 Change format-disk to use exfat for better cross-platform compatibility 2025-11-16 15:53:08 +01:00
9b849fc824 feat: add custom imv keybindings for delete and rotate currently opened image (#3312)
* feat: add custom imv keybindings for delete and rotate

* Update imv config and migration script

* Simplify this

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 16:05:45 +01:00
bea57919b6 Fix: Jetbrains popup dialog would not get focus automatically (#3326)
* Fix: Jetbrains popup dialog would not get focus automatically

The config shipped with omarchy misbehaves with popups. Opening a popup
would not shift the focus automatically to it, requiring manual click on
it to start typing into it.

You can reproduce with by trying to open any popup dialog (for example
CTRL+T on Rider, or CTRL+SHIFT+F)

This config with `-Dawt.toolkit.name=WLToolkit` in the custom VM options
fixes all the issues I have with jetbrains. I am also making a dedicated
workspace which float all windows just for jetbrains.

* Use existing formatting conventions

* More tweaks

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 15:54:25 +01:00
03cbbd2f7f improve: add image/video share and run share commands silently (#3330)
* improve: add image/video share and run share commands silently

- Added 'image' and 'video' modes to omarchy-cmd-share to quickly send
  the most recent screenshot or video without selecting manually.
- Updated show_share_menu to run share commands in the background using
  'nohup' to avoid opening a terminal window.
- Comments added to explain each section for clarity and maintainability.

* Match names with folders

* Correct here too

* Don't need to keep this around

* Fix these up for what's needed only

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 15:48:02 +01:00
David Heinemeier Hansson 8840af8df9 Don't waste time creating ri docs by default 2025-11-11 14:20:55 +01:00
David Heinemeier Hansson a54ec3a9cb Exact matching is now part of omarchy-launch-or-focus 2025-11-11 09:16:47 +01:00
David Heinemeier Hansson 42f47195ea Match exact not partial window pattern 2025-11-11 09:16:27 +01:00
David Heinemeier Hansson 89b1029588 Can't use the blur on walker until we can run the whole thing as a single process 2025-11-11 08:45:36 +01:00
David Heinemeier Hansson 29aae9a93e Tweak blur settings and apply it to walker
Settings by @tobi ✌️
2025-11-10 21:29:41 +01:00
David Heinemeier Hansson a6d49196d0 Make sure the ruby is added separately from just try
So we always have a system Ruby available
2025-11-10 15:22:06 +01:00
David Heinemeier Hansson b7989ac89b Ensure the system always has a base ruby even if one is not installed via mise 2025-11-10 15:21:15 +01:00
David Heinemeier Hansson 3c19e4e12c Add @tobi's try as a default install 2025-11-10 15:20:17 +01:00
Mislav PukljakandGitHub 94f29f3cba small fix in input.conf (#3298) 2025-11-10 15:18:00 +01:00
David Heinemeier Hansson 2fcc4e9c47 More 2025-11-10 14:38:27 +01:00
David Heinemeier Hansson d81f6de211 Make Work/tries ready too 2025-11-10 14:37:46 +01:00
David Heinemeier Hansson e97ae0d842 Activate try when it is available 2025-11-10 14:36:44 +01:00
David Heinemeier Hansson 2290152fb9 Fit height better for JetBrainsMono 2025-11-10 11:47:07 +01:00
David Heinemeier Hansson f364ee1167 Move everyone over to the stable mirror by default 2025-11-10 11:35:32 +01:00
David Heinemeier Hansson 6e1f1cae1b Slowdown the ghostty scrolling a tad 2025-11-10 11:33:35 +01:00
David Heinemeier Hansson e354df3143 Use a slower mouse scroll 2025-11-10 11:27:22 +01:00
David Heinemeier Hansson c981dda55a Change default font to JetBrainsMono Nerd Font
Caskaydia Mono doesn't look quite right in Ghostty
2025-11-10 10:57:16 +01:00
David Heinemeier Hansson b6ba588fa3 Switch to Ghostty as the default terminal 2025-11-10 10:54:41 +01:00
David Heinemeier Hansson bf3a5b0a36 Style 2025-11-10 10:49:46 +01:00
David Heinemeier Hansson 9e1a70488b Fix killing of screensaver running in any terminal 2025-11-10 10:46:18 +01:00
David Heinemeier Hansson a43d090596 We've been using fresh 2025-11-10 10:36:31 +01:00
David Heinemeier Hansson fceb7106d9 Package only exists on AUR
Not sure why what would be using this, @ryanrhughes?
2025-11-10 10:28:14 +01:00
David Heinemeier Hansson d2aeb520fc Prevent the conflict asking for rust v rustup 2025-11-10 10:23:10 +01:00
David Heinemeier Hansson 61678986fc Use packages that exist 2025-11-10 10:19:36 +01:00
David Heinemeier Hansson 2425f4d3e0 Default to the new stable mirror 2025-11-10 10:12:24 +01:00
David Heinemeier Hansson c6918e637b Make screensaver capable of running in any of the terminal options 2025-11-10 10:02:02 +01:00
David Heinemeier Hansson 6f334868d6 Fix match and make 1password float by default 2025-11-10 09:15:27 +01:00
David Heinemeier Hansson 79207160e6 Add migration 2025-11-10 08:57:43 +01:00
Jan CostandiusandGitHub a9d6a77ee6 Add usage to base packages (#3280)
The usage CLI is required for mise tab completions to work.
2025-11-10 08:57:27 +01:00
Mitch LombardiandGitHub a304b32cc1 Dynamically set hyprlock font and placeholder text (#3281) 2025-11-10 08:51:49 +01:00
David Heinemeier Hansson 3a744e0f78 Still need the setsid 2025-11-10 08:48:32 +01:00
David Heinemeier Hansson 88b13e6899 Launch or focus wifi settings
Closes #3288
Co-authored-by: @AdamMusa
2025-11-10 08:39:18 +01:00
David Heinemeier Hansson 70d15921b9 Add Super + Shift + Alt + Left/Right to move workspaces between monitors
Closes #1373, #3010
Co-authored-by: @jheuing
2025-11-09 11:37:43 +01:00
David Heinemeier Hansson 283a41c494 Add Super + Alt + PageUp/Down for tiling groups to mimic browser
More ergonomic to press than tab, but we will keep tab so not to confuse
folks who already adopted that.
2025-11-09 11:36:41 +01:00
David Heinemeier Hansson 3d10b38054 Ensure we can wake screen on both mouse and keyboard
Closes #2146
Co-authored-by: @nicoestrada
2025-11-09 11:14:32 +01:00
David Heinemeier Hansson d33e947b99 We were already doing this! 2025-11-09 09:25:35 +01:00
David Heinemeier Hansson 79d48b4d8a Notify user that font changes require a Ghostty restart 2025-11-09 09:25:00 +01:00
David Heinemeier Hansson 4d3c02c69d Only restart if they are running 2025-11-09 09:22:48 +01:00
DylanandGitHub e96bd085a5 Improve contrast on volume notification for Matte Black theme (#3212) 2025-11-09 08:10:12 +01:00
Rob ZolkosandGitHub 64e581e5aa Use AAC audio codec for screen recordings (#3220)
AAC provides better cross-platform compatibility compared to Opus when
using MP4 containers. While Opus is supported in MP4, compatibility
varies across different media players and platforms.

In testing, screen recordings with Opus codec sent to Windows users
played without audio in Windows Media Player, while recordings with
AAC codec worked immediately without issues. AAC ensures recordings
are playable out-of-the-box across all platforms without requiring
users to install additional codecs or use alternative media players.
2025-11-09 08:08:23 +01:00
Chris RothandGitHub 694c83f518 Add binding to invoke last mako notification (#3232)
This additional bind lets the user follow the default action of a notification with a keystroke in the same position `,` as the other notification binds.
2025-11-09 08:07:09 +01:00
49308eb12a Update Helium browser in omarchy-launch-webapp (#3225)
* Update Helium browser in omarchy-launch-webapp

see https://github.com/basecamp/omarchy/pull/1945#discussion_r2401957283

* Fix browser pattern matching in launch script for helium

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-09 08:06:23 +01:00
AdamandGitHub 26d37ca2e0 Fix: hard-coded binding for changegroupactive (#3233)
Changed default bindings for switching to a window in a group. The original values did not respect different keyboard layouts.
2025-11-09 08:02:35 +01:00
Miguel PandGitHub c92362937a Use xdg-terminal-exec in TUI installer for terminal compatibility (#3237)
Replace hardcoded --class flag with xdg-terminal-exec --app-id to properly
support kitty and other terminals. This aligns with the rest of the codebase
and ensures floating window rules work correctly across different terminals.
2025-11-09 08:01:37 +01:00
Dmytro BudnykandGitHub 7a0fa07454 Update icon URL placeholder to accept SVG format (#3253)
SVGs work just fine, changing misleading caption
2025-11-09 07:50:36 +01:00
David Heinemeier Hansson 917279bff7 Merge branch 'master' into dev 2025-11-09 07:45:37 +01:00
David Heinemeier Hansson 8350b84eee This has been swapped 2025-11-09 07:17:38 +01:00
Ryan Hughes d9acd35ef4 Version bump 2025-11-09 00:54:44 -05:00
Ryan HughesandGitHub 044e826bb7 Merge pull request #3258 from sk4rrjin/patch-1
Update pip.conf, fix Invalid rule/parameter errors after hyprland update
2025-11-09 00:43:25 -05:00
karrandGitHub 57e726f0c5 Update pip.conf, fix Invalid rule/parameter errors after hyprland update
Updated hyprland throws Invalid rule / Invalid parameter on the pip windowrule
2025-11-08 23:37:30 +01:00
David Heinemeier Hansson 06fc4db4db Merge branch 'master' into dev 2025-11-07 21:54:13 +01:00
Ryan HughesandGitHub 15b5ee92d7 Merge pull request #3234 from basecamp/hotfix-limine-conf-location
Hotfix limine.conf order sourcing causing boot errors
2025-11-07 15:50:55 -05:00
Ryan Hughes f6aa97350e Update to prevent error 2025-11-07 15:48:45 -05:00
David Heinemeier Hansson 5192c9b687 Ensure successful ending of migration 2025-11-07 21:35:41 +01:00
Ryan Hughes e263b5d00a Only run for Limine installs 2025-11-07 15:09:34 -05:00
Ryan Hughes 26821c9b34 Cleanup on install 2025-11-07 15:04:23 -05:00
Ryan Hughes 7cd5661f89 Bump version 2025-11-07 14:57:19 -05:00
Ryan Hughes 6cdf4a3790 Remove any alternative limine.conf files 2025-11-07 14:46:29 -05:00
Ryan Hughes c92a7eab81 Revert "Kill the actual screensaver command"
This reverts commit 33dde26902.
2025-11-06 11:32:19 -05:00
Ryan Hughes 8aa2d295e5 Revert "Make screensaver work with xdg-terminal-exec"
This reverts commit fc8e4c0400.
2025-11-06 11:32:10 -05:00
Ryan Hughes 5fb29c199a Revert "Update screensaver with 2x version"
This reverts commit b1b6e5d2a7.
2025-11-06 11:30:02 -05:00
David Heinemeier Hansson 962aca303d Change order and let it live forever 2025-11-06 09:14:33 +01:00
David Heinemeier Hansson 870356ecc3 Fix max_results to live under [providers]
Re #3175
2025-11-06 08:32:07 +01:00
David Heinemeier Hansson cb03d7d84b Raise walker max_entries to 256
The default is only 50

Closes #3175
2025-11-05 17:29:10 +01:00
y0noandGitHub 7a0bdaafa4 Scale with the right monitor (#3174) 2025-11-05 16:08:25 +01:00
David Heinemeier Hansson 638e35fcac Hyprland envs are superseeded by uwsm/env 2025-11-05 15:15:01 +01:00
David Heinemeier Hansson 904d253b4d Restart terminal (reload config) when changing font as well
This doesn't work for Ghostty (yet?) but it does work for Kitty
2025-11-05 11:59:51 +01:00
innerviewerandGitHub a40ff463c9 (Hypr) Added 'stayfocused' window rule for DaVinci Resolve dialog windows. (#3064) 2025-11-05 11:44:30 +01:00
Patrick RozaandGitHub 8e210088c1 Fix class name for Microsoft Edge in browser.conf (#3145) 2025-11-05 11:20:28 +01:00
David Heinemeier Hansson bf26366be4 Setting PS1 is not necessary when we have starship 2025-11-05 11:13:49 +01:00
David Heinemeier Hansson 4391df6853 Fix declining an update 2025-11-04 08:47:17 +01:00
David Heinemeier Hansson 2498216a4f Merge branch 'master' into dev 2025-11-04 08:35:27 +01:00
Ryan Hughes 33dde26902 Kill the actual screensaver command 2025-11-03 21:37:51 -05:00
Ryan Hughes b1b6e5d2a7 Update screensaver with 2x version 2025-11-03 21:34:22 -05:00
Ryan Hughes fc8e4c0400 Make screensaver work with xdg-terminal-exec 2025-11-03 21:34:22 -05:00
Ryan HughesandGitHub f9557177dc Merge pull request #2648 from wolfgangw/patch-1
TTE go fullscreen: --no-eol (tte 0.12.2/0.13.0)
2025-11-03 21:33:06 -05:00
Ryan Hughes 3065ca9f2a Fix --dir 2025-11-03 15:37:46 -05:00
Ryan Hughes ba5343ca11 Bump version 2025-11-03 15:37:27 -05:00
Ryan HughesandGitHub 7f9ee95e1a Merge pull request #3084 from basecamp/dev
Omarchy 3.1.5
2025-11-03 12:13:01 -05:00
David Heinemeier Hansson e369d68fe1 Take the rounding back a notch 2025-11-03 17:46:31 +01:00
Ryan Hughes 661abc89a6 Add omarchy-walker meta package 2025-11-03 11:37:20 -05:00
David Heinemeier Hansson 28ba448020 Merge branch 'master' into dev 2025-11-03 10:51:19 +01:00
David Heinemeier Hansson 4b15fe9a52 More wordsmithing 2025-11-03 10:50:54 +01:00
David Heinemeier Hansson 886a9f6f2c More wordsmithing 2025-11-03 10:49:35 +01:00
David Heinemeier Hansson 54795a2f55 Direct enhancements and ideas to discussions 2025-11-03 10:48:24 +01:00
Miha RekarandGitHub d528393df6 Do not create eza theme symlink (#3092) 2025-11-03 10:19:54 +01:00
Ryan Hughes 4c97a31c98 Switch to xdg-terminal-exec
Solves the issue from ae10133b5e the right
way using the actual xdg-terminal-exec package and provides resillient
fallbacks no matter what the user might do.

This also removes the need to restart after changing terminals at all.

fixes #2198
fixes #2329
fixes #2673
fixes #1754
2025-11-03 01:11:09 -05:00
Ryan Hughes 66b5f7eab8 Move a few more to OPR 2025-11-02 22:50:25 -05:00
Ryan Hughes 9e971e3e56 Fix not working with alacritty 2025-11-02 18:58:11 -05:00
Ryan Hughes ae10133b5e Fix neovim launching from files
Because of [hardcoded terminals in
glib](https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdesktopappinfo.c#L2755)
the previous fix still doesn't work well with Alacritty and Kitty.

Using our `omarchy-launch-terminal` aliased to `xdg-terminal-exec` does
the trick and doesn't introduce any new dependencies or rely on a lib
that isn't stable.
2025-11-02 17:57:25 -05:00
David Heinemeier Hansson 0f64a11f4e Follow naming convention from other hyprland scripts 2025-11-02 20:36:42 +01:00
Ryan RobitailleandGitHub b738c77acf Feature (hypr): add “Pop window” (float+pin) on SUPER+O (#2954)
* Feature (hypr): add “Pop window” (float+pin) on SUPER+L

* fix: changed default keybinding to SUPER+O
2025-11-02 20:36:28 +01:00
killeikandGitHub f76ba69f70 Make omarchy-launch-editor check that setted $EDITOR exists (#3072) 2025-11-02 20:28:41 +01:00
David Heinemeier Hansson bfeb3a1e65 Gemini is now on extra/gemini-cli
Closes #3040
Co-authored-by: @maromalo
2025-11-02 20:12:08 +01:00
Wojciech WnętrzakandGitHub 3c89acadc1 Further instructions for auto nightlight (#3082)
Follow up to https://github.com/basecamp/omarchy/pull/2446l

I noticed that it did not work because the process was not running by default, vide https://github.com/basecamp/omarchy/commit/d9efaac906cc291f27a242d66e940a6357658b3c
2025-11-02 20:04:53 +01:00
David Heinemeier Hansson 58ecda3b80 Make Yes the default 2025-10-31 14:34:08 +01:00
David Heinemeier Hansson dd3b64ef7f Extract the confirmation into its own file 2025-10-31 14:33:54 +01:00
fc0983624e VS Code: Apply Omarchy theme during install (#2983)
* Apply Omarchy theme; Install Neovim extension (automatically scoops up LazyVim config).

* Just set the Omarchy theme

Removed installation of Neovim extension from script.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-31 14:22:30 +01:00
David Heinemeier Hansson fb3271f3af Fix phantom recording indicator
Closes #2656
Co-authored-by: @davidszp
2025-10-31 14:09:51 +01:00
Ryan Hughes 3344f33104 Use xdg-mime to set nvim as default
As @abenz1267 pointed out, the previous solution wasn't the greatest.
This is the proper solution.
2025-10-29 13:25:48 -04:00
David Heinemeier Hansson 407d283cb7 Rephrase 2025-10-29 10:58:24 +01:00
ac8073fc81 Fix: Low Battery notification returning empty value on reboot (#2949)
* Fix: Low Battery notification returning empty value on reboot

* Simplify the check

* Double paste

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-29 10:58:06 +01:00
riozee 95f1f312b4 Fix: omarchy-cmd-screenshot geometry for transformed monitors 2025-10-29 12:16:57 +09:00
David Heinemeier Hansson 7770f49c1a Looks better without margin 2025-10-28 18:20:39 +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
David Heinemeier Hansson d7cd1950ce Bump for the next version 2025-10-28 16:56:07 +01:00
David Heinemeier HanssonandGitHub e58569b947 Merge pull request #2862 from basecamp/dev
Omarchy 3.1.4
2025-10-28 16:18:13 +01:00
David Heinemeier Hansson 6243c82251 Turn off the trigger keys instead 2025-10-28 16:06:12 +01:00
David Heinemeier Hansson 928910773c Make sure to restart fxitc5 after making config changes 2025-10-28 15:38:50 +01:00
David Heinemeier Hanssonand@cairin a48001b8cc Turn off fcitx5 clipboard hotkeys that are interferring with other apps
Co-authored-by: @cairin
Ref: #2795
2025-10-28 11:30:27 +01:00
David Heinemeier Hansson c17e4f57ff No need for this either 2025-10-28 08:59:37 +01:00
62cdece33a Allow interaction with first Android Studio dialog ("Send usage statistics") by adjusting JetBrains window rules (#2899)
* fix(jetbrains.conf): allow focus for Android Studio’s first dialog by unsetting nofocus rules for empty-title windows

* Refactor window rules for JetBrains apps

Updated window rules for JetBrains applications to allow focus and interaction with dialogs.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-28 08:38:09 +01:00
Jordan KicklighterandGitHub 45d4b41749 Include all shell-integration-features options together (#2915)
Ghostty will only use the last `shell-integration-features` line found
in the config, so multiple options need to be presented as a
comma-separated list. Including them on separate lines meant that only
the `ssh-env` option was getting set, causing the `no-cursor` option to
be ignored. This prevented the cursor from going into the `block` style.
2025-10-28 08:37:11 +01:00
David Heinemeier Hansson d64a178635 No need to ask 2025-10-28 08:34:22 +01:00
David Heinemeier Hansson d493e0536a Make it update-time instead of reset-time and use before doing an update 2025-10-28 08:30:54 +01:00
Ryan Hughes 0e5c22ac38 Add the keyring for manual installs 2025-10-28 02:33:54 -04:00
Ryan Hughes d5a8f1b06b Move update-keyring to the beginning 2025-10-28 01:43:25 -04:00
Ryan Hughes f3c816fe85 Set version 2025-10-28 01:08:05 -04:00
Ryan Hughes ba348a6a15 Remove nvim.desktop in favor of symlink
Moving to symlink fixes the following issues:
- App removes from launchers if you uninstall Nvim
- Nvim launches in the correct terminal without invalid desktop entry

Symlink setup moved to omarchy-nvim-setup (Ref:
https://github.com/omacom-io/omarchy-pkgs/commit/bb7a0f4c1f78d428bbe53bc3af2c91a9c8a5de3b)
2025-10-27 23:48:58 -04:00
Ryan Hughes ef0a9464a2 Back to default colors here 2025-10-27 19:05:01 -04:00
Ryan Hughes d9a077d5b6 Style gum confirm using ANSI colors so they match 2025-10-27 19:02:56 -04:00
Ryan Hughes b75e70fb9b Add an update confirmation
Will prevent some users from accidentally clicking the update icon only
to terminate and wind up in a broken state.
2025-10-27 18:12:35 -04:00
Ryan Hughes 4bb626bc4e Add omarchy-keyring for existing installs 2025-10-27 17:50:08 -04:00
Ryan Hughes b3e7ff2b60 Update install method for openai-codex 2025-10-27 14:20:46 -04:00
Ryan Hughes 4bd29207c6 Add migration for news alerts box 2025-10-27 13:29:09 -04:00
Anton LindholmandGitHub a39ecf41bc config/uwsm/env: remove extra trailing / in path (#2907) 2025-10-27 18:03:52 +01:00
David Heinemeier Hansson 048fdea87a Ensure nvim always opens nvim not $EDITOR
Closes #2900
2025-10-27 17:57:52 +01:00
d8f97b8d02 Fix auto-generated everforest obsidian theme readability issues (#2752)
* Fix auto-generated everforest obsidian theme

* Update `--text-muted` and `--text-faint` to be readable against
background color

* Add contrast detection and color correction logic

* Remove dedicated Obsidian CSS file

* Add dedicated text color variables to obsidian theme generation

* Replace closest color logic with generated color for code bg in Obsidian

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 17:50:37 +01:00
Ryan Hughes 556e474942 Add setting systemd vars to prevent slow app launches 2025-10-27 12:46:55 -04:00
David Heinemeier Hansson 9d9f362c7a Just use the basics in case there is a problem with path 2025-10-27 17:32:16 +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 06389d0422 Bump checking for new version from 1 to 6 hours
Lessen the stampede going forward
2025-10-27 15:36:07 +01:00
e0e71a34fe imv: add default Ctrl+P binding to print current image via CUPS (#2872)
* imv: add default Ctrl+P binding to print current image via CUPS

* Add imv config migration with backup

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 14:55:14 +01:00
David Heinemeier Hansson d128833e7b Already in mise-work 2025-10-27 14:51:52 +01:00
David Heinemeier Hansson bba2ade78f Ensure node is installed for use by treesitter in neovim
cc @ryanrhughes
2025-10-27 09:55:54 +01:00
Zacharias KnudsenandGitHub e4f2cc2175 Use better git defaults (#1601) 2025-10-27 09:42:04 +01:00
David Heinemeier Hansson e0f9beda7a Reposition scratchpad keybindings in cheatsheet 2025-10-27 09:02:54 +01:00
79267da5f2 Add bindings for scratchpad support (#2669)
* Add bindings for scratchpad support

This is great for hiding windows temporarily and bringing them up when
needed in an overlay, I'm using it to hide away my webcam control in
meetings. ;)

* Change shortcut to move window to scratchpad

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 09:00:35 +01:00
WiehannandGitHub cc5c842f9f Fix ls when not using eza (#2607)
* Fix ls when not using eza

* Make use of omarchy-cmd-present
2025-10-27 08:56:27 +01:00
WiehannandGitHub 9b37d8549f Fix cd command if zoxide is missing (#2609)
* Fix cd command if zoxide is missing

* Make use of omarchy-cmd-present
2025-10-27 08:55:38 +01:00
neimadTLandGitHub 75eb059779 Remove after install usb installer message (#2888)
Since in almost all cases, the EFI entries will get positioned
above the USB, this notice is not needed.
2025-10-27 08:47:50 +01:00
Rishabh SarangandGitHub 7a7881b176 Update windowrule for xdg-desktop-portal-gtk class (#2876) 2025-10-26 20:45:59 +01:00
David Heinemeier Hansson 2586cec7a0 Merge branch 'master' into dev 2025-10-26 13:16:45 +01:00
Timo HuboisandGitHub 80c63f4167 feat(docker): use socket activation instead of autostart 2025-10-26 12:00:31 +01:00
Ryan HughesandGitHub fc30a25842 Merge pull request #2516 from ZorudaRinku/master
Clarify error message when no web apps have been selected in the WebApp Remove menu
2025-10-25 20:04:26 -04:00
Andrej BenzandGitHub 1d29406910 fix: cleanup default walker config values (#2560) 2025-10-25 21:47:23 +02:00
David Heinemeier Hansson 249318b398 Ensure that elephant is started before walker
Because if not, we get the dreaded "Waiting for elephant" message. CC:
@abenz1267
2025-10-25 21:46:31 +02:00
9b798c3c0f Add the keybinding for the copy url extension in the SUPER+K Menu (#2801)
* init

* go with a hardcoded list

* revert manifest modification

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-25 21:38:13 +02:00
Ryan Hughes 14f803857c Update issue templates 2025-10-25 12:58:21 -04:00
David Heinemeier Hansson b92beef294 Ensure Wayland IME is turned on when starting Typora from hotkey too 2025-10-25 14:25:06 +02:00
Rishabh SarangandGitHub 6fce5e28c9 fix(portal): match additional 'Choose Export Directory' dialogs (#2839)
Some applications (e.g. Aether) use xdg-desktop-portal-gtk to open folder chooser dialogs titled "Choose Export Directory" or similar. These were not matched by the previous floating-window regex, causing them to tile instead of float.

This change expands the title regex to include "Choose …" patterns, ensuring these dialogs float and center properly in Hyprland
2025-10-25 13:16:16 +02:00
Brennan CoslettandGitHub 7b02895962 Surface: enable built-in keyboard at LUKS (#2621)
Derives the list of required modules for the installer from Chris
McLeod's manual installation steps. His instructions say to use the
surface-linux kernel however the default kernel has the right set
of modules already (as noted by the fact that the right modules are
loaded for the keyboard to work during the install and after the LUKS
unlock screen).

I only have a Surface Laptop 3 to test this on but based on the guide
where Chris is using a newer laptop and the only difference is the
pinctrl module which I attempt to autodetect I think it should "just"
work for others but definitely "use at your own risk".
2025-10-25 08:18:23 +02:00
Nikhil JainandGitHub 9a90afb6e8 New window replaces the current fullscreen or maximized window (#2821)
* New window replaces the current fullscreen or maximized window

Currently if we are in fullscreen or full-width mode and either

start a new application OR
create a new window of an existing application. Like an incognito window
Then those new windows/apps start in the background. There is no indication that something new has been created.

IMHO, if I am opening an application then I want to switch to it. I cannot think of any common use case for having new applications open in the background.

This change will cause new application to replace current application as the fullscreen / fullwidth window

Please see docs: https://wiki.hypr.land/Configuring/Variables/#misc

Option:
new_window_takes_over_fullscreen

Desc:
if there is a fullscreen or maximized window, decide whether a new tiled window opened should replace it, stay behind or disable the fullscreen/maximized state. 0 - behind, 1 - takes over, 2 - unfullscreen/unmaxize [0/1/2]

Type:
int

Default:
0

* fix the setting name
2025-10-24 12:55:14 -07:00
David Heinemeier Hansson 37518c222c Control border size instead so it works if default is 0 2025-10-24 07:16:36 -07:00
David Heinemeier Hansson 6f0958aa67 Suggest entirely fullscreen view option 2025-10-24 07:13:01 -07:00
David Heinemeier Hansson 475e831391 Merge branch 'master' into dev 2025-10-24 06:45:33 -07:00
69c2195c10 fix(hyprland): match Brave portal dialogs in floating-window rule (#2788)
* fix(hyprland): match Brave portal dialogs in floating-window rule

Brave on Wayland uses xdg-desktop-portal-gtk for permission and file dialogs.
These windows use website-based titles (e.g. "chatgpt.com wants to open")
instead of "Open File" or "Save File", so they were not matched by the
floating-window rule. This commit expands the title regex to include those
patterns, ensuring Brave dialogs float properly.

* Shrink scope

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-24 06:35:30 -07:00
David Heinemeier Hansson 795bfdd969 Include all workspace movements together 2025-10-24 06:30:47 -07:00
David Heinemeier Hansson eac7ea8a49 Few more tweaks to the keybindings 2025-10-24 06:26:46 -07:00
David Heinemeier Hansson de2b32d77f Sort keybindings on SUPER + K
Easier to learn when presented in order
2025-10-24 06:06:34 -07:00
3x3cut0randGitHub a7d76bfc24 Merge pull request #1 from 3x3cut0r/codex/refactor-omarchy-windows-vm-rdp-initialization
Improve Windows VM launch to verify RDP readiness
2025-10-23 23:20:05 +02:00
3x3cut0r f5d0c16f85 Improve RDP readiness check before launching VM 2025-10-23 22:50:10 +02:00
Wolfgang WoehlandGitHub 1388a2558a Screensaver go fullscreen: --no-eol (tte 0.12.2/0.13.0) and --canvas-height 0 2025-10-21 02:44:41 +02:00
Safta Catalin MihaiandGitHub 795873d3a3 Added Scala dev env 2025-10-20 12:21:40 +03:00
ZorudaRinku 8b896b60a9 Clarify error message when no web apps have been selected in the WebApp Remove menu 2025-10-17 19:30:29 -06:00
Stefan Gründel d6dc1c7b86 add bolt to omarchy base packages 2025-09-27 13:55:46 +02:00
Stefan Gruendel e39269f9f0 add migration script 2025-09-23 20:52:17 +02:00
Stefan Gruendel 74f2900db1 Add thunderbolt module in omarchy hook. 2025-09-23 06:40:56 +02:00
750 changed files with 7279 additions and 3962 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
name: Bug
description: Report a problem
description: Report a validated bug -- NOT FOR SUPPORT REQUESTS
labels: [bug]
body:
- type: markdown
+5 -2
View File
@@ -1,5 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: 🛟 Community Support
- name: Suggestion
url: https://github.com/basecamp/omarchy/discussions/categories/suggestions
about: Suggest a new feature, change to existing feature, or other ideas in Discussions.
- name: Support
url: https://omarchy.org/discord
about: Need help? Join our Discord community for support with any issues. GitHub issues should be used for verified bugs, documentation, and enhancement proposals only.
about: Need help? Join our Discord community for support with any issues. GitHub issues should be used for verified bugs only.
-16
View File
@@ -1,16 +0,0 @@
name: Documentation
description: New pages or changes to existing
labels: [documentation]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What correction or addition do we need?
description: Please provide reference links and specifics of what should be updated
validations:
required: true
-15
View File
@@ -1,15 +0,0 @@
name: Enhancement
description: Feature or change
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What do you need?
validations:
required: true
+67
View File
@@ -0,0 +1,67 @@
# Style
- Two spaces for indentation, no tabs
- Use bash 5 conditionals: use `[[ ]]` for string/file tests and `(( ))` for numeric tests
- In `[[ ]]`, don't quote variables, but do quote string literals when comparing values (e.g., `[[ $branch == "dev" ]]`)
- Prefer `(( ))` over numeric operators inside `[[ ]]` (e.g., `(( count < 50 ))`, not `[[ $count -lt 50 ]]`)
- For strings/paths with spaces, quote them instead of escaping spaces with `\ ` (e.g., `"$APP_DIR/Disk Usage.desktop"`, not `$APP_DIR/Disk\ Usage.desktop`)
- Shebangs must use `#!/bin/bash` consistently (never `#!/usr/bin/env bash`)
# Command Naming
All commands start with `omarchy-`. Prefixes indicate purpose:
- `cmd-` - check if commands exist, misc utility commands
- `pkg-` - package management helpers
- `hw-` - hardware detection (return exit codes for use in conditionals)
- `refresh-` - copy default config to user's `~/.config/`
- `restart-` - restart a component
- `launch-` - open applications
- `install-` - install optional software
- `setup-` - interactive setup wizards
- `toggle-` - toggle features on/off
- `theme-` - theme management
- `update-` - update components
# Helper Commands
Use these instead of raw shell commands:
- `omarchy-cmd-missing` / `omarchy-cmd-present` - check for commands
- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
# Config Structure
- `config/` - default configs copied to `~/.config/`
- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)
# Refresh Pattern
To copy a default config to user config with automatic backup:
```bash
omarchy-refresh-config hypr/hyprlock.conf
```
This copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.
# Migrations
To create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.
Migration format:
- No shebang line
- Start with an `echo` describing what the migration does
- Use `$OMARCHY_PATH` to reference the omarchy directory
Example:
```bash
echo "Disable fingerprint in hyprlock if fingerprint auth is not configured"
if omarchy-cmd-missing fprintd-list || ! fprintd-list "$USER" 2>/dev/null | grep -q "finger"; then
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
fi
```
+21
View File
@@ -0,0 +1,21 @@
[Desktop Entry]
Type=Application
TryExec=alacritty
Exec=alacritty
Icon=Alacritty
Terminal=false
Categories=System;TerminalEmulator;
Name=Alacritty
GenericName=Terminal
Comment=A fast, cross-platform, OpenGL terminal emulator
StartupNotify=true
StartupWMClass=Alacritty
Actions=New;
X-TerminalArgExec=-e
X-TerminalArgAppId=--class=
X-TerminalArgTitle=--title=
X-TerminalArgDir=--working-directory=
[Desktop Action New]
Name=New Terminal
Exec=alacritty
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
+2
View File
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

-12
View File
@@ -1,12 +0,0 @@
[Desktop Entry]
Name=Neovim
GenericName=Text Editor
Comment=Edit text files
Exec=omarchy-launch-editor %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=nvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
+8 -6
View File
@@ -11,11 +11,13 @@ send_notification() {
notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
}
if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then
if [[ ! -f $NOTIFICATION_FLAG ]]; then
send_notification $BATTERY_LEVEL
touch $NOTIFICATION_FLAG
if [[ -n $BATTERY_LEVEL && $BATTERY_LEVEL =~ ^[0-9]+$ ]]; then
if [[ $BATTERY_STATE == "discharging" ]] && (( BATTERY_LEVEL <= BATTERY_THRESHOLD )); then
if [[ ! -f $NOTIFICATION_FLAG ]]; then
send_notification $BATTERY_LEVEL
touch $NOTIFICATION_FLAG
fi
else
rm -f $NOTIFICATION_FLAG
fi
else
rm -f $NOTIFICATION_FLAG
fi
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Returns true if a battery is present on the system.
# Used by the battery monitor and other battery-related checks.
for bat in /sys/class/power_supply/BAT*; do
[[ -r $bat/present ]] &&
[[ $(cat $bat/present) == "1" ]] &&
[[ $(cat $bat/type) == "Battery" ]] &&
exit 0
done
exit 1
+4 -6
View File
@@ -1,11 +1,9 @@
#!/bin/bash
# Returns the battery percentage remaining as an integer.
# Used by the battery monitor and the Ctrl + Shift + Super + B hotkey.
upower -i $(upower -e | grep BAT) \
| awk -F: '/percentage/ {
gsub(/[%[:space:]]/, "", $2);
val=$2;
printf("%d\n", (val+0.5))
upower -i $(upower -e | grep BAT) | awk '/percentage/ {
print int($2)
exit
}'
}'
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Set the branch for Omarchy's git repository.
if (($# == 0)); then
echo "Usage: omarchy-branch-set [master|rc|dev]"
exit 1
else
branch="$1"
fi
if [[ $branch != "master" && $branch != "rc" && $branch != "dev" ]]; then
echo "Error: Invalid branch '$branch'. Must be one of: master, rc, dev"
exit 1
fi
git -C $OMARCHY_PATH switch $branch
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# Adjust brightness on the most likely display device.
# Usage: omarchy-brightness-display <step>
step="${1:-+5%}"
# Start with the first possible output, then refine to the most likely given an order heuristic.
device="$(ls -1 /sys/class/backlight 2>/dev/null | head -n1)"
for candidate in amdgpu_bl* intel_backlight acpi_video*; do
if [[ -e /sys/class/backlight/$candidate ]]; then
device="$candidate"
break
fi
done
# Set the actual brightness of the display device.
brightnessctl -d "$device" set "$step" >/dev/null
# Use SwayOSD to display the new brightness setting.
omarchy-swayosd-brightness "$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')"
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
if (( $# == 0 )); then
echo "Adjust Apple Display Brightness by passing +5000 or -5000 (or any range from 0-60000)"
else
device="$(sudo asdcontrol --detect /dev/usb/hiddev* | grep ^/dev/usb/hiddev | cut -d: -f1)"
sudo asdcontrol "$device" -- "$1" >/dev/null
value="$(sudo asdcontrol "$device" | awk -F= '/BRIGHTNESS=/{print $2+0}')"
omarchy-swayosd-brightness "$(( value * 100 / 60000 ))"
fi
+42
View File
@@ -0,0 +1,42 @@
#!/bin/bash
# Adjust keyboard backlight brightness using available steps.
# Usage: omarchy-brightness-keyboard <up|down|cycle>
direction="${1:-up}"
# Find keyboard backlight device (look for *kbd_backlight* pattern in leds class).
device=""
for candidate in /sys/class/leds/*kbd_backlight*; do
if [[ -e $candidate ]]; then
device="$(basename "$candidate")"
break
fi
done
if [[ -z $device ]]; then
echo "No keyboard backlight device found" >&2
exit 1
fi
# Get current and max brightness to determine step size.
max_brightness="$(brightnessctl -d "$device" max)"
current_brightness="$(brightnessctl -d "$device" get)"
# Calculate step as one unit (keyboards typically have discrete levels like 0-3).
if [[ $direction == "cycle" ]]; then
new_brightness=$(( (current_brightness + 1) % (max_brightness + 1) ))
elif [[ $direction == "up" ]]; then
new_brightness=$((current_brightness + 1))
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
else
new_brightness=$((current_brightness - 1))
(( new_brightness < 0 )) && new_brightness=0
fi
# Set the new brightness.
brightnessctl -d "$device" set "$new_brightness" >/dev/null
# Use SwayOSD to display the new brightness setting.
percent=$((new_brightness * 100 / max_brightness))
omarchy-swayosd-kbd-brightness "$percent"
+31
View File
@@ -0,0 +1,31 @@
#!/bin/bash
# Set the Omarchy channel, which dictates what git branch and package repository is used.
#
# Stable uses the master branch, which only sees updates on official releases, and
# the stable package repository, which typically lags the edge by a month to ensure
# better compatibility.
#
# Edge tracks the latest package repository, but still relies on the master branch,
# so new packages which require config changes may cause conflicts or errors.
#
# Dev tracks the active development dev branch, which may include partial or broken updates,
# as well as the latest package repository. This should only be used by Omarchy developers
# and people with a lot of experience managing Linux systems.
if (($# == 0)); then
echo "Usage: omarchy-channel-set [stable|rc|edge|dev]"
exit 1
else
channel="$1"
fi
case "$channel" in
"stable") omarchy-branch-set "master" && omarchy-refresh-pacman "stable" ;;
"rc") omarchy-branch-set "rc" && omarchy-refresh-pacman "rc" ;;
"edge") omarchy-branch-set "master" && omarchy-refresh-pacman "edge" ;;
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
*) echo "Unknown channel: $channel"; exit 1; ;;
esac
omarchy-update -y
-14
View File
@@ -1,14 +0,0 @@
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo "Adjust Apple Display Brightness by passing +5000 or -5000 (or any range from 0-60000)"
else
DEVICE="$(sudo asdcontrol --detect /dev/usb/hiddev* | grep ^/dev/usb/hiddev | cut -d: -f1)"
sudo asdcontrol "$DEVICE" -- "$1" >/dev/null
VALUE="$(sudo asdcontrol "$DEVICE" | awk -F= '/BRIGHTNESS=/{print $2+0}')"
swayosd-client \
--monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \
--custom-icon display-brightness \
--custom-progress "$(awk -v v="$VALUE" 'BEGIN{printf "%.2f", v/60000}')" \
--custom-progress-text "$(( VALUE * 100 / 60000 ))%"
fi
+19 -9
View File
@@ -1,11 +1,13 @@
#!/bin/bash
# Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
sinks_count=$(echo "$sinks" | jq '. | length')
if [ "$sinks_count" -eq 0 ]; then
if (( sinks_count == 0 )); then
swayosd-client \
--monitor "$focused_monitor" \
--custom-message "No audio devices found"
@@ -15,7 +17,7 @@ fi
current_sink_name=$(pactl get-default-sink)
current_sink_index=$(echo "$sinks" | jq -r --arg name "$current_sink_name" 'map(.name) | index($name)')
if [ "$current_sink_index" != "null" ]; then
if [[ $current_sink_index != "null" ]]; then
next_sink_index=$(((current_sink_index + 1) % sinks_count))
else
next_sink_index=0
@@ -25,20 +27,28 @@ next_sink=$(echo "$sinks" | jq -r ".[$next_sink_index]")
next_sink_name=$(echo "$next_sink" | jq -r '.name')
next_sink_description=$(echo "$next_sink" | jq -r '.description')
if [ "$next_sink_description" = "(null)" ] || [ "$next_sink_description" = "null" ] || [ -z "$next_sink_description" ]; then
sink_id=$(echo "$next_sink" | jq -r '.properties."object.id"')
next_sink_description=$(wpctl status | grep -E "\s+\*?\s+${sink_id}\." | sed -E 's/^.*[0-9]+\.\s+//' | sed -E 's/\s+\[.*$//')
if [[ $next_sink_description == "(null)" ]] || [[ $next_sink_description == "null" ]] || [[ -z $next_sink_description ]]; then
# For Bluetooth devices, the friendly name is on the Device entry (device.id), not the Sink entry (object.id)
device_id=$(echo "$next_sink" | jq -r '.properties."device.id"')
if [[ $device_id != "null" ]] && [[ -n $device_id ]]; then
next_sink_description=$(wpctl status | grep -E "^\s*│?\s+${device_id}\." | sed -E 's/^.*[0-9]+\.\s+//' | sed -E 's/\s+\[.*$//')
fi
# Fall back to object.id lookup if device.id didn't yield a result
if [[ -z $next_sink_description ]]; then
sink_id=$(echo "$next_sink" | jq -r '.properties."object.id"')
next_sink_description=$(wpctl status | grep -E "\s+\*?\s+${sink_id}\." | sed -E 's/^.*[0-9]+\.\s+//' | sed -E 's/\s+\[.*$//')
fi
fi
next_sink_volume=$(echo "$next_sink" | jq -r \
'.volume | to_entries[0].value.value_percent | sub("%"; "")')
next_sink_is_muted=$(echo "$next_sink" | jq -r '.mute')
if [ "$next_sink_is_muted" = "true" ] || [ "$next_sink_volume" -eq 0 ]; then
if [[ $next_sink_is_muted = "true" ]] || (( next_sink_volume == 0 )); then
icon_state="muted"
elif [ "$next_sink_volume" -le 33 ]; then
elif (( next_sink_volume <= 33 )); then
icon_state="low"
elif [ "$next_sink_volume" -le 66 ]; then
elif (( next_sink_volume <= 66 )); then
icon_state="medium"
else
icon_state="high"
@@ -46,7 +56,7 @@ fi
next_sink_volume_icon="sink-volume-${icon_state}-symbolic"
if [ "$next_sink_name" != "$current_sink_name" ]; then
if [[ $next_sink_name != $current_sink_name ]]; then
pactl set-default-sink "$next_sink_name"
fi
+5 -2
View File
@@ -1,10 +1,12 @@
#!/bin/bash
# Finish the installation of Omarchy with items that can only be done after logging in.
set -e
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
if [[ -f "$FIRST_RUN_MODE" ]]; then
if [[ -f $FIRST_RUN_MODE ]]; then
rm -f "$FIRST_RUN_MODE"
bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh"
@@ -12,8 +14,9 @@ if [[ -f "$FIRST_RUN_MODE" ]]; then
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
sudo rm -f /etc/sudoers.d/first-run
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
bash "$OMARCHY_PATH/install/first-run/welcome.sh"
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
fi
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Returns true if any of the commands passed in as arguments are missing on the system.
for cmd in "$@"; do
if ! command -v "$cmd" &>/dev/null; then
exit 0
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Returns true if all the commands passed in as arguments exit on the system.
for cmd in "$@"; do
command -v "$cmd" &>/dev/null || exit 1
done
+57 -52
View File
@@ -1,22 +1,29 @@
#!/bin/bash
# Start and stop a screenrecording, which will be saved to ~/Videos by default.
# Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs.
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
if [[ ! -d $OUTPUT_DIR ]]; then
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
SCOPE=""
AUDIO="false"
DESKTOP_AUDIO="false"
MICROPHONE_AUDIO="false"
WEBCAM="false"
WEBCAM_DEVICE=""
STOP_RECORDING="false"
for arg in "$@"; do
case "$arg" in
--with-audio) AUDIO="true" ;;
--with-desktop-audio) DESKTOP_AUDIO="true" ;;
--with-microphone-audio) MICROPHONE_AUDIO="true" ;;
--with-webcam) WEBCAM="true" ;;
output|region) SCOPE="$arg" ;;
--webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;;
--stop-recording) STOP_RECORDING="true"
esac
done
@@ -27,6 +34,15 @@ cleanup_webcam() {
start_webcam_overlay() {
cleanup_webcam
# Auto-detect first available webcam if none specified
if [[ -z $WEBCAM_DEVICE ]]; then
WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^\s*/dev/video" | tr -d '\t')
if [[ -z $WEBCAM_DEVICE ]]; then
notify-send "No webcam devices found" -u critical -t 3000
return 1
fi
fi
# Get monitor scale
local scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
@@ -36,7 +52,7 @@ start_webcam_overlay() {
# Try preferred 16:9 resolutions in order, use first available
local preferred_resolutions=("640x360" "1280x720" "1920x1080")
local video_size_arg=""
local available_formats=$(v4l2-ctl --list-formats-ext -d /dev/video0 2>/dev/null)
local available_formats=$(v4l2-ctl --list-formats-ext -d "$WEBCAM_DEVICE" 2>/dev/null)
for resolution in "${preferred_resolutions[@]}"; do
if echo "$available_formats" | grep -q "$resolution"; then
@@ -45,7 +61,7 @@ start_webcam_overlay() {
fi
done
ffplay -f v4l2 $video_size_arg -framerate 30 /dev/video0 \
ffplay -f v4l2 $video_size_arg -framerate 30 "$WEBCAM_DEVICE" \
-vf "scale=${target_width}:-1" \
-window_title "WebcamOverlay" \
-noborder \
@@ -57,31 +73,52 @@ start_webcam_overlay() {
start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
local audio_devices=""
local audio_args=""
# Merge audio tracks into one - separate tracks only play one at a time in most players
[[ "$AUDIO" == "true" ]] && audio_args="-a default_output|default_input"
[[ $DESKTOP_AUDIO == "true" ]] && audio_devices+="default_output"
gpu-screen-recorder -w "$@" -f 60 -c mp4 -o "$filename" $audio_args &
if [[ $MICROPHONE_AUDIO == "true" ]]; then
# Merge audio tracks into one - separate tracks only play one at a time in most players
[[ -n $audio_devices ]] && audio_devices+="|"
audio_devices+="default_input"
fi
[[ -n $audio_devices ]] && audio_args+="-a $audio_devices"
gpu-screen-recorder -w portal -k h264 -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac &
toggle_screenrecording_indicator
}
trim_first_frame() {
local latest=$(ls -t "$OUTPUT_DIR"/screenrecording-*.mp4 2>/dev/null | head -1)
if [[ -n $latest ]]; then
local trimmed="${latest%.mp4}-trimmed.mp4"
if ffmpeg -y -ss 0.1 -i "$latest" -c copy "$trimmed" -loglevel quiet 2>/dev/null; then
mv "$trimmed" "$latest"
else
rm -f "$trimmed"
fi
fi
}
stop_screenrecording() {
pkill -SIGINT -f "gpu-screen-recorder" # SIGINT required to save video properly
pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly
# Wait a maximum of 5 seconds to finish before hard killing
local count=0
while pgrep -f "gpu-screen-recorder" >/dev/null && [ $count -lt 50 ]; do
while pgrep -f "^gpu-screen-recorder" >/dev/null && (( count < 50 )); do
sleep 0.1
count=$((count + 1))
done
if pgrep -f "gpu-screen-recorder" >/dev/null; then
pkill -9 -f "gpu-screen-recorder"
if pgrep -f "^gpu-screen-recorder" >/dev/null; then
pkill -9 -f "^gpu-screen-recorder"
cleanup_webcam
notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000
else
cleanup_webcam
trim_first_frame
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
fi
toggle_screenrecording_indicator
@@ -92,51 +129,19 @@ toggle_screenrecording_indicator() {
}
screenrecording_active() {
pgrep -f "gpu-screen-recorder" >/dev/null || pgrep -x slurp >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
}
if screenrecording_active; then
if pgrep -x slurp >/dev/null; then
pkill -x slurp 2>/dev/null
elif pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "gpu-screen-recorder" >/dev/null; then
if pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "^gpu-screen-recorder" >/dev/null; then
cleanup_webcam
else
stop_screenrecording
fi
elif [[ "$SCOPE" == "output" ]]; then
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
elif [[ $STOP_RECORDING == "false" ]]; then
[[ $WEBCAM == "true" ]] && start_webcam_overlay
if ! output=$(slurp -o -f "%o"); then
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
if [[ -z "$output" ]]; then
notify-send "Error" "Could not detect monitor" -u critical
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
start_screenrecording "$output"
start_screenrecording || cleanup_webcam
else
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
if ! region=$(slurp -f "%wx%h+%x+%y"); then
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
if [[ "$region" =~ ^([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+)$ ]]; then
w=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[1]} * $scale}")
h=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[2]} * $scale}")
x=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[3]} * $scale}")
y=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[4]} * $scale}")
scaled_region="${w}x${h}+${x}+${y}"
else
scaled_region="$region"
fi
start_screenrecording region -region "$scaled_region"
exit 1
fi
+17 -10
View File
@@ -1,28 +1,35 @@
#!/bin/bash
# Run the Omarchy screensaver using random effects from TTE.
screensaver_in_focus() {
hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1
hyprctl activewindow -j | jq -e '.class == "org.omarchy.screensaver"' >/dev/null 2>&1
}
exit_screensaver() {
hyprctl keyword cursor:invisible false
hyprctl keyword cursor:invisible false &>/dev/null || true
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
pkill -f org.omarchy.screensaver 2>/dev/null
exit 0
}
# Exit the screensaver on signals and input from keyboard and mouse
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
printf '\033]11;rgb:00/00/00\007' # Set background color to black
hyprctl keyword cursor:invisible true &>/dev/null
while true; do
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.config/omarchy/branding/screensaver.txt \
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
"$effect" &
tty=$(tty 2>/dev/null)
while pgrep -x tte >/dev/null; do
if read -n 1 -t 3 || ! screensaver_in_focus; then
while true; do
tte -i ~/.config/omarchy/branding/screensaver.txt \
--frame-rate 120 --canvas-width 0 --canvas-height 0 --reuse-canvas --anchor-canvas c --anchor-text c\
--random-effect --exclude-effects dev_worm \
--no-eol --no-restore-cursor &
while pgrep -t "${tty#/dev/}" -x tte >/dev/null; do
if read -n1 -t 1 || ! screensaver_in_focus; then
exit_screensaver
fi
done
+80 -33
View File
@@ -1,83 +1,130 @@
#!/bin/bash
# Take a screenshot of the whole screen, a specific window, or a user-drawn region.
# Saves to ~/Pictures by default, but that can be changed via OMARCHY_SCREENSHOT_DIR or XDG_PICTURES_DIR ENVs.
# Editor defaults to Satty but can be changed via --editor=<name> or OMARCHY_SCREENSHOT_EDITOR env
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
if [[ ! -d $OUTPUT_DIR ]]; then
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
pkill slurp && exit 0
SCREENSHOT_EDITOR="${OMARCHY_SCREENSHOT_EDITOR:-satty}"
# Parse --editor flag from any position
ARGS=()
for arg in "$@"; do
if [[ $arg == --editor=* ]]; then
SCREENSHOT_EDITOR="${arg#--editor=}"
else
ARGS+=("$arg")
fi
done
set -- "${ARGS[@]}"
open_editor() {
local filepath="$1"
if [[ $SCREENSHOT_EDITOR == "satty" ]]; then
satty --filename "$filepath" \
--output-filename "$filepath" \
--actions-on-enter save-to-clipboard \
--save-after-copy \
--copy-command 'wl-copy'
else
$SCREENSHOT_EDITOR "$filepath"
fi
}
MODE="${1:-smart}"
PROCESSING="${2:-slurp}"
# accounting for portrait/transformed displays
JQ_MONITOR_GEO='
def format_geo:
.x as $x | .y as $y |
(.width / .scale | floor) as $w |
(.height / .scale | floor) as $h |
.transform as $t |
if $t == 1 or $t == 3 then
"\($x),\($y) \($h)x\($w)"
else
"\($x),\($y) \($w)x\($h)"
end;
'
get_rectangles() {
local active_workspace=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .activeWorkspace.id')
hyprctl monitors -j | jq -r --arg ws "$active_workspace" '.[] | select(.activeWorkspace.id == ($ws | tonumber)) | "\(.x),\(.y) \((.width / .scale) | floor)x\((.height / .scale) | floor)"'
hyprctl monitors -j | jq -r --arg ws "$active_workspace" "${JQ_MONITOR_GEO} .[] | select(.activeWorkspace.id == (\$ws | tonumber)) | format_geo"
hyprctl clients -j | jq -r --arg ws "$active_workspace" '.[] | select(.workspace.id == ($ws | tonumber)) | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
}
# Select based on mode
case "$MODE" in
region)
wayfreeze & PID=$!
hyprpicker -r -z >/dev/null 2>&1 & PID=$!
sleep .1
SELECTION=$(slurp 2>/dev/null)
kill $PID 2>/dev/null
;;
windows)
wayfreeze & PID=$!
hyprpicker -r -z >/dev/null 2>&1 & PID=$!
sleep .1
SELECTION=$(get_rectangles | slurp -r 2>/dev/null)
kill $PID 2>/dev/null
;;
fullscreen)
SELECTION=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.x),\(.y) \((.width / .scale) | floor)x\((.height / .scale) | floor)"')
SELECTION=$(hyprctl monitors -j | jq -r "${JQ_MONITOR_GEO} .[] | select(.focused == true) | format_geo")
;;
smart|*)
RECTS=$(get_rectangles)
wayfreeze & PID=$!
hyprpicker -r -z >/dev/null 2>&1 & PID=$!
sleep .1
SELECTION=$(echo "$RECTS" | slurp 2>/dev/null)
kill $PID 2>/dev/null
# If the selction area is L * W < 20, we'll assume you were trying to select whichever
# window or output it was inside of to prevent accidental 2px snapshots
if [[ "$SELECTION" =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+)$ ]]; then
if (( ${BASH_REMATCH[3]} * ${BASH_REMATCH[4]} < 20 )); then
click_x="${BASH_REMATCH[1]}"
click_y="${BASH_REMATCH[2]}"
# If the selection area is L * W < 20, we'll assume you were trying to select whichever
# window or output it was inside of to prevent accidental 2px snapshots
if [[ $SELECTION =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+)$ ]]; then
if ((${BASH_REMATCH[3]} * ${BASH_REMATCH[4]} < 20)); then
click_x="${BASH_REMATCH[1]}"
click_y="${BASH_REMATCH[2]}"
while IFS= read -r rect; do
if [[ "$rect" =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+) ]]; then
rect_x="${BASH_REMATCH[1]}"
rect_y="${BASH_REMATCH[2]}"
rect_width="${BASH_REMATCH[3]}"
rect_height="${BASH_REMATCH[4]}"
while IFS= read -r rect; do
if [[ $rect =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+) ]]; then
rect_x="${BASH_REMATCH[1]}"
rect_y="${BASH_REMATCH[2]}"
rect_width="${BASH_REMATCH[3]}"
rect_height="${BASH_REMATCH[4]}"
if (( click_x >= rect_x && click_x < rect_x+rect_width && click_y >= rect_y && click_y < rect_y+rect_height )); then
SELECTION="${rect_x},${rect_y} ${rect_width}x${rect_height}"
break
fi
if ((click_x >= rect_x && click_x < rect_x + rect_width && click_y >= rect_y && click_y < rect_y + rect_height)); then
SELECTION="${rect_x},${rect_y} ${rect_width}x${rect_height}"
break
fi
done <<< "$RECTS"
fi
fi
done <<<"$RECTS"
fi
;;
fi
;;
esac
[ -z "$SELECTION" ] && exit 0
[[ -z $SELECTION ]] && exit 0
FILENAME="screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png"
FILEPATH="$OUTPUT_DIR/$FILENAME"
if [[ $PROCESSING == "slurp" ]]; then
grim -g "$SELECTION" - |
satty --filename - \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \
--actions-on-enter save-to-clipboard \
--save-after-copy \
--copy-command 'wl-copy'
grim -g "$SELECTION" "$FILEPATH" || exit 1
wl-copy <"$FILEPATH"
(
ACTION=$(notify-send "Screenshot saved to clipboard and file" "Edit with Super + Alt + , (or click this)" -t 10000 -i "$FILEPATH" -A "default=edit")
[[ $ACTION == "default" ]] && open_editor "$FILEPATH"
) &
else
grim -g "$SELECTION" - | wl-copy
fi
+3 -1
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Share clipboard, file, or folder using LocalSend. Bound to Super + Ctrl + S by default.
if (($# == 0)); then
echo "Usage: omarchy-cmd-share [clipboard|file|folder]"
exit 1
@@ -23,7 +25,7 @@ else
# Pick one or more files from home directory
FILES=$(find "$HOME" -type f 2>/dev/null | fzf --multi)
fi
[ -z "$FILES" ] && exit 0
[[ -z $FILES ]] && exit 0
fi
fi
+6 -1
View File
@@ -1,13 +1,18 @@
#!/bin/bash
# Returns the current working directory of the active terminal window,
# so a new terminal window can be started in the same directory.
# Go from current active terminal to its child shell process and run cwd there
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
if [[ -n $shell_pid ]]; then
cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null)
shell=$(readlink -f "/proc/$shell_pid/exe" 2>/dev/null)
if [[ -d $cwd ]]; then
# Check if $shell is a valid shell and $cwd is a directory.
if grep -qs "$shell" /etc/shells && [[ -d $cwd ]]; then
echo "$cwd"
else
echo "$HOME"
+45
View File
@@ -0,0 +1,45 @@
#!/bin/bash
# Add an EFI boot entry for the Omarchy UKI, allowing the system to boot directly
# without a bootloader like Limine. Requires UEFI firmware and a built UKI.
if [[ ! -d /sys/firmware/efi ]]; then
echo "Error: System is not booted in UEFI mode" >&2
exit 1
fi
if ! efibootmgr &>/dev/null; then
echo "Error: efibootmgr is not available or not functional" >&2
exit 1
fi
if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "American Megatrends"; then
echo "Error: American Megatrends firmware may not safely support custom EFI entries" >&2
exit 1
fi
if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then
echo "Error: Apple firmware uses its own boot manager" >&2
exit 1
fi
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
if [[ -z $uki_file ]]; then
echo "Error: No Omarchy UKI found in /boot/EFI/Linux/" >&2
exit 1
fi
boot_source=$(findmnt -n -o SOURCE /boot)
disk=$(echo "$boot_source" | sed 's/p\?[0-9]*$//')
part=$(echo "$boot_source" | grep -o 'p\?[0-9]*$' | sed 's/^p//')
if gum confirm "Setup direct boot (so snapshot booting must be done via bios)?"; then
echo "Creating EFI boot entry for $uki_file"
sudo efibootmgr --create \
--disk "$disk" \
--part "$part" \
--label "Omarchy" \
--loader "\\EFI\\Linux\\$uki_file"
fi
+37 -3
View File
@@ -1,7 +1,36 @@
#!/bin/bash
# Return exhaustive debugging information about the system to help diagnose problems.
NO_SUDO=false
PRINT_ONLY=false
while (( $# > 0 )); do
case "$1" in
--no-sudo)
NO_SUDO=true
shift
;;
--print)
PRINT_ONLY=true
shift
;;
*)
echo "Unknown option: $1"
echo "Usage: omarchy-debug [--no-sudo] [--print]"
exit 1
;;
esac
done
LOG_FILE="/tmp/omarchy-debug.log"
if [[ $NO_SUDO = "true" ]]; then
DMESG_OUTPUT="(skipped - --no-sudo flag used)"
else
DMESG_OUTPUT="$(sudo dmesg)"
fi
cat > "$LOG_FILE" <<EOF
Date: $(date)
Hostname: $(hostname)
@@ -15,10 +44,10 @@ $(inxi -Farz)
=========================================
DMESG
=========================================
$(sudo dmesg)
$DMESG_OUTPUT
=========================================
JOURNALCTL (CURRENT BOOT, ERRORS ONLY)
JOURNALCTL (CURRENT BOOT, WARNINGS+ERRORS)
=========================================
$(journalctl -b -p 4..1)
@@ -28,6 +57,11 @@ INSTALLED PACKAGES
$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort)
EOF
if [[ $PRINT_ONLY = "true" ]]; then
cat "$LOG_FILE"
exit 0
fi
OPTIONS=("View log" "Save in current directory")
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
OPTIONS=("Upload log" "${OPTIONS[@]}")
@@ -39,7 +73,7 @@ case "$ACTION" in
"Upload log")
echo "Uploading debug log to 0x0.st..."
URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st)
if [ $? -eq 0 ] && [ -n "$URL" ]; then
if (( $? == 0 )) && [[ -n $URL ]]; then
echo "✓ Log uploaded successfully!"
echo "Share this URL:"
echo ""
+9 -1
View File
@@ -1,6 +1,14 @@
#!/bin/bash
# Creates a new Omarchy migration named after the unix timestamp of the last commit.
# Only intended for Omarchy developers.
cd ~/.local/share/omarchy
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file
nvim $migration_file
if [[ $1 != "--no-edit" ]]; then
nvim $migration_file
fi
echo $migration_file
+26 -5
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Drive, like /dev/nvme0, to display information about
# Returns drive information about a given volumne, like /dev/nvme0, which is used by omarchy-drive-select.
if (($# == 0)); then
echo "Usage: omarchy-drive-info [/dev/drive]"
exit 1
@@ -10,7 +11,7 @@ fi
# Find the root drive in case we are looking at partitions
root_drive=$(lsblk -no PKNAME "$drive" 2>/dev/null | tail -n1)
if [[ -n "$root_drive" ]]; then
if [[ -n $root_drive ]]; then
root_drive="/dev/$root_drive"
else
root_drive="$drive"
@@ -18,11 +19,31 @@ fi
# Get basic disk information
size=$(lsblk -dno SIZE "$drive" 2>/dev/null)
model=$(lsblk -dno MODEL "$root_drive" 2>/dev/null)
vendor=$(lsblk -dno VENDOR "$root_drive" 2>/dev/null | sed 's/ *$//')
model=$(lsblk -dno MODEL "$root_drive" 2>/dev/null | sed 's/ *$//')
# Combine vendor and model, avoiding duplication
label=""
if [[ -n $vendor && -n $model ]]; then
if [[ $model == *$vendor* ]]; then
label="$model"
else
label="$vendor $model"
fi
elif [[ -n $model ]]; then
label="$model"
elif [[ -n $vendor ]]; then
label="$vendor"
fi
# Format display string
display="$drive"
[[ -n "$size" ]] && display="$display ($size)"
[[ -n "$model" ]] && display="$display - $model"
[[ -n $size ]] && display="$display ($size)"
[[ -n $label ]] && display="$display - $label"
# Append compact partition summary
part_summary=$(lsblk -nro TYPE,NAME,FSTYPE,MOUNTPOINT "$root_drive" 2>/dev/null | \
awk '$1=="part" { printf "%s%s%s", s, ($3==""?"unknown":$3), ($4==""?"":"("$4")"); s=", " }')
[[ -n $part_summary ]] && display+=" [$part_summary]"
echo "$display"
+2 -2
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Select a drive from a list with info that includes space and brand
# Select a drive from a list with info that includes space and brand. Used by omarchy-drive-set-password.
if (($# == 0)); then
drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)')
@@ -10,7 +10,7 @@ fi
drives_with_info=""
while IFS= read -r drive; do
[[ -n "$drive" ]] || continue
[[ -n $drive ]] || continue
drives_with_info+="$(omarchy-drive-info "$drive")"$'\n'
done <<<"$drives"
+3 -1
View File
@@ -1,9 +1,11 @@
#!/bin/bash
# Set a new encryption password for a drive selected.
encrypted_drives=$(blkid -t TYPE=crypto_LUKS -o device)
if [[ -n $encrypted_drives ]]; then
if [[ $(wc -l <<<"$encrypted_drives") -eq 1 ]]; then
if (( $(wc -l <<<encrypted_drives) == 1 )); then
drive_to_change="$encrypted_drives"
else
drive_to_change="$(omarchy-drive-select "$encrypted_drives")"
+3
View File
@@ -1,3 +1,6 @@
#!/bin/bash
# Returns the name of the current monospace font being used by extracting it from the Waybar stylesheet.
# This can be changed using omarchy-font-set.
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1
+2
View File
@@ -1,3 +1,5 @@
#!/bin/bash
# Returns a list of all the monospace fonts available on the system that can be set using omarchy-font-set.
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omarchy' | sort -u
+9 -2
View File
@@ -1,8 +1,11 @@
#!/bin/bash
# Set the system-wide monospace font that should be used by the terminal, hyprlock, waybar, swayosd, etc.
# The font name must be one of the ones returned by omarchy-font-list.
font_name="$1"
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
if [[ -n $font_name ]]; then
if fc-list | grep -iq "$font_name"; then
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
@@ -18,6 +21,7 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
pkill -SIGUSR2 ghostty
fi
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
xmlstarlet ed -L \
@@ -27,7 +31,10 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
omarchy-restart-waybar
omarchy-restart-swayosd
omarchy-restart-walker
if pgrep -x ghostty; then
notify-send " You must restart Ghostty to see font change"
fi
omarchy-hook font-set "$font_name"
else
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
# Check if hibernation is supported
if [[ ! -f /sys/power/image_size ]]; then
exit 1
fi
# Sum all swap sizes (excluding zram)
SWAPSIZE_KB=$(awk '!/Filename|zram/ {sum += $3} END {print sum+0}' /proc/swaps)
SWAPSIZE=$(( 1024 * ${SWAPSIZE_KB:-0} ))
HIBERNATION_IMAGE_SIZE=$(cat /sys/power/image_size)
if (( SWAPSIZE > HIBERNATION_IMAGE_SIZE )) && [[ -f /etc/mkinitcpio.conf.d/omarchy_resume.conf ]]; then
exit 0
else
exit 1
fi
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
# Removes hibernation setup: disables swap, removes swapfile, removes fstab entry,
# removes resume hook, and removes suspend-then-hibernate configuration.
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
# Check if hibernation is configured
if [[ ! -f $MKINITCPIO_CONF ]] || ! grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
echo "Hibernation is not set up"
exit 0
fi
if ! gum confirm "Remove hibernation setup?"; then
exit 0
fi
SWAP_SUBVOLUME="/swap"
SWAP_FILE="$SWAP_SUBVOLUME/swapfile"
# Disable swap if active
if swapon --show | grep -q "$SWAP_FILE"; then
echo "Disabling swap on $SWAP_FILE"
sudo swapoff "$SWAP_FILE"
fi
# Remove swapfile
if [[ -f $SWAP_FILE ]]; then
echo "Removing swapfile"
sudo rm "$SWAP_FILE"
fi
# Remove swap subvolume
if sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
echo "Removing Btrfs subvolume $SWAP_SUBVOLUME"
sudo btrfs subvolume delete "$SWAP_SUBVOLUME"
fi
# Remove fstab entry
if grep -Fq "$SWAP_FILE" /etc/fstab; then
echo "Removing swapfile from /etc/fstab"
sudo cp -a /etc/fstab "/etc/fstab.$(date +%Y%m%d%H%M%S).back"
sudo sed -i "\|$SWAP_FILE|d" /etc/fstab
sudo sed -i '/^# Btrfs swapfile for system hibernation$/d' /etc/fstab
fi
# Remove suspend-then-hibernate configuration
echo "Removing suspend-then-hibernate configuration"
sudo rm -f /etc/systemd/logind.conf.d/lid.conf
sudo rm -f /etc/systemd/sleep.conf.d/hibernate.conf
# Remove mkinitcpio resume hook
echo "Removing resume hook"
sudo rm "$MKINITCPIO_CONF"
echo "Regenerating initramfs..."
sudo limine-mkinitcpio
echo "Hibernation removed"
+100
View File
@@ -0,0 +1,100 @@
#!/bin/bash
# Creates a swap file in the btrfs subvolume, adds the swap file to /etc/fstab,
# adds a resume hook to mkinitcpio, and configures suspend-then-hibernate.
if [[ ! -f /sys/power/image_size ]]; then
echo -e "Hibernation is not supported on your system" >&2
exit 0
fi
if ! command -v limine-mkinitcpio &>/dev/null; then
echo "Skipping hibernation setup (requires Limine bootloader)"
exit 0
fi
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
# Check if hibernation is already configured
if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
echo "Hibernation is already set up"
exit 0
fi
if [[ $1 != "--force" ]]; then
MEM_TOTAL_HUMAN=$(free --human | awk '/Mem/ {print $2}')
if ! gum confirm "Use $MEM_TOTAL_HUMAN on boot drive to make hibernation available?"; then
exit 0
fi
fi
SWAP_SUBVOLUME="/swap"
SWAP_FILE="$SWAP_SUBVOLUME/swapfile"
# Create btrfs subvolume for swap
if ! sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
echo "Creating Btrfs subvolume"
sudo btrfs subvolume create "$SWAP_SUBVOLUME"
sudo chattr +C "$SWAP_SUBVOLUME"
fi
# Create swapfile
if ! sudo swaplabel "$SWAP_FILE" &>/dev/null; then
echo "Creating swapfile in Btrfs subvolume"
MEM_TOTAL_KB="$(awk '/MemTotal/ {print $2}' /proc/meminfo)k"
sudo btrfs filesystem mkswapfile -s "$MEM_TOTAL_KB" "$SWAP_FILE"
fi
# Add swapfile to fstab
if ! grep -Fq "$SWAP_FILE" /etc/fstab; then
echo "Adding swapfile to /etc/fstab"
sudo cp -a /etc/fstab "/etc/fstab.$(date +%Y%m%d%H%M%S).back"
printf "\n# Btrfs swapfile for system hibernation\n%s none swap defaults,pri=0 0 0\n" "$SWAP_FILE" | sudo tee -a /etc/fstab >/dev/null
fi
# Enable swap
if ! swapon --show | grep -q "$SWAP_FILE"; then
echo "Enabling swap on $SWAP_FILE"
sudo swapon -p 0 "$SWAP_FILE"
fi
# Add resume hook to mkinitcpio
sudo mkdir -p /etc/mkinitcpio.conf.d
echo "Adding resume hook to $MKINITCPIO_CONF"
echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null
# Ensure keyboard backlight doesn't prevent sleep
sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/
# Add resume= kernel parameters so the initramfs resume hook knows where to find the
# hibernation image. Without these, resume happens late (after GPU drivers load) and fails.
RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf"
if [[ ! -f $RESUME_DROP_IN ]]; then
echo "Adding resume kernel parameters"
sudo swapon -p 0 "$SWAP_FILE" 2>/dev/null
RESUME_DEVICE=$(findmnt -no SOURCE -T "$SWAP_FILE" | sed 's/\[.*\]//')
RESUME_OFFSET=$(btrfs inspect-internal map-swapfile -r "$SWAP_FILE")
sudo mkdir -p /etc/limine-entry-tool.d
echo "KERNEL_CMDLINE[default]+=\"resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null
fi
# Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate)
if grep -q "\[s2idle\]" /sys/power/mem_sleep 2>/dev/null; then
LIMINE_DROP_IN="/etc/limine-entry-tool.d/rtc-alarm.conf"
if [[ ! -f $LIMINE_DROP_IN ]]; then
echo "Enabling ACPI RTC alarm for s2idle suspend"
sudo mkdir -p /etc/limine-entry-tool.d
echo 'KERNEL_CMDLINE[default]+="rtc_cmos.use_acpi_alarm=1"' | sudo tee "$LIMINE_DROP_IN" >/dev/null
fi
fi
# Regenerate initramfs and boot entry
echo "Regenerating initramfs..."
sudo limine-mkinitcpio
sudo limine-update
echo
if [[ $1 != "--force" ]] && gum confirm "Reboot to enable hibernation?"; then
omarchy-system-reboot
fi
+3 -1
View File
@@ -1,8 +1,10 @@
#!/bin/bash
# Run a named hook, like post-update (available in ~/.config/omarchy/hooks/post-update).
set -e
if [[ $# -lt 1 ]]; then
if (( $# < 1 )); then
echo "Usage: omarchy-hook [name] [args...]"
exit 1
fi
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# Detect whether the computer is an Asus ROG machine.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "ASUSTeK COMPUTER INC." ]] &&
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# Detect whether the computer is a Framework Laptop 16.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Framework" ]] &&
grep -q "Laptop 16" /sys/class/dmi/id/product_name 2>/dev/null
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# Detect whether the computer is a Microsoft Surface device.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Microsoft Corporation" ]] &&
grep -q "Surface" /sys/class/dmi/id/product_name 2>/dev/null
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# Get the active monitor (the one with the cursor)
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
CURRENT_SCALE=$(echo "$MONITOR_INFO" | jq -r '.scale')
# Cycle through scales: 1 → 1.6 → 2 → 3 → 1
CURRENT_INT=$(awk -v s="$CURRENT_SCALE" 'BEGIN { printf "%.0f", s * 10 }')
case "$CURRENT_INT" in
10) NEW_SCALE=1.6 ;;
16) NEW_SCALE=2 ;;
20) NEW_SCALE=3 ;;
*) NEW_SCALE=1 ;;
esac
hyprctl keyword misc:disable_scale_notification true
hyprctl keyword monitor "$ACTIVE_MONITOR,preferred,auto,$NEW_SCALE"
hyprctl keyword misc:disable_scale_notification false
notify-send "󰍹 Display scaling set to ${NEW_SCALE}x"
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
# Toggle to pop-out a tile to stay fixed on a display basis.
# Usage:
# omarchy-hyprland-window-pop [width height [x y]]
#
# Arguments:
# width Optional. Width of the floating window. Default: 1300
# height Optional. Height of the floating window. Default: 900
# x Optional. X position of the window. Must provide both X and Y to take effect.
# y Optional. Y position of the window. Must provide both X and Y to take effect.
#
# Behavior:
# - If the window is already pinned, it will be unpinned and removed from the pop layer.
# - If the window is not pinned, it will be floated, resized, moved/centered, pinned, brought to top, and popped.
width=${1:-1300}
height=${2:-900}
x=${3:-}
y=${4:-}
active=$(hyprctl activewindow -j)
pinned=$(echo "$active" | jq ".pinned")
addr=$(echo "$active" | jq -r ".address")
if [[ $pinned == "true" ]]; then
hyprctl -q --batch \
"dispatch pin address:$addr;" \
"dispatch togglefloating address:$addr;" \
"dispatch tagwindow -pop address:$addr;"
elif [[ -n $addr ]]; then
hyprctl dispatch togglefloating address:$addr
hyprctl dispatch resizeactive exact $width $height address:$addr
if [[ -n $x && -n $y ]]; then
hyprctl dispatch moveactive $x $y address:$addr
else
hyprctl dispatch centerwindow address:$addr
fi
hyprctl -q --batch \
"dispatch pin address:$addr;" \
"dispatch alterzorder top address:$addr;" \
"dispatch tagwindow +pop address:$addr;"
fi
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Check current single_window_aspect_ratio setting
CURRENT_VALUE=$(hyprctl getoption "dwindle:single_window_aspect_ratio" 2>/dev/null | head -1)
# Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]"
if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then
hyprctl keyword dwindle:single_window_aspect_ratio "0 0"
notify-send " Disable single-window square aspect ratio"
else
hyprctl keyword dwindle:single_window_aspect_ratio "1 1"
notify-send " Enable single-window square aspect"
fi
+10 -5
View File
@@ -1,10 +1,15 @@
#!/bin/bash
workspace_id=$(hyprctl activeworkspace -j | jq -r .id)
gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0")
# Toggles the window gaps globally between no gaps and the default 10/5/2.
gaps=$(hyprctl getoption general:gaps_out -j | jq -r '.custom' | awk '{print $1}')
if [[ $gaps == "0" ]]; then
hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, border:true"
else \
hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, border:false"
hyprctl keyword general:gaps_out 10
hyprctl keyword general:gaps_in 5
hyprctl keyword general:border_size 2
else
hyprctl keyword general:gaps_out 0
hyprctl keyword general:gaps_in 0
hyprctl keyword general:border_size 0
fi
@@ -1,5 +1,8 @@
#!/bin/bash
# Allow Chromium to sign in to Google accounts by adding the correct
# oauth client id and secret to ~/.config/chromium-flags.conf.
if [[ -f ~/.config/chromium-flags.conf ]]; then
CONF=~/.config/chromium-flags.conf
+15 -5
View File
@@ -1,15 +1,17 @@
#!/bin/bash
if [[ -z "$1" ]]; then
echo "Usage: omarchy-install-dev-env <ruby|node|bun|go|laravel|symfony|php|python|elixir|phoenix|rust|java|ocaml|dotnet|clojure>" >&2
# Install one of the supported development environments. Usually called via Install > Development > * in the Omarchy Menu.
if [[ -z $1 ]]; then
echo "Usage: omarchy-install-dev-env <ruby|node|bun|deno|go|laravel|symfony|php|python|elixir|phoenix|rust|java|zig|ocaml|dotnet|clojure|scala>" >&2
exit 1
fi
install_php() {
sudo pacman -S php composer php-sqlite xdebug --noconfirm
omarchy-pkg-add php composer php-sqlite xdebug
# Install Path for Composer
if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then
if [[ :$PATH: != *:$HOME/.config/composer/vendor/bin:* ]]; then
echo 'export PATH="$HOME/.config/composer/vendor/bin:$PATH"' >>"$HOME/.bashrc"
source "$HOME/.bashrc"
echo "Added Composer global bin directory to PATH."
@@ -41,7 +43,7 @@ install_php() {
install_node() {
echo -e "Installing Node.js...\n"
mise use --global node@lts
mise use --global node
}
case "$1" in
@@ -50,6 +52,8 @@ ruby)
omarchy-pkg-add libyaml
mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby
mise settings add ruby.compile false
echo "gem: --no-document" >~/.gemrc
mise x ruby -- gem install rails --no-document
echo -e "\nYou can now run: rails new myproject"
;;
@@ -138,4 +142,10 @@ clojure)
omarchy-pkg-add rlwrap
mise use --global clojure@latest
;;
scala)
echo -e "Installing Scala...\n"
mise use --global java@latest
mise use --global scala@latest
mise use --global scala-cli@latest
;;
esac
+6 -3
View File
@@ -1,18 +1,21 @@
#!/bin/bash
# Install one of the supported databases in a Docker container with the suitable development options.
# Usually called via Install > Development > Docker DB from the Omarchy Menu.
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB" "MSSQL")
if [[ "$#" -eq 0 ]]; then
if (( $# == 0 )); then
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (return to install, esc to cancel)") || main_menu
else
choices="$@"
fi
if [[ -n "$choices" ]]; then
if [[ -n $choices ]]; then
for db in $choices; do
case $db in
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres17 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:17 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres18 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:18 ;;
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
+3 -1
View File
@@ -1,8 +1,10 @@
#!/bin/bash
# Install and start the Dropbox service. Must then be authenticated via the web.
echo "Installing all dependencies..."
omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
echo "Starting Dropbox..."
uwsm-app -- dropbox-cli start &>/dev/null &
echo "See Dropbox icon behind hover tray in top right and right-click for setup."
echo "See Dropbox icon behind hover tray in top right and right-click for setup."
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Install and launch Geforce Now.
set -e
omarchy-pkg-add flatpak
cd /tmp
# Download and run GeForce NOW
curl -LO https://international.download.nvidia.com/GFNLinux/GeForceNOWSetup.bin
chmod +x GeForceNOWSetup.bin
./GeForceNOWSetup.bin
# Ensure a separate browser process not started by GFN is available.
# If not, it seems like GFN has a tendency to hang on login.
setsid omarchy-launch-browser
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Install the NordVPN service with optional GUI.
echo "Installing NordVPN..."
omarchy-pkg-aur-add nordvpn-bin
echo "Enabling NordVPN daemon..."
sudo systemctl enable --now nordvpnd
echo "Adding user to nordvpn group..."
sudo usermod -aG nordvpn "$USER"
echo -e "\nNordVPN installed! After reboot, run 'nordvpn login' to authenticate."
echo
gum confirm "Reboot now to make NordVPN usable?" && sudo reboot now
+5 -1
View File
@@ -1,5 +1,9 @@
#!/bin/bash
# Install and launch Steam after first letting the user pick the correct grahics card drivers.
set -e
echo "Now pick dependencies matching your graphics card"
sudo pacman -Syu --noconfirm steam
sudo pacman -S steam
setsid gtk-launch steam >/dev/null 2>&1 &
+3 -6
View File
@@ -1,13 +1,10 @@
#!/bin/bash
# Install the Tailscale mesh VPN service and a web app for the Tailscale Admin Console.
curl -fsSL https://tailscale.com/install.sh | sh
curl -fsSL https://neuralink.com/tsui/install.sh | bash
echo -e "\nStarting Tailscale..."
sudo tailscale up --accept-routes
echo -e "\nAdd tsui to sudoers..."
echo "$USER ALL=(ALL) NOPASSWD: $(which tsui)" | sudo tee /etc/sudoers.d/tsui
omarchy-tui-install "Tailscale" "sudo tsui" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
omarchy-webapp-install "Tailscale Admin Console" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
omarchy-webapp-install "Tailscale" "https://login.tailscale.com/admin/machines" https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tailscale-light.png
+24 -6
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
if (($# == 0)); then
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
exit 1
@@ -7,15 +9,31 @@ fi
package="$1"
# Map package name to desktop entry ID
case "$package" in
alacritty) desktop_id="Alacritty.desktop" ;;
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
kitty) desktop_id="kitty.desktop" ;;
*)
echo "Unknown terminal: $package"
exit 1
;;
esac
# Install package
if omarchy-pkg-add $package; then
# Set as default terminal
echo "Setting $package as new default terminal..."
sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
if [[ $package == "alacritty" ]]; then
mkdir -p ~/.local/share/applications
cp $OMARCHY_PATH/applications/Alacritty.desktop ~/.local/share/applications/
fi
# Restart is needed for new default to take effect
echo
gum confirm "Restart to use new terminal?" && systemctl reboot --no-wall
# Update xdg-terminals.list to prioritize the proper terminal
cat >~/.config/xdg-terminals.list <<EOF
# Terminal emulator preference order for xdg-terminal-exec
# The first found and valid terminal will be used
$desktop_id
EOF
else
echo "Failed to install $package"
fi
+5
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Install VSCode and configure it to use the gnome-libsecret password store, not to update automatically, and to use the current Omarchy theme.
echo "Installing VSCode..."
omarchy-pkg-add visual-studio-code-bin
@@ -21,4 +23,7 @@ EOF
# Ensure VSC's own auto-update feature is turned off
printf '{\n "update.mode": "none"\n}\n' > ~/.config/Code/User/settings.json
# Apply Omarchy theme to VSCode
omarchy-theme-set-vscode
setsid gtk-launch code
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# Install support for using Xbox controllers with Steam/RetroArch/etc.
set -e
# Install xpadneo to ensure controllers work out of the box
omarchy-pkg-add linux-headers
omarchy-pkg-aur-add xpadneo-dkms
# Prevent xpad/xpadneo driver conflict
echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null
echo hid_xpadneo | sudo tee /etc/modules-load.d/xpadneo.conf >/dev/null
# Give user access to game controllers
sudo usermod -a -G input $USER
# Modules need to be loaded
gum confirm "Install requires reboot. Ready?" && sudo reboot now
+3 -1
View File
@@ -1,3 +1,5 @@
#!/bin/bash
exec setsid uwsm-app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'
# Launch the fastfetch TUI that gives information about the current system.
exec omarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# Launch the Omarchy audio controls TUI (provided by wiremix).
omarchy-launch-or-focus-tui wiremix
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# Launch the Omarchy bluetooth controls TUI (provided by bluetui).
# Also attempts to unblock bluetooth service if rfkill had blocked it.
rfkill unblock bluetooth
exec omarchy-launch-or-focus-tui bluetui
+6 -1
View File
@@ -1,10 +1,15 @@
#!/bin/bash
# Launch the default browser as determined by xdg-settings.
# Automatically converts --private into the correct flag for the given browser.
default_browser=$(xdg-settings get default-web-browser)
browser_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$default_browser 2>/dev/null | head -1)
if [[ $browser_exec =~ (firefox|zen|librewolf) ]]; then
if $browser_exec --help | grep -q MOZ_LOG; then
private_flag="--private-window"
elif [[ $browser_exec =~ edge ]]; then
private_flag="--inprivate"
else
private_flag="--incognito"
fi
+8 -3
View File
@@ -1,8 +1,13 @@
#!/bin/bash
case "${EDITOR:-nvim}" in
nvim | vim | nano | micro | hx | helix)
exec setsid uwsm-app -- "$TERMINAL" -e "$EDITOR" "$@"
# Launch the default editor as determined by $EDITOR (set via ~/.config/uwsm/default) (or nvim if missing).
# Starts suitable editors in a terminal window and otherwise as a regular application.
omarchy-cmd-present "$EDITOR" || EDITOR=nvim
case "$EDITOR" in
nvim | vim | nano | micro | hx | helix | fresh)
exec omarchy-launch-tui "$EDITOR" "$@"
;;
*)
exec setsid uwsm-app -- "$EDITOR" "$@"
@@ -1,4 +1,7 @@
#!/bin/bash
# Launch a floating terminal with the Omarchy logo presentation, then execute the command passed in, and finally end with the omarchy-show-done presentation.
# Used by actions such as Update System.
cmd="$*"
exec setsid uwsm-app -- alacritty -o font.size=9 --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; if (( \$? != 130 )); then omarchy-show-done; fi"
+5 -2
View File
@@ -1,5 +1,8 @@
#!/bin/bash
# Launch or focus on a given command identified by the passed in window-pattern.
# Use by some default bindings, like the one for Spotify, to ensure there is only one instance of the application open.
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]"
exit 1
@@ -7,10 +10,10 @@ fi
WINDOW_PATTERN="$1"
LAUNCH_COMMAND="${2:-"uwsm-app -- $WINDOW_PATTERN"}"
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
if [[ -n $WINDOW_ADDRESS ]]; then
hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
else
eval exec $LAUNCH_COMMAND
eval exec setsid $LAUNCH_COMMAND
fi
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
# Launch or focus on a given TUI identified by the passed in as the command.
# Use by commands like omarchy-launch-wifi to ensure there is only one wifi configuration screen open.
APP_ID="org.omarchy.$(basename "$1")"
LAUNCH_COMMAND="omarchy-launch-tui $@"
exec omarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND"
+4 -1
View File
@@ -1,5 +1,8 @@
#!/bin/bash
# Launch or focus on a given web app identified by the window-pattern.
# Use by some default bindings, like the one for WhatsApp, to ensure there is only one instance of the application open.
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]"
exit 1
@@ -9,4 +12,4 @@ WINDOW_PATTERN="$1"
shift
LAUNCH_COMMAND="omarchy-launch-webapp $@"
exec omarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND"
exec omarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND"
+32 -6
View File
@@ -1,28 +1,54 @@
#!/bin/bash
# Launch the Omarchy screensaver in the default terminal on the system with the correct font configuration.
# Exit early if we don't have the tte show
if ! command -v tte &>/dev/null; then
exit 1
fi
# Exit early if screensave is already running
pgrep -f "alacritty --class Screensaver" && exit 0
pgrep -f org.omarchy.screensaver && exit 0
# Allow screensaver to be turned off but also force started
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
exit 1
fi
# Silently quit Walker on overlay
walker -q
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
terminal=$(xdg-terminal-exec --print-id)
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m
# FIXME: Find a way to make this generic where we it can work for kitty + ghostty
hyprctl dispatch exec -- \
alacritty --class Screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
case $terminal in
*Alacritty*)
hyprctl dispatch exec -- \
alacritty --class=org.omarchy.screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
;;
*ghostty*)
hyprctl dispatch exec -- \
ghostty --class=org.omarchy.screensaver \
--config-file=~/.local/share/omarchy/default/ghostty/screensaver \
--font-size=18 \
-e omarchy-cmd-screensaver
;;
*kitty*)
hyprctl dispatch exec -- \
kitty --class=org.omarchy.screensaver \
--override font_size=18 \
--override window_padding_width=0 \
-e omarchy-cmd-screensaver
;;
*)
notify-send "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
;;
esac
done
hyprctl dispatch focusmonitor $focused
-3
View File
@@ -1,3 +0,0 @@
#!/bin/bash
exec setsid uwsm-app -- "${TERMINAL:-alacritty}" "$@"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# Launch the TUI command passed in as an argument in the default terminal with an org.omarchy.COMMAND app id for styling.
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.$(basename $1) -e "$1" "${@:2}"
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Launch the Walker application launcher while ensuring that it's data provider (called elephant) is running first.
# Ensure elephant is running before launching walker
if ! pgrep -x elephant > /dev/null; then
setsid uwsm-app -- elephant &
+3 -1
View File
@@ -1,9 +1,11 @@
#!/bin/bash
# Launch the passed in URL as a web app in the default browser (or chromium if the default doesn't support --app).
browser=$(xdg-settings get default-web-browser)
case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-browser*) ;;
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
*) browser="chromium.desktop" ;;
esac
+5 -1
View File
@@ -1,3 +1,7 @@
#!/bin/bash
exec setsid uwsm-app -- "$TERMINAL" --class=Impala -e impala "$@"
# Launch the Omarchy wifi controls (provided by the Impala TUI).
# Attempts to unblock the wifi service first in case it should be been blocked.
rfkill unblock wifi
omarchy-launch-or-focus-tui impala
+6 -1
View File
@@ -1,12 +1,17 @@
#!/bin/bash
# Locks the system using hyprlock, but not before ensuring 1password has also been locked, and the screensaver stopped.
# Lock the screen
pidof hyprlock || hyprlock &
# Set keyboard layout to default (first layout)
hyprctl switchxkblayout all 0 > /dev/null 2>&1
# Ensure 1password is locked
if pgrep -x "1password" >/dev/null; then
1password --lock &
fi
# Avoid running screensaver when locked
pkill -f "alacritty --class Screensaver"
pkill -f org.omarchy.screensaver
+213 -78
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Launch the Omarchy Menu or takes a parameter to jump straight to a submenu.
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
# Set to true when going directly to a submenu, so we can exit directly
@@ -8,9 +10,9 @@ BACK_TO_EXIT=false
back_to() {
local parent_menu="$1"
if [[ "$BACK_TO_EXIT" == "true" ]]; then
if [[ $BACK_TO_EXIT == "true" ]]; then
exit 0
elif [[ -n "$parent_menu" ]]; then
elif [[ -n $parent_menu ]]; then
"$parent_menu"
else
show_main_menu
@@ -25,19 +27,19 @@ menu() {
read -r -a args <<<"$extra"
if [[ -n "$preselect" ]]; then
if [[ -n $preselect ]]; then
local index
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
if [[ -n "$index" ]]; then
if [[ -n $index ]]; then
args+=("-c" "$index")
fi
fi
echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 600 -p "$prompt…" "${args[@]}" 2>/dev/null
echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null
}
terminal() {
alacritty --class=Omarchy -e "$@"
xdg-terminal-exec --app-id=org.omarchy.terminal "$@"
}
present_terminal() {
@@ -50,15 +52,15 @@ open_in_editor() {
}
install() {
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2"
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2 && setsid gtk-launch $3"
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2 && setsid gtk-launch $3"
}
install_font() {
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
present_terminal "echo 'Installing $1...'; omarchy-pkg-add $2 && sleep 2 && omarchy-font-set '$3'"
}
install_terminal() {
@@ -66,11 +68,11 @@ install_terminal() {
}
aur_install() {
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
present_terminal "echo 'Installing $1 from AUR...'; omarchy-pkg-aur-add $2"
}
aur_install_and_launch() {
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2 && setsid gtk-launch $3"
present_terminal "echo 'Installing $1 from AUR...'; omarchy-pkg-aur-add $2 && setsid gtk-launch $3"
}
show_learn_menu() {
@@ -86,45 +88,72 @@ show_learn_menu() {
}
show_trigger_menu() {
case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle") in
case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle\n Hardware") in
*Capture*) show_capture_menu ;;
*Share*) show_share_menu ;;
*Toggle*) show_toggle_menu ;;
*Hardware*) show_hardware_menu ;;
*) show_main_menu ;;
esac
}
show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) show_screenshot_menu ;;
*Screenshot*) omarchy-cmd-screenshot ;;
*Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) show_trigger_menu ;;
esac
}
show_screenshot_menu() {
case $(menu "Screenshot" " Snap with Editing\n Straight to Clipboard") in
*Editing*) omarchy-cmd-screenshot smart ;;
*Clipboard*) omarchy-cmd-screenshot smart clipboard ;;
*) show_capture_menu ;;
esac
get_webcam_list() {
v4l2-ctl --list-devices 2>/dev/null | while IFS= read -r line; do
if [[ $line != $'\t'* && -n $line ]]; then
local name="$line"
IFS= read -r device || break
device=$(echo "$device" | tr -d '\t' | head -1)
[[ -n $device ]] && echo "$device $name"
fi
done
}
show_webcam_select_menu() {
local devices=$(get_webcam_list)
local count=$(echo "$devices" | grep -c . 2>/dev/null || echo 0)
if [[ -z $devices ]] || ((count == 0)); then
notify-send "No webcam devices found" -u critical -t 3000
return 1
fi
if ((count == 1)); then
echo "$devices" | awk '{print $1}'
else
menu "Select Webcam" "$devices" | awk '{print $1}'
fi
}
show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Region + Audio\n Display\n Display + Audio\n Display + Webcam") in
*"Region + Audio"*) omarchy-cmd-screenrecord region --with-audio ;;
*Region*) omarchy-cmd-screenrecord ;;
*"Display + Audio"*) omarchy-cmd-screenrecord output --with-audio ;;
*"Display + Webcam"*) omarchy-cmd-screenrecord output --with-audio --with-webcam ;;
*Display*) omarchy-cmd-screenrecord output ;;
omarchy-cmd-screenrecord --stop-recording && exit 0
case $(menu "Screenrecord" " With no audio\n With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
*"With no audio") omarchy-cmd-screenrecord ;;
*"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
*"With desktop + microphone audio + webcam")
local device=$(show_webcam_select_menu) || {
back_to show_capture_menu
return
}
omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device"
;;
*) back_to show_capture_menu ;;
esac
}
show_share_menu() {
case $(menu "Share" " Clipboard\n File \n Folder") in
*Clipboard*) terminal bash -c "omarchy-cmd-share clipboard" ;;
*Clipboard*) omarchy-cmd-share clipboard ;;
*File*) terminal bash -c "omarchy-cmd-share file" ;;
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
*) back_to show_trigger_menu ;;
@@ -141,11 +170,18 @@ show_toggle_menu() {
esac
}
show_hardware_menu() {
case $(menu "Toggle" " Hybrid GPU") in
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
*) show_trigger_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
*Font*) show_font_menu ;;
*Background*) omarchy-theme-bg-next ;;
*Background*) show_background_menu ;;
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
@@ -154,17 +190,16 @@ show_style_menu() {
}
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
back_to show_style_menu
else
omarchy-theme-set "$theme"
fi
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
}
show_background_menu() {
omarchy-launch-walker -m menus:omarchyBackgroundSelector --width 800 --minheight 400
}
show_font_menu() {
theme=$(menu "Font" "$(omarchy-font-list)" "--width 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
if [[ $theme == "CNCLD" || -z $theme ]]; then
back_to show_style_menu
else
omarchy-font-set "$theme"
@@ -172,26 +207,20 @@ show_font_menu() {
}
show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n Defaults\n󰱔 DNS\n Security\n Config"
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n System Sleep\n󰍹 Monitors"
[[ -f ~/.config/hypr/bindings.conf ]] && options="$options\n Keybindings"
[[ -f ~/.config/hypr/input.conf ]] && options="$options\n Input"
options="$options\n󰱔 DNS\n Security\n Config"
case $(menu "Setup" "$options") in
*Audio*) $TERMINAL --class=Wiremix -e wiremix ;;
*Wifi*)
rfkill unblock wifi
omarchy-launch-wifi
;;
*Bluetooth*)
rfkill unblock bluetooth
blueberry
;;
*Audio*) omarchy-launch-audio ;;
*Wifi*) omarchy-launch-wifi ;;
*Bluetooth*) omarchy-launch-bluetooth ;;
*Power*) show_setup_power_menu ;;
*System*) show_setup_system_menu ;;
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
*DNS*) present_terminal omarchy-setup-dns ;;
*Security*) show_setup_security_menu ;;
*Config*) show_setup_config_menu ;;
@@ -202,15 +231,24 @@ show_setup_menu() {
show_setup_power_menu() {
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
if [[ $profile == "CNCLD" || -z $profile ]]; then
back_to show_setup_menu
else
powerprofilesctl set "$profile"
fi
}
show_setup_security_menu() {
case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_setup_menu ;;
esac
}
show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
case $(menu "Setup" " Defaults\n Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
*Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
*Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
@@ -219,14 +257,29 @@ show_setup_config_menu() {
*Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
*Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
*) show_main_menu ;;
*) show_setup_menu ;;
esac
}
show_setup_security_menu() {
case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
show_setup_system_menu() {
local options=""
if [[ -f ~/.local/state/omarchy/toggles/suspend-off ]]; then
options="$options󰒲 Enable Suspend"
else
options="$options󰒲 Disable Suspend"
fi
if omarchy-hibernation-available; then
options="$options\n󰤁 Disable Hibernate"
else
options="$options\n󰤁 Enable Hibernate"
fi
case $(menu "System" "$options") in
*Suspend*) omarchy-toggle-suspend ;;
*"Enable Hibernate"*) present_terminal omarchy-hibernation-setup ;;
*"Disable Hibernate"*) present_terminal omarchy-hibernation-remove ;;
*) show_setup_menu ;;
esac
}
@@ -250,9 +303,10 @@ show_install_menu() {
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden\n Chromium Account") in
case $(menu "Install" " Dropbox\n Tailscale\n󱇱 NordVPN\n󰟵 Bitwarden\n Chromium Account") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*NordVPN*) present_terminal omarchy-install-nordvpn ;;
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
*) show_install_menu ;;
@@ -264,7 +318,7 @@ show_install_editor_menu() {
*VSCode*) present_terminal omarchy-install-vscode ;;
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
*Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Helix*) install "Helix" "helix" ;;
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
*) show_install_menu ;;
@@ -287,24 +341,27 @@ show_install_ai_menu() {
echo ollama
)
case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex [AUR]\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in
case $(menu "Install" " Dictation\n󱚤 Claude Code\n󱚤 Codex\n󱚤 Gemini CLI\n󱚤 Copilot CLI\n󱚤 Cursor CLI\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush") in
*Dictation*) present_terminal omarchy-voxtype-install ;;
*Claude*) install "Claude Code" "claude-code" ;;
*Cursor*) aur_install "Cursor CLI" "cursor-cli" ;;
*OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;;
*Gemini*) aur_install "Gemini" "gemini-cli" ;;
*Codex*) install "Codex" "openai-codex" ;;
*Gemini*) install "Gemini CLI" "gemini-cli" ;;
*Copilot*) install "Copilot CLI" "github-copilot-cli" ;;
*Cursor*) install "Cursor CLI" "cursor-cli" ;;
*Studio*) install "LM Studio" "lmstudio" ;;
*Ollama*) install "Ollama" $ollama_pkg ;;
*Crush*) install "Crush" "crush-bin" ;;
*opencode*) install "opencode" "opencode" ;;
*) show_install_menu ;;
esac
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in
case $(menu "Install" " Steam\n󰢹 NVIDIA GeForce NOW\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
*Steam*) present_terminal omarchy-install-steam ;;
*GeForce*) present_terminal omarchy-install-geforce-now ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) aur_install_and_launch "Minecraft [AUR]" "minecraft-launcher" "minecraft-launcher" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*Xbox*) present_terminal omarchy-install-xbox-controllers ;;
*) show_install_menu ;;
esac
}
@@ -312,24 +369,26 @@ show_install_gaming_menu() {
show_install_style_menu() {
case $(menu "Install" "󰸌 Theme\n Background\n Font") in
*Theme*) present_terminal omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Background*) omarchy-theme-bg-install ;;
*Font*) show_install_font_menu ;;
*) show_install_menu ;;
esac
}
show_install_font_menu() {
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "--width 350") in
case $(menu "Install" " Cascadia Mono\n Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono\n Iosevka" "--width 350") in
*Cascadia*) install_font "Cascadia Mono" "ttf-cascadia-mono-nerd" "CaskaydiaMono Nerd Font" ;;
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
*Iosevka*) install_font "Iosevka" "ttf-iosevka-nerd" "Iosevka Nerd Font Mono" ;;
*) show_install_menu ;;
esac
}
show_install_development_menu() {
case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
*Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
*Docker*) present_terminal omarchy-install-docker-dbs ;;
*JavaScript*) show_install_javascript_menu ;;
@@ -343,6 +402,7 @@ show_install_development_menu() {
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
*Clojure*) present_terminal "omarchy-install-dev-env clojure" ;;
*Scala*) present_terminal "omarchy-install-dev-env scala" ;;
*) show_install_menu ;;
esac
}
@@ -374,10 +434,13 @@ show_install_elixir_menu() {
}
show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰸌 Theme\n󰍲 Windows\n󰈷 Fingerprint\n Fido2") in
case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰵮 Development\n󰏓 Preinstalls\n Dictation\n󰸌 Theme\n󰍲 Windows\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal omarchy-pkg-remove ;;
*Web*) present_terminal omarchy-webapp-remove ;;
*TUI*) present_terminal omarchy-tui-remove ;;
*Development*) show_remove_development_menu ;;
*Preinstalls*) present_terminal omarchy-remove-preinstalls ;;
*Dictation*) present_terminal omarchy-voxtype-remove ;;
*Theme*) present_terminal omarchy-theme-remove ;;
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
@@ -386,21 +449,76 @@ show_remove_menu() {
esac
}
show_remove_development_menu() {
case $(menu "Remove" "󰫏 Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure\n Scala") in
*Rails*) present_terminal "omarchy-remove-dev-env ruby" ;;
*JavaScript*) show_remove_javascript_menu ;;
*Go*) present_terminal "omarchy-remove-dev-env go" ;;
*PHP*) show_remove_php_menu ;;
*Python*) present_terminal "omarchy-remove-dev-env python" ;;
*Elixir*) show_remove_elixir_menu ;;
*Zig*) present_terminal "omarchy-remove-dev-env zig" ;;
*Rust*) present_terminal "omarchy-remove-dev-env rust" ;;
*Java*) present_terminal "omarchy-remove-dev-env java" ;;
*NET*) present_terminal "omarchy-remove-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-remove-dev-env ocaml" ;;
*Clojure*) present_terminal "omarchy-remove-dev-env clojure" ;;
*Scala*) present_terminal "omarchy-remove-dev-env scala" ;;
*) show_remove_menu ;;
esac
}
show_remove_javascript_menu() {
case $(menu "Remove" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "omarchy-remove-dev-env node" ;;
*Bun*) present_terminal "omarchy-remove-dev-env bun" ;;
*Deno*) present_terminal "omarchy-remove-dev-env deno" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_php_menu() {
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "omarchy-remove-dev-env php" ;;
*Laravel*) present_terminal "omarchy-remove-dev-env laravel" ;;
*Symfony*) present_terminal "omarchy-remove-dev-env symfony" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_elixir_menu() {
case $(menu "Remove" " Elixir\n Phoenix") in
*Elixir*) present_terminal "omarchy-remove-dev-env elixir" ;;
*Phoenix*) present_terminal "omarchy-remove-dev-env phoenix" ;;
*) show_remove_development_menu ;;
esac
}
show_update_menu() {
case $(menu "Update" " Omarchy\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in
case $(menu "Update" " Omarchy\n󰔫 Channel\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in
*Omarchy*) present_terminal omarchy-update ;;
*Channel*) show_update_channel_menu ;;
*Config*) show_update_config_menu ;;
*Themes*) present_terminal omarchy-theme-update ;;
*Process*) show_update_process_menu ;;
*Hardware*) show_update_hardware_menu ;;
*Firmware*) present_terminal omarchy-update-firmware ;;
*Timezone*) present_terminal omarchy-tz-select ;;
*Time*) present_terminal omarchy-reset-time ;;
*Time*) present_terminal omarchy-update-time ;;
*Password*) show_update_password_menu ;;
*) show_main_menu ;;
esac
}
show_update_channel_menu() {
case $(menu "Update channel" "🟢 Stable\n🟡 RC\n🟠 Edge\n🔴 Dev") in
*Stable*) present_terminal "omarchy-channel-set stable" ;;
*RC*) present_terminal "omarchy-channel-set rc" ;;
*Edge*) present_terminal "omarchy-channel-set edge" ;;
*Dev*) present_terminal "omarchy-channel-set dev" ;;
*) show_update_menu ;;
esac
}
show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) omarchy-restart-hypridle ;;
@@ -413,13 +531,14 @@ show_update_process_menu() {
}
show_update_config_menu() {
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
case $(menu "Use default config" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n󱣴 Plymouth\n Swayosd\n Tmux\n󰌧 Walker\n󰍜 Waybar") in
*Hyprland*) present_terminal omarchy-refresh-hyprland ;;
*Hypridle*) present_terminal omarchy-refresh-hypridle ;;
*Hyprlock*) present_terminal omarchy-refresh-hyprlock ;;
*Hyprsunset*) present_terminal omarchy-refresh-hyprsunset ;;
*Plymouth*) present_terminal omarchy-refresh-plymouth ;;
*Swayosd*) present_terminal omarchy-refresh-swayosd ;;
*Tmux*) present_terminal omarchy-refresh-tmux ;;
*Walker*) present_terminal omarchy-refresh-walker ;;
*Waybar*) present_terminal omarchy-refresh-waybar ;;
*) show_update_menu ;;
@@ -443,13 +562,24 @@ show_update_password_menu() {
esac
}
show_about() {
omarchy-launch-about
}
show_system_menu() {
case $(menu "System" " Lock\n󱄄 Screensaver\n󰤄 Suspend\n󰜉 Restart\n󰐥 Shutdown") in
*Lock*) omarchy-lock-screen ;;
local options="󱄄 Screensaver\n Lock"
[[ ! -f ~/.local/state/omarchy/toggles/suspend-off ]] && options="$options\n󰒲 Suspend"
omarchy-hibernation-available && options="$options\n󰤁 Hibernate"
options="$options\n󰍃 Logout\n󰜉 Restart\n󰐥 Shutdown"
case $(menu "System" "$options") in
*Screensaver*) omarchy-launch-screensaver force ;;
*Lock*) omarchy-lock-screen ;;
*Suspend*) systemctl suspend ;;
*Restart*) omarchy-state clear re*-required && systemctl reboot --no-wall ;;
*Shutdown*) omarchy-state clear re*-required && systemctl poweroff --no-wall ;;
*Hibernate*) systemctl hibernate ;;
*Logout*) omarchy-system-logout ;;
*Restart*) omarchy-system-reboot ;;
*Shutdown*) omarchy-system-shutdown ;;
*) back_to show_main_menu ;;
esac
}
@@ -464,21 +594,26 @@ go_to_menu() {
*learn*) show_learn_menu ;;
*trigger*) show_trigger_menu ;;
*share*) show_share_menu ;;
*background*) show_background_menu ;;
*capture*) show_capture_menu ;;
*style*) show_style_menu ;;
*theme*) show_theme_menu ;;
*screenshot*) show_screenshot_menu ;;
*screenrecord*) show_screenrecord_menu ;;
*setup*) show_setup_menu ;;
*power*) show_setup_power_menu ;;
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;;
*about*) omarchy-launch-about ;;
*about*) show_about ;;
*system*) show_system_menu ;;
esac
}
if [[ -n "$1" ]]; then
# Allow user extensions and overrides
USER_EXTENSIONS="$HOME/.config/omarchy/extensions/menu.sh"
[[ -f $USER_EXTENSIONS ]] && source "$USER_EXTENSIONS"
if [[ -n $1 ]]; then
BACK_TO_EXIT=true
go_to_menu "$1"
else
+102 -14
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# A script to display Hyprland keybindings defined in your configuration
# using walker for an interactive search menu.
# Display Hyprland keybindings defined in your configuration using walker for an interactive search menu.
declare -A KEYCODE_SYM_MAP
@@ -13,7 +12,7 @@ build_keymap_cache() {
}
while IFS=, read -r code sym; do
[[ -z "$code" || -z "$sym" ]] && continue
[[ -z $code || -z $sym ]] && continue
KEYCODE_SYM_MAP["$code"]="$sym"
done < <(
awk '
@@ -43,18 +42,29 @@ lookup_keycode_cached() {
parse_keycodes() {
local start end elapsed
[[ "${DEBUG:-0}" == "1" ]] && start=$(date +%s.%N)
[[ ${DEBUG:-0} == "1" ]] && start=$(date +%s.%N)
while IFS= read -r line; do
if [[ "$line" =~ code:([0-9]+) ]]; then
if [[ $line =~ code:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
echo "${line/code:${code}/$symbol}"
elif [[ $line =~ mouse:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
case "$code" in
272) symbol="LEFT MOUSE BUTTON" ;;
273) symbol="RIGHT MOUSE BUTTON" ;;
274) symbol="MIDDLE MOUSE BUTTON" ;;
*) symbol="mouse:${code}" ;;
esac
echo "${line/mouse:${code}/$symbol}"
else
echo "$line"
fi
done
if [[ "$DEBUG" == "1" ]]; then
if [[ $DEBUG == "1" ]]; then
end=$(date +%s.%N)
# fall back to awk if bc is missing
if command -v bc >/dev/null 2>&1; then
@@ -101,6 +111,11 @@ dynamic_bindings() {
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
}
# Hardcoded bindings, like the copy-url extension and such
static_bindings() {
echo "SHIFT ALT,L,Copy URL from Web App,extension,copy-url"
}
# Parse and format keybindings
#
# `awk` does the heavy lifting:
@@ -147,13 +162,86 @@ parse_bindings() {
}'
}
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
prioritize_entries() {
awk '
{
line = $0
prio = 50
if (match(line, /Terminal/)) prio = 0
if (match(line, /Tmux/)) prio = 1
if (match(line, /Browser/) && !match(line, /Browser[[:space:]]*\(/) && !match(line, /SUPER SHIFT.*\+.*B.*→.*Browser/)) prio = 2
if (match(line, /File manager/) && !match(line, /File manager \(cwd\)/)) prio = 3
if (match(line, /Launch apps/)) prio = 4
if (match(line, /Omarchy menu/)) prio = 5
if (match(line, /System menu/)) prio = 6
if (match(line, /Theme menu/)) prio = 7
if (match(line, /Full screen/)) prio = 8
if (match(line, /Full width/)) prio = 9
if (match(line, /Close window/)) prio = 10
if (match(line, /Close all windows/)) prio = 11
if (match(line, /Lock system/)) prio = 12
if (match(line, /Toggle window floating/)) prio = 13
if (match(line, /Toggle window split/)) prio = 14
if (match(line, /Pop window/)) prio = 15
if (match(line, /Universal/)) prio = 16
if (match(line, /Clipboard/)) prio = 17
if (match(line, /Audio controls/)) prio = 18
if (match(line, /Bluetooth controls/)) prio = 19
if (match(line, /Wifi controls/)) prio = 20
if (match(line, /Emoji picker/)) prio = 21
if (match(line, /Color picker/)) prio = 22
if (match(line, /Screenshot/)) prio = 23
if (match(line, /Screenrecording/)) prio = 24
if (match(line, /SUPER SHIFT.*\+.*B.*→.*Browser/)) prio = 25
if (match(line, /File manager \(cwd\)/)) prio = 26
if (match(line, /(Switch|Next|Former|Previous).*workspace/)) prio = 27
if (match(line, /Move window to workspace/)) prio = 28
if (match(line, /Move window silently to workspace/)) prio = 29
if (match(line, /Swap window/)) prio = 30
if (match(line, /Move window focus/)) prio = 31
if (match(line, /Move window$/)) prio = 32
if (match(line, /Resize window/)) prio = 33
if (match(line, /Expand window/)) prio = 34
if (match(line, /Shrink window/)) prio = 35
if (match(line, /scratchpad/)) prio = 36
if (match(line, /notification/)) prio = 37
if (match(line, /Toggle window transparency/)) prio = 38
if (match(line, /Toggle workspace gaps/)) prio = 39
if (match(line, /Toggle nightlight/)) prio = 40
if (match(line, /Toggle locking/)) prio = 41
if (match(line, /group/)) prio = 94
if (match(line, /Scroll active workspace/)) prio = 95
if (match(line, /Cycle to/)) prio = 96
if (match(line, /Reveal active/)) prio = 97
if (match(line, /Apple Display/)) prio = 98
if (match(line, /XF86/)) prio = 99
build_keymap_cache
# print "priority<TAB>line"
printf "%d\t%s\n", prio, line
}' |
sort -k1,1n -k2,2 |
cut -f2-
}
dynamic_bindings |
sort -u |
parse_keycodes |
parse_bindings |
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"
output_keybindings() {
build_keymap_cache
{
dynamic_bindings
static_bindings
} |
sort -u |
parse_keycodes |
parse_bindings |
prioritize_entries
}
if [[ $1 == "--print" || $1 == "-p" ]]; then
output_keybindings
else
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
output_keybindings |
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"
fi
+3 -1
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Run all pending migrations to bring the system in line with the installed version.
# Where we store an empty file for each migration that has already been performed.
STATE_DIR="$HOME/.local/state/omarchy/migrations"
mkdir -p "$STATE_DIR"
@@ -11,7 +13,7 @@ mkdir -p "$STATE_DIR/skipped"
for file in ~/.local/share/omarchy/migrations/*.sh; do
filename=$(basename "$file")
if [[ ! -f "$STATE_DIR/$filename" && ! -f "$STATE_DIR/skipped/$filename" ]]; then
if [[ ! -f $STATE_DIR/$filename && ! -f $STATE_DIR/skipped/$filename ]]; then
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
if bash $file; then
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Dismiss a mako notification on the basis of its summary. Used by the first-run notifications to dismiss them after clicking for action.
if (($# == 0)); then
echo "Usage: omarchy-notification-dismiss <summary>"
exit 1
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Add the named packages to the system if they're missing. Returns false if it couldn't be done.
if omarchy-pkg-missing "$@"; then
sudo pacman -S --noconfirm --needed "$@" || exit 1
fi
+3
View File
@@ -1,4 +1,7 @@
#!/bin/bash
# Returns true if the AUR is up and available.
# Used by omarchy-update-system-pkgs to ensure the AUR is available before updating packages from it.
curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "omarchy-update" \
"https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Add the named packages to the system from the AUR if they're missing. Returns false if it couldn't be done.
if omarchy-pkg-missing "$@"; then
yay -S --noconfirm --needed "$@" || exit 1
fi
for pkg in "$@"; do
# Secondary check to handle states where pacman doesn't actually register an error
if ! pacman -Q "$pkg" &>/dev/null; then
echo -e "\033[31mError: Package '$pkg' did not install\033[0m" >&2
exit 1
fi
done
exit 0
+6 -3
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Show a fuzzy-finder TUI for picking new AUR packages to install.
fzf_args=(
--multi
--preview 'yay -Siia {1}'
@@ -16,9 +18,10 @@ fzf_args=(
pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs yay -S --noconfirm
if [[ -n $pkg_names ]]; then
# Add aur/ prefix to each package name and convert to space-separated for yay
sudo -v
echo "$pkg_names" | sed 's/^/aur\//' | tr '\n' ' ' | xargs yay -S --noconfirm
sudo updatedb
omarchy-show-done
fi
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Remove all the named packages from the system if they're installed (otherwise ignore).
for pkg in "$@"; do
if pacman -Q "$pkg" &>/dev/null; then
sudo pacman -Rns --noconfirm "$pkg"
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
IGNORED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.ignored"
if [[ -f $IGNORED_PACKAGES_FILE ]]; then
tr '\r\n' ',' <"$IGNORED_PACKAGES_FILE" | sed 's/,$//'
fi
+3 -1
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Show a fuzzy-finder TUI for picking new Arch and OPR packages to install.
fzf_args=(
--multi
--preview 'pacman -Sii {1}'
@@ -14,7 +16,7 @@ fzf_args=(
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
if [[ -n $pkg_names ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
omarchy-show-done
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Returns true if any of the named packages are missing from the system (or false if they're all there).
for pkg in "$@"; do
if ! pacman -Q "$pkg" &>/dev/null; then
exit 0
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
PINNED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.pinned"
if [[ -f $PINNED_PACKAGES_FILE ]]; then
tr '\r\n' ',' <"$PINNED_PACKAGES_FILE" | sed 's/,$//'
fi
+2
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Returns true if all of the named packages are installed on the system (or false if any of them are missing).
for pkg in "$@"; do
pacman -Q "$pkg" &>/dev/null || exit 1
done
+3 -1
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Show a fuzzy-finder TUI for picking packages installed on the system to be removed.
fzf_args=(
--multi
--preview 'yay -Qi {1}'
@@ -14,7 +16,7 @@ fzf_args=(
pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
if [[ -n $pkg_names ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Rns --noconfirm
omarchy-show-done
+3
View File
@@ -1,5 +1,8 @@
#!/bin/bash
# Returns a list of all the available power profiles on the system.
# Used by the Omarchy Menu under Setup > Power Profile.
powerprofilesctl list |
awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }' |
tac
+7
View File
@@ -1,5 +1,7 @@
#!/bin/bash
# Ensure all default .desktop, web apps, and TUIs are installed.
# Copy and sync icon files
mkdir -p ~/.local/share/icons/hicolor/48x48/apps/
cp ~/.local/share/omarchy/applications/icons/*.png ~/.local/share/icons/hicolor/48x48/apps/
@@ -10,4 +12,9 @@ mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
# Refresh the webapps and TUIs
bash $OMARCHY_PATH/install/packaging/icons.sh
bash $OMARCHY_PATH/install/packaging/webapps.sh
bash $OMARCHY_PATH/install/packaging/tuis.sh
update-desktop-database ~/.local/share/applications
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# Refresh the ~/.config/chromium-flags.conf file from the Omarchy defaults.
CONFIG_FILE="$HOME/.config/chromium-flags.conf"
INSTALL_GOOGLE_ACCOUNTS=false
# Check if google accounts were installed
if [[ -f $CONFIG_FILE ]] && \
grep -q -- "--oauth2-client-id" "$CONFIG_FILE" && \
grep -q -- "--oauth2-client-secret" "$CONFIG_FILE"; then
INSTALL_GOOGLE_ACCOUNTS=true
fi
# Refresh the Chromium configuration
omarchy-refresh-config chromium-flags.conf
# Re-install Google accounts if previously configured
if [[ $INSTALL_GOOGLE_ACCOUNTS == "true" ]]; then
omarchy-install-chromium-google-account
fi
+7 -5
View File
@@ -1,16 +1,18 @@
#!/bin/bash
# This script deploys ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z
# Copies the named config from ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z.
# If the config already exists, a backup of the existing will be taken as .bak.TIMESTAMP.
config_file=$1
if [[ -z "$config_file" ]]; then
if [[ -z $config_file ]]; then
cat <<USAGE
Usage: $0 [config_file]
Must provide a file path from the .config directory to be refreshed.
To copy ~/.local/share/omarchy/config/hypr/hyprlock.conf to ~/.config/hypr/hyprlock.conf
$0 hypr/hyprlock.conf
$0 hypr/hyprlock.conf
USAGE
exit 1
fi
@@ -20,7 +22,7 @@ user_config_file="${HOME}/.config/$config_file"
default_config_file="${HOME}/.local/share/omarchy/config/$config_file"
backup_config_file="$user_config_file.bak.$(date +%s)"
if [[ -f "$user_config_file" ]]; then
if [[ -f $user_config_file ]]; then
# Create preliminary backup
cp -f "$user_config_file" "$backup_config_file" 2>/dev/null
+2
View File
@@ -1,3 +1,5 @@
#!/bin/bash
# Overwrite the user config for fastfetch with the Omarchy default.
omarchy-refresh-config fastfetch/config.jsonc
+2
View File
@@ -1,4 +1,6 @@
#!/bin/bash
# Overwrite the user config for hypridle with the Omarchy default and restart the service.
omarchy-refresh-config hypr/hypridle.conf
omarchy-restart-hypridle
+3 -1
View File
@@ -1,7 +1,9 @@
#!/bin/bash
# Overwrite all the user configs in ~/.config/hypr with the Omarchy defaults.
omarchy-refresh-config hypr/autostart.conf
omarchy-refresh-config hypr/bindings.conf
omarchy-refresh-config hypr/envs.conf
omarchy-refresh-config hypr/input.conf
omarchy-refresh-config hypr/looknfeel.conf
omarchy-refresh-config hypr/hyprland.conf
+2
View File
@@ -1,3 +1,5 @@
#!/bin/bash
# Overwrite the user config for hyprlock with the Omarchy default.
omarchy-refresh-config hypr/hyprlock.conf
+2
View File
@@ -1,4 +1,6 @@
#!/bin/bash
# Overwrite the user config for hyprsunset with the Omarchy default and restart the service.
#
omarchy-refresh-config hypr/hyprsunset.conf
omarchy-restart-hyprsunset

Some files were not shown because too many files have changed in this diff Show More