Compare commits

...

239 Commits

Author SHA1 Message Date
David Heinemeier Hansson
666dbd8f39 Merge pull request #528 from basecamp/dev
Omarchy 1.12.0
2025-08-07 13:12:01 +02:00
Johan Gyllenspetz
308033bd10 Allow selecting themes for deletion (#533)
Co-authored-by: Johan Gyllenspetz <gyllen@hey.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-07 13:05:18 +02:00
David Heinemeier Hansson
4a468041cb Fix comments and description 2025-08-07 13:03:50 +02:00
David Heinemeier Hansson
97e3902455 Merge branch 'master' into dev 2025-08-07 13:02:22 +02:00
David Heinemeier Hansson
b75065c4cf Ensure we are running the latest Walker and that its been restarted 2025-08-06 23:28:50 +02:00
David Heinemeier Hansson
8c8cf7aadb Add migration to fix that broken multicastdns issue for printer setups 2025-08-06 23:21:29 +02:00
David Heinemeier Hansson
722fa73bc8 No need to carry this 2025-08-06 23:16:12 +02:00
Manuel
6b8917450f Make Screensaver Background Color Black (#526)
* add sceensaver alacritty config file and changed screensaver cmd

* Move the screensaver config into defaults

Since its not meant to be user edited

---------

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

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

---------

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

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

---------

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

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

* chore: Support optional description for key bindings

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

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

* add hyprsunset to autostart

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

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

* waybar: fix icon switching for hyprsunset widget

* add migration for hyprsunset

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

* waybar: make nightlight module appear next to bluetooth module

* waybar: do not include nightlight module by default

* add omarchy-toggle-nightlight script

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

* waybar: remove nightlight module from config entirely

* waybar: remove nightlight from css

* update hyprsunset migration to skip yay install if already installed

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

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

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-03 10:26:59 +02:00
David Heinemeier Hansson
3a5ef9d841 Ensure screensaver doesn't start while the computer is locked 2025-08-03 10:18:15 +02:00
David Heinemeier Hansson
008ede7bbd Tweaks 2025-08-03 10:02:19 +02:00
David Heinemeier Hansson
c7020ee875 Merge branch 'dev' into dev 2025-08-03 09:47:54 +02:00
David Heinemeier Hansson
1fda1ade8a Increase screensaver font size for looks and performance
Co-authored-by: @precision
2025-08-03 09:45:21 +02:00
David Heinemeier Hansson
cdc37313ad Revert "Merge pull request #464 from rosscondie/feat/vim-navigation-in-walker"
This reverts commit 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
David Heinemeier Hansson
65577c1757 Merge branch 'dev' 2025-07-26 18:31:22 -04:00
David Heinemeier Hansson
b322d1cb47 Merge pull request #356 from basecamp/dev
Omarchy v1.6.2
2025-07-26 17:17:21 -04:00
172 changed files with 1840 additions and 835 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 --no-color 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() { 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) BATTERY_LEVEL=$(get_battery_percentage)

View File

@@ -1,7 +1,5 @@
#!/bin/bash #!/bin/bash
# Set recorder based on GPU
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" 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" migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file touch $migration_file
nvim $migration_file nvim $migration_file
echo -e "Run with:\nsource $migration_file"

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

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

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

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

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

@@ -0,0 +1,16 @@
#!/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 \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver
done
hyprctl dispatch focusmonitor $focused

258
bin/omarchy-menu Executable file
View File

@@ -0,0 +1,258 @@
#!/bin/bash
OMARCHY_BIN_PATH=~/.local/share/omarchy/bin
menu() {
echo -e "$2" | walker --dmenu --theme dmenu_250 -p "$1…" $3
}
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"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && gtk-launch $3"
}
install_font() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm --needed $2 && sleep 2 && ~/.local/share/omarchy/bin/omarchy-font-set '$3'"
}
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*) show_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_font_menu() {
theme=$(menu "Font" "$($OMARCHY_BIN_PATH/omarchy-font-list)" "-w 350")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
$OMARCHY_BIN_PATH/omarchy-font-set "$theme"
fi
}
show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) show_screenshot_menu ;;
*Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) show_main_menu ;;
esac
}
show_screenshot_menu() {
case $(menu "Screenshot" " Region\n Window\n Display") in
*Region*) $OMARCHY_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󱐋 Power Profile\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n Configs\n󰈷 Fingerprint\n Fido2"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
*Wifi*) alacritty --class=Impala -e impala ;;
*Bluetooth*) blueberry ;;
*Power*) show_setup_power_menu ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*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_power_menu() {
current_profile=$(powerprofilesctl get)
new_profile=$(menu "Power Profile" "$($OMARCHY_BIN_PATH/omarchy-powerprofiles-list)" "-a '${current_profile}'")
if [[ "$new_profile" == "CNCLD" || -z "$new_profile" ]]; then
show_main_menu
else
powerprofilesctl set "$new_profile"
fi
}
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 Editor\n󰸌 Theme\n Background\n Font\n Dropbox\n Steam\n Docker DBs") in
*Package*) terminal $OMARCHY_BIN_PATH/omarchy-pkg-install ;;
*Web*) terminal $OMARCHY_BIN_PATH/omarchy-webapp-install ;;
*Editor*) show_install_editor_menu ;;
*Theme*) terminal $OMARCHY_BIN_PATH/omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;;
*Font*) show_install_font_menu ;;
*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_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor\n Zed") in
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor-cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
*) show_install_menu ;;
esac
}
show_install_font_menu() {
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "-w 350") in
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
*) show_install_menu ;;
esac
}
show_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 "Go" "󰀻 Apps\n󰧑 Learn\n Capture\n󰔎 Toggle\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")"
}
go_to_menu() {
case "${1,,}" in
*apps*) walker -p "Launch…" ;;
*learn*) show_learn_menu ;;
*style*) show_style_menu ;;
*theme*) show_theme_menu ;;
*capture*) show_capture_menu ;;
*screenshot*) show_screenshot_menu ;;
*screenrecord*) show_screenrecord_menu ;;
*toggle*) show_toggle_menu ;;
*setup*) show_setup_menu ;;
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;;
*system*) show_system_menu ;;
*about*) 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 # A script to display Hyprland keybindings defined in your configuration
# using walker for an interactive search menu. # using walker for an interactive search menu.
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" # Fetch dynamic keybindings from Hyprland
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \ #
$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \ # Also do some pre-processing:
$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \ # - Remove standard Omarchy bin path prefix
$HOME/.local/share/omarchy/default/hypr/bindings/media.conf" # - 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 # Parse and format keybindings
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). #
# 2. The first `sed` removes comments (anything after a '#'). # `awk` does the heavy lifting:
# 3. `awk` does the heavy lifting of formatting the output. # - Set the field separator to a comma ','.
# - It sets the field separator to a comma ','. # - Joins the key combination (e.g., "SUPER + Q").
# - It removes the 'bind... =' part from the beginning of the line. # - Joins the command that the key executes.
# - It joins the key combination (e.g., "SUPER + Q"). # - Prints everything in a nicely aligned format.
# - It joins the command that the key executes. parse_bindings() {
# - 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 |
awk -F, ' 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) # Combine the modifier and key (first two fields)
key_combo = $1 " + " $2; key_combo = $1 " + " $2;
@@ -38,9 +51,12 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo); gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
gsub(/[ \t]+$/, "", key_combo); gsub(/[ \t]+$/, "", key_combo);
# Use description, if set
action = $3;
if (action == "") {
# Reconstruct the command from the remaining fields # Reconstruct the command from the remaining fields
action = ""; for (i = 4; i <= NF; i++) {
for (i = 3; i <= NF; i++) {
action = action $i (i < NF ? "," : ""); action = action $i (i < NF ? "," : "");
} }
@@ -50,15 +66,21 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
gsub(/^[ \t]+|[ \t]+$/, "", action); gsub(/^[ \t]+|[ \t]+$/, "", action);
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
if (action != "") {
# Escape XML entities # Escape XML entities
gsub(/&/, "\\&amp;", action); gsub(/&/, "\\&amp;", action);
gsub(/</, "\\&lt;", action); gsub(/</, "\\&lt;", action);
gsub(/>/, "\\&gt;", action); gsub(/>/, "\\&gt;", action);
gsub(/"/, "\\&quot;", action); gsub(/"/, "\\&quot;", action);
gsub(/'"'"'/, "\\&apos;", action); gsub(/'"'"'/, "\\&apos;", action);
}
if (action != "") {
printf "%-35s → %s\n", key_combo, action; printf "%-35s → %s\n", key_combo, action;
} }
}' | }'
}
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings' 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

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

