Compare commits

..

746 Commits

Author SHA1 Message Date
d826cb0439 chore: remove unused log function 2025-08-28 20:31:47 +02:00
44abd5c932 chore: remove comments 2025-08-28 20:30:21 +02:00
25026672b7 roleback: open webapps with chromium instead with default browser 2025-08-28 20:25:53 +02:00
583d3f15e4 feat: improve lockscreen 2025-08-27 09:38:06 +02:00
1d1bdddb85 feat: make boot logo smaller 2025-08-27 08:36:08 +02:00
d7d82ae30c feat: add gimp and inkscape 2025-08-27 08:35:50 +02:00
97a72e9dc8 feat: improve monitor toggle 2025-08-27 07:57:57 +02:00
a64a298181 feat: update boot logo 2025-08-26 21:25:22 +02:00
19cc257a21 feat: add git cred helper 2025-08-26 21:09:58 +02:00
6fc1fb122d feat: monitors n stuff 2025-08-26 20:55:40 +02:00
3d30f7a4ca feat: add jj 2025-08-26 15:18:08 +02:00
6f7becc90a fix: autostart commands 2025-08-26 14:25:00 +02:00
4c8abc7aba feat: add autostart 2025-08-26 14:04:20 +02:00
ae97d900ac feat: add zen-browser support and netflix webapp 2025-08-26 13:51:04 +02:00
adaaf14bce feat: switch to dark 2025-08-26 13:17:09 +02:00
411ca42d29 add npm and zen 2025-08-26 12:49:27 +02:00
b27d1fa5fa feat: improve keybindings and hardcode repo url 2025-08-26 12:21:03 +02:00
b7e56a0d57 feat: add keepass and rustup 2025-08-26 11:18:57 +02:00
cca3c51031 feat: make all plugged in monitors left appended 2025-08-26 11:17:15 +02:00
105164c1e4 feat: set theme and wallpaper 2025-08-26 11:13:21 +02:00
965ceba9d2 feat: some adjustments 2025-08-26 10:54:02 +02:00
David Heinemeier Hansson
d5a340f6b7
Merge pull request #1103 from meerzulee/master
fix: typo at waybar/config.jsonc
2025-08-26 09:14:42 +02:00
Meerzulee
f0a12463a6
fixing typo at config.jsonc
Fixing `nospacing` to `spacing`. 

