Compare commits

...

215 Commits

Author SHA1 Message Date
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 b8275ca5af, reversing
changes made to 23b9b15936.
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 4c46c2208a.

* Revert "Swap Spotify GUI to TUI"

This reverts commit b09d2d68cd.

* 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
David Heinemeier Hansson
d4f6859022 Revert "Swap Spotify GUI to TUI"
This reverts commit b09d2d68cd.
2025-07-29 19:17:41 +02:00
David Heinemeier Hansson
8c2f51c08c Revert "Correct package name"
This reverts commit 4c46c2208a.
2025-07-29 19:17:39 +02:00
David Heinemeier Hansson
91f5c4646c 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.
2025-07-29 16:44:55 +02:00
Ryan Hughes
25f4513feb Add theme update script (#391) 2025-07-29 16:42:18 +02:00
David Heinemeier Hansson
4c46c2208a Correct package name 2025-07-29 16:33:47 +02:00
David Heinemeier Hansson
b09d2d68cd Swap Spotify GUI to TUI 2025-07-29 16:31:40 +02:00
David Heinemeier Hansson
5c98de75d1 Give the new font selector a bit of room to breathe 2025-07-29 15:27:34 +02:00
David Heinemeier Hansson
66db3867a6 Add a very basic font selector for terminal 2025-07-29 15:27:25 +02:00
David Heinemeier Hansson
4f56efe0e9 Include the common JetBrains substitution 2025-07-29 15:18:30 +02:00
David Heinemeier Hansson
5405d383dc Use fonts from AUR instead of downloading them directly like an animal 2025-07-29 15:15:39 +02:00
David Heinemeier Hansson
8ab18c1d38 Hot reload theme for quick switching 2025-07-29 14:42:48 +02:00
Mohamedsayhii
c95d14e5e2 Enable using finder in walker (#396)
* Enable using finder in walker

* capitalize name property
2025-07-29 14:28:14 +02:00
David Heinemeier Hansson
bdf5540cf3 Formatting 2025-07-29 14:21:14 +02:00
David Heinemeier Hansson
033b638992 Merge pull request #393 from sailoz/fix-splash-migration
Update location of sourced install script
2025-07-29 12:53:21 +02:00
David Heinemeier Hansson
eb74d4cb6f Add OMARCHY_PATH for easy access 2025-07-29 08:42:27 +02:00
Shigeto Kumagai
1b576eb7f8 Update location of sourced install script 2025-07-29 13:14:37 +09:00
David Heinemeier Hansson
b7cbffc91d Merge pull request #383 from basecamp/dev
Omarchy v1.7.0
2025-07-28 14:13:59 +02:00
David Heinemeier Hansson
9c5a29def4 Fix sort order bug with italics 2025-07-28 13:14:35 +02:00
David Heinemeier Hansson
189596cc88 Add migration for new ristretto theme 2025-07-28 13:01:02 +02:00
David Heinemeier Hansson
fbec9b5163 Always setsid so we don't die with the script 2025-07-28 12:58:57 +02:00
David Heinemeier Hansson
7f2c9391d2 /etc/sudoers.d is not accessible without sudo 2025-07-28 12:57:23 +02:00
David Heinemeier Hansson
bba8802c29 Merge branch 'master' into dev 2025-07-28 12:52:49 +02:00
Greg Helding
51fe5bf6e8 Add ristretto theme to default themes (#384)
* Add ristretto theme to defaults

* Update alacritty.toml
2025-07-28 12:49:12 +02:00
David Heinemeier Hansson
588ce42f08 Split and explain 2025-07-28 10:03:11 +02:00
David Heinemeier Hansson
c589130d8b Merge pull request #379 from c4software/patch-3
Add ALT+Tab bindings to cycle windows and bring active to top
2025-07-28 10:02:47 +02:00
David Heinemeier Hansson
e39ec15197 Merge pull request #380 from sobran/fix/steam-windowrule
Fix: restrict Steam centering to only the main window
2025-07-28 09:59:15 +02:00
David Heinemeier Hansson
7589683cd1 Adjust migration to check for whether fastfetch already has the change or not 2025-07-28 09:58:51 +02:00
David Heinemeier Hansson
b1753c1c7c Merge pull request #382 from tahayvr/omarchy-in-fastfetch
Display current Omarchy version in Fastfetch
2025-07-28 09:56:31 +02:00
David Heinemeier Hansson
e8d095c787 Match logo.txt 2025-07-28 09:32:44 +02:00
Taha
01d6deae34 Add migration script for Omarchy version in fastfetch 2025-07-27 23:34:10 -07:00
Taha
478b2da0f1 Add omarchy version to fastfetch config 2025-07-27 23:24:06 -07:00
Patrick Hoffmann
9d7ed32fc9 Fix: restrict Steam centering to only the main window 2025-07-28 00:33:53 +02:00
Brosseau Valentin
eca4f65475 Add ALT+Tab bindings to cycle windows and bring active to top 2025-07-27 21:07:20 +02:00
David Heinemeier Hansson
a801fde7b9 Recommend starship.rs for prompt 2025-07-27 14:10:04 -04:00
David Heinemeier Hansson
35a603d0d2 Don't force 2 2025-07-27 13:10:51 -04:00
David Heinemeier Hansson
e446c4c71e Improve the examples and include the fractional scaling example 2025-07-27 12:33:54 -04:00
David Heinemeier Hansson
2953db18d9 Reveal a fully .bashrc that provides examples of what to overwrite 2025-07-27 10:45:22 -04:00
David Heinemeier Hansson
6e664c84a9 Merge pull request #369 from basecamp/update-boot-ansi
Update boot.sh ANSI
2025-07-26 22:02:09 -04:00
David Heinemeier Hansson
44925a6085 More readable 2025-07-26 21:58:09 -04:00
David Heinemeier Hansson
a0c90fb3db Not needed 2025-07-26 21:57:27 -04:00
David Heinemeier Hansson
008fab9df3 Turn dazzle into a full-blown screensaver 2025-07-26 21:53:13 -04:00
David Heinemeier Hansson
ffd136cdc6 Add a fun dazzle with the Omarchy logo that just keeps looping 2025-07-26 21:10:52 -04:00
Sean Mitchell
0ff139860d Update boot.sh ANSI 2025-07-26 17:04:50 -07:00
David Heinemeier Hansson
42886f86bb Ordering 2025-07-26 18:49:33 -04:00
David Heinemeier Hansson
24e3f752ba Float and center About 2025-07-26 18:49:22 -04:00
David Heinemeier Hansson
64c6e872fc Match Omarchy TUI window to the slimmer logo 2025-07-26 18:38:55 -04:00
David Heinemeier Hansson
65577c1757 Merge branch 'dev' 2025-07-26 18:31:22 -04:00
David Heinemeier Hansson
b50a4e7a74 No color works better with more themes 2025-07-26 18:31:11 -04:00
152 changed files with 1567 additions and 840 deletions

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,151 +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 expand
echo " $OMARCHY_VERSION"
}
main_menu() {
show_ascii_art
local options=("Theme" "Setup" "Update" "Manual" "Exit")
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "") || exit 0
case "$choice" in
Theme) theme_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" "Remove" "Back")
local commands=(
"omarchy-theme-menu"
"install_theme_prompt"
"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)

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}}"

