172 Commits

Author SHA1 Message Date
f4b684f588 Merge pull request #434 from basecamp/dev
Omarchy v1.9.0
2025-08-02 22:36:29 +02:00
631b62927a Better than doing string comparison
Any tag difference means new release
2025-08-02 22:14:16 +02:00
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
d0c93e3b8a Also update hyprlock for stopping before updating 2025-08-02 22:00:57 +02:00
54d22e9720 Stop screensaver when locking 2025-08-02 21:56:09 +02:00
f6a459b26b Fix power menu for Screen save 2025-08-02 21:52:36 +02:00
f729004306 Show indicator if update is available (#456)
* Show indicator if update is available

* Language
2025-08-02 21:48:06 +02:00
63840c6e9a Add screensaver as an option in the power menu 2025-08-02 14:44:01 +02:00
34f24cb38a Offer to reboot after Linux kernel has been updated
Closes #377
2025-08-02 14:26:08 +02:00
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
4db468a450 Must use the restarter to prevent stacking! 2025-08-02 14:13:54 +02:00
2823792ba2 Show diff when making a backup and clarify the implementation 2025-08-02 13:54:44 +02:00
b0b2bf30d8 Allow any key to stop the screensaver 2025-08-02 13:41:34 +02:00
343a948ffc Simplify error checking 2025-08-02 13:37:00 +02:00
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
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
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
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
8aa8d99d8d Prevent screensaver shifting up (#450)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-02 13:06:09 +02:00
0efd63f021 Adds BAT_THEME ENV var (#438) 2025-08-01 23:19:14 +02:00
06d61be018 Try to protect the screensaver from missing tte or pip 2025-08-01 16:05:04 +02:00
7bca5c1903 Make Yaru-blue the default 2025-08-01 14:26:28 +02:00
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
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
8673fa41ba No need for these control characters any more now that we are using Walker 2025-07-31 21:25:50 +02:00
07d88a4b9a Include timezones setup by default! 2025-07-30 23:48:51 +02:00
88e62994d1 Merge branch 'master' into dev 2025-07-30 23:44:41 +02:00
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
f0b1dd286b Dropbox is now an optional setup 2025-07-30 23:32:17 +02:00
7f66623317 Add walker config refresh to enable the finder 2025-07-30 23:27:21 +02:00
41c40e0e1d Use fd for better performance on walker finder 2025-07-30 23:26:01 +02:00
c1a7f5a4e4 No longer needed 2025-07-30 22:54:50 +02:00
a0aa6862f5 Migrate fonts to packages 2025-07-30 22:54:45 +02:00
231438b2ea Unused 2025-07-30 22:54:33 +02:00
a98adc499a Fix migration 2025-07-30 22:47:34 +02:00
74552b9f6e Just use set -e instead of manually checking for return values 2025-07-30 18:43:10 +02:00
49c154cb1f Track migrations via state files to avoid running migrations that have already been performed. (#411) 2025-07-30 18:40:59 +02:00
51f3d15ead update plymouth logo (#406) 2025-07-30 16:13:40 +02:00
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
d4f6859022 Revert "Swap Spotify GUI to TUI"
This reverts commit b09d2d68cd.
2025-07-29 19:17:41 +02:00
8c2f51c08c Revert "Correct package name"
This reverts commit 4c46c2208a.
2025-07-29 19:17:39 +02:00
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
25f4513feb Add theme update script (#391) 2025-07-29 16:42:18 +02:00
4c46c2208a Correct package name 2025-07-29 16:33:47 +02:00
b09d2d68cd Swap Spotify GUI to TUI 2025-07-29 16:31:40 +02:00
5c98de75d1 Give the new font selector a bit of room to breathe 2025-07-29 15:27:34 +02:00
66db3867a6 Add a very basic font selector for terminal 2025-07-29 15:27:25 +02:00
4f56efe0e9 Include the common JetBrains substitution 2025-07-29 15:18:30 +02:00
5405d383dc Use fonts from AUR instead of downloading them directly like an animal 2025-07-29 15:15:39 +02:00
8ab18c1d38 Hot reload theme for quick switching 2025-07-29 14:42:48 +02:00
c95d14e5e2 Enable using finder in walker (#396)
* Enable using finder in walker

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

* Update alacritty.toml
2025-07-28 12:49:12 +02:00
588ce42f08 Split and explain 2025-07-28 10:03:11 +02:00
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
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
7589683cd1 Adjust migration to check for whether fastfetch already has the change or not 2025-07-28 09:58:51 +02:00
b1753c1c7c Merge pull request #382 from tahayvr/omarchy-in-fastfetch
Display current Omarchy version in Fastfetch
2025-07-28 09:56:31 +02:00
e8d095c787 Match logo.txt 2025-07-28 09:32:44 +02:00
01d6deae34 Add migration script for Omarchy version in fastfetch 2025-07-27 23:34:10 -07:00
478b2da0f1 Add omarchy version to fastfetch config 2025-07-27 23:24:06 -07:00
9d7ed32fc9 Fix: restrict Steam centering to only the main window 2025-07-28 00:33:53 +02:00
eca4f65475 Add ALT+Tab bindings to cycle windows and bring active to top 2025-07-27 21:07:20 +02:00
a801fde7b9 Recommend starship.rs for prompt 2025-07-27 14:10:04 -04:00
35a603d0d2 Don't force 2 2025-07-27 13:10:51 -04:00
e446c4c71e Improve the examples and include the fractional scaling example 2025-07-27 12:33:54 -04:00
2953db18d9 Reveal a fully .bashrc that provides examples of what to overwrite 2025-07-27 10:45:22 -04:00
6e664c84a9 Merge pull request #369 from basecamp/update-boot-ansi
Update boot.sh ANSI
2025-07-26 22:02:09 -04:00
44925a6085 More readable 2025-07-26 21:58:09 -04:00
a0c90fb3db Not needed 2025-07-26 21:57:27 -04:00
008fab9df3 Turn dazzle into a full-blown screensaver 2025-07-26 21:53:13 -04:00
ffd136cdc6 Add a fun dazzle with the Omarchy logo that just keeps looping 2025-07-26 21:10:52 -04:00
0ff139860d Update boot.sh ANSI 2025-07-26 17:04:50 -07:00
42886f86bb Ordering 2025-07-26 18:49:33 -04:00
24e3f752ba Float and center About 2025-07-26 18:49:22 -04:00
64c6e872fc Match Omarchy TUI window to the slimmer logo 2025-07-26 18:38:55 -04:00
65577c1757 Merge branch 'dev' 2025-07-26 18:31:22 -04:00
b50a4e7a74 No color works better with more themes 2025-07-26 18:31:11 -04:00
b322d1cb47 Merge pull request #356 from basecamp/dev
Omarchy v1.6.2
2025-07-26 17:17:21 -04:00
d503b0cc37 Fix path 2025-07-26 17:14:31 -04:00
eeb784d087 Fix path here too 2025-07-26 16:49:43 -04:00
07a16487c0 Fix paths 2025-07-26 16:48:45 -04:00
c814aa534d Install if MISSING 2025-07-26 16:47:25 -04:00
6de445a2a6 Spelling 2025-07-26 16:37:49 -04:00
73d8c70e06 Ensure we detach from the session so swaybg doesn't die with it 2025-07-26 16:36:42 -04:00
e3bf801654 Don't add this twice on rerunning either 2025-07-26 15:58:38 -04:00
b4d75729d9 Don't add the keys twice 2025-07-26 15:53:53 -04:00
68a221e456 Simplify and make it idempotent 2025-07-26 15:52:00 -04:00
42963368c0 Reference correct file 2025-07-26 15:43:29 -04:00
cf688baa34 We don't have this any more 2025-07-26 15:42:59 -04:00
0a8a502cf2 Add migration to refresh walker to get the = leader key for calculator 2025-07-26 15:37:28 -04:00
9844d4ab22 Merge pull request #362 from ryanrhughes/add-prefix-to-walker-calc
Add "=" as default walker prefix
2025-07-26 15:32:54 -04:00
cec5482483 Merge pull request #361 from basecamp/adjust-logo-assets
Adjust logo assets
2025-07-26 13:23:20 -04:00
bd43aee907 Merge pull request #348 from ryanrhughes/combine-plymouth-and-login
Combine plymouth and login installers
2025-07-26 13:22:44 -04:00
6afbff2c27 Add "=" as default walker prefix 2025-07-26 13:12:28 -04:00
cc79664efc Combined login will run refresh commands 2025-07-26 13:09:28 -04:00
162952f102 Run combined login now 2025-07-26 13:09:28 -04:00
f693c33310 Combine plymouth and login 2025-07-26 13:09:28 -04:00
32aa290af5 Update logo svg 2025-07-26 10:02:50 -07:00
fbdbf852eb Update logo txt 2025-07-26 10:02:29 -07:00
5b654d0282 Be careful not to exit the entire migration runner 2025-07-26 13:02:22 -04:00
4929d3e201 Merge pull request #351 from JaxonWright/bare-improvements
Improvements to Bare Install
2025-07-26 13:01:31 -04:00
29bfeba5cc Merge pull request #357 from rmacklin/fix-step-total
Fix step total in install.sh subtexts
2025-07-26 12:55:43 -04:00
4e9e13f88d Merge pull request #359 from saullrb/dev
Better handle chaotic aur installation
2025-07-26 12:55:26 -04:00
7f3af84a60 #330: update "add missing installation of Zoom" migration to skip if bare install 2025-07-26 12:41:22 -04:00
62fb66a74a omarchy-refresh-applications(#330/#341): do not copy xtras .desktop declarations if in bare mode 2025-07-26 12:41:22 -04:00
cb48956a37 config.sh(#330): if bare install, create bare.mode file to allow updates to skip steps not applicable to bare installs 2025-07-26 12:41:22 -04:00
4e4e82c5b9 fix chaotic aur installation 2025-07-26 13:17:13 -03:00
302e92860e Fix step total in install.sh subtexts 2025-07-26 09:00:20 -07:00
eace29af7d Allow updating timezone from right-clicking the clock
Closes #314
2025-07-26 11:15:08 -04:00
51e2fa8598 Merge pull request #349 from ryanrhughes/update-theme-sh
Convert installers yay and check for existence to make re-runs faster
2025-07-26 09:55:08 -04:00
c081078e72 Protect pacman config from adopting broken mirror setup 2025-07-26 09:52:11 -04:00
3c2559297d Convert to yay and check for existence 2025-07-25 22:16:50 -04:00
4aa6b6c1f9 Merge pull request #342 from michaldziurowski/fix-videos-dir-for-screenrec
take into consideration xdg dirs for screenshot and screen recording
2025-07-25 22:15:38 -04:00
896ad9d97a Merge pull request #344 from ryanrhughes/prevent-screenshot-stacking
Prevent screenshot selection stacking
2025-07-25 22:14:59 -04:00
83d43a7d8d Merge pull request #347 from tahayvr/new-omarchy-logo
Update Omarchy logo
2025-07-25 22:13:09 -04:00
1fa2b62fba Make it safe to rerun the theme.sh installer
Closes #343
2025-07-25 22:09:32 -04:00
d9f9f5212e Don't need that twice 2025-07-25 21:58:51 -04:00
ba75889154 Slow it down a little 2025-07-25 21:57:28 -04:00
d6ba2af917 Spelling 2025-07-25 21:54:03 -04:00
2f12cdc751 Fix spelling 2025-07-25 21:35:39 -04:00
363a9ae4dc update logo.txt with new logo 2025-07-25 17:47:30 -07:00
eefb4638e9 add omarchy.svg to root of repo 2025-07-25 17:40:14 -07:00
bb2d21c3b7 Merge branch 'dev' into prevent-screenshot-stacking 2025-07-25 19:22:09 -04:00
ac935bdaed Kill selection if already active 2025-07-25 18:12:08 -04:00
f25be1d075 Fix path 2025-07-25 16:56:53 -04:00
8336788e0a So 1/5 is right 2025-07-25 16:54:51 -04:00
d60563fe92 Need to happen as part of the destkop 2025-07-25 16:54:02 -04:00
1066415576 Bring back the first art 2025-07-25 16:49:29 -04:00
b5f60f78a8 Structure the installers explicitly with clearly defined segments 2025-07-25 16:48:53 -04:00
92c1db9176 take into consideration xdg dirs for screenshot and screen recording 2025-07-25 21:43:37 +02:00
25acc313b1 Just straight reboot when we're done
Script will abort anyway if there were any issues along the way
2025-07-25 15:43:21 -04:00
0ead8947f7 Add logo to logical substeps 2025-07-25 15:42:27 -04:00
37f4d4a411 More tweaks to the animations 2025-07-25 15:30:49 -04:00
c4a08c3c25 Try to do another header 2025-07-25 15:27:10 -04:00
0c36142f8a Default to expand but allow others 2025-07-25 15:26:38 -04:00
65a5bbad82 Setup presentation tooling and functions as a separate step 2025-07-25 15:25:39 -04:00
165c940df2 A bit more effects 2025-07-25 15:21:36 -04:00
824ba78000 Let's try just showing the logo at identification time 2025-07-25 15:14:05 -04:00
6d3df204bc Use terminal text effects for extra rizz 2025-07-25 15:05:41 -04:00
1c14b8eba2 Have to check for the right command 2025-07-25 14:30:18 -04:00
e01c1bb139 It's all setup 2025-07-25 14:29:08 -04:00
466fe6caba Merge pull request #321 from saullrb/dev
Add Chaotic-AUR setup
2025-07-25 14:28:25 -04:00
10f71885b2 No longer needed 2025-07-25 13:43:32 -04:00
19c0d2887e Reorder 2025-07-25 13:04:53 -04:00
f2b58c2b8e Add dedicated omarchy-setup-steam script 2025-07-25 13:02:55 -04:00
46d135025e Center steam window to prevent it from being off screen 2025-07-25 13:02:55 -04:00
46e972172c Merge pull request #337 from anagrius/master
Fix fzf completion path for Arch Linux
2025-07-25 12:41:33 -04:00
79df336854 Merge pull request #333 from tahayvr/matteblack-plugin
matteblack.nvim is now a neovim colorscheme
2025-07-25 12:40:56 -04:00
0d6ea40252 Fix fzf completion path for Arch Linux
Update fzf completion source path from /usr/share/bash-completion/completions/fzf
to /usr/share/fzf/completion.bash to match the actual file location on Arch Linux.
2025-07-25 18:20:51 +02:00
a76c7ee33b add matteblack plugin for neovim 2025-07-24 17:45:31 -07:00
674c5bfdda Use Arch icon for this instead too for now 2025-07-24 18:11:03 -04:00
6cd8955409 Merge pull request #322 from benhoman/screen-cmd-output-dir
allow override of screenshot/screenrecord output
2025-07-24 18:07:38 -04:00
db63219398 A few more color corrections 2025-07-24 18:05:08 -04:00
42d80f2ce7 Consistent colors 2025-07-24 18:03:00 -04:00
4578d4e418 Cleanup files from needless comments 2025-07-24 18:02:00 -04:00
7242a57c18 Fix more swayosd colors 2025-07-24 18:00:00 -04:00
2d9ed8720b Match color to mako 2025-07-24 17:39:06 -04:00
205bcd7be8 Hyprland fullscreen may conflict with the app-specific fullscreen, so need a separate key
This is the case with Typora which will retain its ugly menu bar when
Hyprland does the fullscreening, but be beautifully bare when its doing
its own fullscreening. The best would be if we could make F11 work such
that the app got a shot at fullscreening first, then if it wasn't
capable, we let Hyprland do it. But not sure there's a way to do that?
2025-07-24 16:13:36 -04:00
70da2ecbe8 allow override of screenshot/screenrecord output 2025-07-24 11:39:12 -04:00
66b0fa0227 add chaotic aur
add chaotic aur repo

add noconfirm

only add chaotic aur for x86-64 arch
2025-07-24 07:55:56 -03:00
d2fffc40ea Add migration to prevent Waybar stacking 2025-07-23 16:26:13 -04:00
8884cc7a5c Prevent stacking of waybars after unlock by SIGUSR2'ing it
Bit crude, but better than a full kill.
Closes #196
2025-07-23 16:22:14 -04:00
137 changed files with 1227 additions and 869 deletions

14
ansi.sh
View File

@ -1,14 +0,0 @@
#!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███ '
clear
echo -e "\n$ansi_art\n"

View File

@ -4,17 +4,23 @@ OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/de
PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() {
source ~/.local/share/omarchy/ansi.sh
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")
local options=("Theme" "Font" "Setup" "Update" "Manual" "Exit")
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "") || exit 0
case "$choice" in
Theme) theme_menu ;;
Font)
omarchy-font-menu
ack_command
main_menu
;;
Update) update_menu ;;
Setup) setup_menu ;;
Manual) open_manual ;;
@ -52,10 +58,11 @@ update_menu() {
theme_menu() {
show_ascii_art
local menu=("Pick" "Install" "Remove" "Back")
local menu=("Pick" "Install" "Update" "Remove" "Back")
local commands=(
"omarchy-theme-menu"
"install_theme_prompt"
"omarchy-theme-update"
"remove_theme_prompt"
"main_menu"
)
@ -95,9 +102,10 @@ remove_theme_prompt() {
setup_menu() {
show_ascii_art
local menu=("Dropbox" "Docker DBs" "Fingerprint sensor" "Fido2 device" "Back")
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"
@ -126,10 +134,10 @@ setup_docker_dbs() {
if [[ -n "$choices" ]]; then
for db in $choices; do
case $db in
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 ;;
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 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
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

View File

@ -2,8 +2,16 @@
# Set recorder based on GPU
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
screenrecording() {
filename="$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
notify-send "Screen recording starting..." -t 1000
sleep 1
@ -17,7 +25,7 @@ screenrecording() {
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording saved to ~/Videos" -t 2000
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
elif [[ "$1" == "output" ]]; then
screenrecording
else

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
exit 0
fi
done
done
else
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
fi

View File

@ -1,8 +1,16 @@
#!/bin/bash
hyprshot -m ${1:-region} --raw |
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
pkill slurp || hyprshot -m ${1:-region} --raw |
satty --filename - \
--output-filename ~/Pictures/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \
--actions-on-enter save-to-clipboard \
--save-after-copy \

5
bin/omarchy-cmd-tzupdate Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
sudo tzupdate
new_timezone=$(timedatectl show -p Timezone --value)
notify-send "Timezone has been set to $new_timezone"

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

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

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

@ -0,0 +1,5 @@
#!/bin/bash
pgrep -f "alacritty --class Screensaver" ||
alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \
-o 'colors.cursor.cursor="#000000"' -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver

View File

@ -2,15 +2,17 @@
show_power_menu() {
# The first characters are invisible sort keys.
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local menu_options=" Lock
󱄄 Save
󰤄 Suspend
 Relaunch
󰜉 Restart
󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | walker --dmenu --theme dmenu_150)
case "$selection" in
*Lock*) hyprlock ;;
*Save*) ~/.local/share/omarchy/bin/omarchy-launch-screensaver ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;

26
bin/omarchy-migrate Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# Exit immediately if a command exits with a non-zero status
set -e
# Create the migrations state directory, we will 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
cd ~/.local/share/omarchy
for file in migrations/*.sh; do
filename=$(basename "$file")
migrate_at="${filename%.sh}"
# Migration already applied, to re-run it simply delete the state file and try again
[ -e "${STATE_DIR}/$filename" ] && continue
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
source $file
touch "${STATE_DIR}/$filename"
done
# Back to where we came from
cd - >/dev/null

View File

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

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

@ -0,0 +1,35 @@
#!/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)"
# 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

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

@ -0,0 +1,6 @@
#!/bin/bash
omarchy-refresh-config hypr/hypridle.conf
pkill -x hypridle
uwsm app -- hypridle >/dev/null 2>&1 &

View File

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

View File

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

View File

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

View File

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

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

@ -0,0 +1,4 @@
#!/bin/bash
killall waybar || true
setsid uwsm app -- waybar &>/dev/null &

9
bin/omarchy-setup-steam Executable file
View File

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

View File

@ -11,7 +11,7 @@ TOTAL=${#BACKGROUNDS[@]}
if [[ $TOTAL -eq 0 ]]; then
notify-send "No background was found for theme" -t 2000
pkill -x swaybg
uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
else
# Get current background from symlink
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
@ -44,5 +44,5 @@ else
# Relaunch swaybg
pkill -x swaybg
uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
fi

View File

@ -12,9 +12,6 @@ REPO_URL="$1"
THEMES_DIR="$HOME/.config/omarchy/themes"
THEME_NAME=$(basename "$REPO_URL" .git | sed -E 's/^omarchy-//; s/-theme$//')
THEME_PATH="$THEMES_DIR/$THEME_NAME"
THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds"
BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds"
BACKGROUNDS_THEME_PATH="$BACKGROUNDS_PATH/$THEME_NAME"
# Remove existing theme if present
if [ -d "$THEME_PATH" ]; then
@ -27,10 +24,5 @@ if ! git clone "$REPO_URL" "$THEME_PATH"; then
exit 1
fi
# Link backgrounds if present
if [ -d $THEME_BACKGROUND_PATH ]; then
ln -snf $THEME_BACKGROUND_PATH $BACKGROUNDS_THEME_PATH
fi
# Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME

View File

@ -6,7 +6,7 @@ CURRENT_THEME_NAME=$(basename "$(realpath "$CURRENT_THEME_DIR")")
# Build themes list with pretty display names
mapfile -t themes < <(
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | while read -r path; do
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | sort | while read -r path; do
filename=$(basename "$path")
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
@ -15,7 +15,7 @@ mapfile -t themes < <(
else
echo "$display_name"
fi
done | sort
done
)
# Show Walker menu

View File

@ -32,12 +32,19 @@ else
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Change gnome icon theme color
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 btop
pkill -SIGUSR2 waybar
"$HOME/.local/share/omarchy/bin/omarchy-restart-waybar"
pkill swayosd-server
setsid uwsm app -- swayosd-server &>/dev/null &
makoctl reload

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

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

View File

@ -1,31 +1,25 @@
#!/bin/bash
cd ~/.local/share/omarchy
# Exit immediately if a command exits with a non-zero status
set -e
if [[ $1 == "all" ]]; then
# Run all migrations since the root commit
migration_starting_point=$(git log --max-parents=0 --first-parent --format="%H")
else
# Remember the commit we're at before upgrading in order to only run new migrations
migration_starting_point=$(git log -1 --format=%H)
fi
# Show logo
clear
cat <~/.local/share/omarchy/logo.txt
# Get the latest while trying to preserve any modifications
git pull --autostash
git diff --check || git reset --merge
omarchy_path=~/.local/share/omarchy
git -C $omarchy_path pull --autostash
git -C $omarchy_path diff --check || git -C $omarchy_path reset --merge
# Run any pending migrations
for file in $(git diff --name-only --diff-filter=A $migration_starting_point.. migrations/*.sh); do
filename=$(basename "$file")
migrate_at="${filename%.sh}"
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file
done
# Run migrations
"$HOME/.local/share/omarchy/bin/omarchy-migrate"
# Update system packages
echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm
# Back to where we came from
cd - >/dev/null
# Offer to reboot if the kernel has been changed
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && sudo reboot now
fi

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

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

18
boot.sh
View File

@ -1,15 +1,17 @@
#!/bin/bash
ansi_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ █
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
ansi_art=' ▄▄▄
▄█████ ▄███████████▄ ▄███████ ▄███████ ███████ ▄█ █ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
██████ █ ███ █ ███ █▀ ███ ███ ████████▀ ███ █▀ █████▀
███ ███ '
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
███ █▀ '
clear
echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git

View File

@ -47,7 +47,7 @@
{
"type": "swap",
"key": "└ └󰓡 ",
"keyColor": "green",
"keyColor": "green"
},
{
"type": "custom",
@ -79,6 +79,12 @@
"keyColor": "yellow"
},
"break",
{
"type": "command",
"key": "│ ├Ø",
"keyColor": "blue",
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\""
},
{
"type": "de",
"key": " DE",
@ -97,17 +103,17 @@
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue",
"keyColor": "blue"
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue",
"keyColor": "blue"
},
{
"type": "terminal",
@ -138,7 +144,6 @@
"type": "custom",
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
},
"break",
"break"
]
}

View File

@ -2,6 +2,13 @@ general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_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 = 60 # 1min
on-timeout = omarchy-launch-screensaver # start screensaver
}
listener {

View File

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

View File

@ -6,7 +6,7 @@ theme = "omarchy-default"
theme_base = []
theme_location = ["~/.local/share/omarchy/default/walker/themes/"]
monitor = ""
hotreload_theme = false
hotreload_theme = true
as_window = false
timeout = 0
disable_click_to_close = false
@ -139,6 +139,7 @@ name = "Calculator"
icon = "accessories-calculator"
placeholder = "Calculator"
min_chars = 3 # Min chars to calculate. 3 allows "3+3"
prefix = "="
[builtins.windows]
weight = 5
@ -198,20 +199,21 @@ typeahead = true
hidden = true
[builtins.finder]
use_fd = false
use_fd = true
fd_flags = "--ignore-vcs --type file --type directory"
cmd_alt = "xdg-open $(dirname ~/%RESULT%)"
weight = 5
icon = "file"
name = "finder"
name = "Finder"
placeholder = "Finder"
switcher_only = true
ignore_gitignore = true
refresh = true
concurrency = 8
show_icon_when_single = true
preview_images = false
hidden = true
preview_images = true
hidden = false
prefix = "."
[builtins.runner]
eager_loading = true

View File

@ -8,7 +8,8 @@
"hyprland/workspaces"
],
"modules-center": [
"clock"
"clock",
"custom/update"
],
"modules-right": [
"group/tray-expander",
@ -42,6 +43,12 @@
"5": []
}
},
"custom/update": {
"format": "",
"exec": "~/.local/share/omarchy/bin/omarchy-update-available",
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
"interval": 3600
},
"cpu": {
"interval": 5,
"format": "󰍛",
@ -50,7 +57,8 @@
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
"tooltip": false,
"on-click-right": "~/.local/share/omarchy/bin/omarchy-cmd-tzupdate"
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],

View File

@ -26,6 +26,10 @@
min-width: 9px;
}
#workspaces button.empty {
opacity: 0.5;
}
#tray,
#cpu,
#battery,

View File

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

View File

@ -7,8 +7,8 @@ if command -v zoxide &> /dev/null; then
fi
if command -v fzf &> /dev/null; then
if [[ -f /usr/share/bash-completion/completions/fzf ]]; then
source /usr/share/bash-completion/completions/fzf
if [[ -f /usr/share/fzf/completion.bash ]]; then
source /usr/share/fzf/completion.bash
fi
if [[ -f /usr/share/fzf/key-bindings.bash ]]; then
source /usr/share/fzf/key-bindings.bash

View File

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

14
default/bashrc Normal file
View File

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

View File

@ -5,7 +5,7 @@ bind = SUPER, W, killactive,
bind = SUPER, J, togglesplit, # dwindle
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, V, togglefloating,
bind = , F11, fullscreen, 0
bind = SHIFT, F11, fullscreen, 0
# Move focus with mainMod + arrow keys
bind = SUPER, left, movefocus, l
@ -43,6 +43,10 @@ bind = SUPER SHIFT, right, swapwindow, r
bind = SUPER SHIFT, up, swapwindow, u
bind = SUPER SHIFT, down, swapwindow, d
# Cycle through applications on active workspace
bind = ALT, Tab, cyclenext
bind = ALT, Tab, bringactivetotop
# Resize active window
bind = SUPER, minus, resizeactive, -100 0
bind = SUPER, equal, resizeactive, 100 0

View File

@ -32,5 +32,8 @@ bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot outp
bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord
bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output
# Screensaver
bind = SUPER ALT, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver
# Color picker
bind = SUPER, PRINT, exec, hyprpicker -a

View File

@ -5,19 +5,24 @@ windowrule = suppressevent maximize, class:.*
windowrule = tile, class:^(Chromium)$
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
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 645 450, class:Omarchy
windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
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)
# Float Steam, fullscreen RetroArch
windowrule = float, class:^(steam)$
windowrule = float, class:steam
windowrule = center, class:steam, title:Steam
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
# Just dash of opacity
windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

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

View File

@ -3,6 +3,8 @@
# Exit immediately if a command exits with a non-zero status
set -e
OMARCHY_INSTALL=~/.local/share/omarchy/install
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
@ -12,16 +14,70 @@ catch_errors() {
trap catch_errors ERR
# Install everything
for f in ~/.local/share/omarchy/install/*.sh; do
echo -e "\nRunning installer: $f"
source "$f"
done
show_logo() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
echo
}
# Ensure locate is up to date now that everything has been installed
show_subtext() {
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
echo
}
# Install prerequisites
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/presentation.sh
# Configuration
show_logo beams 240
show_subtext "Let's install Omarchy! [1/5]"
source $OMARCHY_INSTALL/config/identification.sh
source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/login.sh
source $OMARCHY_INSTALL/config/nvidia.sh
# Development
show_logo decrypt 920
show_subtext "Installing terminal tools [2/5]"
source $OMARCHY_INSTALL/development/terminal.sh
source $OMARCHY_INSTALL/development/development.sh
source $OMARCHY_INSTALL/development/nvim.sh
source $OMARCHY_INSTALL/development/ruby.sh
source $OMARCHY_INSTALL/development/docker.sh
source $OMARCHY_INSTALL/development/firewall.sh
# Desktop
show_logo slice 60
show_subtext "Installing desktop tools [3/5]"
source $OMARCHY_INSTALL/desktop/desktop.sh
source $OMARCHY_INSTALL/desktop/hyprlandia.sh
source $OMARCHY_INSTALL/desktop/theme.sh
source $OMARCHY_INSTALL/desktop/bluetooth.sh
source $OMARCHY_INSTALL/desktop/asdcontrol.sh
source $OMARCHY_INSTALL/desktop/fonts.sh
source $OMARCHY_INSTALL/desktop/printer.sh
# Apps
show_logo expand
show_subtext "Installing default applications [4/5]"
source $OMARCHY_INSTALL/apps/webapps.sh
source $OMARCHY_INSTALL/apps/xtras.sh
source $OMARCHY_INSTALL/apps/mimetypes.sh
# Updates
show_logo highlight
show_subtext "Updating system packages [5/5]"
sudo updatedb
# Update all built-in packages
sudo pacman -Syu --noconfirm
gum confirm "Reboot to apply all settings?" && reboot
# Reboot
show_logo laseretch 920
show_subtext "You're done! So we'll be rebooting now..."
sleep 2
reboot

View File

@ -1,16 +0,0 @@
#!/bin/bash
sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si --noconfirm
cd -
rm -rf yay-bin
cd ~
# Add fun and color to the pacman installer
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
fi

View File

@ -12,5 +12,5 @@ if [ -z "$OMARCHY_BARE" ]; then
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://manuals.omamix.org/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsiZGF0YSI6NDgsInB1ciI6ImJsb2JfaWQifX0=--c26606490139480f5bcb3cf91b09fc45825007f6/omarchy.jpg?disposition=attachment
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

View File

@ -4,11 +4,17 @@
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc
# Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications
# If bare install, allow a way for its exclusions to not get added in updates
if [ -n "$OMARCHY_BARE" ]; then
mkdir -p ~/.local/state/omarchy
touch ~/.local/state/omarchy/bare.mode
fi
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/

View File

@ -3,6 +3,6 @@
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
# Rely on install/plymouth.sh to do the rebuild
# Rely on install/login.sh to do the rebuild
# sudo mkinitcpio -P
fi

View File

@ -1,10 +1,4 @@
#!/bin/bash
# Need gum to query for input
yay -S --noconfirm --needed gum
# Configure identification
source ~/.local/share/omarchy/ansi.sh
echo -e "\nEnter identification for git and autocomplete..."
export OMARCHY_USER_NAME=$(gum input --placeholder "Enter full name" --prompt "Name> ")
export OMARCHY_USER_EMAIL=$(gum input --placeholder "Enter email address" --prompt "Email> ")

267
install/config/login.sh Normal file
View File

@ -0,0 +1,267 @@
#!/bin/bash
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
if ! command -v uwsm &>/dev/null || ! command -v plymouth &>/dev/null; then
yay -S --noconfirm --needed uwsm plymouth
fi
# ==============================================================================
# PLYMOUTH SETUP
# ==============================================================================
if ! grep -Eq '^HOOKS=.*plymouth' /etc/mkinitcpio.conf; then
# Backup original mkinitcpio.conf just in case
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
else
echo "Couldn't add the Plymouth hook"
fi
# Regenerate initramfs
sudo mkinitcpio -P
fi
# Add kernel parameters for Plymouth
if [ -d "/boot/loader/entries" ]; then # systemd-boot
echo "Detected systemd-boot"
for entry in /boot/loader/entries/*.conf; do
if [ -f "$entry" ]; then
# Skip fallback entries
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
echo "Skipped: $(basename "$entry") (fallback entry)"
continue
fi
# Skip if splash it already present for some reason
if ! grep -q "splash" "$entry"; then
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
else
echo "Skipped: $(basename "$entry") (splash already present)"
fi
fi
done
elif [ -f "/etc/default/grub" ]; then # Grub
echo "Detected grub"
# Backup GRUB config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
# Regenerate grub config
sudo grub-mkconfig -o /boot/grub/grub.cfg
else
echo "GRUB already configured with splash kernel parameters"
fi
elif [ -d "/etc/cmdline.d" ]; then # UKI
echo "Detected a UKI setup"
# Relying on mkinitcpio to assemble a UKI
# https://wiki.archlinux.org/title/Unified_kernel_image
if ! grep -q splash /etc/cmdline.d/*.conf; then
# Need splash, create the omarchy file
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
if ! grep -q quiet /etc/cmdline.d/*.conf; then
# Need quiet, create or append the omarchy file
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
elif [ -f "/etc/kernel/cmdline" ]; then # UKI Alternate
# Alternate UKI kernel cmdline location
echo "Detected a UKI setup"
# Backup kernel cmdline config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
current_cmdline=$(cat /etc/kernel/cmdline)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
# Write new file
echo $new_cmdline | sudo tee /etc/kernel/cmdline
else
echo ""
echo " None of systemd-boot, GRUB, or UKI detected. Please manually add these kernel parameters:"
echo " - splash (to see the graphical splash screen)"
echo " - quiet (for silent boot)"
echo ""
fi
if [ "$(plymouth-set-default-theme)" != "omarchy" ]; then
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi
# ==============================================================================
# SEAMLESS LOGIN
# ==============================================================================
if [ ! -x /usr/local/bin/seamless-login ]; then
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
cat <<'CCODE' >/tmp/seamless-login.c
/*
* Seamless Login - Minimal SDDM-style Plymouth transition
* Replicates SDDM's VT management for seamless auto-login
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <linux/vt.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[]) {
int vt_fd;
int vt_num = 1; // TTY1
char vt_path[32];
if (argc < 2) {
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
return 1;
}
// Open the VT (simple approach like SDDM)
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
vt_fd = open(vt_path, O_RDWR);
if (vt_fd < 0) {
perror("Failed to open VT");
return 1;
}
// Activate the VT
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
perror("VT_ACTIVATE failed");
close(vt_fd);
return 1;
}
// Wait for VT to be active
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
perror("VT_WAITACTIVE failed");
close(vt_fd);
return 1;
}
// Critical: Set graphics mode to prevent console text
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
perror("KDSETMODE KD_GRAPHICS failed");
close(vt_fd);
return 1;
}
// Clear VT and close (like SDDM does)
const char *clear_seq = "\33[H\33[2J";
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
perror("Failed to clear VT");
}
close(vt_fd);
// Set working directory to user's home
const char *home = getenv("HOME");
if (home) chdir(home);
// Now execute the session command
execvp(argv[1], &argv[1]);
perror("Failed to exec session");
return 1;
}
CCODE
gcc -o /tmp/seamless-login /tmp/seamless-login.c
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
sudo chmod +x /usr/local/bin/seamless-login
rm /tmp/seamless-login.c
fi
if [ ! -f /etc/systemd/system/omarchy-seamless-login.service ]; then
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
[Unit]
Description=Omarchy Seamless Auto-Login
Documentation=https://github.com/basecamp/omarchy
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
PartOf=graphical.target
[Service]
Type=simple
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
Restart=always
RestartSec=2
User=$USER
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
StandardInput=tty
StandardOutput=journal
StandardError=journal+console
PAMName=login
[Install]
WantedBy=graphical.target
EOF
fi
if [ ! -f /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf ]; then
# Make plymouth remain until graphical.target
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
[Unit]
After=multi-user.target
EOF
fi
# Mask plymouth-quit-wait.service only if not already masked
if ! systemctl is-enabled plymouth-quit-wait.service | grep -q masked; then
sudo systemctl mask plymouth-quit-wait.service
sudo systemctl daemon-reload
fi
# Enable omarchy-seamless-login.service only if not already enabled
if ! systemctl is-enabled omarchy-seamless-login.service | grep -q enabled; then
sudo systemctl enable omarchy-seamless-login.service
fi
# Disable getty@tty1.service only if not already disabled
if ! systemctl is-enabled getty@tty1.service | grep -q disabled; then
sudo systemctl disable getty@tty1.service
fi

View File

@ -12,6 +12,9 @@
# --- GPU Detection ---
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
show_logo
show_subtext "Install NVIDIA drivers..."
# --- Driver Selection ---
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then

View File

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

7
install/desktop/fonts.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
yay -S --noconfirm --needed ttf-font-awesome ttf-cascadia-mono-nerd ttf-ia-writer noto-fonts noto-fonts-emoji
if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed ttf-jetbrains-mono noto-fonts-cjk noto-fonts-extra
fi

View File

@ -1,16 +1,27 @@
#!/bin/bash
# Use dark mode for QT apps too (like kdenlive)
sudo pacman -S --noconfirm kvantum-qt5
if ! yay -Q kvantum-qt5 &>/dev/null; then
yay -S --noconfirm kvantum-qt5
fi
# Prefer dark mode everything
sudo pacman -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
if ! yay -Q gnome-themes-extra &>/dev/null; then
yay -S --noconfirm gnome-themes-extra # Adds Adwaita-dark theme
fi
# Allow icons to match the theme
if ! yay -! yaru-icon-theme &>/dev/null; then
yay -S --noconfirm yaru-icon-theme
fi
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
# Setup theme links
mkdir -p ~/.config/omarchy/themes
for f in ~/.local/share/omarchy/themes/*; do ln -s "$f" ~/.config/omarchy/themes/; done
for f in ~/.local/share/omarchy/themes/*; do ln -nfs "$f" ~/.config/omarchy/themes/; done
# Set initial theme
mkdir -p ~/.config/omarchy/current

View File

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

View File

@ -1,126 +0,0 @@
#!/bin/bash
# Hyprland launched via UWSM and login directly as user, rely on disk encryption + hyprlock for security
yay -S --noconfirm --needed uwsm
# Compile the seamless login helper -- needed to prevent seeing terminal between loader and desktop
cat <<'CCODE' >/tmp/seamless-login.c
/*
* Seamless Login - Minimal SDDM-style Plymouth transition
* Replicates SDDM's VT management for seamless auto-login
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <linux/vt.h>
#include <sys/wait.h>
#include <string.h>
int main(int argc, char *argv[]) {
int vt_fd;
int vt_num = 1; // TTY1
char vt_path[32];
if (argc < 2) {
fprintf(stderr, "Usage: %s <session_command>\n", argv[0]);
return 1;
}
// Open the VT (simple approach like SDDM)
snprintf(vt_path, sizeof(vt_path), "/dev/tty%d", vt_num);
vt_fd = open(vt_path, O_RDWR);
if (vt_fd < 0) {
perror("Failed to open VT");
return 1;
}
// Activate the VT
if (ioctl(vt_fd, VT_ACTIVATE, vt_num) < 0) {
perror("VT_ACTIVATE failed");
close(vt_fd);
return 1;
}
// Wait for VT to be active
if (ioctl(vt_fd, VT_WAITACTIVE, vt_num) < 0) {
perror("VT_WAITACTIVE failed");
close(vt_fd);
return 1;
}
// Critical: Set graphics mode to prevent console text
if (ioctl(vt_fd, KDSETMODE, KD_GRAPHICS) < 0) {
perror("KDSETMODE KD_GRAPHICS failed");
close(vt_fd);
return 1;
}
// Clear VT and close (like SDDM does)
const char *clear_seq = "\33[H\33[2J";
if (write(vt_fd, clear_seq, strlen(clear_seq)) < 0) {
perror("Failed to clear VT");
}
close(vt_fd);
// Set working directory to user's home
const char *home = getenv("HOME");
if (home) chdir(home);
// Now execute the session command
execvp(argv[1], &argv[1]);
perror("Failed to exec session");
return 1;
}
CCODE
gcc -o /tmp/seamless-login /tmp/seamless-login.c
sudo mv /tmp/seamless-login /usr/local/bin/seamless-login
sudo chmod +x /usr/local/bin/seamless-login
rm /tmp/seamless-login.c
cat <<EOF | sudo tee /etc/systemd/system/omarchy-seamless-login.service
[Unit]
Description=Omarchy Seamless Auto-Login
Documentation=https://github.com/basecamp/omarchy
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service
PartOf=graphical.target
[Service]
Type=simple
ExecStart=/usr/local/bin/seamless-login uwsm start -- hyprland.desktop
Restart=always
RestartSec=2
User=$USER
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
StandardInput=tty
StandardOutput=journal
StandardError=journal+console
PAMName=login
[Install]
WantedBy=graphical.target
EOF
# Make plymouth remain until graphical.target
sudo mkdir -p /etc/systemd/system/plymouth-quit.service.d
sudo tee /etc/systemd/system/plymouth-quit.service.d/wait-for-graphical.conf <<'EOF'
[Unit]
After=multi-user.target
EOF
# Prevent plymouth-quit-wait.service
sudo systemctl mask plymouth-quit-wait.service
sudo systemctl daemon-reload
sudo systemctl enable omarchy-seamless-login.service
# Disable getty@tty1 to prevent conflicts
sudo systemctl disable getty@tty1.service

View File

@ -1,121 +0,0 @@
#!/bin/bash
if ! command -v plymouth &>/dev/null; then
yay -S --noconfirm --needed plymouth
# Skip if plymouth already exists for some reason
# Backup original mkinitcpio.conf just in case
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/mkinitcpio.conf "/etc/mkinitcpio.conf.bak.${backup_timestamp}"
# Add plymouth to HOOKS array after 'base udev' or 'base systemd'
if grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base systemd"; then
sudo sed -i '/^HOOKS=/s/base systemd/base systemd plymouth/' /etc/mkinitcpio.conf
elif grep "^HOOKS=" /etc/mkinitcpio.conf | grep -q "base udev"; then
sudo sed -i '/^HOOKS=/s/base udev/base udev plymouth/' /etc/mkinitcpio.conf
else
echo "Couldn't add the Plymouth hook"
fi
# Regenerate initramfs
sudo mkinitcpio -P
# Add kernel parameters for Plymouth (systemd-boot only)
if [ -d "/boot/loader/entries" ]; then
echo "Detected systemd-boot"
for entry in /boot/loader/entries/*.conf; do
if [ -f "$entry" ]; then
# Skip fallback entries
if [[ "$(basename "$entry")" == *"fallback"* ]]; then
echo "Skipped: $(basename "$entry") (fallback entry)"
continue
fi
# Skip if splash it already present for some reason
if ! grep -q "splash" "$entry"; then
sudo sed -i '/^options/ s/$/ splash quiet/' "$entry"
else
echo "Skipped: $(basename "$entry") (splash already present)"
fi
fi
done
elif [ -f "/etc/default/grub" ]; then
echo "Detected grub"
# Backup GRUB config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/default/grub "/etc/default/grub.bak.${backup_timestamp}"
# Check if splash is already in GRUB_CMDLINE_LINUX_DEFAULT
if ! grep -q "GRUB_CMDLINE_LINUX_DEFAULT.*splash" /etc/default/grub; then
# Get current GRUB_CMDLINE_LINUX_DEFAULT value
current_cmdline=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" /etc/default/grub | cut -d'"' -f2)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=\".*\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$new_cmdline\"/" /etc/default/grub
# Regenerate grub config
sudo grub-mkconfig -o /boot/grub/grub.cfg
else
echo "GRUB already configured with splash kernel parameters"
fi
elif [ -d "/etc/cmdline.d" ]; then
echo "Detected a UKI setup"
# Relying on mkinitcpio to assemble a UKI
# https://wiki.archlinux.org/title/Unified_kernel_image
if ! grep -q splash /etc/cmdline.d/*.conf; then
# Need splash, create the omarchy file
echo "splash" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
if ! grep -q quiet /etc/cmdline.d/*.conf; then
# Need quiet, create or append the omarchy file
echo "quiet" | sudo tee -a /etc/cmdline.d/omarchy.conf
fi
elif [ -f "/etc/kernel/cmdline" ]; then
# Alternate UKI kernel cmdline location
echo "Detected a UKI setup"
# Backup kernel cmdline config before modifying
backup_timestamp=$(date +"%Y%m%d%H%M%S")
sudo cp /etc/kernel/cmdline "/etc/kernel/cmdline.bak.${backup_timestamp}"
current_cmdline=$(cat /etc/kernel/cmdline)
# Add splash and quiet if not present
new_cmdline="$current_cmdline"
if [[ ! "$current_cmdline" =~ splash ]]; then
new_cmdline="$new_cmdline splash"
fi
if [[ ! "$current_cmdline" =~ quiet ]]; then
new_cmdline="$new_cmdline quiet"
fi
# Trim any leading/trailing spaces
new_cmdline=$(echo "$new_cmdline" | xargs)
# Write new file
echo $new_cmdline | sudo tee /etc/kernel/cmdline
else
echo ""
echo "Neither systemd-boot nor GRUB detected. Please manually add these kernel parameters:"
echo " - splash (to see the graphical splash screen)"
echo " - quiet (for silent boot)"
echo ""
fi
# Copy and set the Plymouth theme
sudo cp -r "$HOME/.local/share/omarchy/default/plymouth" /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
fi

41
install/preflight/aur.sh Normal file
View File

@ -0,0 +1,41 @@
#!/bin/bash
# Only add Chaotic-AUR if the architecture is x86_64 so ARM users can build the packages
if [[ "$(uname -m)" == "x86_64" ]] && ! command -v yay &>/dev/null; then
# Try installing Chaotic-AUR keyring and mirrorlist
if ! pacman-key --list-keys 3056513887B78AEB >/dev/null 2>&1 &&
sudo pacman-key --recv-key 3056513887B78AEB &&
sudo pacman-key --lsign-key 3056513887B78AEB &&
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' &&
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'; then
# Add Chaotic-AUR repo to pacman config
if ! grep -q "chaotic-aur" /etc/pacman.conf; then
echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null
fi
# Install yay directly from Chaotic-AUR
sudo pacman -Sy --needed --noconfirm yay
else
echo "Failed to install Chaotic-AUR, so won't include it in pacman config!"
fi
fi
# Manually install yay from AUR if not already available
if ! command -v yay &>/dev/null; then
# Install build tools
sudo pacman -Sy --needed --noconfirm base-devel
cd /tmp
rm -rf yay-bin
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si --noconfirm
cd -
rm -rf yay-bin
cd ~
fi
# Add fun and color to the pacman installer
if ! grep -q "ILoveCandy" /etc/pacman.conf; then
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
fi

View File

@ -0,0 +1,3 @@
#!/bin/bash
yay -S --noconfirm --needed gum python-terminaltexteffects

1
logo.svg Normal file
View File

@ -0,0 +1 @@
<svg fill="none" height="285" viewBox="0 0 1215 285" width="1215" xmlns="http://www.w3.org/2000/svg"><g fill="#000"><path clip-rule="evenodd" d="m720 120h-15v15h-14.998v14.999l-60.002.001v15.002l90-.002v.002h.002l-.002 89.998h-15v15h-13v15h-17v-89.998h-45v90l-45-.002v-89.998h-14.998v-30h14.998v-15.002h-14.998v-30.001h14.998v-75h15v-14.997h15v-15.002h105.002zm-90-.001h45v-74.997h-45z" fill-rule="evenodd"/><path clip-rule="evenodd" d="m105 30.002h15v14.997h15v180.001h-15v15h-15v15.002h-75v-15.002h-15v-15h-15v-180.001h15v-14.997h15v-15.002h75zm-60 194.998h45v-179.998h-45z" fill-rule="evenodd"/><path d="m300 15h60v15h15v14.999h15v180.001h-15v15h-15v15h-15l-.004-209.998h-44.994v-.002h-.002v210.002h-45v-210h-44.998v179.997h-.002v30.003h-15v-15.002h-15v-15h-14.998v-180.001h14.998v-14.999h15v-15h60v-15h45z"/><path clip-rule="evenodd" d="m555 225h-15v15h-15v15h-15v-105.001l-44.998.001v105.002h-45.002v-105.002h-15v-30.001h15v-75h15.002v-14.997h15v-15.002h105zm-89.998-105.001h44.998v-74.997h-44.998z" fill-rule="evenodd"/><path d="m885 75h-15v15h-15v15h-15v-59.998h-45v179.998h45v-59.998h15v14.997h15v15.001h15v30h-15v15h-15v15.002l-105-.002v-210.001h14.998v-14.997h15.002v-15.002h105z"/><path d="m960 119.999h45v-104.999h15v15h15v14.999h15v75.001h15v15h-15v90h-15v15h-15v15h-15v-105h-45v105.002l-45-.002v-105h-30v-15h15v-15.001h15v-75h15v-14.997h15v-15.002h15z"/><path d="m1125 119.999h45v-104.999h15v15h15v15h15v180h-15v15h-15v15.002l-75-.002v-15h-15v-15h-15v-45.001h15v-14.997-.002h30v60h45v-75h-90v-105.001h15v-14.997h15v-15.002h15z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

10
logo.txt Normal file
View File

@ -0,0 +1,10 @@
▄▄▄
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
███ █▀

View File

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

View File

@ -1,2 +1,2 @@
echo "Permanently fix F-keys on Apple-mode keyboards (like Lofree Flow84)"
source ~/.local/share/omarchy/install/fix-fkeys.sh
source ~/.local/share/omarchy/install/config/fix-fkeys.sh

View File

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

View File

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

View File

@ -14,6 +14,5 @@ if ! command -v uwsm &>/dev/null; then
sed -i 's/^GTK_IM_MODULE=fcitx$//' "$HOME/.config/environment.d/fcitx.conf"
fi
omarchy-refresh-plymouth -y
source ~/.local/share/omarchy/install/login.sh
source ~/.local/share/omarchy/install/config/login.sh
fi

View File

@ -1,2 +1,2 @@
echo "Enable ufw firewall"
source ~/.local/share/omarchy/install/firewall.sh
source ~/.local/share/omarchy/install/development/firewall.sh

View File

@ -1,5 +0,0 @@
echo "Add missing libappindicator-gtk3 for Dropbox icon tray to work right"
if ! pacman -Q libappindicator-gtk3 &>/dev/null; then
yay -S --noconfirm --needed libappindicator-gtk3
fi

View File

@ -1,5 +1,7 @@
if [[ ! -f ~/.local/state/omarchy/bare.mode ]]; then
echo "Add missing installation of Zoom"
if ! command -v zoom &>/dev/null; then
yay -S --noconfirm --needed zoom
fi
fi

View File

@ -1,6 +0,0 @@
echo "Add missing Dropbox dependencies"
# Dropbox is still there, but the dependencies aren't yet
if command -v dropbox-cli &>/dev/null && ! pacman -Q libappindicator-gtk3 &>/dev/null; then
yay -S --noconfirm --needed dropbox libappindicator-gtk3 python-gpgme nautilus-dropbox
fi

View File

@ -1,6 +1,6 @@
echo "Install swayOSD to show volume status"
if ! command -v swayosd &>/dev/null; then
if ! command -v swayosd-server &>/dev/null; then
yay -S --noconfirm --needed swayosd
setsid uwsm app -- swayosd-server &>/dev/null &
fi

8
migrations/1753302134.sh Normal file
View File

@ -0,0 +1,8 @@
echo "Reload Waybar on unlock to prevent stacking"
if ! grep -q 'on_unlock_cmd *= *pkill -SIGUSR2 waybar' ~/.config/hypr/hypridle.conf; then
sed -i '/^general[[:space:]]*{/,/^}/ {
/on_unlock_cmd *=/d
/^}$/ i\ on_unlock_cmd = pkill -SIGUSR2 waybar # prevent stacking of waybar when waking
}' ~/.config/hypr/hypridle.conf
fi

18
migrations/1753352057.sh Executable file
View File

@ -0,0 +1,18 @@
echo "Add Chaotic-AUR to get compiled binaries"
if [[ "$(uname -m)" == "x86_64" ]] && ! grep -q '^\[chaotic-aur\]' /etc/pacman.conf; then
# Try installing Chaotic-AUR keyring and mirrorlist
if sudo pacman-key --recv-key 3056513887B78AEB &&
sudo pacman-key --lsign-key 3056513887B78AEB &&
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' &&
sudo pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'; then
# Add Chaotic-AUR repo to pacman config
echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf >/dev/null
# Refresh pacman package databases
sudo pacman -Sy
else
echo "Failed to install Chaotic-AUR, so won't include it in pacman config!"
fi
fi

4
migrations/1753468218.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Add Terminal Text Effects for rizzing Omarchy"
if ! yay -Qe python-terminaltexteffects &>/dev/null; then
yay -S --noconfirm --needed python-terminaltexteffects
fi

5
migrations/1753495989.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Allow updating of timezone by right-clicking on the clock (or running omarchy-cmd-tzupdate)"
if ! command -v tzupdate &>/dev/null; then
bash ~/.local/share/omarchy/install/config/timezones.sh
omarchy-refresh-waybar
fi

4
migrations/1753558374.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Update Walker config to include = as the leader key for the calculator"
if ! grep -q 'prefix = "="' ~/.config/walker/config.toml; then
omarchy-refresh-walker
fi

5
migrations/1753683888.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Adding Omarchy version info to fastfetch"
if ! grep -q "omarchy" ~/.config/fastfetch/config.jsonc; then
cp ~/.local/share/omarchy/config/fastfetch/config.jsonc ~/.config/fastfetch/
fi

5
migrations/1753689791.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Add the new ristretto theme as an option"
if [[ ! -L ~/.config/omarchy/themes/ristretto ]]; then
ln -nfs ~/.local/share/omarchy/themes/ristretto ~/.config/omarchy/themes/
fi

12
migrations/1753908454.sh Normal file
View File

@ -0,0 +1,12 @@
echo "Migrate from manually downloaded fonts to font packages"
if ! yay -Q ttf-cascadia-mono-nerd &>/dev/null; then
yay -S --noconfirm ttf-cascadia-mono-nerd
rm -rf ~/.local/share/fonts/Caskaydia*
fc-cache
fi
if ! yay -Q ttf-ia-writer &>/dev/null; then
yay -S --noconfirm ttf-ia-writer
rm -rf ~/.local/share/fonts/iAWriterMonoS*
fc-cache
fi

4
migrations/1753998861.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Update Walker config to include . as the leader key for the finder"
if ! grep -q 'prefix = "\."' ~/.config/walker/config.toml; then
omarchy-refresh-walker
fi

9
migrations/1754047941.sh Normal file
View File

@ -0,0 +1,9 @@
echo "Add icon theme coloring"
if ! yay -! yaru-icon-theme &>/dev/null; then
yay -S --noconfirm yaru-icon-theme
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
fi
fi

2
migrations/1754108993.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Fix Plymouth login positioning in multi-monitor setups + limit password from overflowing"
omarchy-refresh-plymouth

10
migrations/1754113760.sh Normal file
View File

@ -0,0 +1,10 @@
echo "Change reload Waybar on unlock command to prevent stacking"
if ! grep -q 'on_unlock_cmd *= *omarchy-restart-waybar' ~/.config/hypr/hypridle.conf; then
sed -i \
'/^ on_unlock_cmd = pkill -SIGUSR2 waybar[[:space:]]*# prevent stacking of waybar when waking$/c\
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking' \
~/.config/hypr/hypridle.conf
omarchy-restart-waybar
fi

6
migrations/1754133148.sh Normal file
View File

@ -0,0 +1,6 @@
echo "Update Waybar CSS to dim unused workspaces"
if ! grep -q "#workspaces button\.empty" ~/.config/waybar/style.css; then
omarchy-refresh-config waybar/style.css
omarchy-restart-waybar
fi

6
migrations/1754136581.sh Normal file
View File

@ -0,0 +1,6 @@
echo "Start screensaver automatically after 1 minute and stop before locking"
if ! grep -q "omarchy-launch-screensaver" ~/.config/hypr/hypridle.conf; then
omarchy-refresh-hypridle
omarchy-refresh-hyprlock
fi

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