There is no such a config as `nospacing` in Waybar source code.
2025-08-26 10:01:24 +06:00
David Heinemeier Hansson
acc1e2f757
Merge pull request #1064 from basecamp/dev
Omarchy 2.0
2025-08-25 16:10:15 +02:00
David Heinemeier Hansson
51f877ca1f Left over styles from status indicators 2025-08-25 15:26:35 +02:00
David Heinemeier Hansson
8167633824 Left-over from the status indicators removal 2025-08-25 15:25:29 +02:00
David Heinemeier Hansson
922acfd706 Claude is only on AUR 2025-08-25 14:11:43 +02:00
David Heinemeier Hansson
b136cc5653 Remember remember 2025-08-25 14:04:49 +02:00
David Heinemeier Hansson
52d1ac215d No sudo with yay 2025-08-25 14:03:31 +02:00
David Heinemeier Hansson
838d0ca27b Dropbox elements are on AUR
Let's fix that
2025-08-25 14:02:53 +02:00
David Heinemeier Hansson
f4ea58bdd0 Doesn't work with yay 2025-08-25 13:55:01 +02:00
David Heinemeier Hansson
6c656766f8 Fix migration too 2025-08-25 13:53:33 +02:00
David Heinemeier Hansson
06e3cb4e71 Also allow yay updates without sudo 2025-08-25 13:52:53 +02:00
David Heinemeier Hansson
1506b98fe1 Fix path 2025-08-25 13:51:24 +02:00
David Heinemeier Hansson
2a8155cc68 Revert "Tweak colors"
This reverts commit 0eda27a3bc38fc50b8f710fa57824aac521a1d9c.
2025-08-25 13:49:33 +02:00
David Heinemeier Hansson
35b7f44c7e Revert "Another color tweak"
This reverts commit 4b707052526c91e2785a918de55ca5ae1c580bcd.
2025-08-25 13:49:07 +02:00
David Heinemeier Hansson
4b70705252 Another color tweak 2025-08-25 13:46:41 +02:00
David Heinemeier Hansson
0eda27a3bc Tweak colors 2025-08-25 13:44:27 +02:00
David Heinemeier Hansson
c48f370924 Allow multi select to remove webapps
Closes #1052
2025-08-25 13:33:39 +02:00
David Heinemeier Hansson
dcfbd7a2e5
Suddenly the status indicators were busted on new installations (#1061)
Don't have time to debug this now, so will have to wait until next
release
2025-08-25 13:28:54 +02:00
Luca Pattocchio
dde702a4c3
Use Omarchy as head of new block in FastFetch (#1056) 2025-08-25 13:02:23 +02:00
David Heinemeier Hansson
9e0c638b84 Flipped abort message
Co-authored-by: @nbw
Closes #1058
2025-08-25 13:00:50 +02:00
David Heinemeier Hansson
4e389007f1 Ensure time is updated before we sync this for the first time 2025-08-25 12:37:58 +02:00
David Heinemeier Hansson
258b151935 Refresh them here 2025-08-25 12:31:15 +02:00
David Heinemeier Hansson
b80e4ce908 Combine these 2025-08-25 12:26:28 +02:00
David Heinemeier Hansson
31dbf49a1f Didn't need that here 2025-08-25 12:24:51 +02:00
David Heinemeier Hansson
185807b771 Just the flakiness part now 2025-08-25 12:18:33 +02:00
David Heinemeier Hansson
d8ddc5046f Not using the service for now 2025-08-25 12:17:37 +02:00
David Heinemeier Hansson
5c6c880b0b Fix path here too 2025-08-25 12:17:03 +02:00
David Heinemeier Hansson
122bdd7837 Fix path (again!) 2025-08-25 12:16:21 +02:00
David Heinemeier Hansson
59088800ad Fix path and dependencies 2025-08-25 12:15:37 +02:00
David Heinemeier Hansson
561ffcfb56 Fix path 2025-08-25 12:13:46 +02:00
David Heinemeier Hansson
b44661a0ad Wording 2025-08-25 12:10:41 +02:00
David Heinemeier Hansson
a50041721c Just sync time together with timezone 2025-08-25 12:09:49 +02:00
David Heinemeier Hansson
88303d81fd New kernel detection is flaky, yank 2025-08-25 12:07:08 +02:00
David Heinemeier Hansson
e99bab272f Manually remove yay-bin-debug too 2025-08-25 12:05:37 +02:00
David Heinemeier Hansson
b5ced14972 In case one package doesn't want to go, do it yourself 2025-08-25 12:02:38 +02:00
David Heinemeier Hansson
e3bda8a970 Ensure time has been synced before updating so we don't get SSL errors 2025-08-25 11:58:19 +02:00
David Heinemeier Hansson
d031237b42 Sync clock before doing an update 2025-08-25 11:57:01 +02:00
David Heinemeier Hansson
0b48f08674 Replace AUR yay with OPR yay 2025-08-25 11:54:58 +02:00
David Heinemeier Hansson
63081e141a Replace buggy Zoom native app with webapp 2025-08-25 11:54:10 +02:00
David Heinemeier Hansson
249612bf67 Take it down to add the rule 2025-08-25 11:49:24 +02:00
David Heinemeier Hansson
468a84b5cc Ensure directory is there 2025-08-25 11:45:30 +02:00
David Heinemeier Hansson
42ee87ad65 Correct path 2025-08-25 11:44:41 +02:00
David Heinemeier Hansson
f2844964c4 Sync the db too 2025-08-25 11:42:14 +02:00
David Heinemeier Hansson
b38e864f08 Fix path 2025-08-25 11:41:36 +02:00
David Heinemeier Hansson
b4f6bbda4d No longer used 2025-08-25 11:40:25 +02:00
David Heinemeier Hansson
e806080c4d Start in dark mode 2025-08-25 11:28:12 +02:00
David Heinemeier Hansson
fe2dd66f91 Separate packages that need AUR and call those out 2025-08-25 11:22:27 +02:00
David Heinemeier Hansson
062c6b3dce Tweaks 2025-08-25 11:11:08 +02:00
David Heinemeier Hansson
68a51c18a8 Start splitting up the big config folder 2025-08-25 11:09:15 +02:00
David Heinemeier Hansson
5a98771e5b Will switch to Walker 1.0 before this is back 2025-08-25 11:06:02 +02:00
David Heinemeier Hansson
77863a4c12 Try again 2025-08-25 11:05:35 +02:00
David Heinemeier Hansson
5b59aee51e Reduce number of concepts 2025-08-25 11:04:28 +02:00
David Heinemeier Hansson
fdaa126aee Fix sudo access permission 2025-08-25 10:57:29 +02:00
David Heinemeier Hansson
4f0dfcc865 Fix hanging 2025-08-25 10:52:42 +02:00
David Heinemeier Hansson
2635534778 Correct autostart command 2025-08-25 10:24:42 +02:00
David Heinemeier Hansson
5bb7b66dee Bring back tte celebration at the end 2025-08-25 09:49:45 +02:00
David Heinemeier Hansson
b8f4a10056 Time of install critical here 2025-08-25 09:45:05 +02:00
David Heinemeier Hansson
86b03357d0 yay is no longer special 2025-08-25 09:43:16 +02:00
David Heinemeier Hansson
186912ca1d Last yays 2025-08-25 09:39:24 +02:00
David Heinemeier Hansson
c7d9581d7b Correct setting of server 2025-08-25 09:39:20 +02:00
David Heinemeier Hansson
03503364cc Doesn't belong here 2025-08-25 09:33:09 +02:00
David Heinemeier Hansson
44529a7a25 No yay 2025-08-25 09:33:05 +02:00
David Heinemeier Hansson
705b6858dc Order 2025-08-25 09:31:07 +02:00
David Heinemeier Hansson
b9758a9c8c Part of repository setup 2025-08-25 09:30:36 +02:00
David Heinemeier Hansson
0a0843c7ec Follow convention 2025-08-25 09:30:28 +02:00
David Heinemeier Hansson
ec0af90c98 Not needed for build 2025-08-25 09:24:56 +02:00
David Heinemeier Hansson
37f0c18b78 All packages in one place 2025-08-25 09:22:55 +02:00
David Heinemeier Hansson
1ec6ba61dc Fix paths for first-run permissions removal 2025-08-25 09:20:04 +02:00
David Heinemeier Hansson
066ec7ffff Fix file path 2025-08-25 09:11:32 +02:00
David Heinemeier Hansson
c73c1c90bf Extra all packages into a single master manifest 2025-08-25 09:04:13 +02:00
David Heinemeier Hansson
256a49ee53 Fix conditional 2025-08-25 08:47:27 +02:00
David Heinemeier Hansson
39e0cf3a37 Fix path 2025-08-25 08:38:07 +02:00
David Heinemeier Hansson
e8f932b0f6 Make sure we don't get stuck in a loop 2025-08-25 08:36:37 +02:00
David Heinemeier Hansson
55daa135a7 Allow pacman -Sy without sudo to easier installs 2025-08-25 08:34:41 +02:00
David Heinemeier Hansson
a428208077 Wrong exit code 2025-08-25 08:26:08 +02:00
David Heinemeier Hansson
2d848338e6 More restrictive sudoless setup for first-run 2025-08-25 07:49:16 +02:00
David Heinemeier Hansson
925a2906e5 Explain purposes 2025-08-25 07:43:07 +02:00
David Heinemeier Hansson
f98899e4e2 Setup real first-run install 2025-08-25 07:37:46 +02:00
David Heinemeier Hansson
e565768bed Make all the install files executable 2025-08-25 07:37:34 +02:00
David Heinemeier Hansson
661eed2640 Prepare for firewall to be setup on first run 2025-08-25 07:28:59 +02:00
David Heinemeier Hansson
28ba0bff7a Prepare for battery monitor to be installed on first run 2025-08-25 07:26:25 +02:00
David Heinemeier Hansson
bdfc0fad5d Explain purpose 2025-08-25 07:26:12 +02:00
David Heinemeier Hansson
ec17b3f012 We should always have the firewall commands available 2025-08-25 07:20:07 +02:00
David Heinemeier Hansson
9cd70e9aff No need to maintain this separately 2025-08-25 07:17:12 +02:00
David Heinemeier Hansson
51f5bed286 Tighten up 2025-08-25 07:15:49 +02:00
David Heinemeier Hansson
9a98782342 Run first so app directory is there 2025-08-25 07:15:45 +02:00
David Heinemeier Hansson
c0a091e293 Move over to where it belongs 2025-08-25 07:14:20 +02:00
David Heinemeier Hansson
d7fa8181fa Reinstall all the old AUR packages from OPR 2025-08-25 07:09:51 +02:00
David Heinemeier Hansson
dfda4f895a Rip out the last remnants of AUR 2025-08-25 07:04:43 +02:00
David Heinemeier Hansson
a67fc717c1 One fewer package we don't need to get from AUR 2025-08-24 22:36:43 +02:00
David Heinemeier Hansson
599b58f9a1 Prepare for tte's imminent return! 2025-08-24 22:24:42 +02:00
David Heinemeier Hansson
f14810e80d We will have tte back in a iffy so let's not bother with this 2025-08-24 22:23:12 +02:00
David Heinemeier Hansson
3bf51d30ff 1password has moved to the OPR 2025-08-24 22:22:11 +02:00
David Heinemeier Hansson
39dccccb1a Bare mode is dead in 2.0
Uninstall whatever you want yourself now that we have multi-tab
uninstalls
2025-08-24 22:21:25 +02:00
David Heinemeier Hansson
46f8b522f1 Can't set that this early 2025-08-24 21:53:25 +02:00
David Heinemeier Hansson
1576c4e5c6 Update Hypridle to prevent flash of unlocked screen after sleep 2025-08-24 21:14:29 +02:00
Mathias Remshardt
f39dc9a269
fix: delay supsend until screen is locked (#1041) 2025-08-24 21:13:28 +02:00
David Heinemeier Hansson
ff6802830c Correct the path 2025-08-24 21:04:52 +02:00
David Heinemeier Hansson
af9ab9069f Only remove orphans if there are any 2025-08-24 20:53:24 +02:00
David Heinemeier Hansson
3363fe0544 Just remove orphans 2025-08-24 20:50:53 +02:00
David Heinemeier Hansson
1577620344 Migrate AUR packages to new OPR or Arch official repos 2025-08-24 20:50:30 +02:00
David Heinemeier Hansson
d183daff1a Wrong flip! 2025-08-24 20:36:51 +02:00
David Heinemeier Hansson
5ed08ef5b9 Attempt to set chromium theme before first launch 2025-08-24 20:34:53 +02:00
David Heinemeier Hansson
ae8c76f582 Refresh chaotic-AUR 2025-08-24 20:24:52 +02:00
Jarek
93ef034a5c
Use Quad9 as fallback DNS for better privacy (#1046)
Replace Google DNS fallback with Quad9 (9.9.9.9, 149.112.112.112)
for better privacy consistency. Users choosing Cloudflare likely
value privacy, so Quad9 is a more appropriate fallback than Google.

As discussed in #752 and approved by @dhh in #1043.
2025-08-24 20:22:54 +02:00
David Heinemeier Hansson
fc43706190 Add chaotic aur despite getting yay from OPR 2025-08-24 20:19:26 +02:00
David Heinemeier Hansson
fc853ffe96 Combine repository setups 2025-08-24 20:10:43 +02:00
David Heinemeier Hansson
a8c3d1a2bd Right now we are just built for online installer 2025-08-24 20:10:03 +02:00
David Heinemeier Hansson
b09c625ac0 Make it green! 2025-08-24 20:09:18 +02:00
David Heinemeier Hansson
4d28721682 omarchy-chromium is now on the OPR 2025-08-24 20:05:13 +02:00
David Heinemeier Hansson
5ad441e539 Refresh indexes before taking a look at what's there 2025-08-24 20:03:37 +02:00
David Heinemeier Hansson
78e81d7534 Don't need to show anything 2025-08-24 19:39:53 +02:00
David Heinemeier Hansson
00ce49a4ac Don't use yay here 2025-08-24 19:35:36 +02:00
David Heinemeier Hansson
78719b0552 Now coming from OPR 2025-08-24 19:34:57 +02:00
David Heinemeier Hansson
8a5bca3807 No longer needed from AUR 2025-08-24 19:33:52 +02:00
David Heinemeier Hansson
78aeb91e5f Use OPR walker 2025-08-24 19:32:31 +02:00
David Heinemeier Hansson
83b67d0d6b Now we have walker-bin in OPR 2025-08-24 19:32:26 +02:00
David Heinemeier Hansson
ed9edab8ed Add OPR as early as possible 2025-08-24 19:32:19 +02:00
David Heinemeier Hansson
115e9c5af8 Add Omarchy repository first 2025-08-24 19:28:02 +02:00
David Heinemeier Hansson
00cc8315a6 Separate installing packages from AUR 2025-08-24 19:15:12 +02:00
David Heinemeier Hansson
1d915c6583 Use consistent naming scheme for backgrounds 2025-08-24 19:05:29 +02:00
David Heinemeier Hansson
dd493b0cdf Also apply light/dark via new chromium flags 2025-08-24 19:03:07 +02:00
Guilherme Nandi Tiscoski
1f4723ae33
Add more backgrounds to rose-pine (#1023)
* Add more backgrounds to rose-pine

* Reduce sizes

* Reduce sizes to be < 2mb
2025-08-24 18:58:01 +02:00
David Heinemeier Hansson
478b166ae7 Can't use tte at the moment here 2025-08-24 18:37:54 +02:00
Jarek
c0770fc7a3
Ensure network interfaces respect DNS configuration (#1043)
Implements DHH's requirement to ensure wlan0 and ethernet interfaces
respect the DNS configuration while excluding docker/loop interfaces.

When using Cloudflare or Custom DNS:
- Sets UseDNS=no in DHCPv4 sections
- Sets UseDNS=no in IPv6AcceptRA sections
- Only configures primary interfaces (en*, eth*, wl*)
- Restarts both systemd-networkd and systemd-resolved

When using DHCP:
- Removes UseDNS=no to allow DHCP provided DNS
- Restores default behavior for all interfaces

Script size increased from 58 to 89 lines to properly handle all
network interfaces as requested.
2025-08-24 18:33:32 +02:00
David Heinemeier Hansson
846b2e2595 Need walker-bin here for a moment until we self-host 2025-08-24 18:30:50 +02:00
David Heinemeier Hansson
d8a4640010 jq test failing 2025-08-24 18:11:59 +02:00
David Heinemeier Hansson
ee5f4eb925 I think these are the last spots 2025-08-24 18:08:17 +02:00
David Heinemeier Hansson
cb22afdb93 Another quarantine 2025-08-24 18:03:18 +02:00
David Heinemeier Hansson
d2bd1b47b6 This doesn't need yay 2025-08-24 18:02:09 +02:00
David Heinemeier Hansson
02134df8ee Quarantine AUR installs 2025-08-24 18:01:39 +02:00
David Heinemeier Hansson
cd39a145e8 More pacman 2025-08-24 18:00:28 +02:00
David Heinemeier Hansson
a0c3a435fc Protect from AUR outage 2025-08-24 18:00:23 +02:00
David Heinemeier Hansson
f0a77e65cd More pacman swaps 2025-08-24 17:53:42 +02:00
David Heinemeier Hansson
4de9f5fda3 Extra resilience for on-demand installation 2025-08-24 17:53:33 +02:00
David Heinemeier Hansson
1efe4a819f More pacman 2025-08-24 17:49:31 +02:00
David Heinemeier Hansson
a29237e070 More resilience here too 2025-08-24 17:49:26 +02:00
David Heinemeier Hansson
9834a40796 Fix bad replace 2025-08-24 17:46:48 +02:00
David Heinemeier Hansson
edf0bb3128 Give it a few tries 2025-08-24 17:46:01 +02:00
David Heinemeier Hansson
960cbbd591 We have those from the pacman runner 2025-08-24 17:44:01 +02:00
David Heinemeier Hansson
c974c3dbc4 Language 2025-08-24 17:42:41 +02:00
David Heinemeier Hansson
f1af28f10d Simplify guard against an unavailable AUR 2025-08-24 17:41:41 +02:00
David Heinemeier Hansson
673cea1644 Also on removes 2025-08-24 17:36:02 +02:00
David Heinemeier Hansson
9d739faf2b Switch to pacman to make it clear when we are not depending on AUR 2025-08-24 17:35:24 +02:00
David Heinemeier Hansson
69afedf380 Separate out AUR installs with yay 2025-08-24 17:28:22 +02:00
David Heinemeier Hansson
57e14afca3 No yay 2025-08-24 17:28:12 +02:00
David Heinemeier Hansson
38d9961622 Install AUR packages if its available 2025-08-24 17:25:45 +02:00
David Heinemeier Hansson
57b1180c67 Remove orphan system packages after omarchy-update
Co-authored-by: @abenz1267
2025-08-24 17:22:45 +02:00
David Heinemeier Hansson
664fb7c51a Separate pacman setup from aur and make aur optional 2025-08-24 17:20:13 +02:00
David Heinemeier Hansson
09a90e3cf2 Keep AUR separate 2025-08-24 17:15:37 +02:00
David Heinemeier Hansson
6dd95e71bf No AUR stuff allowed in xtras 2025-08-24 17:15:29 +02:00
David Heinemeier Hansson
22769caa8c Will install chromium by default and then bring our fork in through other means 2025-08-24 17:15:14 +02:00
David Heinemeier Hansson
448be1317f Move tte to AUR quarantine install 2025-08-24 17:15:00 +02:00
David Heinemeier Hansson
7bd1d56399 Remove AUR font 2025-08-24 17:14:13 +02:00
David Heinemeier Hansson
b094557a97 Poor man's screensaver without tte 2025-08-24 17:13:55 +02:00
David Heinemeier Hansson
3f895969c7 Allow screensaver to display logo if tte is not there 2025-08-24 17:07:28 +02:00
David Heinemeier Hansson
da7222f510 Move it inside where it is used 2025-08-24 16:57:41 +02:00
David Heinemeier Hansson
9d355091b5 No AUR dependency for wl-screenrec 2025-08-24 16:52:21 +02:00
David Heinemeier Hansson
a391b64e61 Install wl-screenrec as a just-in-time dependence 2025-08-24 16:51:20 +02:00
David Heinemeier Hansson
028c07d016 Install tzupdate on demand 2025-08-24 16:36:10 +02:00
David Heinemeier Hansson
4fd6a110ea Use non-AUR versions 2025-08-24 16:35:59 +02:00
David Heinemeier Hansson
92a491fd47 Need to install jq for the pkg-repos-accessible to work 2025-08-24 16:00:22 +02:00
Andreas Nigg
8b192c30e1
Fix installation command for ufw-docker (#1035) 2025-08-24 15:58:02 +02:00
David Heinemeier Hansson
6826cad95b Simplify it 2025-08-24 15:55:18 +02:00
David Heinemeier Hansson
1e46882fd8 Fix repo accessible check 2025-08-24 15:53:54 +02:00
Ryan Hughes
b0acd0b5e8 Update efibootmgr regex to match nvme + sata + vdisk 2025-08-24 15:50:50 +02:00
David Heinemeier Hansson
24682aea8c Add progressive backoffs to the repo retrying 2025-08-24 14:02:43 +02:00
Ryan Hughes
bb43d719e6
Fix fido2 and fprint auth flow (#635)
* Restructure fido2 / fprint to add to sudo and polkit

* Add migration

* Fix migration
2025-08-24 13:41:11 +02:00
Jarek
c4b32c047a
Add omarchy-setup-cloudflare-dns script (#752)
* Add omarchy-setup-cloudflare-dns script

Addresses issue #745 by providing user choice for DNS configuration.

Features:
- Makes Cloudflare DNS opt-in instead of forced default
- Preserves local development environments with DHCP option
- Includes custom DNS configuration support
- Provides backup/restore functionality
- Follows Omarchy naming conventions

Fixes #745

* Address DHH feedback on DNS configuration script

Changes based on maintainer review:
- Rename script to omarchy-setup-dns (more generic name)
- Remove /usr/local/bin installation (use PATH instead)
- Add migration to reset automatic Cloudflare DNS to DHCP
- Force DNS on physical interfaces only using systemd-networkd
- Exclude docker/virtual interfaces from forced DNS

Fixes local development environment issues while making Cloudflare DNS opt-in.

* Use timestamped backups and remove restore function

Follow Omarchy backup standards by using timestamped backup files
instead of fixed names. Remove restore function since backups now
have unpredictable names - users can manually restore if needed.

This matches the pattern used in omarchy-refresh-config.

* Add DNS over TLS support for enhanced security

Enable opportunistic DNS over TLS when using Cloudflare DNS. This
encrypts DNS queries when possible while falling back to regular DNS
if TLS isn't available, providing security without breaking compatibility.

Thanks to the suggestion in #696 for highlighting this improvement.

* Add certificate validation for DNS over TLS

The DNS servers now include their proper hostnames for certificate
validation (cloudflare-dns.com and dns.google). This ensures we're
actually talking to the real DNS servers when using encrypted DNS,
not some imposter.

Completes the implementation suggested in #696.

* Prevent backup file accumulation

Clean up old backup files before creating new ones to prevent the
accumulation of .bak.* files over time. Keeps only the most recent
backup while maintaining the timestamped naming pattern.

This ensures the system doesn't get cluttered with countless backup
files from repeated script runs.

* Simplify DNS setup script per review feedback

Reduced script complexity from 227 to 58 lines while maintaining core functionality.
Removed unnecessary backup system and systemd-networkd configuration.
Kept essential features: Cloudflare DNS with TLS, DHCP mode, and custom DNS option.
Script now follows established Omarchy conventions for simplicity and size.

* Allow setup from omarchy-menu

* Integrate into Omarchy Menu

* Align parameter

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-24 13:34:04 +02:00
David Heinemeier Hansson
f4ef8eca65 If it's going to be a while 2025-08-24 13:02:48 +02:00
Manuel
1d6d21e7b7
Changed Keybindings for resize active window to code syntax (#1029) 2025-08-24 12:52:24 +02:00
David Heinemeier Hansson
04fff555b8 Fixup the firewall install 2025-08-24 12:41:13 +02:00
David Heinemeier Hansson
aa32b147ad Ensure package repositories are available before installing or doing updates 2025-08-24 12:10:07 +02:00
David Heinemeier Hansson
6b3b93ded1 Add both arch mirror and AUR guard 2025-08-24 12:00:26 +02:00
David Heinemeier Hansson
9dbef029f6 Stronger AUR available guard 2025-08-24 11:57:23 +02:00
David Heinemeier Hansson
aaefc4f208 Add an availability shield for AUR 2025-08-24 11:54:19 +02:00
David Heinemeier Hansson
ccf13e5902 Don't need this update 2025-08-24 11:49:49 +02:00
David Heinemeier Hansson
9ed755b445 This will have to wait 2025-08-24 11:23:44 +02:00
David Heinemeier Hansson
42432ae462 Ensure we always unblock wifi/bluetooth when going to setup 2025-08-24 11:13:49 +02:00
David Heinemeier Hansson
438156e36f More protections 2025-08-24 11:10:06 +02:00
David Heinemeier Hansson
574d213c34 Ensure better trap behavior 2025-08-24 11:05:11 +02:00
David Heinemeier Hansson
7d61c19f69 Remove output for existing setups 2025-08-24 11:03:43 +02:00
David Heinemeier Hansson
69fe4ae997
Remove screen recording status until it is stable (#1032) 2025-08-24 11:00:30 +02:00
Richard Macklin
c3af4b9469
Default OMARCHY_REF to master in boot.sh (#1030)
This will allow us to change GitHub's default branch to `dev`, so that
PRs will target the correct branch by default, but new installations
will still default to using the stable `master` branch.
2025-08-24 10:40:47 +02:00
David Heinemeier Hansson
ffe8997fad Pinta install seems to work fine now 2025-08-24 09:31:42 +02:00
David Heinemeier Hansson
e2611d9bc4 Rearrange options 2025-08-24 09:28:08 +02:00
David Heinemeier Hansson
266767df5f Show dust disk usage in reverse 2025-08-24 09:26:06 +02:00
David Heinemeier Hansson
eb4172a486 We now have audio settings in the setup menu 2025-08-24 09:24:00 +02:00
David Heinemeier Hansson
ca115b9061 Can't install firewall in chroot, so move it into its own service for now 2025-08-24 09:12:51 +02:00
David Heinemeier Hansson
ab09446971 Can't use chroot trap 2025-08-24 09:06:24 +02:00
David Heinemeier Hansson
af0f459a1a Try skipping this efibootmgr munging for a second 2025-08-24 08:46:34 +02:00
David Heinemeier Hansson
fbf9a19574 Show installation env for debugging 2025-08-24 07:40:16 +02:00
David Heinemeier Hansson
95139164a3 Skip all of powerprofilectl setup during CHROOT 2025-08-24 07:26:24 +02:00
David Heinemeier Hansson
2ae973108d Extract error trapping to its own file 2025-08-24 07:21:49 +02:00
David Heinemeier Hansson
aa0b44b7f4 Missing shebang 2025-08-24 07:20:45 +02:00
David Heinemeier Hansson
d9424b2bff Document what's missing 2025-08-24 07:09:45 +02:00
David Heinemeier Hansson
36a30dd01d Skip the battery monitor during chroot install for now 2025-08-24 07:09:08 +02:00
Ryan Hughes
82467892a3
Merge pull request #1020 from ryanrhughes/limine-fixes
Minor Limine / Snapper Tweaks and Fixes
2025-08-24 01:09:02 +02:00
Ryan Hughes
e138f7e8eb Set config files first 2025-08-24 00:18:10 +02:00
Ryan Hughes
0a75644f2d Less aggressive check 2025-08-24 00:01:36 +02:00
Ryan Hughes
3725f2d3b6 Everyone can have UKI 2025-08-24 00:01:23 +02:00
Ryan Hughes
0ebd62a32e Define boot path 2025-08-23 23:25:33 +02:00
Taha
31d97335fc
Add Omarchy icon to waybar (#1017)
* Add Omarchy icon to waybar

* Add step to fonts.sh to install omarchy icon font

* Style and fixup

* Fixup installation of the omarchy font

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 23:22:50 +02:00
David Heinemeier Hansson
41a1fe6b21 Switch Zoom from shitty native app to better webapp
Have to compromise on 1080p but seems better than dealing with that
trash app.
2025-08-23 23:03:54 +02:00
David Heinemeier Hansson
91e686f1b2 Can't have nice things during arch-chroot for some reason! 2025-08-23 22:57:47 +02:00
David Heinemeier Hansson
75ac6910d4 Add back fastfetch which we lost when removing logging 2025-08-23 22:40:36 +02:00
David Heinemeier Hansson
b4b8788c14 Use something safe in the arch-chroot 2025-08-23 22:36:38 +02:00
David Heinemeier Hansson
76c94e2604 Breakup the omnibus config install 2025-08-23 22:31:42 +02:00
David Heinemeier Hansson
e59a98fb0b Don't fail if there 2025-08-23 22:21:56 +02:00
David Heinemeier Hansson
dee7e3e4a7 Ensure .config is there
Strange that this should be necessary for arch-chroot, but let's give it
a try
2025-08-23 22:21:28 +02:00
David Heinemeier Hansson
5a7b9292c8 Shorter 2025-08-23 21:41:15 +02:00
David Heinemeier Hansson
31ce6f689e Merge branch 'master' into dev 2025-08-23 21:29:49 +02:00
David Heinemeier Hansson
210481d758 Style 2025-08-23 21:21:00 +02:00
David Heinemeier Hansson
3bac37b21b Use the same state directory for status as everthing else 2025-08-23 21:21:00 +02:00
Ryan Hughes
1edbe89191
Merge pull request #1012 from ryanrhughes/limine-bios-support
Add Limine support for BIOS environments
2025-08-23 20:32:02 +02:00
Ryan Hughes
617e96234b
Merge pull request #1010 from ryanrhughes/update-omarchy-snapshot
Make omarchy-snapshot exit if you don't have Snapper but continue update
2025-08-23 20:31:51 +02:00
Ryan Hughes
5873980703 Add efi checks 2025-08-23 20:25:46 +02:00
Ryan Hughes
b8cc8d8bc3 Move update up in case something goes wrong 2025-08-23 20:25:04 +02:00
David Heinemeier Hansson
455fe890ec Just rely on the ISO autostart to set it instead of detecting it 2025-08-23 20:23:08 +02:00
David Heinemeier Hansson
ccc8aa87d0 Improve presentation of failed command 2025-08-23 19:42:31 +02:00
Ryan Hughes
193797393f Exit if you don't have snapper but continue update 2025-08-23 19:16:47 +02:00
David Heinemeier Hansson
7056a3903a No longer need gum or tte as preflights
No more identification up front, no toast during initial install
2025-08-23 19:04:20 +02:00
David Heinemeier Hansson
3880c49469
Logging is having issues, so let's skip until sorted (#1009) 2025-08-23 18:50:32 +02:00
David Heinemeier Hansson
87467579f7 Use a simpler version that is not going to have potential color issues on some displays 2025-08-23 18:39:52 +02:00
David Heinemeier Hansson
6147b634e7 No longer need the toast here now that we're running straight through everything
If we have a toast, it should be in the configurator
2025-08-23 18:37:08 +02:00
David Heinemeier Hansson
9bb5832646 Turn logging back on 2025-08-23 18:33:49 +02:00
David Heinemeier Hansson
07bf9b838a Fix file name to what it was 2025-08-23 18:32:43 +02:00
David Heinemeier Hansson
332c8d5abb Add same shebang as everything else 2025-08-23 18:26:00 +02:00
David Heinemeier Hansson
022b591986 Fix bash references
Stay consistent with everything
2025-08-23 18:25:52 +02:00
David Heinemeier Hansson
7713534693 Fix end to fi 2025-08-23 18:24:31 +02:00
David Heinemeier Hansson
bf72d80ac6 The ISO configurator will now take care of identification
And removing it here helps deal with the fact that gum doesn't play nice
with the new logging feature.
2025-08-23 18:23:44 +02:00
David Heinemeier Hansson
d0092f00c8 More smithing 2025-08-23 18:12:30 +02:00
David Heinemeier Hansson
75cd9fefa5 Wordsmith 2025-08-23 18:11:12 +02:00
David Heinemeier Hansson
07ad23b303 Turn off logging 2025-08-23 18:09:36 +02:00
David Heinemeier Hansson
098c9157d8 Need to bail immediately again 2025-08-23 18:05:06 +02:00
Ankur Kotwal
5e3d0d89a5
Reflect default browser changes in bindings and webapps (#871)
* Abstract default browser to omarchy-browser (a wrapper)

* Fix the omarchy-browser command as it used to loop. Extract info from the browser .desktop files.

* Clean up and fix bugs

* Cleanup unused change

* Fix indentation

* Separate out omarchy-browser from omarchy-webapp so that we don't break webapps for browsers other than Chromium or Google Chrome.

* Fix incorrect function call

* Add a migration script

* Migration script fixes

* Simplify the browser and webapp commands. Rename commands to align with launch terminology.

* Add support for Microsoft Edge, Opera and Vivaldi

* Fix errors

* Remove --name and --class -- They're not respected when --app is defined

* We don't ship with Chrome

* Simplify launchers

* Use launch commands everywhere

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-08-23 17:28:45 +02:00
Ryan Hughes
d4403051cf
Add Limine + Snapper support (#998)
* Persist urgent notifications

* Create omarchy-snapshot

* Create snapshot before pulling

* Extract alternative bootloader configs

* Add limine-snapper config

* Fix check

* Update login scripts

* Make chroot friendly

* Extract cmdline instead of using blkid due to error

* Add restore command

* Export $TERMINAL so we get clickable restore notifications

* Remove sync -- causes errors...we have nothing to sync yet

* Executable

* Minor cleanup and compatibility for non-ISO

* Give login its own section

* Give no-arg guard and inline commands

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 16:52:25 +02:00
Shawn Yeager
cc80782160
Add two new background images to theme catppuccin (#1008)
* add two new backgrounds with background color #181824

* replace 3rd background image
2025-08-23 16:50:49 +02:00
Alan Sikora
318a6e23cf
Add status indicator cluster for waybar (#570)
* feat: Add notification status indicator to waybar

Adds a visual indicator in the waybar to show when notifications are silenced (do-not-disturb mode).

- Shows a red dot when notifications are disabled
- Shows a dimmed dot when notifications are enabled
- Clicking the indicator toggles do-not-disturb mode
- Syncs with the existing SUPER+CTRL+, keyboard shortcut

This provides immediate visual feedback about notification status, making it easier for users to know when they've silenced notifications.

* feat: Convert to unified status cluster that only shows active states

- Only displays indicators when states are actually active
- Supports multiple status types: DND, night light, screen recording, idle lock
- Uses distinct symbols: • for DND, ◐ for night light, ● for recording, ◯ for idle lock
- Completely hides module when no states are active (no visual clutter)
- Extensible design for future status indicators
- Improved performance with better error handling

* Implement lightweight hybrid status monitoring

* Enhance notification status cluster with modular design

* Add waybar configuration for status cluster

* Add recording click handler and fix process detection

- Add wl-screenrec detection for non-nvidia systems
- Add click handler to start/stop recording
- Fix idle lock toggle functionality

* minor alignment tweaks

* improved recording detection to be more specific

* Rely on Omarchy bin in PATH and lower interval to feel more snappy

* Seperate out screencording stop so it doesn't start when trying to stop OBS

* Add migration to add the status notifications

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 08:26:31 +02:00
Eamon Burns
a4119ce43e
fix: add quotes around font names in omarchy-font-set (#1001) 2025-08-23 07:44:21 +02:00
oricol
cc4d41bdaa
Include VerbosePkgLists for better pacman -Syu (#1003)
* Include VerbosePkgLists for better pacman -Syu

* Add migration for the verbose package lists

* Amend comment

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 07:43:12 +02:00
Taha
b2a2d0fde3
Add new Omarchy icon for fastfetch (#996)
* Add omarchy icon to fastfetch config

* Add migration file for fastfetch update

* Use consistent branding placement for spots you can change

* Allow editing the about icon

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 07:37:47 +02:00
David Heinemeier Hansson
2cb7f61108 This should tile not float 2025-08-22 22:29:54 +02:00
David Heinemeier Hansson
acca058d4c No longer needed in the app launcher
We have them in the menus
2025-08-22 22:28:08 +02:00
David Heinemeier Hansson
29ea8af5e1 Move Docker .desktop to TUI install 2025-08-22 22:27:44 +02:00
David Heinemeier Hansson
3381bcca59 No longer needed now that we use .config/chromium-flags.conf 2025-08-22 22:27:28 +02:00
David Heinemeier Hansson
0f2479f3f6 Move to the right place 2025-08-22 22:27:15 +02:00
Ryan Hughes
b8bd1d1d6c
Add tsui to Tailscale installer (#604) 2025-08-22 22:22:29 +02:00
David Heinemeier Hansson
85f9fb486e Use terminal directly to avoid any issue about About.desktop not being present
Closes #847
2025-08-22 21:31:45 +02:00
David Heinemeier Hansson
04aa3cca0d Just use the same system dialog size for everything
Will give more room to avoid clipping Omarchy logo too
2025-08-22 21:28:48 +02:00
Christopher
8c1fd76a37
Add SUPER + MUTE for audio output switching (#941)
* Add SUPER + MUTE for audio output switching

* Fix migration bc stupidness

* Simplify implementation and ensure the new sink is not muted

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 20:43:46 +02:00
Greg Helding
7c4156fc9d
Add additional backgrounds to ristretto theme. (#761) 2025-08-22 20:01:47 +02:00
David Heinemeier Hansson
78b1238f40 Add nested Elixir menu to also allow for a Phoenix install 2025-08-22 18:13:56 +02:00
David Heinemeier Hansson
9ecac600e7 Same comments as the other options 2025-08-22 18:10:41 +02:00
Johannes Erhardt
74096d5f6c
Add Phoenix Framework install option. (#676) 2025-08-22 18:09:50 +02:00
David Heinemeier Hansson
6366dc1118 Add migration to add firewall opening for docker DNS and fix comment 2025-08-22 18:08:18 +02:00
Samuel Péchèr
e7ea45a802
Update firewall.sh for other docker bridge networks (#679)
Allow 172.16/12 prefix IPs for docker DNS as bridge networks will create another interface than docker0 within this CIDR prefix.
2025-08-22 18:05:17 +02:00
David Heinemeier Hansson
8074694ac8 Stop setting DNS for all on new systems pending that we move to something like #752 2025-08-22 17:58:01 +02:00
Domingo Edwards
b3d24a1b13
fix: Avoid fcitx5 override of xcb keyboard layout (#760)
* fix: Avoid fcitx5 override of xcb keyboard layout

* Clean up migration

* Comment says what the command says

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 17:54:29 +02:00
David Heinemeier Hansson
cab64fa9de CTRL + ALT + DEL closes all windows
Co-authored-by: @chriopter
Closes #980
2025-08-22 17:40:01 +02:00
rez1coder
b09ba8d6d3
chore(omarchy-menu): update Omarchy manual URL to learn.omacom.io (#990) 2025-08-22 17:33:56 +02:00
David Heinemeier Hansson
9f49f869a3 Fix to protect it for the first launch 2025-08-22 17:31:21 +02:00
Denis Koleda
c3b58bc773
Use power button to open omarchy-menu system (#769)
* Use power button to open omarchy-menu system

* Added migration script

* setsid so it doesn't exit with the terminal

* Spacing

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 17:31:17 +02:00
RaphaelKimmig
58d6b5ba7f
fix: improve black contrast in ristretto alacritty theme (#770) 2025-08-22 17:14:37 +02:00
David Heinemeier Hansson
13166960a1 Add a clue on how to deal with hashes in webapps
Co-authored-by: @clauzf
Closes #778
2025-08-22 17:12:18 +02:00
David Heinemeier Hansson
e33219f611 Swap it around a bit 2025-08-22 17:04:26 +02:00
David Heinemeier Hansson
44d6314929 Subtle tweaks 2025-08-22 17:01:52 +02:00
Luigi Finetti
450403e48a
Add QR code for discord link (#795) 2025-08-22 16:59:58 +02:00
vaibhav-mattoo
fbc60d9ec3
run omarchy lazyvim install if nvim present without any config (#807) 2025-08-22 16:52:10 +02:00
David Heinemeier Hansson
7d427faad0 It's not reliable enough yet 2025-08-22 16:39:07 +02:00
Lowe Schmidt
5d155b712a
fix: usage didn't match script name (#820) 2025-08-22 15:57:22 +02:00
David Heinemeier Hansson
2cca02699a Start new terminals with a working directory based on current active terminal
Co-authored-by: @halilozercan
Closes #835
2025-08-22 15:55:48 +02:00
Jarek
4a1888af8f
Fix multi-package removal in package uninstaller (#822)
* Fix multi-package removal in omarchy-pkg-remove

The script already had multi-selection enabled with --multi flag,
but wasn't handling multiple selections correctly. When users
selected multiple packages with Tab, they wouldn't all get removed.

Fixed by using xargs to properly convert newline-separated package
names from fzf into individual arguments for yay.

Fixes #805

* Add multi-select explainer

* Fix multi install like we did for remove

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 15:40:33 +02:00
Viktor
53217c4c83
Add safeguard to prevent omarchy-update from beginning an update during an AUR outage/DDOS (#823)
* Add safeguard to prevent omarchy-update from beginning an update during an AUR ddos

* Fix spacing

* Update omarchy-update

Return a non-zero error code when failing to reach AUR

* Add user-agent string 

Good courtesy that makes it easier for the AUR folks to interpret the HEAD requests and tell us if there is an issue.

* Ensure entire icon will fit

* Migration to fit entire icon for update-available in waybar

* feat: add precise media control shortcut

* Fix a handful of typos

* Add state based app restarts for migrations (#637)

* Look for app restart state files and restart them after update

* Convert existing migrations to set states

* Revert "Convert existing migrations to set states"

This reverts commit 1eb8a56b075cab5652a028202dc9dc81e556c4dc.

* Fix waybar update icon spacing (#672)

* Fix waybar update icon spacing

Remove clock from margin rule and add custom-update to prevent horizontal cutoff and reduce excessive spacing between clock and update icon.

* making the update icon smaller, looks better in the center

* Fixed this in CSS instead

* We now have a global $OMARCHY_PATH

* Fix screen recording on Intel graphics (#669)

* Fix screen recording on Intel graphics

Use wf-recorder for Intel graphics instead of wl-screenrec due to VAAPI compatibility issues that prevent recording from starting.

* combining greps for nvidia and intel graphics

* Update omarchy-cmd-screenrecord

* Force working version of uwsm until we get the fixed one from upstream

* Split upgrading system packages into two steps

* uwsm was already fixed upstream with 0.23.2

* Add burst limit to login to prevent endless retries (#690)

* Fix kernel update detection for alternative kernel variants (#585)

* Fix omarchy-update kernel update message to support alternative kernel variants

* fix: omarchy-update-restart kernel update message to support alternative kernel variants

* Add elan to the keywords used to detect if a fingerprint reader exists (#692)

* fix pgrep and pkill (#687)

* Make a function to create a smaller webshare version

* Set sudo max tries to 10, binary for easy lockout reset (#686)

* set sudo max fail count to 10, bin for easy reset

* Slim down

Let the failure just fail in the shell

* Rename to be more descriptive

* No need for the 00- prefix

* Add migration to raise sudo try limit

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Install `gum` prior to the preflight guard (#684)

* Use `read` instead of `gum` in the preflight guard

* Revert "Use `read` instead of `gum` in the preflight guard"

This reverts commit 759dbb70454dccc27b78b198bf077e076750fefc.

* Install `gum`, if required, at the beginning of `install.sh`

* `gum` is already installed by the `presentation.sh` stage

* Use existing structure

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Always install `base-devel` in case `yay` needs to build a package (#710)

* chore: Enable Walker list cycling (#709)

Enable the `cycle` behaviour for Walker lists; this allows one to
quickly jump from the default-selected first item in a list, to the
last item, simply by pressing the "up" arrow key (or other key
sequence bound to "previous").

Refs: https://github.com/abenz1267/walker/wiki/Basic-Configuration

* Add one wallpaper for nord (#707)

* Use `pacman` instead of `yay` to install `gum` (#705)

* Direct access to Walker clipboard + emojis with hotkey

* Turn off the walker service until the memory leak is fixed

See https://github.com/basecamp/omarchy/issues/698

* Can't use clipboard module when Walker is not running as a service

See https://github.com/basecamp/omarchy/issues/698

* pacman needs sudo

* Add disable chaotic aur env flag (#746)

* Add missing modifier combinations to omarchy-menu-keybindings (#715)

While these aren't currently used directly in the Omarchy code, when the
user adds custom bindings they are not properly displayed by the
omarchy-menu-keybindings script.

Co-authored-by: Chris Miller <chris@diddado.com>

* Make this resilient to file already being removed

* Use omarchy-chromium-bin to give live theme changes

* Transcoding is really from any image format

* Include Brave in the same opacity treatment as chromium

* Only ask for the identification if it has not already been provided

* Need to make the new disk writeable too

* Stop using tte until package is fixed

* Use host's DNS resolver in Docker containers (#812)

* Symlink /etc/resolve.conf to systemd-resolved's stub

Since systemd-resolved is managing the DNS configuration, ensure that
/etc/resolv.conf uses it.

* Use systemd-resolved from Docker containers

* No longer needed now that we have .config/chromium-flags.conf

* Add brave-flags.conf as a new default to ensure that anyone using Brave as their browser runs it under wayland

* Must restart waybar when timezone is changed to have it reflect immediately

* Add migration for adding .config/brave-flags.conf

* Only do system package updates if there is a network connection

This prepares us for offline ISO install

* Catch both cases of brave-browser identification

* Skip pinta until we can resolve the certificate issue on manual build

cc @Torxed

* Add dust to reveal used space

Co-authored-by: @tobi

* Add minimal starship prompt to terminal

Co-authored-by: @tobi

* Always noconfirm

* If NOT starship, install it

* Add `--force` when enabling ufw to bypass prompt (#794)

* Add current theme to fastfetch config (#889)

* Turn off tte until the package is fixed

* Turn off auto-launching screensaver until tte is fixed

* Add current theme to fastfetch config

fastfetch has a module for displaying colors, which is often used by
default. It shows the current colors in use by the terminal. Given that
themes are core to Omarchy, I thought it made sense to show the current
theme in fastfetch. I've also added a compressed version of the palette
(similar to the circle config of the colors module).

* Add migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Don't fail in case chromium package is not there

In case another package has been used to provide chromium

* No prefix needed

* Lines up better with the new starship prompt

* fix: missing python-poetry-core make Omarchy install fail (#862)

* fix: missing python-poetry-core

* added migration

* Flesh out migration to fix all tte issues

* Turn TTE back on

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Add color to install / remove to differentiate (#858)

* Add color to install / remove to differentiate

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Ensure Zoom is not made transparent

* Ensure the directory is present

* No double logo

* fix: add python-object to make installation  of Omarchy work (#806)

* Explicitly add python-object to make powerprofile work

* added migration

* Explain the why, not the how

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Turn screensaver back on now that we have fixed the tte install

* Add migration to turn on screensaver again

* Even more minimal and theme matching

* Use italic instead of bold for git branch

* Minimal git status too

* Correct spacing

* Less aggressive untracked icon

* Consistent color before the >

* Stick to color

* Really just stick to one color everywhere

* Force the link

* Make resilient towards it already being the same file

* Offer install scripts a way to know if they're in chroot

* Different iwd needed on chroot install

* Address installation inside a chroot

* Can't reuse when needing to set for user

* Simplify

No other args

* Get the latest indexes if online

* Now available as an official package instead of AUR

* Add single server for mirrorlist for now

* Try a different mirror for testing and need to use pacman for pkg update before we have yay

* Use same shebang as everywhere

* Let it roll for testing

* Add debug to failure

* Force wifi to unblock when we go to set it up

Wifi can sometimes get turned off by computers when running on low power
or in some sleep modes

* Fix positive exit

* Put chroot provision into its own preflight

* Restore to the global mirror

* Clean up after ISO install without sudo

* Reduce ceremony -- a start and an end is enough

* If we installed from the installer, we should remind user to unplug USB

* Extra CR not needed

* Bring uwsm out of the doghouse

* Ensure latest uwsm is installed now that we have lifted the lock

* Fix JetBrains IDEs flickering and focus issues in Hyprland (#888)

* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

Uses the new windowrule syntax (Hyprland v0.48.0+) instead of deprecated windowrulev2.

# Conflicts:
#	default/hypr/apps/jetbrains.conf

* Fix JetBrains floating popup size issue in Hyprland

* Style

---------

Co-authored-by: Mike Veerman <mike@nonect.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Don't need wget, since curl is already part of arch

* This is still a problem

* Feature/screensaver toggle instead of launch (#784)

* sceensaver-toggle and run if enabled using state file

* replace commands in menu and hyperidle

* migration file

* sed corrections

* added backup of changed files in migration

* review comments implemented

* hypridle config restore

* Use normal path style

* Use nerdfont icon for notification

* Make executable

* Allow a force start of screensaver so it can run even when disabled when manually triggered

* Add screensaver to system menu now that the toggle actually means toggle

* Known path without expansion spaces

* It should be an error return when it doesn't start

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Add 60 second inactivity timeout to Walker launcher (#701)

* Add 60 second timeout to Walker launcher

This will close the launcher after 60 seconds of inactivity.

* Update 1754929737.sh

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* adding mongodb docker install (#972)

* Add suggestion for eu keyboard layout for iso

Closes #937
Co-authored-by: @chriopter

* Add Super + Tab to go forward through workspaces and Super + Shift + Tab to go backwards

Co-authored-by: @rafaelbernard
Closes #652

* move import to bottom (#917)

* Add missing package for Intel Graphics Card based device (#910)

* Add missing package for Intel Graphics Card based device

* Add migration to add the missing package

* Fix USB autosuspend causing peripheral disconnection issues (#906)

* Fix USB autosuspend causing peripheral disconnection issues

Add configuration to disable USB autosuspend by setting usbcore.autosuspend=-1
in modprobe.d configuration. This prevents USB devices from being automatically
suspended which can cause keyboards, mice, and other peripherals to disconnect
unexpectedly.

* Add migration to apply autosuspend to existing systems

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* retry cmd on failed install should take into consideration bare mode (#904)

* retry cmd on failed install should take into consideration bare mode

* A little duplication beats too much indirection

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Switch from lazydocker-bin to lazydocker

It's now in the official repo as a compiled version!

* add reverse window cycling with cycleprev (#874)

* add reverse window cycling with cycleprev

* Include the bringactivetotop fix

---------

Co-authored-by: observable <x@observable.art>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Stop using SIGUSR1 with Waybar to prevent stacking

Closes #873

* Omarchy install - capture install log (#868)

* Omarchy install log

* Slim down the logging setup a bit, put it in a known directory, tell user about it

* Stick to what was

* Not needed here

* Prefer the duplication

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Allow customizing the screensaver logo (#863)

* check for custom screensaver logo or fall back to default

* move logo location to omarchy config folder

* fix missed location check

* add menu item to copy logo.txt and open in editor

* move to setup menu

* Just always use a user-editable screensaver.txt file

* No longer needed

* Be clearer

---------

Co-authored-by: Christopher Moore <cmoore@yozu.co.uk>
Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Visual improvements for pkg-install and pkg-remove (#852)

* Shorten it up a bit

* Extract precondition into its own file and use it for the package installer too

* But don't actually fail unless it is down!

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Michal Zaborowski <zaborowskimchl@gmail.com>
Co-authored-by: Richard Macklin <code@rmacklin.dev>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Alan Sikora <alansikora@gmail.com>
Co-authored-by: Eric Swanson <960576+ericrswanny@users.noreply.github.com>
Co-authored-by: not-NEK0 <86556080+not-NEK0@users.noreply.github.com>
Co-authored-by: Maximiliano Guzenski <maxguzenski@gmail.com>
Co-authored-by: Manuel <manuel.ramsaier89@gmail.com>
Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: Dylan Bridgman <light@ether.org.za>
Co-authored-by: Simon Dawson <spdawson@gmail.com>
Co-authored-by: Swarnim <134050970+Swarnim114@users.noreply.github.com>
Co-authored-by: Bruce <hi+gh@bruceroettgers.eu>
Co-authored-by: Chris Miller <github@reaperville.com>
Co-authored-by: Chris Miller <chris@diddado.com>
Co-authored-by: Kevin McConnell <kevin.mcconnell@gmail.com>
Co-authored-by: Gary Rennie <gazler@gmail.com>
Co-authored-by: Shigeto Kumagai <shk@all.daynight.jp>
Co-authored-by: David Anderson <kataqatsi@gmail.com>
Co-authored-by: MikeVeerman <mike.veerman@gmail.com>
Co-authored-by: Mike Veerman <mike@nonect.com>
Co-authored-by: Rob Zolkos <rob@zolkos.com>
Co-authored-by: Valberto Enoc <valbertoenoc@gmail.com>
Co-authored-by: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com>
Co-authored-by: Brosseau Valentin <c4software@gmail.com>
Co-authored-by: jw <jw@codasite.ai>
Co-authored-by: michaldziurowski <mdziurowski@gmail.com>
Co-authored-by: Observable Art <123117871+iamobservable@users.noreply.github.com>
Co-authored-by: observable <x@observable.art>
Co-authored-by: Chris24680 <moore12321@gmail.com>
Co-authored-by: Christopher Moore <cmoore@yozu.co.uk>
Co-authored-by: Luis Daniel Casais <71148501+rajayonin@users.noreply.github.com>
2025-08-22 15:27:58 +02:00
Luis Daniel Casais
7665ac4fde
Visual improvements for pkg-install and pkg-remove (#852) 2025-08-22 15:13:28 +02:00
Chris24680
0246468403
Allow customizing the screensaver logo (#863)
* check for custom screensaver logo or fall back to default

* move logo location to omarchy config folder

* fix missed location check

* add menu item to copy logo.txt and open in editor

* move to setup menu

* Just always use a user-editable screensaver.txt file

* No longer needed

* Be clearer

---------

Co-authored-by: Christopher Moore <cmoore@yozu.co.uk>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 15:11:02 +02:00
Shigeto Kumagai
3a0bb502b6
Omarchy install - capture install log (#868)
* Omarchy install log

* Slim down the logging setup a bit, put it in a known directory, tell user about it

* Stick to what was

* Not needed here

* Prefer the duplication

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 14:58:33 +02:00
David Heinemeier Hansson
b2161f1f31 Stop using SIGUSR1 with Waybar to prevent stacking
Closes #873
2025-08-22 14:37:33 +02:00
Observable Art
cf556b2da2
add reverse window cycling with cycleprev (#874)
* add reverse window cycling with cycleprev

* Include the bringactivetotop fix

---------

Co-authored-by: observable <x@observable.art>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 14:34:17 +02:00
David Heinemeier Hansson
8e557b2ae5 Switch from lazydocker-bin to lazydocker
It's now in the official repo as a compiled version!
2025-08-22 14:26:32 +02:00
michaldziurowski
041c787b56
retry cmd on failed install should take into consideration bare mode (#904)
* retry cmd on failed install should take into consideration bare mode

* A little duplication beats too much indirection

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 14:18:28 +02:00
jw
16b0919418
Fix USB autosuspend causing peripheral disconnection issues (#906)
* Fix USB autosuspend causing peripheral disconnection issues

Add configuration to disable USB autosuspend by setting usbcore.autosuspend=-1
in modprobe.d configuration. This prevents USB devices from being automatically
suspended which can cause keyboards, mice, and other peripherals to disconnect
unexpectedly.

* Add migration to apply autosuspend to existing systems

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 14:14:46 +02:00
Brosseau Valentin
1942ac68dc
Add missing package for Intel Graphics Card based device (#910)
* Add missing package for Intel Graphics Card based device

* Add migration to add the missing package
2025-08-22 14:10:55 +02:00
Saeed Vaziry
9375dfca21
move import to bottom (#917) 2025-08-22 14:08:03 +02:00
David Heinemeier Hansson
04f89061ac Add Super + Tab to go forward through workspaces and Super + Shift + Tab to go backwards
Co-authored-by: @rafaelbernard
Closes #652
2025-08-22 13:58:04 +02:00
David Heinemeier Hansson
e7b00295ec Add suggestion for eu keyboard layout for iso
Closes #937
Co-authored-by: @chriopter
2025-08-22 13:50:30 +02:00
Valberto Enoc
3e7509071b
adding mongodb docker install (#972) 2025-08-22 13:34:37 +02:00
Rob Zolkos
322fa8421e
Add 60 second inactivity timeout to Walker launcher (#701)
* Add 60 second timeout to Walker launcher

This will close the launcher after 60 seconds of inactivity.

* Update 1754929737.sh

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 13:19:50 +02:00
Manuel
5381185121
Feature/screensaver toggle instead of launch (#784)
* sceensaver-toggle and run if enabled using state file

* replace commands in menu and hyperidle

* migration file

* sed corrections

* added backup of changed files in migration

* review comments implemented

* hypridle config restore

* Use normal path style

* Use nerdfont icon for notification

* Make executable

* Allow a force start of screensaver so it can run even when disabled when manually triggered

* Add screensaver to system menu now that the toggle actually means toggle

* Known path without expansion spaces

* It should be an error return when it doesn't start

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 13:10:01 +02:00
David Heinemeier Hansson
2a840ea085 This is still a problem 2025-08-22 12:22:43 +02:00
David Heinemeier Hansson
bac5710707 Don't need wget, since curl is already part of arch 2025-08-22 12:12:39 +02:00
MikeVeerman
3f921ef4f8
Fix JetBrains IDEs flickering and focus issues in Hyprland (#888)
* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

* Fix JetBrains IDEs flickering and focus issues in Hyprland

Add window rules to prevent tooltip and tab dragging flickering issues
in JetBrains IDEs when running under Hyprland compositor.

Uses the new windowrule syntax (Hyprland v0.48.0+) instead of deprecated windowrulev2.

# Conflicts:
#	default/hypr/apps/jetbrains.conf

* Fix JetBrains floating popup size issue in Hyprland

* Style

---------

Co-authored-by: Mike Veerman <mike@nonect.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-22 08:50:10 +02:00
David Heinemeier Hansson
bc08c47157 Revert "Turn off auto-launching screensaver until tte is fixed"
This reverts commit bd2eddbab403001dc9758337860bc4ed7f9650dc.
2025-08-22 08:41:28 +02:00
David Heinemeier Hansson
a60bcaf7a1 Revert "Turn off tte until the package is fixed"
This reverts commit f456e21cabae21ab700a8613fef004ebdb07a359.
2025-08-22 08:41:19 +02:00
David Heinemeier Hansson
8a78566248 Merge branch 'master' into dev 2025-08-22 08:40:31 +02:00
David Heinemeier Hansson
5534e33dc0 Ensure latest uwsm is installed now that we have lifted the lock 2025-08-21 18:59:35 +02:00
David Heinemeier Hansson
bf31373840 Bring uwsm out of the doghouse 2025-08-21 18:57:30 +02:00
David Heinemeier Hansson
40e10b1594 Extra CR not needed 2025-08-21 14:55:47 +02:00
David Heinemeier Hansson
9bf1edac9f If we installed from the installer, we should remind user to unplug USB 2025-08-21 14:20:37 +02:00
David Heinemeier Hansson
d4fa028cf3 Reduce ceremony -- a start and an end is enough 2025-08-20 20:02:39 +02:00
David Heinemeier Hansson
0a13ad8ef8 Clean up after ISO install without sudo 2025-08-20 16:41:16 +02:00
David Heinemeier Hansson
4e12e796f2 Restore to the global mirror 2025-08-20 16:31:13 +02:00
David Heinemeier Hansson
76082b945d Put chroot provision into its own preflight 2025-08-19 21:19:23 +02:00
David Heinemeier Hansson
65636b0ba8 Fix positive exit 2025-08-19 21:12:20 +02:00
David Heinemeier Hansson
41677ad7e1 Force wifi to unblock when we go to set it up
Wifi can sometimes get turned off by computers when running on low power
or in some sleep modes
2025-08-19 20:13:34 +02:00
David Heinemeier Hansson
8e4baa6cd1 Add debug to failure 2025-08-19 18:49:16 +02:00
David Heinemeier Hansson
a1cd10c0a2 Let it roll for testing 2025-08-19 16:23:09 +02:00
David Heinemeier Hansson
7e6854124c Use same shebang as everywhere 2025-08-19 16:21:51 +02:00
David Heinemeier Hansson
020d1309b0 Try a different mirror for testing and need to use pacman for pkg update before we have yay 2025-08-19 16:08:32 +02:00
David Heinemeier Hansson
7721a0efca Add single server for mirrorlist for now 2025-08-19 15:44:33 +02:00
David Heinemeier Hansson
87045ef128 Now available as an official package instead of AUR 2025-08-19 15:22:52 +02:00
David Heinemeier Hansson
b1a5facd42 Get the latest indexes if online 2025-08-19 14:57:11 +02:00
David Heinemeier Hansson
cedf20eb36 Simplify
No other args
2025-08-19 14:45:34 +02:00
David Heinemeier Hansson
84420db026 Can't reuse when needing to set for user 2025-08-19 14:39:51 +02:00
David Heinemeier Hansson
092b2ba51c Address installation inside a chroot 2025-08-19 14:34:34 +02:00
David Heinemeier Hansson
21f60a960b Different iwd needed on chroot install 2025-08-19 14:18:13 +02:00
David Heinemeier Hansson
6de4591a28 Offer install scripts a way to know if they're in chroot 2025-08-19 14:17:04 +02:00
David Heinemeier Hansson
ee1ee526d7 Make resilient towards it already being the same file 2025-08-19 13:51:29 +02:00
David Heinemeier Hansson
12ab446715 Force the link 2025-08-19 10:31:04 +02:00
David Heinemeier Hansson
d00160464f Really just stick to one color everywhere 2025-08-18 17:35:49 +02:00
David Heinemeier Hansson
9e4078d7da Stick to color 2025-08-18 17:24:45 +02:00
David Heinemeier Hansson
7b93bace81 Consistent color before the > 2025-08-18 17:16:18 +02:00
David Heinemeier Hansson
07a2423298 Less aggressive untracked icon 2025-08-18 17:14:32 +02:00
David Heinemeier Hansson
81cac3bbb7 Correct spacing 2025-08-18 17:09:47 +02:00
David Heinemeier Hansson
79104373bd Minimal git status too 2025-08-18 17:08:57 +02:00
David Heinemeier Hansson
bfa91b8917 Use italic instead of bold for git branch 2025-08-18 16:58:35 +02:00
David Heinemeier Hansson
8942b33d94 Even more minimal and theme matching 2025-08-18 16:44:35 +02:00
David Heinemeier Hansson
0e4b9ee6f9 Add migration to turn on screensaver again 2025-08-18 16:27:50 +02:00
David Heinemeier Hansson
de28805881 Turn screensaver back on now that we have fixed the tte install 2025-08-18 16:27:00 +02:00
Shigeto Kumagai
bc43377cc6
fix: add python-object to make installation of Omarchy work (#806)
* Explicitly add python-object to make powerprofile work

* added migration

* Explain the why, not the how

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-18 16:13:21 +02:00
David Heinemeier Hansson
e99dc3b67c No double logo 2025-08-18 15:50:58 +02:00
David Heinemeier Hansson
2a7a9b67aa Ensure the directory is present 2025-08-18 15:50:21 +02:00
David Heinemeier Hansson
5dec0daf4b Ensure Zoom is not made transparent 2025-08-18 15:49:24 +02:00
David Anderson
0eca37f3ff
Add color to install / remove to differentiate (#858)
* Add color to install / remove to differentiate

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-18 13:59:28 +02:00
Shigeto Kumagai
ccf6afc36c
fix: missing python-poetry-core make Omarchy install fail (#862)
* fix: missing python-poetry-core

* added migration

* Flesh out migration to fix all tte issues

* Turn TTE back on

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-18 12:39:46 +02:00
David Heinemeier Hansson
ce5178c285 Lines up better with the new starship prompt 2025-08-18 12:35:08 +02:00
David Heinemeier Hansson
2e071465a0 No prefix needed 2025-08-18 12:30:20 +02:00
David Heinemeier Hansson
7535e0ad0a Don't fail in case chromium package is not there
In case another package has been used to provide chromium
2025-08-18 12:28:55 +02:00
Gary Rennie
e6c1a52341
Add current theme to fastfetch config (#889)
* Turn off tte until the package is fixed

* Turn off auto-launching screensaver until tte is fixed

* Add current theme to fastfetch config

fastfetch has a module for displaying colors, which is often used by
default. It shows the current colors in use by the terminal. Given that
themes are core to Omarchy, I thought it made sense to show the current
theme in fastfetch. I've also added a compressed version of the palette
(similar to the circle config of the colors module).

* Add migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-18 12:27:55 +02:00
Dylan Bridgman
a712a0906a
Add --force when enabling ufw to bypass prompt (#794) 2025-08-17 11:43:46 -04:00
David Heinemeier Hansson
40d850fdb3 If NOT starship, install it 2025-08-17 10:09:23 -04:00
David Heinemeier Hansson
50c5f742dd Always noconfirm 2025-08-17 10:08:21 -04:00
David Heinemeier Hansson
55330cce88 Add minimal starship prompt to terminal
Co-authored-by: @tobi
2025-08-17 09:59:44 -04:00
David Heinemeier Hansson
7ca72c598a Add dust to reveal used space
Co-authored-by: @tobi
2025-08-17 09:12:47 -04:00
David Heinemeier Hansson
787296edab Skip pinta until we can resolve the certificate issue on manual build
cc @Torxed
2025-08-17 07:20:07 -04:00
David Heinemeier Hansson
029a3a3d37 Catch both cases of brave-browser identification 2025-08-16 06:45:26 -04:00
David Heinemeier Hansson
d5ee754538 Only do system package updates if there is a network connection
This prepares us for offline ISO install
2025-08-16 05:40:10 -05:00
David Heinemeier Hansson
1b69700999 Add migration for adding .config/brave-flags.conf 2025-08-16 05:38:04 -05:00
David Heinemeier Hansson
accc7a903e Must restart waybar when timezone is changed to have it reflect immediately 2025-08-16 05:36:38 -05:00
David Heinemeier Hansson
377f3e6d83 Add brave-flags.conf as a new default to ensure that anyone using Brave as their browser runs it under wayland 2025-08-16 12:35:33 +02:00
David Heinemeier Hansson
f06b1801d5 No longer needed now that we have .config/chromium-flags.conf 2025-08-16 12:34:57 +02:00
Kevin McConnell
aca23ad834
Use host's DNS resolver in Docker containers (#812)
* Symlink /etc/resolve.conf to systemd-resolved's stub

Since systemd-resolved is managing the DNS configuration, ensure that
/etc/resolv.conf uses it.

* Use systemd-resolved from Docker containers
2025-08-15 15:29:25 +02:00
David Heinemeier Hansson
2db5e730a7 Turn off auto-launching screensaver until tte is fixed 2025-08-15 09:52:52 +02:00
David Heinemeier Hansson
bd2eddbab4 Turn off auto-launching screensaver until tte is fixed 2025-08-15 09:52:41 +02:00
David Heinemeier Hansson
f456e21cab Turn off tte until the package is fixed 2025-08-15 09:50:22 +02:00
David Heinemeier Hansson
5aa26eb9bd Stop using tte until package is fixed 2025-08-15 09:49:03 +02:00
David Heinemeier Hansson
589ffb21fe Need to make the new disk writeable too 2025-08-15 09:37:57 +02:00
David Heinemeier Hansson
5a809db2a8 Only ask for the identification if it has not already been provided 2025-08-15 09:28:24 +02:00
David Heinemeier Hansson
75a8b1fc83 Include Brave in the same opacity treatment as chromium 2025-08-14 21:05:21 +02:00
David Heinemeier Hansson
2847ed270f Transcoding is really from any image format 2025-08-14 21:04:38 +02:00
David Heinemeier Hansson
bf49a86e98 Use omarchy-chromium-bin to give live theme changes 2025-08-14 14:46:59 +02:00
David Heinemeier Hansson
a9d70e6879 Make this resilient to file already being removed 2025-08-14 11:35:05 +02:00
Chris Miller
1ecbd22fb3
Add missing modifier combinations to omarchy-menu-keybindings (#715)
While these aren't currently used directly in the Omarchy code, when the
user adds custom bindings they are not properly displayed by the
omarchy-menu-keybindings script.

Co-authored-by: Chris Miller <chris@diddado.com>
2025-08-13 20:35:29 +02:00
Bruce
8cee2d3a8b
Add disable chaotic aur env flag (#746) 2025-08-13 20:13:40 +02:00
David Heinemeier Hansson
9b25a2fa13 pacman needs sudo 2025-08-13 13:50:27 +02:00
David Heinemeier Hansson
d4829bbc33 Can't use clipboard module when Walker is not running as a service
See https://github.com/basecamp/omarchy/issues/698
2025-08-13 13:49:05 +02:00
David Heinemeier Hansson
5e1a4da33d Turn off the walker service until the memory leak is fixed
See https://github.com/basecamp/omarchy/issues/698
2025-08-13 13:48:45 +02:00
David Heinemeier Hansson
b0e99fc865 Direct access to Walker clipboard + emojis with hotkey 2025-08-13 13:43:39 +02:00
Dylan Bridgman
1d483dac8b
Use pacman instead of yay to install gum (#705) 2025-08-12 16:06:34 +02:00
Swarnim
8a9b841e92
Add one wallpaper for nord (#707) 2025-08-12 16:05:21 +02:00
Simon Dawson
59e4981df7
chore: Enable Walker list cycling (#709)
Enable the `cycle` behaviour for Walker lists; this allows one to
quickly jump from the default-selected first item in a list, to the
last item, simply by pressing the "up" arrow key (or other key
sequence bound to "previous").

Refs: https://github.com/abenz1267/walker/wiki/Basic-Configuration
2025-08-12 15:55:23 +02:00
Dylan Bridgman
f0f4569aa2
Always install base-devel in case yay needs to build a package (#710) 2025-08-12 15:54:29 +02:00
Dylan Bridgman
b15dde2dc9
Install gum prior to the preflight guard (#684)
* Use `read` instead of `gum` in the preflight guard

* Revert "Use `read` instead of `gum` in the preflight guard"

This reverts commit 759dbb70454dccc27b78b198bf077e076750fefc.

* Install `gum`, if required, at the beginning of `install.sh`

* `gum` is already installed by the `presentation.sh` stage

* Use existing structure

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-12 13:44:28 +02:00
Manuel
6634e28540
Set sudo max tries to 10, binary for easy lockout reset (#686)
* set sudo max fail count to 10, bin for easy reset

* Slim down

Let the failure just fail in the shell

* Rename to be more descriptive

* No need for the 00- prefix

* Add migration to raise sudo try limit

---------

Co-authored-by: Manuel <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-12 13:31:48 +02:00
David Heinemeier Hansson
f8482fdad7 Make a function to create a smaller webshare version 2025-08-12 13:05:38 +02:00
Maximiliano Guzenski
03c6b0af3d
fix pgrep and pkill (#687) 2025-08-12 13:01:45 +02:00
not-NEK0
bc323ca267
Add elan to the keywords used to detect if a fingerprint reader exists (#692) 2025-08-12 12:18:56 +02:00
David Heinemeier Hansson
d26e3e368d Merge branch 'master' into dev 2025-08-12 09:43:52 +02:00
David Heinemeier Hansson
3d283eac18 Ignore uwsm here too 2025-08-12 09:43:43 +02:00
Eric Swanson
ac207720f8
Fix kernel update detection for alternative kernel variants (#585)
* Fix omarchy-update kernel update message to support alternative kernel variants

* fix: omarchy-update-restart kernel update message to support alternative kernel variants
2025-08-12 08:27:00 +02:00
David Heinemeier Hansson
07e3818b4f Merge branch 'master' into dev 2025-08-12 08:08:45 +02:00
David Heinemeier Hansson
9e7e5a1512
Pin uwsm to 0.23.0 to skip bad 0.23.1 while waiting for 0.23.2 (#697) 2025-08-12 08:07:13 +02:00
Ryan Hughes
171ca57908
Add burst limit to login to prevent endless retries (#690) 2025-08-12 07:55:50 +02:00
David Heinemeier Hansson
ae910df769 Merge branch 'master' into dev 2025-08-12 07:55:17 +02:00
David Heinemeier Hansson
78de5c24c9 uwsm was already fixed upstream with 0.23.2 2025-08-12 07:52:56 +02:00
David Heinemeier Hansson
04e9e4c21f Split upgrading system packages into two steps 2025-08-12 07:52:18 +02:00
David Heinemeier Hansson
fc3467a66e Don't update uwsm until there's a confirmed good version released 2025-08-12 07:39:11 +02:00
David Heinemeier Hansson
12b2950853 Force working version of uwsm until we get the fixed one from upstream 2025-08-12 07:35:09 +02:00
David Heinemeier Hansson
1e924d1794 It actually wasn't better to have the user defaults first 2025-08-11 22:11:13 +02:00
David Heinemeier Hansson
d0a2f63322 It actually wasn't better to have the user defaults first 2025-08-11 22:11:03 +02:00
Alan Sikora
ac37fb7ccd
Fix screen recording on Intel graphics (#669)
* Fix screen recording on Intel graphics

Use wf-recorder for Intel graphics instead of wl-screenrec due to VAAPI compatibility issues that prevent recording from starting.

* combining greps for nvidia and intel graphics

* Update omarchy-cmd-screenrecord
2025-08-11 21:33:34 +02:00
David Heinemeier Hansson
4e136ded68 We now have a global $OMARCHY_PATH 2025-08-11 21:33:04 +02:00
David Heinemeier Hansson
add56181d7 Fixed this in CSS instead 2025-08-11 20:51:23 +02:00
Alan Sikora
a46f652487
Fix waybar update icon spacing (#672)
* Fix waybar update icon spacing

Remove clock from margin rule and add custom-update to prevent horizontal cutoff and reduce excessive spacing between clock and update icon.

* making the update icon smaller, looks better in the center
2025-08-11 20:46:02 +02:00
David Heinemeier Hansson
98332f624b Merge branch 'master' into dev 2025-08-11 20:37:01 +02:00
Florian Hammerschmidt
7e30335a2e
Use correct casing for OCaml menu item (#675) 2025-08-11 20:36:48 +02:00
Ryan Hughes
4c4aafe670
Add state based app restarts for migrations (#637)
* Look for app restart state files and restart them after update

* Convert existing migrations to set states

* Revert "Convert existing migrations to set states"

This reverts commit 1eb8a56b075cab5652a028202dc9dc81e556c4dc.
2025-08-11 20:26:36 +02:00
David Heinemeier Hansson
7893f803e0
Merge pull request #668 from rmacklin/fix-a-few-typos
Fix a handful of typos
2025-08-11 20:16:33 +02:00
David Heinemeier Hansson
c407c4c590
Merge pull request #670 from zaborowskimichal/feat-precise-media-control
Add precise volume/brightness controls with alt modifier
2025-08-11 20:15:50 +02:00
Michal Zaborowski
1e54f06570 feat: add precise media control shortcut 2025-08-11 19:47:34 +02:00
Richard Macklin
793b346d1d Fix a handful of typos 2025-08-11 10:13:44 -07:00
David Heinemeier Hansson
539eb240be Migration to fit entire icon for update-available in waybar 2025-08-11 18:52:33 +02:00
David Heinemeier Hansson
d75cac05c8 Ensure entire icon will fit 2025-08-11 18:50:02 +02:00
David Heinemeier Hansson
79bdb151d1
Merge pull request #661 from basecamp/dev
Omarchy v1.13.0
2025-08-11 18:28:57 +02:00
David Heinemeier Hansson
4be9053d68 Merge branch 'master' into dev 2025-08-11 18:28:03 +02:00
David Heinemeier Hansson
b933f1f4cd Autolaunch not working for Helix 2025-08-11 18:12:56 +02:00
David Heinemeier Hansson
cd8a6bb29a Fix app launch name for cursor 2025-08-11 18:07:42 +02:00
David Heinemeier Hansson
6f6c50c573 Fix icon for PHP vanilla install 2025-08-11 18:04:23 +02:00
David Heinemeier Hansson
6dd7829886 Still need success on exit 2025-08-11 17:52:01 +02:00
David Heinemeier Hansson
26e3cc0b8c Make the guard step by step 2025-08-11 17:49:21 +02:00
David Heinemeier Hansson
16c671adf0 Be explicit about success and skip all guards once user said proceed anyway 2025-08-11 17:29:18 +02:00
David Heinemeier Hansson
46fbe16dd4 Old habit 2025-08-11 17:25:10 +02:00
David Heinemeier Hansson
08982922eb Remove needless comment 2025-08-11 17:17:46 +02:00
David Heinemeier Hansson
31ab6b4952 Protect against running on something other than x86_64 too
Co-authored-by: @daltonbr
Closes #628
2025-08-11 17:15:38 +02:00
RaphaelKimmig
76c7956d15
fix: lock 1password right away, not after unlock (#644) 2025-08-11 17:10:52 +02:00
Alexandre Perreault
e6a253efaa
Add noscreenshare windowrule to 1password to block accidental leaks (#663) 2025-08-11 17:09:02 +02:00
David Heinemeier Hansson
389f02e6ed No longer need to manually set $OMARCHY_PATH 2025-08-11 17:07:42 +02:00
Shigeto Kumagai
ccbe7c817b
Omarchy-version command (#565)
* omarchy-version alias

* instead of alias, created command omarchy-version

* remove previously added alias, use omarchy-version command, instead

* set OMARCHY_PATH in the script

* updated OMARCHY_PATH
2025-08-11 17:07:17 +02:00
David Heinemeier Hansson
1dc3330480 And and 2025-08-11 17:06:20 +02:00
David Heinemeier Hansson
bc6fa48155 Allow a user to continue installing on their own accord and add check for root 2025-08-11 17:05:31 +02:00
David Heinemeier Hansson
06103d4258
Omarchy is exclusively for vanilla Arch without Gnome or KDE installed (#524) 2025-08-11 17:00:19 +02:00
David Heinemeier Hansson
e0edb8c660 Restart Waybar so update-available icon does not hang around
Co-authored-by: @LeonardoTrapani
Closes #541
2025-08-11 16:58:01 +02:00
David Heinemeier Hansson
30e7a323b8 Fix rm of protected file 2025-08-11 16:44:58 +02:00
Ryan Hughes
1c5a17f852
Disable systemd-networkd-wait-online (#645) 2025-08-11 16:43:38 +02:00
Ryan Hughes
c8e848530a
Add mise to UWSM path (#654) 2025-08-11 16:40:08 +02:00
David Heinemeier Hansson
b6a1d7643d Add migration for replacing missing icon for Audio Settings 2025-08-11 16:35:09 +02:00
David Heinemeier Hansson
854a9e6427 Replace missing icon for wiremix 2025-08-11 16:33:25 +02:00
David Heinemeier Hansson
6c4571f2ca Have to touch manually since we are relaunching from migration directly 2025-08-11 16:07:51 +02:00
David Heinemeier Hansson
7a1976a659 Improve description. 2025-08-11 16:06:10 +02:00
David Heinemeier Hansson
99d3cc113e We unfortunately need to run the relaunch immediately 2025-08-11 16:04:26 +02:00
David Heinemeier Hansson
c5a91b1e0f Need to export OMARCHY_PATH too 2025-08-11 15:57:25 +02:00
David Heinemeier Hansson
6a26a37c48 Need to export first! 2025-08-11 15:56:30 +02:00
David Heinemeier Hansson
03a4223be9 Need to have the PATH change run as the first migration or all others will fail
It needs to include omarchy/bin by default too
2025-08-11 15:52:28 +02:00
David Heinemeier Hansson
d12b194227 Add migration to tweak the tooltip for the Omarchy Menu 2025-08-11 15:35:59 +02:00
David Heinemeier Hansson
ddf9498f0a Improve tooltip for Omarchy menu 2025-08-11 15:30:57 +02:00
David Heinemeier Hansson
ba40f6349e Set the path so we can always rely on it during install 2025-08-11 15:06:39 +02:00
David Heinemeier Hansson
0fd360e94f Group confs and runtimes together 2025-08-11 13:21:46 +02:00
David Heinemeier Hansson
199a9c805d Fix menus popping 2025-08-11 12:32:09 +02:00
David Heinemeier Hansson
34ccff4cf6 Better fit of windows 2025-08-11 12:30:02 +02:00
David Heinemeier Hansson
0aedef58c9 Ensure this isn't closed with the installing terminal 2025-08-11 12:26:30 +02:00
David Heinemeier Hansson
f67cb1dbff Reduce risk of wrapping logo 2025-08-11 12:17:28 +02:00
David Heinemeier Hansson
c61ef71653 Add dedicated Install > Gaming menu for Steam, RetroArch, and Minecraft 2025-08-11 12:13:57 +02:00
Brosseau Valentin
5be5dede6b
Fix missing defaults PHP extensions to create Laravel Project (#630)
* Fix missing default PHP extensions to create laravel Project

* iconv is required for Symfony project

* Add PHP only installation

* Add PHP only option in the menu
2025-08-10 22:12:21 +02:00
David Heinemeier Hansson
7d3d7e264b Split out PHP into its own menu 2025-08-10 21:03:08 +02:00
David Heinemeier Hansson
7929988901 Slim down the verbiage 2025-08-10 21:02:57 +02:00
David Heinemeier Hansson
cb6134076f Style 2025-08-10 21:02:44 +02:00
David Heinemeier Hansson
0a3916011c Brand name is .NET 2025-08-10 20:46:00 +02:00
Brosseau Valentin
4b6e8962ca
Better PHP dev-env init (#624)
* Extract logic to avoid adding composer in the path multiple times and add Symfony

* Add missing usage

* Use the official script to install Symfony installer

* Use AUR package

* Move PHP and Composer install in function to avoid duplication.

* Add explicit usage for symfony-cli

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-10 20:45:47 +02:00
David Heinemeier Hansson
1d2fe96916 Missing ;; 2025-08-10 20:41:13 +02:00
David Heinemeier Hansson
36013ec2d9 Add Zig and Dotnet 2025-08-10 20:40:24 +02:00
MACHO MAN
1104951d7a
Update omarchy-install-dev-env with Zig (#595)
Added Zig because it uses "mise use" install so very easy to add-in

My first ever commit woohoo!

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-10 20:37:24 +02:00
David Heinemeier Hansson
eb604e3e54 Breakout JavaScript options into their own submenu 2025-08-10 20:35:49 +02:00
David Heinemeier Hansson
5049640cfe Style 2025-08-10 20:35:31 +02:00
David Heinemeier Hansson
ab43b036a1 Add Deno 2025-08-10 20:35:23 +02:00
David Heinemeier Hansson
86c967352b Rely on Omarchy bin being part of PATH everywhere 2025-08-10 20:30:39 +02:00
David Heinemeier Hansson
7e28038687 Now being set system wide 2025-08-10 20:25:28 +02:00
David Heinemeier Hansson
d9d847fd71 Break-out omarchy-update so we can update each step independently and have changes apply to the active update 2025-08-10 20:23:29 +02:00
David Heinemeier Hansson
a23a48594f Set OMARCHY_PATH systemwide as well 2025-08-10 20:23:02 +02:00
David Heinemeier Hansson
a5dacd5c1d We need relaunches or reboots 2025-08-10 20:14:41 +02:00
David Heinemeier Hansson
8d20626534 Better spacing 2025-08-10 20:12:20 +02:00
David Heinemeier Hansson
72a1d81d20 Validate preconditions together 2025-08-10 20:12:16 +02:00
David Heinemeier Hansson
610ec4a398 Fix indentation 2025-08-10 20:09:03 +02:00
David Heinemeier Hansson
7e4da388bf Be brief (then message will also fit in the window!) 2025-08-10 20:04:22 +02:00
Ryan Hughes
b2eb1b08a4
Add ~/.local/share/omarchy/bin to systemwide PATH (#602)
* Add omarchy to system path

* Remove unnecessary duplicate

* Remove path def since it's global now

* Migration for system-wide path

* Remove debug code

* Refresh after update

* Add common state script

* Restart on state detected

* Set state instead

* Export own path for menu
2025-08-10 19:58:44 +02:00
Ryan Hughes
94aa9b688f
Reduce Walker config to overrides + adhere to system font (#620)
* Reduce to only have overrides

* Change font to pick up system font

* Add migration

* Add walker restart to pick up new font
2025-08-10 18:40:31 +02:00
David Heinemeier Hansson
dfe7ea24b3 Flip order of includes around so user settings take precedence over Omarchy defaults
Closes #588
2025-08-10 15:30:13 +02:00
devmobasa
41ba61b760
Add .NET installation option to the development environment script (#615)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-10 15:30:03 +02:00
Shigeto Kumagai
4fb0d59a82
About.desktop fixed font size (#566)
* instead of alias, created command omarchy-version

* Revert "instead of alias, created command omarchy-version"

This reverts commit 87e45db6d54a3441c7d544a2d054f2823bce271e.

wrong commit to dev

* Fix font size of About so it will stay in similar size
2025-08-10 15:25:02 +02:00
David Heinemeier Hansson
4c4792f36f Suggest something that doesn't conflict with the Omarchy Menu launching 2025-08-10 15:18:57 +02:00
Brosseau Valentin
e8d98c6418
Use system wide package manager to install a package and install Laravel for the current user. (#618) 2025-08-10 14:17:47 +02:00
David Heinemeier Hansson
af00a902cd Add extra Osaka Jade background image 2025-08-10 13:53:09 +02:00
Justin Lowry
38bf472dbd
add new Osaka Jade background (#589)
Co-authored-by: Justin Lowry <j.lowry@hey.com>
2025-08-10 13:51:47 +02:00
David Heinemeier Hansson
d23ce0f914 Add Ocaml option to install dev menu 2025-08-10 13:42:51 +02:00
Florian Hammerschmidt
b40a5a9a9f
Add OCaml (#598)
* Add OCaml

Add OCaml according to https://ocaml.org/install#linux_mac_bsd

I included also the development environment (LSP and some tools) as I figured this would be actually omakase but I can also remove it if we want to keep it clean.

* small fix
2025-08-10 13:41:06 +02:00
David Heinemeier Hansson
4237807bc1 Fix spelling and description 2025-08-10 10:17:22 +02:00
Florian Beer
4df374205f
Add Laravel (#594) 2025-08-09 22:48:57 +02:00
David Heinemeier Hansson
2e6e1c5bca Add Rust and Java options too 2025-08-09 22:40:55 +02:00
David Heinemeier Hansson
616381833c Add Bun as an option too 2025-08-09 22:34:57 +02:00
David Heinemeier Hansson
06345c7e25 Add Install > Development for setting up Rails and other mise options 2025-08-09 22:27:47 +02:00
David Heinemeier Hansson
1484cbb7d7 Add Install > Service menu with Tailscale added 2025-08-09 21:30:26 +02:00
David Heinemeier Hansson
528ab6bfd7 Add Helix as an editor option 2025-08-09 21:15:58 +02:00
David Heinemeier Hansson
6015b9c6ef Add Discord as a default webapp
Co-authored-by: @robzolkos
Closes #567
2025-08-09 19:42:33 +02:00
Maximiliano Guzenski
f6d5df5a89
Package manager usability improvements (#569)
* better pkg manager with shotcuts

* removed ctrl-d, it conflict with terminal

* reveal keybinds to user

* We don't need yayf any more now we have full integration in Omarchy menu

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-09 19:34:01 +02:00
David Heinemeier Hansson
f06dd90429 Add Sublime Text as an Editor option
For @rosapolis and @jasonfried!
2025-08-09 18:02:36 +02:00
David Heinemeier Hansson
f63e777c9a Use tag picker for file picker apps
And include sublime_text, since it doesn't use xdg-desktop-portal-gtk
2025-08-09 17:56:57 +02:00
David Heinemeier Hansson
0b31f3139f Fix selection 2025-08-09 17:47:18 +02:00
David Heinemeier Hansson
90ba44f725 Fix opencode spelling to match proper branding
Sorry @thdxr!
2025-08-08 23:04:45 +02:00
David Heinemeier Hansson
abc0005893 Merge branch 'master' into dev 2025-08-08 21:12:20 +02:00
RaphaelKimmig
ba0666999e
Lock 1password on screen lock (#564)
* feat: lock 1password on screen lock

* chore: add migration for omarchy-lock-screen
2025-08-08 21:11:35 +02:00
David Heinemeier Hansson
c07c5652cb Don't let chromium save dialogue get too big 2025-08-08 20:18:05 +02:00
David Heinemeier Hansson
9d561fe34d Use a headline to explain what is already up to date 2025-08-08 18:07:22 +02:00
David Heinemeier Hansson
4ab3ff8349 Set default DNS to Cloudflare (backup to Google) and tune MTU probing for more reliable SSH 2025-08-08 18:05:10 +02:00
David Heinemeier Hansson
9ae0af7b21 Solve common flakiness with SSH 2025-08-08 18:03:19 +02:00
David Heinemeier Hansson
61032ba4d0 Set Cloudflare as the default DNS with Google as backup
Solves a bunch of problems with shitty local DNS
2025-08-08 18:00:30 +02:00
David Heinemeier Hansson
32e091d2e5 Add a tooltip to the waybar update available block 2025-08-08 17:51:19 +02:00
David Heinemeier Hansson
4d94f02584
Merge pull request #559 from basecamp/dev
Omarchy 1.12.1
2025-08-08 17:35:06 +02:00
David Heinemeier Hansson
f23e844340 Waybar actually autodetects css changes 2025-08-08 17:34:03 +02:00
David Heinemeier Hansson
e567e9ee8a A bit more space 2025-08-08 17:31:28 +02:00
David Heinemeier Hansson
b0f48ca585 Update OS icon in About from Windows to Arch 2025-08-08 17:30:57 +02:00
David Heinemeier Hansson
375210f5c8 Give About more room to breathe 2025-08-08 17:27:48 +02:00
David Heinemeier Hansson
0c1419b725 This ain't windows, bro! 2025-08-08 17:13:39 +02:00
David Heinemeier Hansson
5624fc7e5e Highlight current font as well 2025-08-08 17:02:00 +02:00
David Heinemeier Hansson
eb589b012e Move together to other #item defintion 2025-08-08 17:01:51 +02:00
David Heinemeier Hansson
1b485efcf5 Highlight the current power profile too 2025-08-08 16:54:06 +02:00
David Heinemeier Hansson
c97de217b3 Use walker to highlight current selection 2025-08-08 15:56:16 +02:00
David Heinemeier Hansson
3566ecfc89
Merge pull request #561 from catlee/patch-1
Fix git usage in migration script
2025-08-08 15:36:00 +02:00
David Heinemeier Hansson
27607c1573 Use existing reloader 2025-08-08 15:28:56 +02:00
David Heinemeier Hansson
aa3195385d Correct plurality 2025-08-08 15:15:01 +02:00
David Heinemeier Hansson
3db8028315 Correct spelling 2025-08-08 15:13:46 +02:00
David Heinemeier Hansson
f4ff108038 Two more commands for presentation 2025-08-08 15:12:26 +02:00
David Heinemeier Hansson
f33d004bc9 More commands that should not present themselves 2025-08-08 15:10:51 +02:00
David Heinemeier Hansson
4f1a87c7e3 Add update/restart process menu 2025-08-08 15:08:42 +02:00
David Heinemeier Hansson
567b05c489 Use present_terminal in omarchy-menu to do fancy command presentation
Then the individual commands can be clean
2025-08-08 15:08:27 +02:00
David Heinemeier Hansson
3d489382e4 No need to clear and wait for key to remove instead of just doing it after 2 seconds 2025-08-08 15:05:38 +02:00
David Heinemeier Hansson
485805fab3 Try ignoring diff return value instead 2025-08-08 14:42:44 +02:00
David Heinemeier Hansson
cbb9cc22e5 Try to run this in a subshell instead 2025-08-08 14:39:56 +02:00
Chris AtLee
c7e5428df9
Fix git usage in migration script
A user may not have `co` aliased to `checkout` and then will have errors running the migration script.
2025-08-08 08:35:32 -04:00
David Heinemeier Hansson
67e0b6a4e0 Ensure this completes 2025-08-08 13:36:07 +02:00
David Heinemeier Hansson
631c2071b7 Migration to fix expand icon margin 2025-08-08 13:35:01 +02:00
David Heinemeier Hansson
a49bd12f44 Also just use the normal CaskaydiaMono Nerd Font
Then we are compatible with the new font switcher
2025-08-08 13:34:50 +02:00
David Heinemeier Hansson
4ab46ef687 Fix tray margin to match the others 2025-08-08 13:32:40 +02:00
David Heinemeier Hansson
9dc12c1d3e Fix missing comma for windowrule 2025-08-08 13:20:08 +02:00
David Heinemeier Hansson
af84d085f0 Rename omarchy-setup-* scripts that should have been omarchy-install-* 2025-08-08 13:04:58 +02:00
David Heinemeier Hansson
1cd6feed43 Add Install > AI and breakout Install > Style 2025-08-08 13:03:22 +02:00
David Heinemeier Hansson
39f8add864 Extract helper 2025-08-08 12:46:51 +02:00
David Heinemeier Hansson
fe92a78f21 Use full path for omarchy-update on waybar icon 2025-08-07 16:26:32 +02:00
David Heinemeier Hansson
6c75e705e8 Ensure Osaka Theme is checked out
To deal with the past bad migration
2025-08-07 14:10:12 +02:00
David Heinemeier Hansson
7bb9214c66 Fix the osaka jade theme migration 2025-08-07 13:58:48 +02:00
David Heinemeier Hansson
7eb661c9c8 Fix transcode-png2jpg 2025-08-07 13:38:01 +02:00
David Heinemeier Hansson
666dbd8f39
Merge pull request #528 from basecamp/dev
Omarchy 1.12.0
2025-08-07 13:12:01 +02:00
Johan Gyllenspetz
308033bd10
Allow selecting themes for deletion (#533)
Co-authored-by: Johan Gyllenspetz <gyllen@hey.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-07 13:05:18 +02:00
David Heinemeier Hansson
4a468041cb Fix comments and description 2025-08-07 13:03:50 +02:00
David Heinemeier Hansson
97e3902455 Merge branch 'master' into dev 2025-08-07 13:02:22 +02:00
David Heinemeier Hansson
b75065c4cf Ensure we are running the latest Walker and that its been restarted 2025-08-06 23:28:50 +02:00
David Heinemeier Hansson
8c8cf7aadb Add migration to fix that broken multicastdns issue for printer setups 2025-08-06 23:21:29 +02:00
David Heinemeier Hansson
722fa73bc8 No need to carry this 2025-08-06 23:16:12 +02:00
Manuel
6b8917450f
Make Screensaver Background Color Black (#526)
* add sceensaver alacritty config file and changed screensaver cmd

* Move the screensaver config into defaults

Since its not meant to be user edited

---------

Co-authored-by: Manu <manuel.ramsaier@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-06 22:53:15 +02:00
David Heinemeier Hansson
26b09bb218 It is monospace 2025-08-06 22:02:46 +02:00
David Heinemeier Hansson
46d58ff0df Have Style > Font also set for Waybar, SwayOSD, and fontconfig 2025-08-06 22:01:23 +02:00
David Heinemeier Hansson
08bc9fcaea Better wording 2025-08-06 21:40:22 +02:00
David Heinemeier Hansson
81df3ce171 Add basic power profiles setup menu
Still need to be able to reveal which is the current profile
2025-08-06 21:36:07 +02:00
Glenn Oppegard
0fcda80630
Fix disabling of resolved Multicast DNS (#521) 2025-08-06 21:01:22 +02:00
Emmanuel Pastor
6348a0ad08
Fix wrong workspace numbers in description (#522) 2025-08-06 21:00:37 +02:00
David Heinemeier Hansson
43a31a10d0 Font menu needs to be wider 2025-08-06 20:28:48 +02:00
David Heinemeier Hansson
2737a76a85 Give the font cache 2 seconds to update before setting the font 2025-08-06 20:28:41 +02:00
David Heinemeier Hansson
ff0aedd0eb Add font installer menu with typical programmer fonts 2025-08-06 16:01:04 +02:00
David Heinemeier Hansson
bade5b0d34 Pull the font-menu into omarchy-menu 2025-08-06 15:50:51 +02:00
David Heinemeier Hansson
58fbda80ef Only attempt operation if a package name is selected 2025-08-06 15:19:53 +02:00
David Heinemeier Hansson
e3a3b98e0a Add dedicated section for installing popular programming editors 2025-08-06 14:59:07 +02:00
adcv
8002586392
small fix for theme-remove menu selection items (#505) 2025-08-06 13:49:46 +02:00
David Heinemeier Hansson
180dc7c9b5 Merge branch 'master' into dev 2025-08-06 13:44:34 +02:00
David Heinemeier Hansson
88969588c4 Add Osaka Jade as default theme 2025-08-06 13:44:21 +02:00
Justin Lowry
8281533b54 Add Osaka Jade theme to default theme set. (#514)
* Add Osaka Jade Theme

* Use jpg for bg for lower size with no quality difference

---------

Co-authored-by: Justin Lowry <j.lowry@hey.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-06 13:42:48 +02:00
David Heinemeier Hansson
d72f716c83 Add transcode functions 2025-08-06 13:34:19 +02:00
Justin Lowry
1d29c32fe5
Add Osaka Jade theme to default theme set. (#514)
* Add Osaka Jade Theme

* Use jpg for bg for lower size with no quality difference

---------

Co-authored-by: Justin Lowry <j.lowry@hey.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-06 13:28:08 +02:00
David Heinemeier Hansson
41249a271a Fit within the logo width 2025-08-06 08:44:53 +02:00
David Heinemeier Hansson
5ff0e82621 Do updatedb after installing a new package
So you can always find what's been installed via locate
2025-08-05 18:16:36 +02:00
David Heinemeier Hansson
1746c7556c
Merge pull request #500 from basecamp/dev
Omarchy v1.11.0
2025-08-05 17:23:23 +02:00
David Heinemeier Hansson
a7798a57bc Make updating checking resilient against network being unavailable 2025-08-05 17:13:37 +02:00
David Heinemeier Hansson
9292c29640 Ensure we continue 2025-08-05 16:41:33 +02:00
David Heinemeier Hansson
db441e8813 Try to run this in a subshell to prevent the exit 2025-08-05 16:37:57 +02:00
David Heinemeier Hansson
137c24454f Ensure they can all run from Walker
Which does not have the bash-powered PATH
2025-08-05 16:35:28 +02:00
David Heinemeier Hansson
b6325ea810 No longer used 2025-08-05 16:30:34 +02:00
David Heinemeier Hansson
fc11ce61cc Add figma as a default web app 2025-08-05 16:28:58 +02:00
David Heinemeier Hansson
d9efaac906 Start hyprsunset on demand instead of needing it to run constantly 2025-08-05 16:25:08 +02:00
David Heinemeier Hansson
881af9b7d6 No longer need the functions 2025-08-05 15:58:53 +02:00
David Heinemeier Hansson
581937a204 Need the full path 2025-08-05 15:58:39 +02:00
David Heinemeier Hansson
d676f1a16f Link to the extra themes index 2025-08-05 15:44:58 +02:00
David Heinemeier Hansson
b4e9465970 Use the new omarchy-webapp-install command 2025-08-05 15:34:45 +02:00
David Heinemeier Hansson
bd26465912 Give you an easy way to install a new background image 2025-08-05 15:23:02 +02:00
David Heinemeier Hansson
1a4b2d9420 Somehow lost the bindd versions 2025-08-05 15:11:04 +02:00
David Heinemeier Hansson
59b1d690d0 We now have this in the About screen 2025-08-05 14:19:58 +02:00
David Heinemeier Hansson
1c4c42bf76 Make menu disappear after changing theme 2025-08-05 14:10:58 +02:00
David Heinemeier Hansson
8c46ff9303 Help people realize what they're editing 2025-08-05 13:55:10 +02:00
David Heinemeier Hansson
6d7cbf0d05 Setup configs menu with auto-restart 2025-08-05 13:54:17 +02:00
David Heinemeier Hansson
14d652b63d Use max volume 100 as default 2025-08-05 13:45:49 +02:00
David Heinemeier Hansson
e0e21b37d7 Don't like the SwayOSD overlay when max volume is above 100% 2025-08-05 13:45:37 +02:00
David Heinemeier Hansson
67d830cc39 Extract helper for nvim editing 2025-08-05 12:46:12 +02:00
David Heinemeier Hansson
a4bed3029e Offer to setup bindings and input if those files are split out 2025-08-05 12:40:59 +02:00
David Heinemeier Hansson
7e1ca837b8 Offer to reorganize hyprland.conf as is done in the new config 2025-08-05 12:35:06 +02:00
David Heinemeier Hansson
2c73e48172 Split up the default .config/hypr/hyprland.conf to be easier to tailor with less risk of overwritting 2025-08-05 12:17:37 +02:00
David Heinemeier Hansson
206dc44649 Correct use from cli 2025-08-05 12:08:30 +02:00
David Heinemeier Hansson
58bdc4c307 Avoid duplication 2025-08-05 12:02:38 +02:00
David Heinemeier Hansson
7e2676d565 Add neovim to learning
But would be nice with a better tutorial for newcomers
2025-08-05 11:53:45 +02:00
David Heinemeier Hansson
9bd2d6e0c1 Add monitor and hyprland config links too 2025-08-05 11:51:16 +02:00
David Heinemeier Hansson
678882810e Moved web app functions to full omarchy TUI commands 2025-08-05 11:40:35 +02:00
David Heinemeier Hansson
08ed9a5dff Add web app management to Omarchy menu 2025-08-05 11:39:57 +02:00
David Heinemeier Hansson
59fefd34b1 Match the other installer/removers 2025-08-05 11:39:46 +02:00
David Heinemeier Hansson
e31745e67d Don't leave lingering logo around 2025-08-05 11:36:33 +02:00
David Heinemeier Hansson
ae0e711e39 Give a hint for the hotkey 2025-08-05 10:50:13 +02:00
David Heinemeier Hansson
494c140859 Audio more common 2025-08-05 10:47:37 +02:00
David Heinemeier Hansson
d1b09e27a0 Add remove menu and tune up theme-remove script 2025-08-05 10:30:44 +02:00
David Heinemeier Hansson
2cd841a687 Explain what we are doing before asking for sudo 2025-08-05 09:42:25 +02:00
David Heinemeier Hansson
a75c9ef072 Add updating configs from defaults 2025-08-05 09:37:23 +02:00
David Heinemeier Hansson
8dc198c57f Use full path so they can safely be run from Walker menu 2025-08-05 09:32:35 +02:00
David Heinemeier Hansson
3a06b639c3 Add Bash learnings too 2025-08-05 09:18:51 +02:00
David Heinemeier Hansson
ea31b4a090 Add Arch wiki to learning list 2025-08-05 09:16:01 +02:00
David Heinemeier Hansson
ea0da160b8
Merge pull request #494 from DavidHoenisch/master
improved error handling in fido2 setup
2025-08-05 08:34:27 +02:00
DavidHoenisch
1b17a049ff improved error handling to exist on mistyped pin instead of failing silently 2025-08-04 22:03:42 -07:00
David Heinemeier Hansson
8170cb9ed4 Unified done showing and command style 2025-08-04 20:51:43 +02:00
David Heinemeier Hansson
82bcee5624 Fix grep 2025-08-04 20:42:20 +02:00
David Heinemeier Hansson
a8a8b017d6 Allow menu to install third party themes 2025-08-04 20:40:52 +02:00
David Heinemeier Hansson
e875a5d344 Old Omarchy TUI is gone! 2025-08-04 20:40:41 +02:00
David Heinemeier Hansson
4f8d758b07 Give it color 2025-08-04 20:30:00 +02:00
David Heinemeier Hansson
fc449efdb1 No longer needed 2025-08-04 20:28:44 +02:00
David Heinemeier Hansson
57443e74ad Show logo now that we are coming from the new menu 2025-08-04 20:26:33 +02:00
David Heinemeier Hansson
9c70a8e187 Just using omarchy-update now 2025-08-04 20:23:38 +02:00
David Heinemeier Hansson
fe396b305c Stray comment 2025-08-04 20:23:00 +02:00
David Heinemeier Hansson
2e117b57f0 Need to refresh waybar for the new Omarchy menu 2025-08-04 20:20:24 +02:00
David Heinemeier Hansson
eda03fcfe1 Try with Start instead 2025-08-04 20:18:49 +02:00
David Heinemeier Hansson
6dca3e1717 Renaming and order 2025-08-04 19:50:53 +02:00
David Heinemeier Hansson
9c4a45537a Reveal omarchy menu from waybar 2025-08-04 19:50:49 +02:00
David Heinemeier Hansson
b4a6550b29 Use new omarchy-menu for everything 2025-08-04 19:50:36 +02:00
David Heinemeier Hansson
d599a98a76 Allow updating themes 2025-08-04 19:50:03 +02:00
David Heinemeier Hansson
b2ab061e3c Rename function 2025-08-04 19:48:15 +02:00
David Heinemeier Hansson
7e84755c75 Extract theme-list and theme-set so they can be used more easily in any menu 2025-08-04 19:44:42 +02:00
David Heinemeier Hansson
552fbb47fe Overhaul the omarchy-menu 2025-08-04 18:33:38 +02:00
David Heinemeier Hansson
de1330cd9f Add standalone script for setting up the docker DBs
So we can use it via the new menu system
2025-08-04 18:27:04 +02:00
David Heinemeier Hansson
a9004662ca Make it easier to use the yay fzf installer/uninstaller via menu 2025-08-04 18:26:36 +02:00
David Heinemeier Hansson
62975f0a23 Prepare for use in the new menu system 2025-08-04 18:26:08 +02:00
David Heinemeier Hansson
29f4ee3524 Removed by mistake 2025-08-04 18:25:05 +02:00
David Heinemeier Hansson
3acb5c2a83 Add setting up fingerprint too 2025-08-04 16:49:28 +02:00
David Heinemeier Hansson
8e1beac707 Link to the manual from here too 2025-08-04 16:46:44 +02:00
David Heinemeier Hansson
15d4ed80a9 Add command to update timezone too 2025-08-04 16:40:48 +02:00
David Heinemeier Hansson
575368e8c4 Migration to restart walker to pick up menu selections 2025-08-04 12:59:12 +02:00
David Heinemeier Hansson
fb5a56474d Allow filtering on all the walker menus 2025-08-04 12:58:32 +02:00
David Heinemeier Hansson
45b6d96be0 Allow the wide menu to be filtered 2025-08-04 12:55:05 +02:00
David Heinemeier Hansson
256ce145ba Better ordering 2025-08-04 12:50:09 +02:00
David Heinemeier Hansson
4c0d38616e Better grouping 2025-08-04 12:50:05 +02:00
David Heinemeier Hansson
02043fa631 Turn screensaver binding into a full cmd menu 2025-08-04 12:44:19 +02:00
David Heinemeier Hansson
d16c178eb4 Excess CR 2025-08-04 12:43:21 +02:00
David Heinemeier Hansson
5e092c92ce Migration to update update-available icon in the waybar 2025-08-04 12:19:17 +02:00
David Heinemeier Hansson
93980e6138 No backup if user config doesn't already exist 2025-08-04 12:17:42 +02:00
David Heinemeier Hansson
f223bbcb98 Use more conventional icon for "updates available" 2025-08-04 12:08:43 +02:00
David Heinemeier Hansson
7540bddee1 Toggle instead of stack hyprpicker 2025-08-04 11:54:04 +02:00
David Heinemeier Hansson
b358990a70 Set default size 2025-08-04 11:42:04 +02:00
David Heinemeier Hansson
9855693eb1 Position picture-in-picture windows correctly (closes #260)
Co-authored-by: @ElFitaFlores
2025-08-04 11:33:00 +02:00
David Heinemeier Hansson
1b650c2503
Merge pull request #479 from ryanrhughes/add-touchpad-gestures
Add touchpad gestures for Chromium
2025-08-04 11:18:53 +02:00
David Heinemeier Hansson
d518557b6f
Merge pull request #482 from ryanrhughes/add-theme-colors-to-tui
Add appropriate colors to TUI
2025-08-04 11:17:55 +02:00
Ryan Hughes
92e62ac26d Add appropriate colors to tui 2025-08-04 02:00:06 -04:00
Ryan Hughes
6478f8b9f8 Add migration 2025-08-03 20:03:31 -04:00
Ryan Hughes
43d1b7304a Add touchpad gestures 2025-08-03 19:57:33 -04:00
David Heinemeier Hansson
1306085102
Merge pull request #471 from rmacklin/fix-timeout
Fix hypridle timeout to actually be 2.5min
2025-08-03 20:12:13 +02:00
David Heinemeier Hansson
755633cd95 Documentation 2025-08-03 20:07:46 +02:00
David Heinemeier Hansson
63179c7d80 Add format-drive function to wipe drives 2025-08-03 19:59:25 +02:00
Richard Macklin
5a29322bf8 Fix hypridle timeout to actually be 2.5min
The intent was for this to be 2.5 minutes but 180s is 3 minutes.
2025-08-03 10:23:08 -07:00
David Heinemeier Hansson
fc911e16e6 Add script to update hyprland itself
Nice if you don't make any adjustments yourself
2025-08-03 16:57:53 +02:00
David Heinemeier Hansson
f21a808bc5
Merge pull request #467 from basecamp/dev
Omarchy 1.10.0
2025-08-03 16:10:52 +02:00
David Heinemeier Hansson
2712f268c8 Increase time before screensaver starts to 2.5 minutes (from 1 minute) 2025-08-03 10:00:21 -04:00
David Heinemeier Hansson
25ed6460e0 Forgot to add waybar refresh for auto-update icon to existing installations 2025-08-03 15:44:39 +02:00
David Heinemeier Hansson
d3fff87864 You really shouldn't have to mess with these regularly, so let's just use Update for Omarchy only 2025-08-03 15:34:31 +02:00
David Heinemeier Hansson
a9b9cbfa34 Must detach after restart 2025-08-03 15:30:49 +02:00
David Heinemeier Hansson
d84b521a19 Cleaner still 2025-08-03 14:09:07 +02:00
David Heinemeier Hansson
83e5faf224 Simplify migrations script 2025-08-03 14:07:39 +02:00
David Heinemeier Hansson
cb08f4ccd2 Extend time for battery warning to 30 seconds
Make it harder to miss. Closes #392.
2025-08-03 14:02:57 +02:00
David Heinemeier Hansson
1dc8379533 Add migration for gvfs-mtp 2025-08-03 13:54:20 +02:00
Erik Brüggemann
c78133251a
feat: add gvfs-mtp (#466)
To view the contents of an Android device's storage via MTP in nautilus,
we need the corresponding plugin.
2025-08-03 13:52:47 +02:00
David Heinemeier Hansson
fb05e59bf6 Extract app-specific tweaks into their own files 2025-08-03 13:47:26 +02:00
David Heinemeier Hansson
5344885176 Its enough that its included in the Omarchy TUI 2025-08-03 13:10:29 +02:00
David Heinemeier Hansson
2278b400dd Enable auto-discovery of network printers
Co-authored-by: @rockorager
2025-08-03 13:07:23 +02:00
David Heinemeier Hansson
4b027a9242 Move out of conditional in case user has already installed hyprsunset 2025-08-03 06:47:05 -04:00
Ryan Hughes
e7f086370d
Make repo configurable (#139) 2025-08-03 12:07:54 +02:00
David Heinemeier Hansson
4c650e53de Migration to refresh walker to show all keybindings 2025-08-03 12:05:33 +02:00
David Heinemeier Hansson
81aeee437c A few more binding description tweaks 2025-08-03 12:03:59 +02:00
David Heinemeier Hansson
9a09d45d6b Increase Walker list max entries to 200 to accomodate all hotkeys 2025-08-03 11:50:31 +02:00
David Heinemeier Hansson
933d18fce3 Expand bind descriptions 2025-08-03 11:48:53 +02:00
Simon Dawson
8f3647c5c5
Use dynamic bindings list in omarchy-menu-keybindings (#300)
* fix: Use dynamic bindings list in omarchy-menu-keybindings

We can use `hyprctl binds` to get a dynamic list of the currently-set
key bindings. This allows for a custom user configuration that is
split into arbitrary config files, and which makes use of `unbind` to
remove default Omarchy key bindings.

* chore: Support optional description for key bindings

If the description is present, use it in the key
bindings menu, instead of displaying some version
of the dispatched command.

* chore: Add some key binding description strings
2025-08-03 11:11:29 +02:00
David Heinemeier Hansson
8ed29e6ce1 Change wording 2025-08-03 11:02:14 +02:00
David Heinemeier Hansson
fe1f6d4c3a Just be consistent 2025-08-03 10:49:38 +02:00
David Heinemeier Hansson
65ba23d0bb Extract omarchy-refresh-hyprsunset 2025-08-03 10:45:39 +02:00
David Heinemeier Hansson
c35311676c Extract function 2025-08-03 10:44:45 +02:00
David Heinemeier Hansson
e1f697f914 Use restart bin extraction 2025-08-03 10:34:50 +02:00
David Heinemeier Hansson
8de2566fa4 Extract omarchy-restart-app 2025-08-03 10:33:34 +02:00
Jaxon Wright
3fb1bf9759
Add Hyprsunset for Blue Light Filtering / Nightlight (#447)
* install hyprsunset when installing other hypr packages

* add hyprsunset to autostart

* add default hyprsunset config to make it do nothing by default

* waybar: add hyprsunset shortcut next to bluetooth shortcut to quickly toggle blue light filtering

* waybar: fix icon switching for hyprsunset widget

* add migration for hyprsunset

* waybar: rename "Blue Light Filter" to "Nightlight"

* waybar: make nightlight module appear next to bluetooth module

* waybar: do not include nightlight module by default

* add omarchy-toggle-nightlight script

* add default keybinding for toggling hyprsunset nightlight (SUPER + CTRL + N)

* waybar: remove nightlight module from config entirely

* waybar: remove nightlight from css

* update hyprsunset migration to skip yay install if already installed

* omarchy-toggle-nightlight: use `omarchy-restart-waybar` script instead of pkill with -SIG

* omarchy-toggle-nightlight: only restart waybar if nightlight is in the waybar config

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-03 10:26:59 +02:00
David Heinemeier Hansson
3a5ef9d841 Ensure screensaver doesn't start while the computer is locked 2025-08-03 10:18:15 +02:00
David Heinemeier Hansson
008ede7bbd Tweaks 2025-08-03 10:02:19 +02:00
David Heinemeier Hansson
c7020ee875
Merge branch 'dev' into dev 2025-08-03 09:47:54 +02:00
David Heinemeier Hansson
1fda1ade8a Increase screensaver font size for looks and performance
Co-authored-by: @precision
2025-08-03 09:45:21 +02:00
David Heinemeier Hansson
cdc37313ad Revert "Merge pull request #464 from rosscondie/feat/vim-navigation-in-walker"
This reverts commit b8275ca5afc49c508ba2547068ab569ff8a7967d, reversing
changes made to 23b9b15936001bc02e6c5750a7384f787e3940b4.
2025-08-03 09:41:15 +02:00
David Heinemeier Hansson
b8275ca5af
Merge pull request #464 from rosscondie/feat/vim-navigation-in-walker
Add Vim-style j/k navigation to walker config
2025-08-03 09:40:12 +02:00
David Heinemeier Hansson
23b9b15936 Convert refresh-compose command into the same bin as everything else 2025-08-03 09:38:40 +02:00
David Heinemeier Hansson
2a2c5c90d1 Cleanup the omarchy-refresh/restart combos 2025-08-03 09:37:04 +02:00
Ross Condie
cf1b671a71 Add Vim-style j/k navigation to walker config 2025-08-03 09:10:45 +02:00
Uriah Welcome
cb79065e5d
Launch the screensaver on all monitors not just the focused one. We
also have to kill the screensaver across all monitors when we exit in
omarch-cmd-screensaver.
2025-08-02 19:51:47 -04:00
David Heinemeier Hansson
5fda6054ce New installations don't need to migrate from what's already there 2025-08-02 22:47:39 +02:00
David Heinemeier Hansson
f4b684f588
Merge pull request #434 from basecamp/dev
Omarchy v1.9.0
2025-08-02 22:36:29 +02:00
David Heinemeier Hansson
631b62927a Better than doing string comparison
Any tag difference means new release
2025-08-02 22:14:16 +02:00
David Heinemeier Hansson
e923be3f0b Split omarchy-migrate into its own command
So it can be updated independently and apply quicker
2025-08-02 22:07:42 +02:00
David Heinemeier Hansson
d0c93e3b8a Also update hyprlock for stopping before updating 2025-08-02 22:00:57 +02:00
David Heinemeier Hansson
54d22e9720 Stop screensaver when locking 2025-08-02 21:56:09 +02:00
David Heinemeier Hansson
f6a459b26b Fix power menu for Screen save 2025-08-02 21:52:36 +02:00
David Heinemeier Hansson
f729004306
Show indicator if update is available (#456)
* Show indicator if update is available

* Language
2025-08-02 21:48:06 +02:00
David Heinemeier Hansson
63840c6e9a Add screensaver as an option in the power menu 2025-08-02 14:44:01 +02:00
David Heinemeier Hansson
34f24cb38a Offer to reboot after Linux kernel has been updated
Closes #377
2025-08-02 14:26:08 +02:00
David Heinemeier Hansson
6ecc09abdb
Start screensaver automatically (#453)
* No need to kill any more since any key will quit

* Command to refresh hypridle

* Start screensaver automatically after a minute

* Add migration
2025-08-02 14:14:03 +02:00
David Heinemeier Hansson
4db468a450 Must use the restarter to prevent stacking! 2025-08-02 14:13:54 +02:00
David Heinemeier Hansson
2823792ba2 Show diff when making a backup and clarify the implementation 2025-08-02 13:54:44 +02:00
David Heinemeier Hansson
b0b2bf30d8 Allow any key to stop the screensaver 2025-08-02 13:41:34 +02:00
David Heinemeier Hansson
343a948ffc Simplify error checking 2025-08-02 13:37:00 +02:00
Ryan Hughes
ceee999853
Prevent Waybar stacking on resume (#448)
* Create omarchy-cmd-restart-waybar

* Replace -SIGUSR2 waybar instances

* Add migration

* Add or statment in case waybar is dead

* Just use omarchy-restart-waybar

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-02 13:21:47 +02:00
brink-lab
d56a2bce2b
Opacity for indicators of empty waybar workspaces (#444)
* Opacity for indicators of empty waybar workspaces

Adds opacity to the workspace indicators on waybar, if the workspace is empty. Makes the indicator appear dimmer to make it easier to find empty workspaces. Purely cosmetic UI tweak.

* Bump up opacity to be easier to read on light themes

* Add migration

* Apply grep to something!

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-02 13:16:51 +02:00
Ryan Hughes
0a16d502f2
Fix Plymouth login positioning in multi-monitor setups + limit password from overflowing (#446)
* Limit bullets to 21 to prevent overflow

* Fix plymouth rendering off center in multi-monitor setups

Co-authored-by: Raphael Kimmig <raphael.kimmig@ampad.de>

* Add migration

---------

Co-authored-by: Raphael Kimmig <raphael.kimmig@ampad.de>
2025-08-02 13:08:56 +02:00
Greg Helding
97dc9e8d50
Update Ristretto neovim.lua for compatibility with plugins expecting MiniIcons Highlights (#449)
* Update neovim.lua

* Update neovim.lua
2025-08-02 13:07:26 +02:00
Ryan Hughes
8aa8d99d8d
Prevent screensaver shifting up (#450)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-02 13:06:09 +02:00
Rob Cameron
0efd63f021
Adds BAT_THEME ENV var (#438) 2025-08-01 23:19:14 +02:00
David Heinemeier Hansson
06d61be018 Try to protect the screensaver from missing tte or pip 2025-08-01 16:05:04 +02:00
David Heinemeier Hansson
7bca5c1903 Make Yaru-blue the default 2025-08-01 14:26:28 +02:00
David Heinemeier Hansson
3d22840543 Allow themes to use a custom icon theme via the icons.theme file
They get to pick from the Yaru color set
2025-08-01 14:23:29 +02:00
Andy Davis
95de571809
Update migration to ensure walker is refreshed after finder prefix was added. (#425)
* Update migration that looks for prefix with '.' as it matches the other prefixes in the file. Also mod walker prefix to use double quotes for consistency to match the others.

* Rename fixed migration to ensure it runs again for all users
2025-08-01 13:32:21 +02:00
David Heinemeier Hansson
8673fa41ba No need for these control characters any more now that we are using Walker 2025-07-31 21:25:50 +02:00
David Heinemeier Hansson
07d88a4b9a Include timezones setup by default! 2025-07-30 23:48:51 +02:00
David Heinemeier Hansson
88e62994d1 Merge branch 'master' into dev 2025-07-30 23:44:41 +02:00
David Heinemeier Hansson
1c2b5ea8e0
Omarchy 1.8.0 (#415)
* Update location of sourced install script

* Add OMARCHY_PATH for easy access

* Formatting

* Enable using finder in walker (#396)

* Enable using finder in walker

* capitalize name property

* Hot reload theme for quick switching

* Use fonts from AUR instead of downloading them directly like an animal

* Include the common JetBrains substitution

* Add a very basic font selector for terminal

* Give the new font selector a bit of room to breathe

* Swap Spotify GUI to TUI

* Correct package name

* Add theme update script (#391)

* Move updating themes from Updates to theme menu

Yeah, it could go in either spot, but since we have one entire category
dedicated to themes, lets keep it there.

* Revert "Correct package name"

This reverts commit 4c46c2208a57aea9caf6a9eb0ffa282ab8a2c87a.

* Revert "Swap Spotify GUI to TUI"

This reverts commit b09d2d68cd65167e7cff5f751caed1fa5ac38dba.

* Added backup timestamps to various omarchy-refresh-* files to prevent clobbering (#402)

* Added backup timestamps to omarchy-refresh-[hyprlock|swayosd|walker|waybar] scripts to prevent data loss if ran multiple times

* Added new script (omarchy-refresh-config) for refreshing various config files with automated backup creation

* update plymouth logo (#406)

* Track migrations via state files to avoid running migrations that have already been performed. (#411)

* Just use set -e instead of manually checking for return values

* Fix migration

* Unused

* Migrate fonts to packages

* No longer needed

* Use fd for better performance on walker finder

* Add walker config refresh to enable the finder

* Dropbox is now an optional setup

---------

Co-authored-by: Shigeto Kumagai <shk@all.daynight.jp>
Co-authored-by: Mohamedsayhii <63726183+Mohamedsayhii@users.noreply.github.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Andy Davis <developer.andy@gmail.com>
Co-authored-by: Taha <paprikataha@gmail.com>
2025-07-30 23:44:27 +02:00
David Heinemeier Hansson
f0b1dd286b Dropbox is now an optional setup 2025-07-30 23:32:17 +02:00
David Heinemeier Hansson
7f66623317 Add walker config refresh to enable the finder 2025-07-30 23:27:21 +02:00
David Heinemeier Hansson
41c40e0e1d Use fd for better performance on walker finder 2025-07-30 23:26:01 +02:00
David Heinemeier Hansson
c1a7f5a4e4 No longer needed 2025-07-30 22:54:50 +02:00
David Heinemeier Hansson
a0aa6862f5 Migrate fonts to packages 2025-07-30 22:54:45 +02:00
David Heinemeier Hansson
231438b2ea Unused 2025-07-30 22:54:33 +02:00
David Heinemeier Hansson
a98adc499a Fix migration 2025-07-30 22:47:34 +02:00
David Heinemeier Hansson
74552b9f6e Just use set -e instead of manually checking for return values 2025-07-30 18:43:10 +02:00
Andy Davis
49c154cb1f
Track migrations via state files to avoid running migrations that have already been performed. (#411) 2025-07-30 18:40:59 +02:00
Taha
51f3d15ead
update plymouth logo (#406) 2025-07-30 16:13:40 +02:00
Andy Davis
ff5630c64f
Added backup timestamps to various omarchy-refresh-* files to prevent clobbering (#402)
* Added backup timestamps to omarchy-refresh-[hyprlock|swayosd|walker|waybar] scripts to prevent data loss if ran multiple times

* Added new script (omarchy-refresh-config) for refreshing various config files with automated backup creation
2025-07-30 16:12:37 +02:00
359 changed files with 3824 additions and 1873 deletions

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=About
Comment=System information from Fastfetch
Exec=alacritty --class=About --title=About -e bash -c 'fastfetch; read -n 1 -s'
Terminal=false
Type=Application
Icon=Arch
Categories=GTK;
StartupNotify=false

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Activity
Comment=System activity from btop
Exec=alacritty --class=Activity --title=Activity -e btop
Terminal=false
Type=Application
Icon=Activity
Categories=GTK;
StartupNotify=false

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Docker
Comment=Manage Docker containers with LazyDocker
Exec=alacritty --class=Docker --title=Docker -e lazydocker
Terminal=false
Type=Application
Icon=Docker
Categories=GTK;
StartupNotify=false

View File

@ -1,221 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Chromium
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[ar]=متصفح الشبكة
GenericName[bg]=Уеб браузър
GenericName[ca]=Navegador web
GenericName[cs]=WWW prohlížeč
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής ιστού
GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gu]=
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=
GenericName[kn]=
GenericName[ko]=
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Tīmekļa pārlūks
GenericName[ml]=
GenericName[mr]=
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador da Internet
GenericName[ro]=Navigator de Internet
GenericName[ru]=Веб-браузер
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[ta]= ி
GenericName[th]=
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[zh_CN]=
GenericName[zh_HK]=
GenericName[zh_TW]=
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
GenericName[bn]=
GenericName[fil]=Web Browser
GenericName[hr]=Web preglednik
GenericName[id]=Browser Web
GenericName[or]=
GenericName[sk]=WWW prehliadač
GenericName[sr]=Интернет прегледник
GenericName[te]= ి
GenericName[vi]=B duyt Web
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[ar]=الدخول إلى الإنترنت
Comment[bg]=Достъп до интернет
Comment[bn]=ি
Comment[ca]=Accedeix a Internet
Comment[cs]=Přístup k internetu
Comment[da]=Få adgang til internettet
Comment[de]=Internetzugriff
Comment[el]=Πρόσβαση στο Διαδίκτυο
Comment[en_GB]=Access the Internet
Comment[es]=Accede a Internet.
Comment[et]=Pääs Internetti
Comment[fi]=Käytä internetiä
Comment[fil]=I-access ang Internet
Comment[fr]=Accéder à Internet
Comment[gu]=
Comment[he]=גישה אל האינטרנט
Comment[hi]= ि
Comment[hr]=Pristup Internetu
Comment[hu]=Internetelérés
Comment[id]=Akses Internet
Comment[it]=Accesso a Internet
Comment[ja]=
Comment[kn]= ಿಿ
Comment[ko]=
Comment[lt]=Interneto prieiga
Comment[lv]=Piekļūt internetam
Comment[ml]=
Comment[mr]=
Comment[nb]=Gå til Internett
Comment[nl]=Verbinding maken met internet
Comment[or]=
Comment[pl]=Skorzystaj z internetu
Comment[pt]=Aceder à Internet
Comment[pt_BR]=Acessar a internet
Comment[ro]=Accesaţi Internetul
Comment[ru]=Доступ в Интернет
Comment[sk]=Prístup do siete Internet
Comment[sl]=Dostop do interneta
Comment[sr]=Приступите Интернету
Comment[sv]=Gå ut på Internet
Comment[ta]=
Comment[te]= ి
Comment[th]=
Comment[tr]=İnternet'e erişin
Comment[uk]=Доступ до Інтернету
Comment[vi]=Truy cp Internet
Comment[zh_CN]=访
Comment[zh_HK]=
Comment[zh_TW]=
Exec=/usr/bin/chromium --ozone-platform=wayland %U
StartupNotify=true
Terminal=false
Icon=chromium
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[am]=
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=
Name[kn]= ಿ
Name[ko]=
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Ca s Mi
Name[zh_CN]=
Name[zh_TW]=
Exec=/usr/bin/chromium --ozone-platform=wayland --new-window
[Desktop Action new-private-window]
Name=New Incognito Window
Name[ar]=نافذة جديدة للتصفح المتخفي
Name[bg]=Нов прозорец инкогнито
Name[bn]=
Name[ca]=Finestra d'incògnit nova
Name[cs]=Nové anonymní okno
Name[da]=Nyt inkognitovindue
Name[de]=Neues Inkognito-Fenster
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
Name[en_GB]=New Incognito window
Name[es]=Nueva ventana de incógnito
Name[et]=Uus inkognito aken
Name[fa]=پنجره جدید حالت ناشناس
Name[fi]=Uusi incognito-ikkuna
Name[fil]=Bagong Incognito window
Name[fr]=Nouvelle fenêtre de navigation privée
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi anoniman prozor
Name[hu]=Új Inkognitóablak
Name[id]=Jendela Penyamaran baru
Name[it]=Nuova finestra di navigazione in incognito
Name[iw]=חלון חדש לגלישה בסתר
Name[ja]=
Name[kn]= ಿ
Name[ko]= 릿
Name[lt]=Naujas inkognito langas
Name[lv]=Jauns inkognito režīma logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw incognitovenster
Name[no]=Nytt inkognitovindu
Name[pl]=Nowe okno incognito
Name[pt]=Nova janela de navegação anónima
Name[pt_BR]=Nova janela anônima
Name[ro]=Fereastră nouă incognito
Name[ru]=Новое окно в режиме инкогнито
Name[sk]=Nové okno inkognito
Name[sl]=Novo okno brez beleženja zgodovine
Name[sr]=Нови прозор за прегледање без архивирања
Name[sv]=Nytt inkognitofönster
Name[ta]=ி ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Gizli pencere
Name[uk]=Нове вікно в режимі анонімного перегляду
Name[vi]=Ca s n danh mi
Name[zh_CN]=
Name[zh_TW]=
Exec=/usr/bin/chromium --ozone-platform=wayland --new-window --incognito

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,10 +0,0 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Omarchy
Comment=Omarchy TUI
Exec=alacritty --class=Omarchy --title=Omarchy -e bash -c '$HOME/.local/share/omarchy/bin/omarchy'
Icon=Arch
Terminal=false
Categories=System;Utility;
StartupNotify=false

View File

@ -1,7 +0,0 @@
[Desktop Entry]
Name=Audio Settings
Comment=Using Wiremix
Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix
Icon=audio-card
Type=Application
Terminal=false

View File

@ -1,12 +0,0 @@
[Desktop Entry]
Name=Zoom
Comment=Zoom Video Conference
Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U
Icon=Zoom
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
StartupWMClass=zoom
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -u
# internal monitor name - change if yours differs
INT="eDP-1"
output=$(hyprctl monitors 2>/dev/null) || {
echo "Error: hyprctl not found or command failed" >&2
exit 1
}
mapfile -t monitors < <(
grep -oP '(?<=^Monitor ).*?(?= \(ID )' <<<"$output"
)
len=${#monitors[@]}
if (( len == 2 )); then
hyprctl keyword monitor $INT, disable 2>/dev/null
hyprctl keyword workspace r[0-9] m[${monitors[1]}]
elif (( len == 3 )); then
hyprctl keyword monitor $INT, disable 2>/dev/null
hyprctl keyword workspace r[1-5] m[${monitors[1]}]
hyprctl keyword workspace r[6-9] m[${monitors[2]}]
hyprctl keyword workspace r[0] m[${monitors[2]}]
else
hyprctl keyword monitor $INT, preferred,auto,1.5 2>/dev/null
hyprctl reload 2>/dev/null
fi

View File

@ -1,157 +0,0 @@
#!/bin/bash
OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null)
PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate 640 --no-color expand
echo " $OMARCHY_VERSION"
}
main_menu() {
show_ascii_art
local options=("Theme" "Font" "Setup" "Update" "Manual" "Exit")
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "") || exit 0
case "$choice" in
Theme) theme_menu ;;
Font)
omarchy-font-menu
ack_command
main_menu
;;
Update) update_menu ;;
Setup) setup_menu ;;
Manual) open_manual ;;
Exit) clear && exit 0 ;;
esac
}
update_menu() {
show_ascii_art
local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back")
local commands=(
"omarchy-update"
"omarchy-refresh-waybar"
"omarchy-refresh-walker"
"omarchy-refresh-plymouth"
"omarchy-refresh-swayosd"
"omarchy-refresh-applications"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
theme_menu() {
show_ascii_art
local menu=("Pick" "Install" "Update" "Remove" "Back")
local commands=(
"omarchy-theme-menu"
"install_theme_prompt"
"omarchy-theme-update"
"remove_theme_prompt"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Theme") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
install_theme_prompt() {
local url
url=$(gum input --placeholder="Git repo URL for theme" --header="")
if [[ -n "$url" ]]; then
omarchy-theme-install "$url"
fi
theme_menu
}
remove_theme_prompt() {
local theme
theme=$(gum input --placeholder="Theme name" --header="")
if [[ -n "$theme" ]]; then
omarchy-theme-remove "$theme"
fi
theme_menu
}
setup_menu() {
show_ascii_art
local menu=("Dropbox" "Steam" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
local commands=(
"omarchy-setup-dropbox"
"omarchy-setup-steam"
"setup_docker_dbs"
"omarchy-setup-fingerprint"
"omarchy-setup-fido2"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Setup") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
setup_docker_dbs() {
options=("MariaDB" "MySQL" "Redis" "PostgreSQL")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
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=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;;
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 ;;
esac
done
fi
main_menu
}
open_manual() {
setsid chromium --new-window --ozone-platform=wayland --app="https://manuals.omamix.org/2/the-omarchy-manual" >/dev/null 2>&1 &
clear
}
ack_command() {
gum spin --spinner "globe" --title "Done!" -- sleep 1
}
main_menu

View File

@ -14,7 +14,7 @@ get_battery_state() {
}
send_notification() {
notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution
notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
}
BATTERY_LEVEL=$(get_battery_percentage)

19
bin/omarchy-cmd-audio-switch Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
# Find all the audio sinks but exit if there are none
sinks=($(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep -E '^\s*│\s+\*?\s*[0-9]+\.' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/'))
[ ${#sinks[@]} -eq 0 ] && exit 1
# Find current audio sink
current=$(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep '^\s*│\s*\*' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/')
# Find the next sink (looping around in the list)
for i in "${!sinks[@]}"; do
[ "${sinks[$i]}" = "$current" ] && next=${sinks[$(((i + 1) % ${#sinks[@]}))]}
done
next=${next:-${sinks[0]}}
# Set the next sink and ensure it's not muted
wpctl set-default "$next"
wpctl set-mute "$next" 0

View File

@ -0,0 +1,9 @@
#!/bin/bash
# Close all open windows
hyprctl clients -j | \
jq -r ".[].address" | \
xargs -I{} hyprctl dispatch closewindow address:{}
# Move to first workspace
hyprctl dispatch workspace 1

12
bin/omarchy-cmd-first-run Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
set -e
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
if [[ -f "$FIRST_RUN_MODE" ]]; then
rm -f "$FIRST_RUN_MODE"
$OMARCHY_PATH/install/first-run/battery-monitor.sh
$OMARCHY_PATH/install/first-run/firewall.sh
sudo rm -f /etc/sudoers.d/first-run
fi

View File

@ -1,7 +1,5 @@
#!/bin/bash
# Set recorder based on GPU
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
@ -15,7 +13,7 @@ screenrecording() {
notify-send "Screen recording starting..." -t 1000
sleep 1
if lspci | grep -qi 'nvidia'; then
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@"
else
wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@"

View File

@ -0,0 +1,7 @@
#!/bin/bash
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording stopped" -t 2000
fi

View File

@ -1,10 +1,16 @@
#!/bin/bash
trap "exit" SIGINT
while true; do
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.local/share/omarchy/logo.txt \
--frame-rate 240 --canvas-width 0 --canvas-height 0 --anchor-canvas c --anchor-text c \
"$effect"
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" &
while pgrep -x tte >/dev/null; do
if read -n 1 -t 0.01; then
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
exit 0
fi
done
done

11
bin/omarchy-cmd-terminal-cwd Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# 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" | head -n1)
if [[ -n $shell_pid ]]; then
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null
else
echo "$HOME"
fi

View File

@ -1,5 +1,7 @@
#!/bin/bash
sudo systemctl restart systemd-timesyncd
sudo tzupdate
new_timezone=$(timedatectl show -p Timezone --value)
notify-send "Timezone has been set to $new_timezone"
omarchy-restart-waybar
notify-send "Time synced and timezone set to $new_timezone"

View File

@ -4,4 +4,3 @@ 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
echo -e "Run with:\nsource $migration_file"

3
bin/omarchy-font-current Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1

3
bin/omarchy-font-list Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting' | sort -u

View File

@ -1,12 +0,0 @@
#!/bin/bash
font=$(
fc-list :spacing=100 -f "%{family[0]}\n" |
grep -v -i -E 'emoji|signwriting' |
sort -u |
gum choose --header "Choose terminal font"
)
if [[ -n "$font" ]]; then
sed -i "s/family = \".*\"/family = \"$font\"/g" ~/.config/alacritty/alacritty.toml
fi

24
bin/omarchy-font-set Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
font_name="$1"
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
if fc-list | grep -iq "$font_name"; then
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
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 \
-u '//match[@target="pattern"][test/string="monospace"]/edit[@name="family"]/string' \
-v "$font_name" \
~/.config/fontconfig/fonts.conf
omarchy-restart-waybar
omarchy-restart-swayosd
omarchy-restart-walker
else
echo "Font '$font_name' not found."
exit 1
fi
else
echo "Usage: omarchy-font-set <font-name>"
fi

123
bin/omarchy-install-dev-env Executable file
View File

@ -0,0 +1,123 @@
#!/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>" >&2
exit 1
fi
install_php() {
sudo pacman -Sy php composer php-sqlite --noconfirm
# Install Path for Composer
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."
else
echo "Composer global bin directory already in PATH."
fi
# Enable some extensions
local php_ini_path="/etc/php/php.ini"
local extensions_to_enable=(
"bcmath"
"intl"
"iconv"
"openssl"
"pdo_sqlite"
"pdo_mysql"
)
for ext in "${extensions_to_enable[@]}"; do
sudo sed -i "s/^;extension=${ext}/extension=${ext}/" "$php_ini_path"
done
}
case "$1" in
ruby)
echo -e "Installing Ruby on Rails...\n"
mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby
mise x ruby -- gem install rails --no-document
echo -e "\nYou can now run: rails new myproject"
;;
node)
echo -e "Installing Node.js...\n"
mise use --global node@lts
;;
bun)
echo -e "Installing Bun...\n"
mise use -g bun@latest
;;
deno)
echo -e "Installing Deno...\n"
mise use -g deno@latest
;;
go)
echo -e "Installing Go...\n"
mise use --global go@latest
;;
php)
echo -e "Installing PHP...\n"
install_php
;;
laravel)
echo -e "Installing PHP and Laravel...\n"
install_php
composer global require laravel/installer
echo -e "\nYou can now run: laravel new myproject"
;;
symfony)
echo -e "Installing PHP and Symfony...\n"
install_php
yay -S symfony-cli --noconfirm
echo -e "\nYou can now run: symfony new --webapp myproject"
;;
python)
echo -e "Installing Python...\n"
mise use --global python@latest
echo -e "\nInstalling uv...\n"
curl -fsSL https://astral.sh/uv/install.sh | sh
;;
elixir)
echo -e "Installing Elixir...\n"
mise use --global erlang@latest
mise use --global elixir@latest
mise x elixir -- mix local.hex --force
;;
phoenix)
echo -e "Installing Phoenix Framework...\n"
# Ensure Erlang/Elixir first
mise use --global erlang@latest
mise use --global elixir@latest
# Hex & Rebar
mise x elixir -- mix local.hex --force
mise x elixir -- mix local.rebar --force
# Phoenix project (phx_new)
mise x elixir -- mix archive.install hex phx_new --force
echo -e "\nYou can now run: mix phx.new my_app"
;;
rust)
echo -e "Installing Rust...\n"
bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y
;;
java)
echo -e "Installing Java...\n"
mise use --global java@latest
;;
zig)
echo -e "Installing Zig...\n"
mise use --global zig@latest
;;
ocaml)
echo -e "Installing OCaml...\n"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)"
opam init --yes
eval "$(opam env)"
opam install ocaml-lsp-server odoc ocamlformat utop --yes
;;
dotnet)
echo -e "Installing .NET...\n"
mise use --global dotnet@latest
;;
esac

16
bin/omarchy-install-docker-dbs Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
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=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;;
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 ;;
esac
done
fi

View File

@ -1,6 +1,7 @@
#!/bin/bash
echo "Installing all dependencies..."
# FIXME: Should not use AUR dependencies when we can avoid it
echo "Installing all dependencies [from AUR]..."
yay -S --noconfirm --needed \
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox

View File

@ -5,5 +5,5 @@ sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy
echo "Now pick dependencies matching your graphics card"
yay -S steam
gtk-launch steam >/dev/null 2>&1 &
sudo pacman -S steam
setsid gtk-launch steam >/dev/null 2>&1 &

13
bin/omarchy-install-tailscale Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
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

3
bin/omarchy-launch-browser Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@

View File

@ -1,5 +1,26 @@
#!/bin/bash
pkill -f "alacritty --class Screensaver" ||
alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver
# 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
# Allow screensaver to be turned off but also force started
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
exit 1
fi
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m
hyprctl dispatch exec -- \
alacritty --class Screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
done
hyprctl dispatch focusmonitor $focused

10
bin/omarchy-launch-webapp Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
browser=$(xdg-settings get default-web-browser)
case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
*) browser="chromium.desktop" ;;
esac
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"

12
bin/omarchy-lock-screen Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
# Lock the screen
pidof hyprlock || hyprlock &
# Ensure 1password is locked
if pgrep -x "1password" >/dev/null; then
1password --lock &
fi
# Avoid running screensaver when locked
pkill -f "alacritty --class Screensaver"

392
bin/omarchy-menu Executable file
View File

@ -0,0 +1,392 @@
#!/bin/bash
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
menu() {
local prompt="$1"
local options="$2"
local extra="$3"
local preselect="$4"
read -r -a args <<<"$extra"
if [[ -n "$preselect" ]]; then
local index
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
if [[ -n "$index" ]]; then
args+=("-a" "$index")
fi
fi
echo -e "$options" | walker --dmenu --theme dmenu_250 -p "$prompt…" "${args[@]}"
}
terminal() {
alacritty --class Omarchy -e "$@"
}
present_terminal() {
alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;"
}
edit_in_nvim() {
notify-send "Editing config file" "$1"
alacritty -e nvim "$1"
}
install() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2 && setsid gtk-launch $3"
}
install_font() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
}
aur_install() {
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2"
}
aur_install_and_launch() {
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3"
}
show_learn_menu() {
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in
*Keybindings*) omarchy-menu-keybindings ;;
*Omarchy*) omarchy-launch-webapp "https://learn.omacom.io/2/the-omarchy-manual" ;;
*Hyprland*) omarchy-launch-webapp "https://wiki.hypr.land/" ;;
*Arch*) omarchy-launch-webapp "https://wiki.archlinux.org/title/Main_page" ;;
*Bash*) omarchy-launch-webapp "https://devhints.io/bash" ;;
*Neovim*) omarchy-launch-webapp "https://www.lazyvim.org/keymaps" ;;
*) show_main_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
*Font*) show_font_menu ;;
*Background*) omarchy-theme-bg-next ;;
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;;
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;;
*) show_main_menu ;;
esac
}
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
omarchy-theme-set "$theme"
fi
}
show_font_menu() {
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
omarchy-font-set "$theme"
fi
}
show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) show_screenshot_menu ;;
*Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) show_main_menu ;;
esac
}
show_screenshot_menu() {
case $(menu "Screenshot" " Region\n Window\n Display") in
*Region*) omarchy-cmd-screenshot ;;
*Window*) omarchy-cmd-screenshot window ;;
*Display*) omarchy-cmd-screenshot output ;;
*) show_capture_menu ;;
esac
}
show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Display") in
*Region*) omarchy-cmd-screenrecord ;;
*Display*) omarchy-cmd-screenrecord output ;;
*) show_capture_menu ;;
esac
}
show_toggle_menu() {
case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in
*Screensaver*) omarchy-toggle-screensaver ;;
*Nightlight*) omarchy-toggle-nightlight ;;
*Idle*) omarchy-toggle-idle ;;
*Bar*) omarchy-toggle-waybar ;;
*) show_main_menu ;;
esac
}
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󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
*Wifi*)
rfkill unblock wifi
alacritty --class=Impala -e impala
;;
*Bluetooth*)
rfkill unblock bluetooth
blueberry
;;
*Power*) show_setup_power_menu ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*DNS*) present_terminal omarchy-setup-dns ;;
*Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_main_menu ;;
esac
}
show_setup_power_menu() {
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
show_main_menu
else
powerprofilesctl set "$profile"
fi
}
show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;;
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;;
*) show_main_menu ;;
esac
}
show_install_menu() {
case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in
*Package*) terminal omarchy-pkg-install ;;
*AUR*) terminal omarchy-pkg-aur-install ;;
*Web*) present_terminal omarchy-webapp-install ;;
*TUI*) present_terminal omarchy-tui-install ;;
*Service*) show_install_service_menu ;;
*Style*) show_install_style_menu ;;
*Development*) show_install_development_menu ;;
*Editor*) show_install_editor_menu ;;
*AI*) show_install_ai_menu ;;
*Gaming*) show_install_gaming_menu ;;
*) show_main_menu ;;
esac
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*) show_install_menu ;;
esac
}
show_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor [AUR]\n Zed\n Sublime Text\n Helix") in
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
*Cursor*) aur_install_and_launch "Cursor" "cursor-bin" "cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Helix*) install "Helix" "helix" ;;
*) show_install_menu ;;
esac
}
show_install_ai_menu() {
case $(menu "Install" "󱚤 Claude Code [AUR]\n󱚤 Gemini\n󱚤 LM Studio [AUR]\n󱚤 Ollama\n󱚤 Crush [AUR]\n󱚤 opencode [AUR]") in
*Claude*) aur_install "Claude Code" "claude-code" ;;
*Gemini*) install "Gemini" "gemini-cli" ;;
*Studio*) aur_install "LM Studio" "lmstudio" ;;
*Ollama*) install "Ollama" "ollama" ;;
*Crush*) aur_install "Crush" "crush-bin" ;;
*opencode*) aur_install "opencode" "opencode-bin" ;;
*) show_install_menu ;;
esac
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in
*Steam*) present_terminal omarchy-install-steam ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*) show_install_menu ;;
esac
}
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 ;;
*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" "-w 350") in
*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" ;;
*) 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") in
*Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
*Docker*) present_terminal omarchy-install-docker-dbs ;;
*JavaScript*) show_install_javascript_menu ;;
*Go*) present_terminal "omarchy-install-dev-env go" ;;
*PHP*) show_install_php_menu ;;
*Python*) present_terminal "omarchy-install-dev-env python" ;;
*Elixir*) show_install_elixir_menu ;;
*Zig*) present_terminal "omarchy-install-dev-env zig" ;;
*Rust*) present_terminal "omarchy-install-dev-env rust" ;;
*Java*) present_terminal "omarchy-install-dev-env java" ;;
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
*) show_install_menu ;;
esac
}
show_install_javascript_menu() {
case $(menu "Install" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "omarchy-install-dev-env node" ;;
*Bun*) present_terminal "omarchy-install-dev-env bun" ;;
*Deno*) present_terminal "omarchy-install-dev-env deno" ;;
*) show_install_development_menu ;;
esac
}
show_install_php_menu() {
case $(menu "Install" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "omarchy-install-dev-env php" ;;
*Laravel*) present_terminal "omarchy-install-dev-env laravel" ;;
*Symfony*) present_terminal "omarchy-install-dev-env symfony" ;;
*) show_install_development_menu ;;
esac
}
show_install_elixir_menu() {
case $(menu "Install" " Elixir\n Phoenix") in
*Elixir*) present_terminal "omarchy-install-dev-env elixir" ;;
*Phoenix*) present_terminal "omarchy-install-dev-env phoenix" ;;
*) show_install_development_menu ;;
esac
}
show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal omarchy-pkg-remove ;;
*Web*) present_terminal omarchy-webapp-remove ;;
*TUI*) present_terminal omarchy-tui-remove ;;
*Theme*) present_terminal omarchy-theme-remove ;;
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
*) show_main_menu ;;
esac
}
show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Config\n󰸌 Themes\n Process\n Timezone") in
*Omarchy*) present_terminal omarchy-update ;;
*Config*) show_update_config_menu ;;
*Themes*) present_terminal omarchy-theme-update ;;
*Process*) show_update_process_menu ;;
*Timezone*) omarchy-cmd-tzupdate ;;
*) show_main_menu ;;
esac
}
show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) omarchy-restart-hypridle ;;
*Hyprsunset*) omarchy-restart-hyprsunset ;;
*Swayosd*) omarchy-restart-swayosd ;;
*Walker*) omarchy-restart-walker ;;
*Waybar*) omarchy-restart-waybar ;;
*) show_main_menu ;;
esac
}
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
*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 ;;
*Walker*) present_terminal omarchy-refresh-walker ;;
*Waybar*) present_terminal omarchy-refresh-waybar ;;
*) show_main_menu ;;
esac
}
show_system_menu() {
case $(menu "System" " Lock\n󱄄 Screensaver\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in
*Lock*) omarchy-lock-screen ;;
*Screensaver*) omarchy-launch-screensaver force ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
*) show_main_menu ;;
esac
}
show_main_menu() {
go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n Capture\n󰔎 Toggle\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")"
}
go_to_menu() {
case "${1,,}" in
*apps*) walker -p "Launch…" ;;
*learn*) show_learn_menu ;;
*style*) show_style_menu ;;
*theme*) show_theme_menu ;;
*capture*) show_capture_menu ;;
*screenshot*) show_screenshot_menu ;;
*screenrecord*) show_screenrecord_menu ;;
*toggle*) show_toggle_menu ;;
*setup*) show_setup_menu ;;
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;;
*system*) show_system_menu ;;
*about*) terminal bash -c 'fastfetch; read -n 1 -s' ;;
esac
}
if [[ -n "$1" ]]; then
go_to_menu "$1"
else
show_main_menu
fi

View File

@ -3,34 +3,50 @@
# A script to display Hyprland keybindings defined in your configuration
# using walker for an interactive search menu.
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/media.conf"
# Fetch dynamic keybindings from Hyprland
#
# Also do some pre-processing:
# - Remove standard Omarchy bin path prefix
# - Remove uwsm prefix
# - Map numeric modifier key mask to a textual rendition
# - Output comma-separated values that the parser can understand
dynamic_bindings() {
hyprctl -j binds | \
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
sed -r \
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/' \
-e 's/^73,/SUPER SHIFT ALT,/' \
-e 's/^76,/SUPER CTRL ALT,/' \
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
}
# Process the configuration file to extract and format keybindings
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
# 2. The first `sed` removes comments (anything after a '#').
# 3. `awk` does the heavy lifting of formatting the output.
# - It sets the field separator to a comma ','.
# - It removes the 'bind... =' part from the beginning of the line.
# - It joins the key combination (e.g., "SUPER + Q").
# - It joins the command that the key executes.
# - It prints everything in a nicely aligned format.
# 4. The final `sed` cleans up any leftover commas from the end of lines.
grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
sed 's/#.*//' |
sed '/^[[:space:]]*$/d' |
sort -u |
# Parse and format keybindings
#
# `awk` does the heavy lifting:
# - Set the field separator to a comma ','.
# - Joins the key combination (e.g., "SUPER + Q").
# - Joins the command that the key executes.
# - Prints everything in a nicely aligned format.
parse_bindings() {
awk -F, '
{
# Strip trailing comments
sub(/#.*/, "");
# Remove the "bind... =" part and surrounding whitespace
sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1);
# Combine the modifier and key (first two fields)
key_combo = $1 " + " $2;
@ -38,27 +54,36 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
gsub(/[ \t]+$/, "", key_combo);
# Reconstruct the command from the remaining fields
action = "";
for (i = 3; i <= NF; i++) {
action = action $i (i < NF ? "," : "");
}
# Use description, if set
action = $3;
# Clean up trailing commas, remove leading "exec, ", and trim
sub(/,$/, "", action);
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
gsub(/^[ \t]+|[ \t]+$/, "", action);
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
if (action == "") {
# Reconstruct the command from the remaining fields
for (i = 4; i <= NF; i++) {
action = action $i (i < NF ? "," : "");
}
# Clean up trailing commas, remove leading "exec, ", and trim
sub(/,$/, "", action);
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
gsub(/^[ \t]+|[ \t]+$/, "", action);
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
if (action != "") {
# Escape XML entities
gsub(/&/, "\\&amp;", action);
gsub(/</, "\\&lt;", action);
gsub(/>/, "\\&gt;", action);
gsub(/"/, "\\&quot;", action);
gsub(/'"'"'/, "\\&apos;", action);
}
if (action != "") {
printf "%-35s → %s\n", key_combo, action;
}
}' |
}'
}
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings'

View File

@ -1,21 +0,0 @@
#!/bin/bash
show_power_menu() {
# The first characters are invisible sort keys.
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
show_power_menu

18
bin/omarchy-migrate Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
set -e
# 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"
# Run any pending migrations
for file in ~/.local/share/omarchy/migrations/*.sh; do
filename=$(basename "$file")
if [[ ! -f "$STATE_DIR/$filename" ]]; then
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
source $file
touch "$STATE_DIR/$filename"
fi
done

4
bin/omarchy-pkg-aur-accessible Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
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

24
bin/omarchy-pkg-aur-install Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
set -e
fzf_args=(
--multi
--preview 'yay -Sii {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--bind 'alt-k:preview-up,alt-j:preview-down'
--color 'pointer:green,marker:green'
)
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 -Sy --noconfirm
sudo updatedb
omarchy-show-done
fi

25
bin/omarchy-pkg-install Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
set -e
fzf_args=(
--multi
--preview 'pacman -Sii {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--bind 'alt-k:preview-up,alt-j:preview-down'
--color 'pointer:green,marker:green'
)
sudo pacman -Sy
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Sy --noconfirm
sudo updatedb
omarchy-show-done
fi

22
bin/omarchy-pkg-remove Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
fzf_args=(
--multi
--preview 'yay -Qi {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--bind 'alt-k:preview-up,alt-j:preview-down'
--color 'pointer:red,marker:red'
)
pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Rns --noconfirm
sudo updatedb
omarchy-show-done
fi

5
bin/omarchy-powerprofiles-list Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
powerprofilesctl list |
awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }' |
tac

View File

@ -10,9 +10,4 @@ mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
# Only copy xtras if user is not in bare mode
if [[ ! -f ~/.local/state/omarchy/bare.mode ]] && [ -z "$OMARCHY_BARE" ]; then
cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
fi
update-desktop-database ~/.local/share/applications

40
bin/omarchy-refresh-config Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
# This script deploys ~/.local/share/omarchy/config/X/Y/Z -> ~/.config/X/Y/Z
config_file=$1
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
USAGE
exit 1
fi
# Backup the destination file (with timestamp) to avoid clobbering (Ex: hyprlock.conf.bak.1753817951)
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
# Create preliminary backup
cp -f "$user_config_file" "$backup_config_file" 2>/dev/null
# Replace config with new default
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
# Compare and delete/inform accordingly
if cmp -s "$user_config_file" "$backup_config_file"; then
rm "$backup_config_file"
else
echo -e "\e[31mReplaced $user_config_file with new Omarchy default.\nSaved backup as ${backup_config_file}.\n\n\e[32mChanges:\e[0m"
diff "$user_config_file" "$backup_config_file" || true
fi
else
# Config file did not exist already
cp -f "$default_config_file" "$user_config_file" 2>/dev/null
fi

4
bin/omarchy-refresh-hypridle Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
omarchy-refresh-config hypr/hypridle.conf
omarchy-restart-hypridle

7
bin/omarchy-refresh-hyprland Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
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/hyprland.conf

View File

@ -1,11 +1,3 @@
#!/bin/bash
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/ 2>/dev/null
if cmp -s ~/.config/hypr/hyprlock.conf.bak ~/.config/hypr/hyprlock.conf; then
rm ~/.config/hypr/hyprlock.conf.bak
else
echo -e "\e[31mExisting .config/hypr/hyprlock.conf replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
omarchy-refresh-config hypr/hyprlock.conf

4
bin/omarchy-refresh-hyprsunset Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
omarchy-refresh-config hypr/hyprsunset.conf
omarchy-restart-hyprsunset

View File

@ -1,6 +1,6 @@
#!/bin/bash
if [[ "$1" == "-y" ]] || gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
if [[ "$1" == "-y" ]]; then
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi

View File

@ -1,13 +1,5 @@
#!/bin/bash
cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null
if cmp -s ~/.config/swayosd/config.toml.bak ~/.config/swayosd/config.toml; then
rm ~/.config/swayosd//config.toml.bak
else
echo -e "\e[31mExisting .config/swayosd/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
omarchy-refresh-config swayosd/config.toml
omarchy-refresh-config swayosd/style.css
omarchy-restart-swayosd

View File

@ -1,13 +1,4 @@
#!/bin/bash
cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/walker/config.toml ~/.config/walker/ 2>/dev/null
if cmp -s ~/.config/walker/config.toml.bak ~/.config/walker/config.toml; then
rm ~/.config/walker/config.toml.bak
else
echo -e "\e[31mExisting .config/walker/config.toml replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
pkill walker
setsid uwsm app -- walker --gapplication-service &
omarchy-refresh-config walker/config.toml
omarchy-restart-walker

View File

@ -1,25 +1,5 @@
#!/bin/bash
# Backup existing settings
cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null
cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/waybar/config.jsonc ~/.config/waybar/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Remove identical backup files
if cmp -s ~/.config/waybar/config.jsonc.bak ~/.config/waybar/config.jsonc; then
rm ~/.config/waybar/config.jsonc.bak
else
echo -e "\e[31mExisting .config/waybar/config.jsonc replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
if cmp -s ~/.config/waybar/style.css.bak ~/.config/waybar/style.css; then
rm ~/.config/waybar/style.css.bak
else
echo -e "\e[31mExisting .config/waybar/style.css replaced with new Omarchy default, but a .bak file was made.\e[0m"
fi
# Restart waybar
pkill -SIGUSR2 waybar
omarchy-refresh-config waybar/config.jsonc
omarchy-refresh-config waybar/style.css
omarchy-restart-waybar

4
bin/omarchy-reset-sudo Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "Resetting sudo lockout for user: $USER"
su -c "faillock --reset --user $USER"

4
bin/omarchy-restart-app Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
pkill -x $1
setsid uwsm app -- $1 >/dev/null 2>&1 &

3
bin/omarchy-restart-hypridle Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
omarchy-restart-app hypridle

3
bin/omarchy-restart-hyprsunset Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
omarchy-restart-app hyprsunset

3
bin/omarchy-restart-swayosd Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
omarchy-restart-app swayosd-server

7
bin/omarchy-restart-walker Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
pkill walker
# FIXME: Reenable the walker service once the memory leak has been fixed
# See https://github.com/basecamp/omarchy/issues/698
# setsid uwsm app -- walker --gapplication-service &
echo # Always end in success so we don't terminate further running

3
bin/omarchy-restart-waybar Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
omarchy-restart-app waybar

3
bin/omarchy-restart-xcompose Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
omarchy-restart-app fcitx5

89
bin/omarchy-setup-dns Executable file
View File

@ -0,0 +1,89 @@
#!/bin/bash
if [[ -z $1 ]]; then
dns=$(gum choose --height 5 --header "Select DNS provider" Cloudflare DHCP Custom)
else
dns=$1
fi
case "$dns" in
Cloudflare)
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com
FallbackDNS=9.9.9.9 149.112.112.112
DNSOverTLS=opportunistic
EOF
# Ensure network interfaces don't override our DNS settings
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
# Add UseDNS=no to DHCPv4 section if not present
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
fi
# Add UseDNS=no to IPv6AcceptRA section if present
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
fi
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
DHCP)
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve]
DNS=
FallbackDNS=
DNSOverTLS=no
EOF
# Allow network interfaces to use DHCP DNS
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
sudo sed -i '/^UseDNS=no/d' "$file"
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
Custom)
echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):"
read -r dns_servers
if [[ -z "$dns_servers" ]]; then
echo "Error: No DNS servers provided."
exit 1
fi
sudo tee /etc/systemd/resolved.conf >/dev/null <<EOF
[Resolve]
DNS=$dns_servers
FallbackDNS=9.9.9.9 149.112.112.112
EOF
# Ensure network interfaces don't override our DNS settings
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
# Add UseDNS=no to DHCPv4 section if not present
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
fi
# Add UseDNS=no to IPv6AcceptRA section if present
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
fi
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
esac

View File

@ -1,33 +1,127 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm libfido2 pam-u2f
sudo rm -rf /etc/fido2
sudo sed -i '\|^auth[[:space:]]\+sufficient[[:space:]]\+pam_u2f\.so[[:space:]]\+cue[[:space:]]\+authfile=/etc/fido2/fido2$|d' /etc/pam.d/sudo
echo -e "\e[32m\nYou've successfully removed the fido2 device setup.\e[0m"
else
yay -S --noconfirm --needed libfido2 pam-u2f
set -e
tokens=$(fido2-token -L)
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${YELLOW}$1${NC}"
}
check_fido2_hardware() {
tokens=$(fido2-token -L 2>/dev/null)
if [ -z "$tokens" ]; then
echo -e "\e[31m\nNo fido2 device detected. Plug it in, you may have to unlock it as well\e[0m"
else
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m"
pamu2fcfg >/tmp/fido2 # This needs to run as the user
print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
return 1
fi
return 0
}
setup_pam_config() {
# Configure sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
print_info "Configuring sudo for FIDO2 authentication..."
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
# Configure polkit
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then
print_info "Configuring polkit for FIDO2 authentication..."
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1
elif [ ! -f /etc/pam.d/polkit-1 ]; then
print_info "Creating polkit configuration with FIDO2 authentication..."
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
}
remove_pam_config() {
# Remove from sudo
if grep -q pam_u2f.so /etc/pam.d/sudo; then
print_info "Removing FIDO2 authentication from sudo..."
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo
fi
# Remove from polkit
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then
print_info "Removing FIDO2 authentication from polkit..."
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
fi
}
if [[ "--remove" == "$1" ]]; then
print_success "Removing FIDO2 device from authentication.\n"
# Remove PAM configuration
remove_pam_config
# Remove FIDO2 configuration
if [ -d /etc/fido2 ]; then
print_info "Removing FIDO2 configuration..."
sudo rm -rf /etc/fido2
fi
# Uninstall packages
print_info "Removing FIDO2 packages..."
sudo pacman -Rns --noconfirm libfido2 pam-u2f
print_success "FIDO2 authentication has been completely removed."
else
print_success "Setting up FIDO2 device for authentication.\n"
# Install required packages
print_info "Installing required packages..."
sudo pacman -S --noconfirm --needed libfido2 pam-u2f
if ! check_fido2_hardware; then
exit 1
fi
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
print_success "\nLet's setup your device by confirming on the device now."
print_info "Touch your FIDO2 key when it lights up...\n"
if pamu2fcfg >/tmp/fido2; then
sudo mv /tmp/fido2 /etc/fido2/fido2
print_success "FIDO2 device registered successfully!"
else
print_error "\nFIDO2 registration failed. Please try again."
exit 1
fi
else
print_info "FIDO2 device already registered."
fi
# Add fido2 auth as an option for sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
# Configure PAM
setup_pam_config
if ! sudo echo -e "\e[32m\nPerfect! Now you can use your fido2 device for sudo.\e[0m"; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
# Test with sudo
print_info "\nTesting FIDO2 authentication with sudo..."
print_info "Touch your FIDO2 key when prompted.\n"
if sudo echo "FIDO2 authentication test successful"; then
print_success "\nPerfect! FIDO2 authentication is now configured."
print_info "You can use your FIDO2 key for sudo and polkit authentication."
else
print_error "\nVerification failed. You may want to check your configuration."
fi
fi

View File

@ -1,43 +1,112 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm fprintd
sudo rm -rf /etc/pam.d/polkit-1
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m"
else
yay -S --noconfirm --needed fprintd usbutils
set -e
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${YELLOW}$1${NC}"
}
check_fingerprint_hardware() {
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; then
print_error "\nNo fingerprint sensor detected."
return 1
fi
return 0
}
setup_pam_config() {
# Configure sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
print_info "Configuring sudo for fingerprint authentication..."
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Configure polkit
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then
print_info "Configuring polkit for fingerprint authentication..."
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1
elif [ ! -f /etc/pam.d/polkit-1 ]; then
print_info "Creating polkit configuration with fingerprint authentication..."
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth sufficient pam_fprintd.so
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
fi
}
# Enroll the first finger
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
sudo fprintd-enroll $USER
remove_pam_config() {
# Remove from sudo
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
print_info "Removing fingerprint authentication from sudo..."
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
fi
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
# Remove from polkit
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then
print_info "Removing fingerprint authentication from polkit..."
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
fi
}
if [[ "--remove" == "$1" ]]; then
print_success "Removing fingerprint scanner from authentication.\n"
# Remove PAM configuration
remove_pam_config
# Uninstall packages
print_info "Removing fingerprint packages..."
sudo pacman -Rns --noconfirm fprintd
print_success "Fingerprint authentication has been completely removed."
else
print_success "Setting up fingerprint scanner for authentication.\n"
# Install required packages
print_info "Installing required packages..."
sudo pacman -S --noconfirm --needed fprintd usbutils
if ! check_fingerprint_hardware; then
exit 1
fi
# Configure PAM
setup_pam_config
# Enroll first fingerprint
print_success "\nLet's setup your right index finger as the first fingerprint."
print_info "Keep moving the finger around on sensor until the process completes.\n"
if sudo fprintd-enroll "$USER"; then
print_success "\nFingerprint enrolled successfully!"
# Verify
print_info "\nNow let's verify that it's working correctly.\n"
if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
print_success "\nPerfect! Fingerprint authentication is now configured."
print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
else
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
print_error "\nVerification failed. You may want to try enrolling again."
fi
else
print_error "\nEnrollment failed. Please try again."
exit 1
fi
fi

4
bin/omarchy-show-done Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
echo
gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s'

7
bin/omarchy-show-logo Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
clear
echo -e "\033[32m"
cat <~/.local/share/omarchy/logo.txt
echo -e "\033[0m"
echo

26
bin/omarchy-snapshot Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
COMMAND="$1"
OMARCHY_PATH=${OMARCHY_PATH:-$HOME/.local/share/omarchy}
if [[ -z $COMMAND ]]; then
echo "Usage: omarchy-snapshot <create|restore>" >&2
exit 1
fi
if ! command -v snapper &>/dev/null; then
exit 127 # omarchy-update can use this to just ignore if snapper is not available
fi
case "$COMMAND" in
create)
DESC="$(omarchy-version)"
for config in root home; do
sudo snapper -c "$config" create -c number -d "$DESC"
done
;;
restore)
sudo limine-snapper-restore
;;
esac

22
bin/omarchy-state Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
STATE_DIR="$HOME/.local/state/omarchy"
mkdir -p "$STATE_DIR"
COMMAND="$1"
STATE_NAME="$2"
if [[ -z "$COMMAND" ]]; then
echo "Usage: omarchy-state <set|clear> <state-name-or-pattern>"
exit 1
fi
if [[ -z "$STATE_NAME" ]]; then
echo "Usage: omarchy-state $COMMAND <state-name>"
exit 1
fi
case "$COMMAND" in
set) touch "$STATE_DIR/$STATE_NAME" ;;
clear) find "$STATE_DIR" -maxdepth 1 -type f -name "$STATE_NAME" -delete ;;
esac

3
bin/omarchy-theme-current Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
basename "$(realpath "$HOME/.config/omarchy/current/theme")" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'

View File

@ -4,11 +4,16 @@
# Usage: omarchy-theme-install <git-repo-url>
if [ -z "$1" ]; then
echo "Usage: omarchy-theme-install <git-repo-url>"
echo -e "\e[32mSee https://manuals.omamix.org/2/the-omarchy-manual/90/extra-themes\n\e[0m"
REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="")
else
REPO_URL="$1"
fi
if [ -z "$REPO_URL" ]; then
exit 1
fi
REPO_URL="$1"
THEMES_DIR="$HOME/.config/omarchy/themes"
THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//')
THEME_PATH="$THEMES_DIR/$THEME_NAME"

5
bin/omarchy-theme-list Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
echo "$(basename "$path" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')"
done

View File

@ -1,31 +0,0 @@
#!/bin/bash
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
CURRENT_THEME_NAME=$(basename "$(realpath "$CURRENT_THEME_DIR")")
# Build themes list with pretty display names
mapfile -t themes < <(
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
filename=$(basename "$path")
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
if [[ "$filename" == "$CURRENT_THEME_NAME" ]]; then
echo "<i>$display_name</i>"
else
echo "$display_name"
fi
done
)
# Show Walker menu
selection=$(printf '%s\n' "${themes[@]}" | walker --dmenu --theme dmenu_250 2>/dev/null)
# Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')
# Convert to lowercase and dash-separated: "Tokyo Night" -> "tokyo-night"
selected_theme=$(echo "$clean_selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
# Apply the selected theme
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme"

View File

@ -30,5 +30,5 @@ NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_THEME=${THEMES[$NEXT_INDEX]}
NEW_THEME_NAME=$(basename "$NEW_THEME")
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" $NEW_THEME_NAME
omarchy-theme-set $NEW_THEME_NAME
notify-send "Theme changed to $NEW_THEME_NAME" -t 2000

View File

@ -4,17 +4,26 @@
# Usage: omarchy-theme-remove <theme-name>
if [ -z "$1" ]; then
echo "Usage: omarchy-theme-remove <theme-name>"
exit 1
mapfile -t extra_themes < <(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n')
if [[ ${#extra_themes[@]} -gt 0 ]]; then
THEME_NAME=$(gum choose --header="Remove extra theme" "${extra_themes[@]}")
else
echo "No extra themes installed."
exit 1
fi
else
THEME_NAME="$1"
fi
THEME_NAME="$1"
THEMES_DIR="$HOME/.config/omarchy/themes"
BACKGROUND_DIR="$HOME/.config/omarchy/backgrounds"
CURRENT_DIR="$HOME/.config/omarchy/current"
THEME_PATH="$THEMES_DIR/$THEME_NAME"
BACKGROUND_PATH="$BACKGROUND_DIR/$THEME_NAME"
# Ensure a theme was set
if [ -z "$THEME_NAME" ]; then
exit 1
fi
# Check if theme exists before attempting removal
if [ ! -d "$THEME_PATH" ]; then
@ -22,12 +31,10 @@ if [ ! -d "$THEME_PATH" ]; then
exit 1
fi
# Use readlink -f to resolve symlinks and get the absolute path
# Move to the next theme if the current theme is the one being removed
if [ "$(readlink -f "$CURRENT_DIR/theme")" = "$(readlink -f "$THEME_PATH")" ]; then
"$HOME/.local/share/omarchy/bin/omarchy-theme-next"
omarchy-theme-next
fi
# Now remove the theme directory and backgrounds for THEME_NAME
# Now remove the theme directory for THEME_NAME
rm -rf "$THEME_PATH"
rm -rf "$BACKGROUND_PATH"

View File

@ -3,7 +3,7 @@
# omarchy-theme-set: Set a theme, specified by its name.
# Usage: omarchy-theme-set <theme-name>
if [[ -z "$1" ]]; then
if [[ -z "$1" && "$1" != "CNCLD" ]]; then
echo "Usage: omarchy-theme-set <theme-name>" >&2
exit 1
fi
@ -11,7 +11,7 @@ fi
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
THEME_NAME="$1"
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
THEME_PATH="$THEMES_DIR/$THEME_NAME"
# Check if the theme entered exists
@ -32,16 +32,38 @@ else
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Change gnome icon theme color
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
# Change Chromium colors
if command -v chromium &>/dev/null; then
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
chromium --no-startup-window --set-color-scheme="light"
else
chromium --no-startup-window --set-color-scheme="dark"
fi
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then
chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)"
else
# Use a default, neutral grey if theme doesn't have a color
chromium --no-startup-window --set-theme-color="28,32,39"
fi
fi
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 btop
pkill -SIGUSR2 waybar
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
omarchy-restart-waybar
omarchy-restart-swayosd
makoctl reload
hyprctl reload
# Set new background
"$HOME/.local/share/omarchy/bin/omarchy-theme-bg-next"
omarchy-theme-bg-next

View File

@ -1,4 +1,5 @@
#!/bin/bash
for dir in ~/.config/omarchy/themes/*/; do
[ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull
done
[ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull
done

30
bin/omarchy-toggle-nightlight Executable file
View File

@ -0,0 +1,30 @@
#!/bin/bash
# Default temperature values
ON_TEMP=4000
OFF_TEMP=6000
# Ensure hyprsunset is running
if ! pgrep -x hyprsunset; then
setsid uwsm app -- hyprsunset &
sleep 1 # Give it time to register
fi
# Query the current temperature
CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+')
restart_nightlighted_waybar() {
if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then
omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset
fi
}
if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then
hyprctl hyprsunset temperature $ON_TEMP
notify-send " Nightlight screen temperature"
restart_nightlighted_waybar
else
hyprctl hyprsunset temperature $OFF_TEMP
notify-send " Daylight screen temperature"
restart_nightlighted_waybar
fi

12
bin/omarchy-toggle-screensaver Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
STATE_FILE=~/.local/state/omarchy/toggles/screensaver-off
if [[ -f $STATE_FILE ]]; then
rm -f $STATE_FILE
notify-send "󱄄 Screensaver enabled"
else
mkdir -p "$(dirname $STATE_FILE)"
touch $STATE_FILE
notify-send "󱄄 Screensaver disabled"
fi

7
bin/omarchy-toggle-waybar Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
if pgrep -x waybar >/dev/null; then
pkill -x waybar
else
uwsm app -- waybar >/dev/null 2>&1 &
fi

54
bin/omarchy-tui-install Executable file
View File

@ -0,0 +1,54 @@
#!/bin/bash
if [ "$#" -ne 4 ]; then
echo -e "\e[32mLet's create a TUI shortcut you can start with the app launcher.\n\e[0m"
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
APP_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'")
WINDOW_STYLE=$(gum choose --header "Window style" float tile)
ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)")
else
APP_NAME="$1"
APP_EXEC="$2"
WINDOW_STYLE="$3"
ICON_URL="$4"
fi
if [[ -z "$APP_NAME" || -z "$APP_EXEC" || -z "$ICON_URL" ]]; then
echo "You must set app name, app command, and icon URL!"
exit 1
fi
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
ICON_PATH="$ICON_DIR/$APP_NAME.png"
mkdir -p "$ICON_DIR"
if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then
echo "Error: Failed to download icon."
return 1
fi
if [[ $WINDOW_STYLE == "float" ]]; then
APP_CLASS="TUI.float"
else
APP_CLASS="TUI.tile"
fi
cat >"$DESKTOP_FILE" <<EOF
[Desktop Entry]
Version=1.0
Name=$APP_NAME
Comment=$APP_NAME
Exec=alacritty --class $APP_CLASS -e $APP_EXEC
Terminal=false
Type=Application
Icon=$ICON_PATH
StartupNotify=true
EOF
chmod +x "$DESKTOP_FILE"
if [ "$#" -ne 4 ]; then
echo -e "You can now find $APP_NAME using the app launcher (SUPER + SPACE)\n"
fi

36
bin/omarchy-tui-remove Executable file
View File

@ -0,0 +1,36 @@
#!/bin/bash
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -ne 1 ]; then
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*alacritty.*-e' "$file"; then
TUIS+=("$(basename "${file%.desktop}")")
fi
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
if ((${#TUIS[@]})); then
IFS=$'\n' SORTED_TUIS=($(sort <<<"${TUIS[*]}"))
unset IFS
APP_NAME=$(gum choose --header "Select TUI to remove..." "${SORTED_TUIS[@]}")
else
echo "No TUIs to remove."
exit 1
fi
else
APP_NAME="$1"
fi
if [[ -z "$APP_NAME" ]]; then
echo "You must provide TUI name."
exit 1
fi
rm "$DESKTOP_DIR/$APP_NAME.desktop"
rm "$ICON_DIR/$APP_NAME.png"
if [ "$#" -ne 1 ]; then
echo -e "Removed $APP_NAME\n"
fi

View File

@ -1,31 +1,10 @@
#!/bin/bash
cd ~/.local/share/omarchy
set -e
if [[ $1 == "all" ]]; then
# Run all migrations since the root commit
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H")
else
# Remember the commit we're at before upgrading in order to only run new migrations
migration_starting_point=$(git log -1 --format=%H)
fi
# Get the latest while trying to preserve any modifications
git pull --autostash
git diff --check || git reset --merge
# Run any pending migrations
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do
filename=$(basename "$file")
migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file
done
# Update system packages
echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm
# Back to where we came from
cd - >/dev/null
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-migrate
omarchy-update-system-pkgs
omarchy-update-restart
omarchy-restart-waybar # removes update-available icon

18
bin/omarchy-update-available Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
# Ensure remote is reachable
if ! git -C "$OMARCHY_PATH" ls-remote &>/dev/null; then
echo "Error: Unable to reach remote repository."
exit 1
fi
latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1))
if [[ "$current_tag" != "$latest_tag" ]]; then
echo "Omarchy update available ($latest_tag)"
exit 0
else
echo "Omarchy is up to date ($current_tag)"
exit 1
fi

5
bin/omarchy-update-git Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
echo -e "\e[32mUpdate Omarchy\e[0m"
git -C $OMARCHY_PATH pull --autostash
git -C $OMARCHY_PATH diff --check || git -C $OMARCHY_PATH reset --merge

21
bin/omarchy-update-restart Executable file
View File

@ -0,0 +1,21 @@
#!/bin/bash
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && omarchy-state clear re*-required && sudo reboot now
elif [ -f "$HOME/.local/state/omarchy/reboot-required" ]; then
gum confirm "Updates require reboot. Ready?" && omarchy-state clear re*-required && sudo reboot now
elif [ -f "$HOME/.local/state/omarchy/relaunch-required" ]; then
gum confirm "Updates require Hyprland relaunch. Ready?" && omarchy-state clear re*-required && uwsm stop
fi
for file in "$HOME"/.local/state/omarchy/restart-*-required; do
if [ -f "$file" ]; then
filename=$(basename "$file")
service=$(echo "$filename" | sed 's/restart-\(.*\)-required/\1/')
echo "Restarting $service"
omarchy-state clear "$filename"
omarchy-restart-"$service"
fi
done

23
bin/omarchy-update-system-pkgs Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
echo -e "\e[32m\nUpdate system packages\e[0m"
sudo pacman -Syu --noconfirm
echo
if omarchy-pkg-aur-accessible; then
echo -e "\e[32m\nUpdate AUR packages\e[0m"
yay -Syu --noconfirm
echo
else
echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m"
echo
fi
orphans=$(pacman -Qtdq)
if [[ -n $orphans ]]; then
echo -e "\e[32m\nRemove orphan system packages\e[0m"
for pkg in $orphans; do
sudo pacman -Rs --noconfirm "$pkg" || true
done
echo
fi

3
bin/omarchy-version Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1)

46
bin/omarchy-webapp-install Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
if [ "$#" -ne 3 ]; then
echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m"
APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app")
APP_URL=$(gum input --prompt "URL> " --placeholder "https://example.com")
ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)")
else
APP_NAME="$1"
APP_URL="$2"
ICON_URL="$3"
fi
if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_URL" ]]; then
echo "You must set app name, app URL, and icon URL!"
exit 1
fi
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop"
ICON_PATH="$ICON_DIR/$APP_NAME.png"
mkdir -p "$ICON_DIR"
if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then
echo "Error: Failed to download icon."
return 1
fi
cat >"$DESKTOP_FILE" <<EOF
[Desktop Entry]
Version=1.0
Name=$APP_NAME
Comment=$APP_NAME
Exec=omarchy-launch-webapp $APP_URL
Terminal=false
Type=Application
Icon=$ICON_PATH
StartupNotify=true
EOF
chmod +x "$DESKTOP_FILE"
if [ "$#" -ne 3 ]; then
echo -e "You can now find $APP_NAME using the app launcher (SUPER + SPACE)\n"
fi

35
bin/omarchy-webapp-remove Executable file
View File

@ -0,0 +1,35 @@
#!/bin/bash
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -eq 0 ]; then
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*omarchy-launch-webapp.*' "$file"; then
WEB_APPS+=("$(basename "${file%.desktop}")")
fi
done < <(find "$DESKTOP_DIR" -name '*.desktop' -print0)
if ((${#WEB_APPS[@]})); then
IFS=$'\n' SORTED_WEB_APPS=($(sort <<<"${WEB_APPS[*]}"))
unset IFS
APP_NAMES=$(gum choose --no-limit --header "Select web app to remove..." "${SORTED_WEB_APPS[@]}")
else
echo "No web apps to remove."
exit 1
fi
else
APP_NAMES="$*"
fi
if [[ -z "$APP_NAMES" ]]; then
echo "You must provide web app names."
exit 1
fi
for APP_NAME in $APP_NAMES; do
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
rm -f "$ICON_DIR/$APP_NAME.png"
echo "Removed $APP_NAME"
done

15
boot.sh
View File

@ -16,12 +16,17 @@ echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git
echo -e "\nCloning Omarchy..."
rm -rf ~/.local/share/omarchy/
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
# Use custom repo if specified, otherwise default to basecamp/omarchy
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then
echo -e "\nCloning Omarchy from: https://git.itsscb.de/itsscb/omarchy.git"
rm -rf ~/.local/share/omarchy/
# git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
git clone "https://git.itsscb.de/itsscb/omarchy.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed, otherwise default to master
OMARCHY_REF="${OMARCHY_REF:-master}"
if [[ $OMARCHY_REF != "master" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"

3
config/brave-flags.conf Normal file
View File

@ -0,0 +1,3 @@
--ozone-platform=wayland
--ozone-platform-hint=wayland
--enable-features=TouchpadOverscrollHistoryNavigation

View File

@ -0,0 +1,3 @@
--ozone-platform=wayland
--ozone-platform-hint=wayland
--enable-features=TouchpadOverscrollHistoryNavigation

View File

@ -0,0 +1,15 @@
{
"extensions": {
"theme": {
"id": "",
"use_system": false,
"use_custom": false
}
},
"browser": {
"theme": {
"color_scheme": 2,
"user_color": 2
}
}
}

View File

@ -1,9 +1,13 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "file",
"source": "~/.config/omarchy/branding/about.txt",
"color": { "1": "green" },
"padding": {
"top": 5,
"right": 6
"top": 2,
"right": 6,
"left": 2
}
},
"modules": [
@ -60,7 +64,7 @@
},
{
"type": "os",
"key": " OS",
"key": "󰣇 OS",
"keyColor": "yellow"
},
{
@ -81,9 +85,15 @@
"break",
{
"type": "command",
"key": "│ ├Ø",
"key": "Ø Omarchy",
"keyColor": "blue",
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\""
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"$version\""
},
{
"type": "command",
"key": "│ ├󰸌",
"keyColor": "blue",
"text": "theme=$(omarchy-theme-current); echo -e \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\""
},
{
"type": "de",

View File

@ -0,0 +1 @@
Allow Overriding System XKB Settings=False

View File

@ -0,0 +1,6 @@
# Extra autostart processes
# exec-once = uwsm app -- my-service
exec-once = [workspace 2 silent] zen-browser
exec-once = [workspace 3 silent] thunderbird
exec-once = [workspace 4 silent] deltachat-desktop
exec-once = [workspace 5 silent] ghostty

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