20
bin/omarchy-cmd-screensaver Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
if command -v tte &>/dev/null; then
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 $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
"$effect" &
while pgrep tte >/dev/null; do
if read -n 1 -t 0.01; then
pkill tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
exit 0
fi
done
done
else
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
fi

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"

16
bin/omarchy-font-menu Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
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
~/.local/share/omarchy/bin/omarchy-show-done

19
bin/omarchy-launch-screensaver Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
# Exit early if screensave is already running
pgrep -f "alacritty --class Screensaver" && exit 0
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 \
-o 'colors.primary.background="#000000"' \
-o 'colors.cursor.cursor="#000000"' \
-o 'font.size=18' \
-o 'window.opacity=1' \
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver
done
hyprctl dispatch focusmonitor $focused

208
bin/omarchy-menu Executable file
View File

@@ -0,0 +1,208 @@
#!/bin/bash
OMARCHY_BIN_PATH=~/.local/share/omarchy/bin
menu() {
echo -e "$2" | walker --dmenu --theme dmenu_250 -p "$1…"
}
terminal() {
alacritty --class Omarchy -e $1
}
present_terminal() {
alacritty --class Omarchy -e bash -c "~/.local/share/omarchy/bin/omarchy-show-logo; eval \"$1\"; ~/.local/share/omarchy/bin/omarchy-show-done;"
}
edit_in_nvim() {
notify-send "Editing config file" "$1"
alacritty -e nvim "$1"
}
show_learn_menu() {
case $(menu "Learn" " Keybindings\n Omarchy\n Hyprland\n󰣇 Arch\n Neovim\n󱆃 Bash") in
*Keybindings*) $OMARCHY_BIN_PATH/omarchy-menu-keybindings ;;
*Omarchy*) setsid chromium --new-window --app="https://manuals.omamix.org/2/the-omarchy-manual" & ;;
*Hyprland*) setsid chromium --new-window --app="https://wiki.hypr.land/" & ;;
*Arch*) setsid chromium --new-window --app="https://wiki.archlinux.org/title/Main_page" & ;;
*Bash*) setsid chromium --new-window --app="https://devhints.io/bash" & ;;
*Neovim*) setsid chromium --new-window --app="https://www.lazyvim.org/keymaps" & ;;
*) show_main_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background") in
*Theme*) show_theme_menu ;;
*Font*) terminal $OMARCHY_BIN_PATH/omarchy-font-menu ;;
*Background*) $OMARCHY_BIN_PATH/omarchy-theme-bg-next ;;
*) show_main_menu ;;
esac
}
show_theme_menu() {
theme=$(menu "Theme" "$($OMARCHY_BIN_PATH/omarchy-theme-list)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
$OMARCHY_BIN_PATH/omarchy-theme-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_BIN_PATH/omarchy-cmd-screenshot ;;
*Window*) $OMARCHY_BIN_PATH/omarchy-cmd-screenshot window ;;
*Display*) $OMARCHY_BIN_PATH/omarchy-cmd-screenshot output ;;
*) show_capture_menu ;;
esac
}
show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Display") in
*Region*) $OMARCHY_BIN_PATH/omarchy-cmd-screenrecord ;;
*Display*) $OMARCHY_BIN_PATH/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_BIN_PATH/omarchy-launch-screensaver ;;
*Nightlight*) $OMARCHY_BIN_PATH/omarchy-toggle-nightlight ;;
*Idle*) $OMARCHY_BIN_PATH/omarchy-toggle-idle ;;
*Bar*) pkill -SIGUSR1 waybar ;;
*) show_main_menu ;;
esac
}
show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n Configs\n󰈷 Fingerprint\n Fido2"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
*Wifi*) alacritty --class=Impala -e impala ;;
*Bluetooth*) blueberry ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*Configs*) show_setup_configs_menu ;;
*Fingerprint*) terminal $OMARCHY_BIN_PATH/omarchy-setup-fingerprint ;;
*Fido2*) terminal $OMARCHY_BIN_PATH/omarchy-setup-fido2 ;;
*) show_main_menu ;;
esac
}
show_setup_configs_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 && ~/.local/share/omarchy/bin/omarchy-restart-hypridle ;;
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && ~/.local/share/omarchy/bin/omarchy-restart-hyprsunset ;;
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && ~/.local/share/omarchy/bin/omarchy-restart-swayosd ;;
*Walker*) edit_in_nvim ~/.config/walker/config.toml && ~/.local/share/omarchy/bin/omarchy-restart-walker ;;
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && ~/.local/share/omarchy/bin/omarchy-restart-waybar ;;
*XCompose*) edit_in_nvim ~/.XCompose && ~/.local/share/omarchy/bin/omarchy-restart-xcompose ;;
*) show_main_menu ;;
esac
}
show_install_menu() {
case $(menu "Install" "󰣇 Package\n Web App\n󰸌 Theme\n Background\n Dropbox\n Steam\n Docker DBs") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-install ;;
*Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;;
*Theme*) terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Dropbox*) terminal $OMARCHY_BIN_PATH/omarchy-setup-dropbox ;;
*Steam*) terminal $OMARCHY_BIN_PATH/omarchy-setup-steam ;;
*Docker*) terminal $OMARCHY_BIN_PATH/omarchy-setup-docker-dbs ;;
*) show_main_menu ;;
esac
}
show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-remove ;;
*Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-remove ;;
*Theme*) present_terminal $OMARCHY_BIN_PATH/omarchy-theme-remove ;;
*Fingerprint*) terminal "$OMARCHY_BIN_PATH/omarchy-setup-fingerprint --remove" ;;
*Fido2*) terminal "$OMARCHY_BIN_PATH/omarchy-setup-fido2 --remove" ;;
*) show_main_menu ;;
esac
}
show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Configs\n󰸌 Themes\n Timezone") in
*Omarchy*) terminal $OMARCHY_BIN_PATH/omarchy-update ;;
*Configs*) show_update_configs_menu ;;
*Themes*) terminal $OMARCHY_BIN_PATH/omarchy-theme-update ;;
*Timezone*) $OMARCHY_BIN_PATH/omarchy-cmd-tzupdate ;;
*) show_main_menu ;;
esac
}
show_update_configs_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_BIN_PATH/omarchy-refresh-hyprland ;;
*Hypridle*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hypridle ;;
*Hyprlock*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprlock ;;
*Hyprsunset*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-hyprsunset ;;
*Plymouth*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-plymouth ;;
*Swayosd*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-swayosd ;;
*Walker*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-walker ;;
*Waybar*) present_terminal $OMARCHY_BIN_PATH/omarchy-refresh-waybar ;;
*) show_main_menu ;;
esac
}
show_system_menu() {
case $(menu "System" " Lock\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
*) show_main_menu ;;
esac
}
show_main_menu() {
go_to_menu "$(menu "Start" "󰀻 Apps\n󰧑 Learning\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*) gtk-launch About.desktop ;;
esac
}
if [[ -n "$1" ]]; then
go_to_menu "$1"
else
show_main_menu
fi