@@ -0,0 +1,9 @@
#!/bin/bash
pkg_name=$(yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75%)
if [[ -n "$pkg_name" ]]; then
yay -Sy --noconfirm "$pkg_name"
sudo updatedb
~/.local/share/omarchy/bin/omarchy-show-done
fi

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

@@ -0,0 +1,9 @@
#!/bin/bash
pkg_name=$(yay -Qqe | fzf --multi --preview 'yay -Qi {1}' --preview-window=down:75%)
if [[ -n "$pkg_name" ]]; then
yay -Rns --noconfirm "$pkg_name"
sudo updatedb
~/.local/share/omarchy/bin/omarchy-show-done
fi

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

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

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 #!/bin/bash
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup if it differs ~/.local/share/omarchy/bin/omarchy-refresh-config hypr/hyprlock.conf
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

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 #!/bin/bash
cp -f ~/.config/swayosd/config.toml ~/.config/swayosd/config.toml.bak 2>/dev/null ~/.local/share/omarchy/bin/omarchy-refresh-config swayosd/config.toml
cp -f ~/.local/share/omarchy/config/swayosd/config.toml ~/.config/swayosd/ 3>/dev/null ~/.local/share/omarchy/bin/omarchy-refresh-config swayosd/style.css
~/.local/share/omarchy/bin/omarchy-restart-swayosd
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 &