View File

@@ -3,34 +3,47 @@
# 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,/'
}
# 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 +51,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

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

@@ -0,0 +1,5 @@
#!/bin/bash
yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75% | xargs -ro yay -S --noconfirm
~/.local/share/omarchy/bin/omarchy-show-done

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

@@ -0,0 +1,5 @@
#!/bin/bash
yay -Qqe | fzf --multi --preview 'yay -Qi {1}' --preview-window=down:75% | xargs -ro yay -Rns --noconfirm
~/.local/share/omarchy/bin/omarchy-show-done

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"
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
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/hypridle.conf
~/.local/share/omarchy/bin/omarchy-restart-hypridle

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

@@ -0,0 +1,7 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/autostart.conf
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/bindings.conf
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/envs.conf
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/input.conf
~/.local/share/omarchy/bin/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
~/.local/share/omarchy/bin/omarchy-refresh-config hypr/hyprlock.conf

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

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

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 &
~/.local/share/omarchy/bin/omarchy-refresh-config swayosd/config.toml
~/.local/share/omarchy/bin/omarchy-refresh-config swayosd/style.css
~/.local/share/omarchy/bin/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
uwsm app -- walker --gapplication-service &
~/.local/share/omarchy/bin/omarchy-refresh-config walker/config.toml
~/.local/share/omarchy/bin/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
~/.local/share/omarchy/bin/omarchy-refresh-config waybar/config.jsonc
~/.local/share/omarchy/bin/omarchy-refresh-config waybar/style.css
~/.local/share/omarchy/bin/omarchy-restart-waybar

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
~/.local/share/omarchy/bin/omarchy-restart-app hypridle

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

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

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

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

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

@@ -0,0 +1,4 @@
#!/bin/bash
pkill walker
setsid uwsm app -- walker --gapplication-service &

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

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

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

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

19
bin/omarchy-setup-docker-dbs Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
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
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,5 +1,7 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
echo "Installing all dependencies..."
yay -S --noconfirm --needed \
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
@@ -7,3 +9,5 @@ yay -S --noconfirm --needed \
echo "Starting Dropbox..."
uwsm app -- dropbox-cli start &>/dev/null &
echo "See Dropbox icon behind  hover tray in top right and right-click for setup."
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,11 +1,15 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your Fido2 device from sudo authentication.\n\e[0m"
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
echo -e "\e[32mLet's setup your Fido2 device for sudo authentication.\n\e[0m"
yay -S --noconfirm --needed libfido2 pam-u2f
tokens=$(fido2-token -L)
@@ -18,6 +22,10 @@ else
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
if [ $? -ne 0 ]; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
exit 1
fi
sudo mv /tmp/fido2 /etc/fido2/fido2
fi
@@ -31,3 +39,5 @@ else
fi
fi
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,11 +1,15 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your fingerprint scanner from authentication.\n\e[0m"
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
echo -e "\e[32mLet's setup your fingerprint scanner for authentication.\n\e[0m"
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then
@@ -41,3 +45,5 @@ EOF
fi
fi
fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,5 +1,7 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
echo "Adding multilib repository for 32-bit compatibility"
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy
@@ -7,3 +9,5 @@ sudo pacman -Sy
echo "Now pick dependencies matching your graphics card"
yay -S steam
gtk-launch steam >/dev/null 2>&1 &
~/.local/share/omarchy/bin/omarchy-show-done

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

@@ -0,0 +1,5 @@
#!/bin/bash
echo
gum spin --spinner "globe" --title "Done!" -- sleep 2
clear

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

View File

@@ -4,11 +4,17 @@
# Usage: omarchy-theme-install <git-repo-url>
if [ -z "$1" ]; then
echo "Usage: omarchy-theme-install <git-repo-url>"
~/.local/share/omarchy/bin/omarchy-show-logo
echo -e "\e[32mSee extra themes on 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"
@@ -25,4 +31,4 @@ if ! git clone "$REPO_URL" "$THEME_PATH"; then
fi
# Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME
~/.local/share/omarchy/bin/omarchy-theme-set $THEME_NAME

View File

@@ -6,7 +6,7 @@ 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 \) | while read -r path; do
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')
@@ -15,17 +15,7 @@ mapfile -t themes < <(
else
echo "$display_name"
fi
done | sort
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"
printf '%s\n' "${themes[@]}"

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
~/.local/share/omarchy/bin/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
extra_themes=$(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n')
if [[ -n "$extra_themes" ]]; 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"
~/.local/share/omarchy/bin/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,23 @@ 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
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 btop
pkill -SIGUSR2 waybar
~/.local/share/omarchy/bin/omarchy-restart-waybar
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
makoctl reload
hyprctl reload
# Set new background
"$HOME/.local/share/omarchy/bin/omarchy-theme-bg-next"
~/.local/share/omarchy/bin/omarchy-theme-bg-next

9
bin/omarchy-theme-update Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
for dir in ~/.config/omarchy/themes/*/; do
[ -d "$dir" ] && [ ! -L "${dir%/}" ] && echo "Updating: $(basename "$dir")" && git -C "$dir" pull
done
~/.local/share/omarchy/bin/omarchy-show-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

View File

@@ -1,31 +1,27 @@
#!/bin/bash
cd ~/.local/share/omarchy
# Exit immediately if a command exits with a non-zero status
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
# Show logo
clear
cat <~/.local/share/omarchy/logo.txt
# Get the latest while trying to preserve any modifications
git pull --autostash
git diff --check || git reset --merge
omarchy_path=~/.local/share/omarchy
git -C $omarchy_path pull --autostash
git -C $omarchy_path diff --check || git -C $omarchy_path 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
# Run migrations
~/.local/share/omarchy/bin/omarchy-migrate
# Update system packages
echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm
# Back to where we came from
cd - >/dev/null
# Offer to reboot if the kernel has been changed
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now
fi
~/.local/share/omarchy/bin/omarchy-show-done

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

@@ -0,0 +1,20 @@
#!/bin/bash
omarchy_path="$HOME/.local/share/omarchy"
# 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

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

@@ -0,0 +1,48 @@
#!/bin/bash
if [ "$#" -ne 3 ]; then
~/.local/share/omarchy/bin/omarchy-show-logo
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=chromium --new-window --ozone-platform=wayland --app="$APP_URL" --name="$APP_NAME" --class="$APP_NAME"
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"
~/.local/share/omarchy/bin/omarchy-show-done
fi

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

@@ -0,0 +1,39 @@
#!/bin/bash
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -ne 1 ]; then
~/.local/share/omarchy/bin/omarchy-show-logo
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*chromium.*--app' "$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_NAME=$(gum choose --header "Select web app to remove..." "${SORTED_WEB_APPS[@]}")
else
echo "No web apps to remove."
exit 1
fi
else
APP_NAME="$1"
fi
if [[ -z "$APP_NAME" ]]; then
echo "You must provide web app 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"
~/.local/share/omarchy/bin/omarchy-show-done
fi

26
boot.sh
View File

@@ -1,23 +1,27 @@
#!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ █
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ███▄▄▄▄██ ███ ███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
██████ █ ███ █ ███ █▀ ███ ███ ████████▀ ███ █▀ █████▀
███ ███ '
ansi_art=' ▄▄▄
▄█████ ▄███████████▄ ▄███████ ▄███████ ███████ ▄█ █ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ █████ ███ █▀ ███ ███ ███ ███
███ ███ ███ ███ ███ ███▄▄▄██████▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
███ ███ ███ ███ ███ ███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
███ █▀ '
clear
echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git
echo -e "\nCloning Omarchy..."
# Use custom repo if specified, otherwise default to basecamp/omarchy
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
rm -rf ~/.local/share/omarchy/
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then

View File

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

View File

@@ -1,144 +1,149 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 5,
"right": 6
}
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 5,
"right": 6
}
},
"modules": [
"break",
{
"type": "custom",
"format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
},
"modules": [
"break",
{
"type": "custom",
"format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
},
{
"type": "host",
"key": " PC",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├",
"showPeCoreCount": true,
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├",
"detectionMethod": "pci",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󱄄",
"keyColor": "green"
},
{
"type": "disk",
"key": "│ ├󰋊",
"keyColor": "green"
},
{
"type": "memory",
"key": "│ ├",
"keyColor": "green"
},
{
"type": "swap",
"key": "└ └󰓡 ",
"keyColor": "green",
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
{
"type": "custom",
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
},
{
"type": "os",
"key": " OS",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "└ └",
"keyColor": "yellow"
},
"break",
{
"type": "de",
"key": " DE",
"keyColor": "blue"
},
{
"type": "wm",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue",
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminal",
"key": "└ └",
"keyColor": "blue"
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
{
"type": "custom",
"format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐"
},
{
"type": "command",
"key": " OS Age ",
"keyColor": "magenta",
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
},
{
"type": "uptime",
"key": " Uptime ",
"keyColor": "magenta"
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
]
{
"type": "host",
"key": " PC",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├",
"showPeCoreCount": true,
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├",
"detectionMethod": "pci",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󱄄",
"keyColor": "green"
},
{
"type": "disk",
"key": "│ ├󰋊",
"keyColor": "green"
},
{
"type": "memory",
"key": "│ ├",
"keyColor": "green"
},
{
"type": "swap",
"key": "└ └󰓡 ",
"keyColor": "green"
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
{
"type": "custom",
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
},
{
"type": "os",
"key": " OS",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "└ └",
"keyColor": "yellow"
},
"break",
{
"type": "command",
"key": "│ ├Ø",
"keyColor": "blue",
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\""
},
{
"type": "de",
"key": " DE",
"keyColor": "blue"
},
{
"type": "wm",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "└ └",
"keyColor": "blue"
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
{
"type": "custom",
"format": "\u001b[90m┌────────────────────Uptime / Age────────────────────┐"
},
{
"type": "command",
"key": " OS Age ",
"keyColor": "magenta",
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
},
{
"type": "uptime",
"key": " Uptime ",
"keyColor": "magenta"
},
{
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break"
]
}

View File

@@ -0,0 +1,2 @@
# Extra autostart processes
# exec-once = uwsm app -- my-service

25
config/hypr/bindings.conf Normal file
View File

@@ -0,0 +1,25 @@
# Application bindings
$terminal = uwsm app -- alacritty
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland
$webapp = $browser --app
bindd = SUPER, return, Terminal, exec, $terminal
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER, M, Music, exec, uwsm app -- spotify
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
bindd = SUPER, T, Activity, exec, $terminal -e btop
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop
bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password
bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com"
bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com"
bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/"
bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com"
bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/"
bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/"
bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations"
bindd = SUPER, X, X, exec, $webapp="https://x.com/"
bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post"

3
config/hypr/envs.conf Normal file
View File

@@ -0,0 +1,3 @@
# Extra env variables
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
# env = MY_GLOBAL_ENV,setting

View File

@@ -1,8 +1,14 @@
general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_unlock_cmd = pkill -SIGUSR2 waybar # prevent stacking of waybar when waking
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_lock_cmd = pkill -f "alacritty --class Screensaver" # avoid running screensaver when locked
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking
}
listener {
timeout = 150 # 2.5min
on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
}
listener {

View File

@@ -1,13 +1,6 @@
# Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/
# You're encouraged to tailor your Hyprland config in this file by adding or overwriting any settings.
# But don't change anything that lives in ~/.local/share/omarchy, if you can help it!
# Those files are overwritten when Omarchy is updated.
# Change your personal monitor setup in here to keep the main config portable
source = ~/.config/hypr/monitors.conf
# Use defaults Omarchy defaults
# Use defaults Omarchy defaults (but don't edit these directly!)
source = ~/.local/share/omarchy/default/hypr/autostart.conf
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
@@ -18,64 +11,9 @@ source = ~/.local/share/omarchy/default/hypr/input.conf
source = ~/.local/share/omarchy/default/hypr/windows.conf
source = ~/.config/omarchy/current/theme/hyprland.conf
# Application bindings
$terminal = uwsm app -- alacritty
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland
$webapp = $browser --app
bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, uwsm app -- nautilus --new-window
bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, uwsm app -- spotify
bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker
bind = SUPER, G, exec, uwsm app -- signal-desktop
bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu
bind = SUPER, slash, exec, uwsm app -- 1password
bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
bind = SUPER, E, exec, $webapp="https://app.hey.com"
bind = SUPER, Y, exec, $webapp="https://youtube.com/"
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Extra autostart processes
# exec-once = uwsm app -- my-service
# Extra env variables
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
# env = MY_GLOBAL_ENV,setting
# Control your input devices
# See https://wiki.hypr.land/Configuring/Variables/#input
input {
# Use multiple keyboard layouts and switch between them with Alt + Space
# kb_layout = us,dk
kb_options = compose:caps # ,grp:alt_space_toggle
# Change speed of keyboard repeat
repeat_rate = 40
repeat_delay = 600
# Increase sensitity for mouse/trackpack (default: 0)
# sensitivity = 0.35
touchpad {
# Use natural (inverse) scrolling
# natural_scroll = true
# Use two-finger clicks for right-click instead of lower-right corner
# clickfinger_behavior = true
# Control the speed of your scrolling
scroll_factor = 0.4
}
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, class:Alacritty
# Change your own setup in these files (and overwrite any settings from defaults!)
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/input.conf
source = ~/.config/hypr/bindings.conf
source = ~/.config/hypr/envs.conf
source = ~/.config/hypr/autostart.conf

View File

@@ -0,0 +1,6 @@
# Makes hyprsunset do nothing to the screen by default
# Without this, the default applies some tint to the monitor
profile {
time = 00:00
identity = true
}

28
config/hypr/input.conf Normal file
View File

@@ -0,0 +1,28 @@
# Control your input devices
# See https://wiki.hypr.land/Configuring/Variables/#input
input {
# Use multiple keyboard layouts and switch between them with Alt + Space
# kb_layout = us,dk
kb_options = compose:caps # ,grp:alt_space_toggle
# Change speed of keyboard repeat
repeat_rate = 40
repeat_delay = 600
# Increase sensitity for mouse/trackpack (default: 0)
# sensitivity = 0.35
touchpad {
# Use natural (inverse) scrolling
# natural_scroll = true
# Use two-finger clicks for right-click instead of lower-right corner
# clickfinger_behavior = true
# Control the speed of your scrolling
scroll_factor = 0.4
}
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, class:Alacritty

View File

@@ -1,17 +1,20 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
# Change to 1 if on a 1x display (then change last "auto" to 1 in monitor=)
# Change to something like 1.75 for fractional scaling (can work well with 1.66667 monitor scaling)
# Note: You must relaunch Hyprland after changing any env like this (use Super+Esc, then Relaunch)
env = GDK_SCALE,2
# Use single default monitor (see all monitors with: hyprctl monitors)
# List current monitors and resolutions possible: hyprctl monitors
# Format: monitor = [port], resolution, position, scale
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
env = GDK_SCALE,2
monitor=,preferred,auto,auto
# Exmaple for fractional scaling that works well with GDK_SCALE,1.75
# Good compromise for 27" or 32" 4K monitors (but fractional!)
# env = GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667
# Straight 1x setup for low-resolution displays like 1080p or 1440p
# env = GDK_SCALE,1
# monitor=,preferred,auto,1
# Example for Framework 13 w/ 6K XDR Apple display
# monitor = DP-5, 6016x3384@60.00, auto, 2
# monitor = eDP-1, 2880x1920@120.00, auto, 2
# monitor = DP-5, 6016x3384@60, auto, 2
# monitor = eDP-1, 2880x1920@120, auto, 2

View File

@@ -1,4 +1,4 @@
[server]
show_percentage = true
max_volume = 150
max_volume = 100
style = "./style.css"

View File

@@ -6,7 +6,7 @@ theme = "omarchy-default"
theme_base = []
theme_location = ["~/.local/share/omarchy/default/walker/themes/"]
monitor = ""
hotreload_theme = false
hotreload_theme = true
as_window = false
timeout = 0
disable_click_to_close = false
@@ -42,7 +42,7 @@ on_query_change = ""
[list]
dynamic_sub = true
keyboard_scroll_style = "emacs"
max_entries = 50
max_entries = 200
show_initial_entries = true
single_click = true
visibility_threshold = 20
@@ -199,20 +199,21 @@ typeahead = true
hidden = true
[builtins.finder]
use_fd = false
use_fd = true
fd_flags = "--ignore-vcs --type file --type directory"
cmd_alt = "xdg-open $(dirname ~/%RESULT%)"
weight = 5
icon = "file"
name = "finder"
name = "Finder"
placeholder = "Finder"
switcher_only = true
ignore_gitignore = true
refresh = true
concurrency = 8
show_icon_when_single = true
preview_images = false
hidden = true
preview_images = true
hidden = false
prefix = "."
[builtins.runner]
eager_loading = true

View File

@@ -5,10 +5,12 @@
"spacing": 0,
"height": 26,
"modules-left": [
"custom/omarchy",
"hyprland/workspaces"
],
"modules-center": [
"clock"
"clock",
"custom/update"
],
"modules-right": [
"group/tray-expander",
@@ -42,6 +44,17 @@
"5": []
}
},
"custom/omarchy": {
"format": "",
"on-click": "~/.local/share/omarchy/bin/omarchy-menu",
"tooltip-format": "SUPER + ALT + SPACE"
},
"custom/update": {
"format": "",
"exec": "~/.local/share/omarchy/bin/omarchy-update-available",
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
"interval": 3600
},
"cpu": {
"interval": 5,
"format": "󰍛",

View File

@@ -26,6 +26,10 @@
min-width: 9px;
}
#workspaces button.empty {
opacity: 0.5;
}
#tray,
#cpu,
#battery,
@@ -33,7 +37,7 @@
#bluetooth,
#pulseaudio,
#clock,
#custom-power-menu {
#custom-omarchy {
min-width: 12px;
margin: 0 7.5px;
}

View File

@@ -1,3 +1,4 @@
# Editor used by CLI
export EDITOR="nvim"
export SUDO_EDITOR="$EDITOR"
export BAT_THEME=ansi

View File

@@ -15,59 +15,23 @@ iso2sd() {
fi
}
# Create a desktop launcher for a web app
web2app() {
if [ "$#" -ne 3 ]; then
echo "Usage: web2app <AppName> <AppURL> <IconURL> (IconURL must be in PNG -- use https://dashboardicons.com)"
return 1
# Format an entire drive for a single partition using ext4
format-drive() {
if [ $# -ne 2 ]; then
echo "Usage: format-drive <device> <name>"
echo "Example: format-drive /dev/sda 'My Stuff'"
echo -e "\nAvailable drives:"
lsblk -d -o NAME -n | awk '{print "/dev/"$1}'
else
echo "WARNING: This will completely erase all data on $1 and label it '$2'."
read -rp "Are you sure you want to continue? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
sudo wipefs -a "$1"
sudo dd if=/dev/zero of="$1" bs=1M count=100 status=progress
sudo parted -s "$1" mklabel gpt
sudo parted -s "$1" mkpart primary ext4 1MiB 100%
sudo mkfs.ext4 -L "$2" "$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")"
echo "Drive $1 formatted and labeled '$2'."
fi
fi
local APP_NAME="$1"
local APP_URL="$2"
local ICON_URL="$3"
local ICON_DIR="$HOME/.local/share/applications/icons"
local DESKTOP_FILE="$HOME/.local/share/applications/${APP_NAME}.desktop"
local 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=chromium --new-window --ozone-platform=wayland --app="$APP_URL" --name="$APP_NAME" --class="$APP_NAME"
Terminal=false
Type=Application
Icon=$ICON_PATH
StartupNotify=true
EOF
chmod +x "$DESKTOP_FILE"
}
web2app-remove() {
if [ "$#" -ne 1 ]; then
echo "Usage: web2app-remove <AppName>"
return 1
fi
local APP_NAME="$1"
local ICON_DIR="$HOME/.local/share/applications/icons"
local DESKTOP_FILE="$HOME/.local/share/applications/${APP_NAME}.desktop"
local ICON_PATH="${ICON_DIR}/${APP_NAME}.png"
rm "$DESKTOP_FILE"
rm "$ICON_PATH"
}
# Ensure changes to ~/.XCompose are immediately available
refresh-xcompose() {
pkill fcitx5
uwsm app -- fcitx5 >/dev/null 2>&1 &
}

View File

@@ -12,3 +12,6 @@ fi
# Set complete path
export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH"
set +h
# Omarchy path
export OMARCHY_PATH="/home/$USER/.local/share/omarchy"

14
default/bashrc Normal file
View File

@@ -0,0 +1,14 @@
# All the default Omarchy aliases and functions
# (don't mess with these directly, just overwrite them here!)
source ~/.local/share/omarchy/default/bash/rc
# Add your own exports, aliases, and functions here.
#
# Make an alias for invoking commands you use constantly
# alias p='python'
#
# Use VSCode instead of neovim as your default editor
# export EDITOR="code"
#
# Set a custom prompt with the directory revealed (alternatively use https://starship.rs)
# PS1="\W \[\e]0;\w\a\]$PS1"

8
default/hypr/apps.conf Normal file
View File

@@ -0,0 +1,8 @@
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf

View File

@@ -0,0 +1,6 @@
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Only slight opacity when unfocused
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube

View File

@@ -0,0 +1,2 @@
# Remove 1px border around hyprshot screenshots
layerrule = noanim, selection

View File

@@ -0,0 +1,9 @@
# Picture-in-picture overlays
windowrule = tag +pip, title:(Picture.{0,1}in.{0,1}[Pp]icture)
windowrule = float, tag:pip
windowrule = pin, tag:pip
windowrule = size 600 338, tag:pip
windowrule = keepaspectratio, tag:pip
windowrule = noborder, tag:pip
windowrule = opacity 1 1, tag:pip
windowrule = move 100%-w-40 4%, tag:pip

View File

@@ -0,0 +1,3 @@
windowrule = fullscreen, class:com.libretro.RetroArch
windowrule = opacity 1 1, class:com.libretro.RetroArch

View File

@@ -0,0 +1,4 @@
# Float Steam, fullscreen RetroArch
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = opacity 1 1, class:steam

View File

@@ -0,0 +1,16 @@
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 600 470, class:Omarchy
windowrule = size 700 470 class:About
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
# No transparency on media windows
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$

View File

@@ -0,0 +1,2 @@
# Application-sepcific animation
layerrule = noanim, walker

View File

@@ -1,15 +1,15 @@
# Deprecated bindings file. New installations include everything directly.
bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, $fileManager
bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, $music
bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker
bind = SUPER, G, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager
bindd = SUPER, return, Terminal, exec, $terminal
bindd = SUPER, F, File manager, exec, $fileManager
bindd = SUPER, B, Web browser, exec, $browser
bindd = SUPER, M, Music player, exec, $music
bindd = SUPER, N, Neovim, exec, $terminal -e nvim
bindd = SUPER, T, Top, exec, $terminal -e btop
bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Messenger, exec, $messenger
bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
bindd = SUPER, slash, Pasword manager, exec, $passwordManager
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf

View File

@@ -2,15 +2,15 @@
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
# Laptop multimedia keys for volume and LCD brightness (with OSD)
bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise
bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower
bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle
bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle
bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise
bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower
# Requires playerctl
bindl = , XF86AudioNext, exec, $osdclient --playerctl next
bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous

View File

@@ -1,59 +1,62 @@
# Close window
bind = SUPER, W, killactive,
bindd = SUPER, W, Close active window, killactive,
# Control tiling
bind = SUPER, J, togglesplit, # dwindle
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, V, togglefloating,
bind = SHIFT, F11, fullscreen, 0
bindd = SUPER, J, Toggle split, togglesplit, # dwindle
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
bindd = SUPER, V, Toggle floating, togglefloating,
bindd = SHIFT, F11, Force full screen, fullscreen, 0
# Move focus with mainMod + arrow keys
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
bindd = SUPER, left, Move focus left, movefocus, l
bindd = SUPER, right, Move focus right, movefocus, r
bindd = SUPER, up, Move focus up, movefocus, u
bindd = SUPER, down, Move focus down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = SUPER, code:10, workspace, 1
bind = SUPER, code:11, workspace, 2
bind = SUPER, code:12, workspace, 3
bind = SUPER, code:13, workspace, 4
bind = SUPER, code:14, workspace, 5
bind = SUPER, code:15, workspace, 6
bind = SUPER, code:16, workspace, 7
bind = SUPER, code:17, workspace, 8
bind = SUPER, code:18, workspace, 9
bind = SUPER, code:19, workspace, 10
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = SUPER SHIFT, code:10, movetoworkspace, 1
bind = SUPER SHIFT, code:11, movetoworkspace, 2
bind = SUPER SHIFT, code:12, movetoworkspace, 3
bind = SUPER SHIFT, code:13, movetoworkspace, 4
bind = SUPER SHIFT, code:14, movetoworkspace, 5
bind = SUPER SHIFT, code:15, movetoworkspace, 6
bind = SUPER SHIFT, code:16, movetoworkspace, 7
bind = SUPER SHIFT, code:17, movetoworkspace, 8
bind = SUPER SHIFT, code:18, movetoworkspace, 9
bind = SUPER SHIFT, code:19, movetoworkspace, 10
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
bindd = SUPER SHIFT, code:11, Move window to workspace 1, movetoworkspace, 2
bindd = SUPER SHIFT, code:12, Move window to workspace 1, movetoworkspace, 3
bindd = SUPER SHIFT, code:13, Move window to workspace 1, movetoworkspace, 4
bindd = SUPER SHIFT, code:14, Move window to workspace 1, movetoworkspace, 5
bindd = SUPER SHIFT, code:15, Move window to workspace 1, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 1, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 1, movetoworkspace, 8
bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
bind = SUPER SHIFT, left, swapwindow, l
bind = SUPER SHIFT, right, swapwindow, r
bind = SUPER SHIFT, up, swapwindow, u
bind = SUPER SHIFT, down, swapwindow, d
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
# Cycle through applications on active workspace
bindd = ALT, Tab, Cycle to next window, cyclenext
bindd = ALT, Tab, Reveal active window on top, bringactivetotop
# Resize active window
bind = SUPER, minus, resizeactive, -100 0
bind = SUPER, equal, resizeactive, 100 0
bind = SUPER SHIFT, minus, resizeactive, 0 -100
bind = SUPER SHIFT, equal, resizeactive, 0 100
bindd = SUPER, minus, Expand window left, resizeactive, -100 0
bindd = SUPER, equal, Shrink window left, resizeactive, 100 0
bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100
bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100
# Scroll through existing workspaces with mainMod + scroll
bind = SUPER, mouse_down, workspace, e+1
bind = SUPER, mouse_up, workspace, e-1
bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
bindmd = SUPER, mouse:272, Move window, movewindow
bindmd = SUPER, mouse:273, Resize window, resizewindow

View File

@@ -1,36 +1,38 @@
# Launching
bind = SUPER, space, exec, walker
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
# Menus
bindd = SUPER, SPACE, Launch apps, exec, walker -p "Start…"
bindd = SUPER ALT, SPACE, Run commands, exec, ~/.local/share/omarchy/bin/omarchy-menu
bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu system
bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings
# Aesthetics
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-menu theme
# Notifications
bind = SUPER, comma, exec, makoctl dismiss
bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Power menu controls lock, suspend, relaunch, restart, shutdown
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all
bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Toggle idling
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
# Toggle nightlight
bindd = SUPER CTRL, N, Toggle nightlight, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight
# Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000
bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000
bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
# Screenshots
bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
# Screenshots
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Screen recordings
bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Color picker
bind = SUPER, PRINT, exec, hyprpicker -a
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a

View File

@@ -69,12 +69,6 @@ animations {
animation = workspaces, 0, 0, ease
}
# Application-sepcific animation
layerrule=noanim,walker
# Remove 1px border around hyprshot screenshots
layerrule = noanim, selection
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.

View File

@@ -1,30 +1,11 @@
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$
windowrule = size 645 450, class:Omarchy
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save)
# Float Steam, fullscreen RetroArch
windowrule = float, class:steam
windowrule = center, class:steam
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Just dash of opacity
# Just dash of opacity by default
windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps.conf

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -5,8 +5,8 @@ Window.SetBackgroundBottomColor(0.101, 0.105, 0.149);
logo.image = Image("logo.png");
logo.sprite = Sprite(logo.image);
logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
logo.sprite.SetOpacity (1);
# Use these to adjust the progress bar timing
@@ -119,7 +119,7 @@ entry.image = Image("entry.png");
bullet.image = Image("bullet.png");
entry.sprite = Sprite(entry.image);
entry.x = Window.GetX() + Window.GetWidth()/2 - entry.image.GetWidth() / 2;
entry.x = Window.GetWidth()/2 - entry.image.GetWidth() / 2;
entry.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
entry.sprite.SetPosition(entry.x, entry.y, 10001);
entry.sprite.SetOpacity(0);
@@ -171,8 +171,13 @@ fun display_password_callback (prompt, bullets)
for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0);
# Create and show bullets for current password
for (index = 0; index < bullets; index++)
# Create and show bullets for current password (max 21)
max_bullets = 21;
bullets_to_show = bullets;
if (bullets_to_show > max_bullets)
bullets_to_show = max_bullets;
for (index = 0; index < bullets_to_show; index++)
{
if (!bullet.sprites[index])
{
@@ -195,7 +200,7 @@ Plymouth.SetDisplayPasswordFunction(display_password_callback);
progress_box.image = Image("progress_box.png");
progress_box.sprite = Sprite(progress_box.image);
progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
progress_box.y = entry.y + entry.image.GetHeight() / 2 - progress_box.image.GetHeight() / 2;
progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
progress_box.sprite.SetOpacity(0);
@@ -204,7 +209,7 @@ progress_bar.original_image = Image("progress_bar.png");
progress_bar.sprite = Sprite();
progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight());
progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2;
progress_bar.y = progress_box.y + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2;
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
progress_bar.sprite.SetOpacity(0);

View File

@@ -7,4 +7,4 @@ min_width = 150
width = 150
[ui.window.box.search]
hide = true
hide = false

View File

@@ -8,4 +8,4 @@ width = 250
max_height = 600
[ui.window.box.search]
hide = true
hide = false

View File

@@ -28,6 +28,7 @@ show_subtext() {
# Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration
show_logo beams 240
@@ -38,6 +39,7 @@ source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/login.sh
source $OMARCHY_INSTALL/config/nvidia.sh

View File

@@ -1,16 +1,15 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
source ~/.local/share/omarchy/default/bash/functions
web2app "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
web2app "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png
web2app "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
web2app "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
web2app "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
web2app "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
web2app "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png
~/.local/share/omarchy/bin/omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
~/.local/share/omarchy/bin/omarchy-webapp-install "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png
~/.local/share/omarchy/bin/omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
~/.local/share/omarchy/bin/omarchy-webapp-install "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
~/.local/share/omarchy/bin/omarchy-webapp-install "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
~/.local/share/omarchy/bin/omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
~/.local/share/omarchy/bin/omarchy-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
~/.local/share/omarchy/bin/omarchy-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
~/.local/share/omarchy/bin/omarchy-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
~/.local/share/omarchy/bin/omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
~/.local/share/omarchy/bin/omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256
fi

View File

@@ -4,7 +4,7 @@
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
# Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications

View File

@@ -1,6 +1,6 @@
#!/bin/bash
if [[ ! -f /etc/sudoers.d/omarchy-tzupdate ]]; then
if ! command -v tzupdate &>/dev/null; then
yay -S --noconfirm --needed tzupdate
sudo tee /etc/sudoers.d/omarchy-tzupdate >/dev/null <<EOF
%wheel ALL=(root) NOPASSWD: /usr/bin/tzupdate, /usr/bin/timedatectl

View File

@@ -3,7 +3,7 @@
yay -S --noconfirm --needed \
brightnessctl playerctl pamixer wiremix wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \
nautilus sushi ffmpegthumbnailer \
nautilus sushi ffmpegthumbnailer gvfs-mtp \
slurp satty \
mpv evince imv \
chromium

View File

@@ -1,36 +1,7 @@
#!/bin/bash
yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
else
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji
fi
mkdir -p ~/.local/share/fonts
if ! fc-list | grep -qi "CaskaydiaMono Nerd Font"; then
cd /tmp
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip
unzip CascadiaMono.zip -d CascadiaFont
cp CascadiaFont/CaskaydiaMonoNerdFont-Regular.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-BoldItalic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Regular.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-BoldItalic.ttf ~/.local/share/fonts
rm -rf CascadiaMono.zip CascadiaFont
fc-cache
cd -
fi
if ! fc-list | grep -qi "iA Writer Mono S"; then
cd /tmp
wget -O iafonts.zip https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip
unzip iafonts.zip -d iaFonts
cp iaFonts/iA-Fonts-master/iA\ Writer\ Mono/Static/iAWriterMonoS-*.ttf ~/.local/share/fonts
rm -rf iafonts.zip iaFonts
fc-cache
cd -
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
fi

View File

@@ -1,6 +1,6 @@
#!/bin/bash
yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \
walker-bin libqalculate waybar mako swaybg swayosd \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@@ -1,4 +1,16 @@
#!/bin/bash
sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer
sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns
sudo systemctl enable --now cups.service
# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery
sudo mkdir -p /etc/systemd/resolved.conf.d
echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf
sudo systemctl enable --now avahi-daemon.service
# Enable automatically adding remote printers
if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then
echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf
fi
sudo systemctl enable --now cups-browsed.service

View File

@@ -10,8 +10,14 @@ if ! yay -Q gnome-themes-extra &>/dev/null; then
yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
fi
# Allow icons to match the theme
if ! yay -! yaru-icon-theme &>/dev/null; then
yay -S --noconfirm yaru-icon-theme
fi
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
# Setup theme links
mkdir -p ~/.config/omarchy/themes

View File

@@ -0,0 +1,8 @@
#!/bin/bash
omarchy_migrations_state_path=~/.local/state/omarchy/migrations
mkdir -p $omarchy_migrations_state_path
for file in ~/.local/share/omarchy/migrations/*.sh; do
touch "$omarchy_migrations_state_path/$(basename "$file")"
done

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -2,5 +2,5 @@ echo "Fixing persistent workspaces in waybar config"
if [[ -f ~/.config/waybar/config ]]; then
sed -i 's/"persistent_workspaces":/"persistent-workspaces":/' ~/.config/waybar/config
pkill -SIGUSR2 waybar
~/.local/share/omarchy/bin/omarchy-restart-waybar
fi

View File

@@ -2,5 +2,5 @@ echo "Install Impala as new wifi selection TUI"
if ! command -v impala &>/dev/null; then
yay -S --noconfirm --needed impala
echo "You need to update the Waybar config to use Impala Wi-Fi selector in top bar."
omarchy-refresh-waybar
~/.local/share/omarchy/bin/omarchy-refresh-waybar
fi

View File

@@ -1,2 +1,2 @@
echo "Install Plymouth splash screen"
source "$HOME/.local/share/omarchy/install/login.sh"
source "$HOME/.local/share/omarchy/install/config/login.sh"

View File

@@ -1,14 +0,0 @@
echo "Add missing Propo version of Caskaydia Mono Nerd Font for Waybar use"
if ! fc-list | grep -qi "CaskaydiaMono Nerd Font Propo"; then
cd /tmp
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip
unzip CascadiaMono.zip -d CascadiaFont
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Regular.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-BoldItalic.ttf ~/.local/share/fonts
rm -rf CascadiaMono.zip CascadiaFont
fc-cache
cd -
fi

View File

@@ -1,2 +0,0 @@
echo "Copy desktop file for new Omarchy TUI"
cp ~/.local/share/omarchy/applications/omarchy.desktop ~/.local/share/applications/

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