View File

@@ -1,13 +1,4 @@
#!/bin/bash #!/bin/bash
cp -f ~/.config/walker/config.toml ~/.config/walker/config.toml.bak 2>/dev/null ~/.local/share/omarchy/bin/omarchy-refresh-config walker/config.toml
cp -f ~/.local/share/omarchy/config/walker/config.toml ~/.config/walker/ 2>/dev/null ~/.local/share/omarchy/bin/omarchy-restart-walker
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 &

View File

@@ -1,25 +1,5 @@
#!/bin/bash #!/bin/bash
# Backup existing settings ~/.local/share/omarchy/bin/omarchy-refresh-config waybar/config.jsonc
cp -f ~/.config/waybar/config.jsonc ~/.config/waybar/config.jsonc.bak 2>/dev/null ~/.local/share/omarchy/bin/omarchy-refresh-config waybar/style.css
cp -f ~/.config/waybar/style.css ~/.config/waybar/style.css.bak 2>/dev/null ~/.local/share/omarchy/bin/omarchy-restart-waybar
# 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

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

View File

@@ -1,11 +1,15 @@
#!/bin/bash #!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then 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 yay -Rns --noconfirm libfido2 pam-u2f
sudo rm -rf /etc/fido2 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 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" echo -e "\e[32m\nYou've successfully removed the fido2 device setup.\e[0m"
else else
echo -e "\e[32mLet's setup your Fido2 device for sudo authentication.\n\e[0m"
yay -S --noconfirm --needed libfido2 pam-u2f yay -S --noconfirm --needed libfido2 pam-u2f
tokens=$(fido2-token -L) tokens=$(fido2-token -L)
@@ -18,6 +22,10 @@ else
sudo mkdir -p /etc/fido2 sudo mkdir -p /etc/fido2
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m" 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 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 sudo mv /tmp/fido2 /etc/fido2/fido2
fi fi
@@ -31,3 +39,5 @@ else
fi fi
fi fi
fi fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,11 +1,15 @@
#!/bin/bash #!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
if [[ "--remove" == "$1" ]]; then if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your fingerprint scanner from authentication.\n\e[0m"
yay -Rns --noconfirm fprintd yay -Rns --noconfirm fprintd
sudo rm -rf /etc/pam.d/polkit-1 sudo rm -rf /etc/pam.d/polkit-1
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m" echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m"
else else
echo -e "\e[32mLet's setup your fingerprint scanner for authentication.\n\e[0m"
yay -S --noconfirm --needed fprintd usbutils yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; then
@@ -41,3 +45,5 @@ EOF
fi fi
fi fi
fi fi
~/.local/share/omarchy/bin/omarchy-show-done

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
~/.local/share/omarchy/bin/omarchy-show-logo
echo "Adding multilib repository for 32-bit compatibility" echo "Adding multilib repository for 32-bit compatibility"
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy sudo pacman -Sy
@@ -7,3 +9,5 @@ sudo pacman -Sy
echo "Now pick dependencies matching your graphics card" echo "Now pick dependencies matching your graphics card"
yay -S steam yay -S steam
gtk-launch steam >/dev/null 2>&1 & 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> # Usage: omarchy-theme-install <git-repo-url>
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "Usage: omarchy-theme-install <git-repo-url>" ~/.local/share/omarchy/bin/omarchy-show-logo
echo -e "\e[32mSee https://manuals.omamix.org/2/the-omarchy-manual/90/extra-themes\n\e[0m"
REPO_URL=$(gum input --placeholder="Git repo URL for theme" --header="")
else
REPO_URL="$1"
fi
if [ -z "$REPO_URL" ]; then
exit 1 exit 1
fi fi
REPO_URL="$1"
THEMES_DIR="$HOME/.config/omarchy/themes" THEMES_DIR="$HOME/.config/omarchy/themes"
THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//') THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//')
THEME_PATH="$THEMES_DIR/$THEME_NAME" THEME_PATH="$THEMES_DIR/$THEME_NAME"
@@ -25,4 +31,4 @@ if ! git clone "$REPO_URL" "$THEME_PATH"; then
fi fi
# Apply the new theme with omarchy-theme-set # 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 # Build themes list with pretty display names
mapfile -t themes < <( 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") filename=$(basename "$path")
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g') display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
@@ -15,17 +15,7 @@ mapfile -t themes < <(
else else
echo "$display_name" echo "$display_name"
fi fi
done | sort done
) )
# Show Walker menu printf '%s\n' "${themes[@]}"
selection=$(printf '%s\n' "${themes[@]}" | walker --dmenu --theme dmenu_250 2>/dev/null)
# Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')
# Convert to lowercase and dash-separated: "Tokyo Night" -> "tokyo-night"
selected_theme=$(echo "$clean_selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
# Apply the selected theme
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme"

View File

@@ -30,5 +30,5 @@ NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_THEME=${THEMES[$NEXT_INDEX]} NEW_THEME=${THEMES[$NEXT_INDEX]}
NEW_THEME_NAME=$(basename "$NEW_THEME") 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 notify-send "Theme changed to $NEW_THEME_NAME" -t 2000

View File

@@ -4,17 +4,26 @@
# Usage: omarchy-theme-remove <theme-name> # Usage: omarchy-theme-remove <theme-name>
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "Usage: omarchy-theme-remove <theme-name>" mapfile -t extra_themes < <(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n')
if [[ ${#extra_themes[@]} -gt 0 ]]; then
THEME_NAME=$(gum choose --header="Remove extra theme" "${extra_themes[@]}")
else
echo "No extra themes installed."
exit 1 exit 1
fi
else
THEME_NAME="$1"
fi fi
THEME_NAME="$1"
THEMES_DIR="$HOME/.config/omarchy/themes" THEMES_DIR="$HOME/.config/omarchy/themes"
BACKGROUND_DIR="$HOME/.config/omarchy/backgrounds"
CURRENT_DIR="$HOME/.config/omarchy/current" CURRENT_DIR="$HOME/.config/omarchy/current"
THEME_PATH="$THEMES_DIR/$THEME_NAME" 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 # Check if theme exists before attempting removal
if [ ! -d "$THEME_PATH" ]; then if [ ! -d "$THEME_PATH" ]; then
@@ -22,12 +31,10 @@ if [ ! -d "$THEME_PATH" ]; then
exit 1 exit 1
fi 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 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 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 "$THEME_PATH"
rm -rf "$BACKGROUND_PATH"

View File

@@ -3,7 +3,7 @@
# omarchy-theme-set: Set a theme, specified by its name. # omarchy-theme-set: Set a theme, specified by its name.
# Usage: omarchy-theme-set <theme-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 echo "Usage: omarchy-theme-set <theme-name>" >&2
exit 1 exit 1
fi fi
@@ -11,7 +11,7 @@ fi
THEMES_DIR="$HOME/.config/omarchy/themes/" THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme" 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" THEME_PATH="$THEMES_DIR/$THEME_NAME"
# Check if the theme entered exists # Check if the theme entered exists
@@ -32,16 +32,23 @@ else
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi 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 # Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml" touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme # Restart components to apply new theme
pkill -SIGUSR2 btop pkill -SIGUSR2 btop
pkill -SIGUSR2 waybar ~/.local/share/omarchy/bin/omarchy-restart-waybar
pkill swayosd-server pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null & setsid uwsm app -- swayosd-server &>/dev/null &
makoctl reload makoctl reload
hyprctl reload hyprctl reload
# Set new background # 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 #!/bin/bash
cd ~/.local/share/omarchy # Exit immediately if a command exits with a non-zero status
set -e
if [[ $1 == "all" ]]; then # Show logo
# Run all migrations since the root commit clear
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H") cat <~/.local/share/omarchy/logo.txt
else
# Remember the commit we're at before upgrading in order to only run new migrations
migration_starting_point=$(git log -1 --format=%H)
fi
# Get the latest while trying to preserve any modifications # Get the latest while trying to preserve any modifications
git pull --autostash omarchy_path=~/.local/share/omarchy
git diff --check || git reset --merge git -C $omarchy_path pull --autostash
git -C $omarchy_path diff --check || git -C $omarchy_path reset --merge
# Run any pending migrations # Run migrations
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do ~/.local/share/omarchy/bin/omarchy-migrate
filename=$(basename "$file")
migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file
done
# Update system packages # Update system packages
echo -e "\e[32m\nUpdate system packages\e[0m" echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm yay -Syu --noconfirm
# Back to where we came from # Offer to reboot if the kernel has been changed
cd - >/dev/null 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

View File

@@ -16,9 +16,12 @@ echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git 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/ 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 # Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then if [[ -n "$OMARCHY_REF" ]]; then

View File

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

View File

@@ -47,7 +47,7 @@
{ {
"type": "swap", "type": "swap",
"key": "└ └󰓡 ", "key": "└ └󰓡 ",
"keyColor": "green", "keyColor": "green"
}, },
{ {
"type": "custom", "type": "custom",
@@ -79,6 +79,12 @@
"keyColor": "yellow" "keyColor": "yellow"
}, },
"break", "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", "type": "de",
"key": " DE", "key": " DE",
@@ -97,17 +103,17 @@
{ {
"type": "icons", "type": "icons",
"key": "│ ├󰀻", "key": "│ ├󰀻",
"keyColor": "blue", "keyColor": "blue"
}, },
{ {
"type": "cursor", "type": "cursor",
"key": "│ ├", "key": "│ ├",
"keyColor": "blue", "keyColor": "blue"
}, },
{ {
"type": "terminalfont", "type": "terminalfont",
"key": "│ ├", "key": "│ ├",
"keyColor": "blue", "keyColor": "blue"
}, },
{ {
"type": "terminal", "type": "terminal",
@@ -138,7 +144,6 @@
"type": "custom", "type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘" "format": "\u001b[90m└────────────────────────────────────────────────────┘"
}, },
"break", "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

@@ -2,7 +2,13 @@ general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend. 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. 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 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 { listener {

View File

@@ -1,13 +1,6 @@
# Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/ # 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. # Use defaults Omarchy defaults (but don't edit these directly!)
# 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
source = ~/.local/share/omarchy/default/hypr/autostart.conf source = ~/.local/share/omarchy/default/hypr/autostart.conf
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.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 = ~/.local/share/omarchy/default/hypr/windows.conf
source = ~/.config/omarchy/current/theme/hyprland.conf source = ~/.config/omarchy/current/theme/hyprland.conf
# Application bindings # Change your own setup in these files (and overwrite any settings from defaults!)
$terminal = uwsm app -- alacritty source = ~/.config/hypr/monitors.conf
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland source = ~/.config/hypr/input.conf
$webapp = $browser --app source = ~/.config/hypr/bindings.conf
source = ~/.config/hypr/envs.conf
bind = SUPER, return, exec, $terminal source = ~/.config/hypr/autostart.conf
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

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/ # See https://wiki.hyprland.org/Configuring/Monitors/
# List current monitors and resolutions possible: hyprctl 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)
# Format: monitor = [port], resolution, position, scale # 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 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 # 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 # Example for Framework 13 w/ 6K XDR Apple display
# monitor = DP-5, 6016x3384@60.00, auto, 2 # monitor = DP-5, 6016x3384@60, auto, 2
# monitor = eDP-1, 2880x1920@120.00, auto, 2 # monitor = eDP-1, 2880x1920@120, auto, 2

View File

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

View File

@@ -9,7 +9,7 @@ window {
} }
label { label {
font-family: 'CaskaydiaMono Nerd Font', monospace; font-family: 'CaskaydiaMono Nerd Font';
font-size: 11pt; font-size: 11pt;
color: @label; color: @label;

View File

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

View File

@@ -5,10 +5,12 @@
"spacing": 0, "spacing": 0,
"height": 26, "height": 26,
"modules-left": [ "modules-left": [
"custom/omarchy",
"hyprland/workspaces" "hyprland/workspaces"
], ],
"modules-center": [ "modules-center": [
"clock" "clock",
"custom/update"
], ],
"modules-right": [ "modules-right": [
"group/tray-expander", "group/tray-expander",
@@ -42,6 +44,17 @@
"5": [] "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": { "cpu": {
"interval": 5, "interval": 5,
"format": "󰍛", "format": "󰍛",

View File

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

View File

@@ -0,0 +1,11 @@
[colors.primary]
background = "0x000000"
[colors.cursor]
cursor = "0x000000"
[font]
size = 18.0
[window]
opacity = 1.0

View File

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

View File

@@ -15,59 +15,38 @@ iso2sd() {
fi fi
} }
# Create a desktop launcher for a web app # Format an entire drive for a single partition using ext4
web2app() { format-drive() {
if [ "$#" -ne 3 ]; then if [ $# -ne 2 ]; then
echo "Usage: web2app <AppName> <AppURL> <IconURL> (IconURL must be in PNG -- use https://dashboardicons.com)" echo "Usage: format-drive <device> <name>"
return 1 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 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() { # Transcode a video to a good-balance 1080p that's great for sharing online
if [ "$#" -ne 1 ]; then transcode-video-1080p() {
echo "Usage: web2app-remove <AppName>" ffmpeg -i $1 -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy ${1%.*}-1080p.mp4
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 # Transcode a video to a good-balance 4K that's great for sharing online
refresh-xcompose() { transcode-video-4K() {
pkill fcitx5 ffmpeg -i $1 -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k ${1%.*}-optimized.mp4
uwsm app -- fcitx5 >/dev/null 2>&1 & }
# Transcode PNG to JPG image that's great for shrinking wallpapers
transcode-png2jpg() {
convert $1 -quality 95 -strip $(1%.*).jpg
} }

View File

@@ -12,3 +12,6 @@ fi
# Set complete path # Set complete path
export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH" export PATH="./bin:$HOME/.local/bin:$HOME/.local/share/omarchy/bin:$PATH"
set +h 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. # Deprecated bindings file. New installations include everything directly.
bind = SUPER, return, exec, $terminal bindd = SUPER, return, Terminal, exec, $terminal
bind = SUPER, F, exec, $fileManager bindd = SUPER, F, File manager, exec, $fileManager
bind = SUPER, B, exec, $browser bindd = SUPER, B, Web browser, exec, $browser
bind = SUPER, M, exec, $music bindd = SUPER, M, Music player, exec, $music
bind = SUPER, N, exec, $terminal -e nvim bindd = SUPER, N, Neovim, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop bindd = SUPER, T, Top, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker
bind = SUPER, G, exec, $messenger bindd = SUPER, G, Messenger, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager bindd = SUPER, slash, Pasword manager, exec, $passwordManager
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.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')" $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
# Laptop multimedia keys for volume and LCD brightness (with OSD) # Laptop multimedia keys for volume and LCD brightness (with OSD)
bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise
bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower
# Requires playerctl # Requires playerctl
bindl = , XF86AudioNext, exec, $osdclient --playerctl next bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous

View File

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

View File

@@ -1,36 +1,38 @@
# Launching # Menus
bind = SUPER, space, exec, walker bindd = SUPER, SPACE, Launch apps, exec, walker -p "Start…"
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings 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 # Aesthetics
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next bindd = SUPER CTRL, SPACE, Next background in theme, 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 CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-menu theme
# Notifications # Notifications
bind = SUPER, comma, exec, makoctl dismiss bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
bind = SUPER SHIFT, comma, exec, makoctl dismiss --all bindd = SUPER SHIFT, COMMA, Dismiss all notifications, 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" 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"
# Power menu controls lock, suspend, relaunch, restart, shutdown
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power
# Toggle idling # 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 # Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 bindd = CTRL, F1, Apple Display brightness down, 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 bindd = CTRL, F2, Apple Display brightness up, 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 = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000
# Screenshots # Screenshots
bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot
bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window
bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output
# Screenshots # Screen recordings
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Color picker # 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 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/ # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only" # "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that. # uncomment all if you wish to use that.

View File

@@ -1,31 +1,11 @@
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = suppressevent maximize, class:.* windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug # Just dash of opacity by default
windowrule = tile, class:^(Chromium)$
# 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 590 400, 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)
# Float Steam, fullscreen RetroArch
windowrule = float, class:steam
windowrule = center, class:steam
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Just dash of opacity
windowrule = opacity 0.97 0.9, class:.* 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 # Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 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.image = Image("logo.png");
logo.sprite = Sprite(logo.image); logo.sprite = Sprite(logo.image);
logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2); logo.sprite.SetX (Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2); logo.sprite.SetY (Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
logo.sprite.SetOpacity (1); logo.sprite.SetOpacity (1);
# Use these to adjust the progress bar timing # Use these to adjust the progress bar timing
@@ -119,7 +119,7 @@ entry.image = Image("entry.png");
bullet.image = Image("bullet.png"); bullet.image = Image("bullet.png");
entry.sprite = Sprite(entry.image); 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.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
entry.sprite.SetPosition(entry.x, entry.y, 10001); entry.sprite.SetPosition(entry.x, entry.y, 10001);
entry.sprite.SetOpacity(0); entry.sprite.SetOpacity(0);
@@ -171,8 +171,13 @@ fun display_password_callback (prompt, bullets)
for (index = 0; bullet.sprites[index]; index++) for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0); bullet.sprites[index].SetOpacity(0);
# Create and show bullets for current password # Create and show bullets for current password (max 21)
for (index = 0; index < bullets; index++) 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]) if (!bullet.sprites[index])
{ {
@@ -195,7 +200,7 @@ Plymouth.SetDisplayPasswordFunction(display_password_callback);
progress_box.image = Image("progress_box.png"); progress_box.image = Image("progress_box.png");
progress_box.sprite = Sprite(progress_box.image); 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.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.SetPosition(progress_box.x, progress_box.y, 0);
progress_box.sprite.SetOpacity(0); progress_box.sprite.SetOpacity(0);
@@ -204,7 +209,7 @@ progress_bar.original_image = Image("progress_bar.png");
progress_bar.sprite = Sprite(); progress_bar.sprite = Sprite();
progress_bar.image = progress_bar.original_image.Scale(1, progress_bar.original_image.GetHeight()); 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.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.SetPosition(progress_bar.x, progress_bar.y, 1);
progress_bar.sprite.SetOpacity(0); progress_bar.sprite.SetOpacity(0);

View File

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

View File

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

View File

@@ -28,6 +28,7 @@ show_subtext() {
# Install prerequisites # Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.sh source $OMARCHY_INSTALL/preflight/presentation.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
# Configuration # Configuration
show_logo beams 240 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/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/login.sh source $OMARCHY_INSTALL/config/login.sh
source $OMARCHY_INSTALL/config/nvidia.sh source $OMARCHY_INSTALL/config/nvidia.sh

View File

@@ -1,16 +1,15 @@
#!/bin/bash #!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then if [ -z "$OMARCHY_BARE" ]; then
source ~/.local/share/omarchy/default/bash/functions ~/.local/share/omarchy/bin/omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "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
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png
fi fi

View File

@@ -4,7 +4,7 @@
cp -R ~/.local/share/omarchy/config/* ~/.config/ cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy # 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 # Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications mkdir -p ~/.local/share/applications

View File

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

View File

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

View File

@@ -1,36 +1,7 @@
#!/bin/bash #!/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 if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra yay -S --noconfirm --needed ttf-jetbrains-mono 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 -
fi fi

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
yay -S --noconfirm --needed \ 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 \ walker-bin libqalculate waybar mako swaybg swayosd \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@@ -1,4 +1,16 @@
#!/bin/bash #!/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 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 -e "[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 yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
fi 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 gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
# Setup theme links # Setup theme links
mkdir -p ~/.config/omarchy/themes mkdir -p ~/.config/omarchy/themes

View File

@@ -2,7 +2,7 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
wget curl unzip inetutils impala \ wget curl unzip inetutils impala \
fd eza fzf ripgrep zoxide bat jq \ fd eza fzf ripgrep zoxide bat jq xmlstarlet \
wl-clipboard fastfetch btop \ wl-clipboard fastfetch btop \
man tldr less whois plocate bash-completion \ man tldr less whois plocate bash-completion \
alacritty alacritty

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

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