217 Commits

Author SHA1 Message Date
03f7403cdd Add migration to fix XCompose in Typora 2025-07-13 18:02:19 -07:00
3d060c384e Fix XCompose use in Typora 2025-07-13 18:01:08 -07:00
c9b1935054 Improve boot screen transition (#140)
* Working concept with SDDM

* Working concept without SDDM dep

* Working concept w/o SDDM and w/ UWSM

* Cleanup and UWSM tweaks

* Cleanup

* Remove call to seamless-login.sh

* Don't allow the progress to go backwards

* Add refresh to migration
2025-07-13 17:51:03 -07:00
2035790817 Fix indention 2025-07-13 17:45:21 -07:00
0caeeeed73 Merge branch 'master' into dev 2025-07-13 17:45:03 -07:00
1f0b8eb923 format(waybar): fix wrong indentation for config file (#131) 2025-07-13 17:44:25 -07:00
e50780e5bd Add collapsing tray to waybar (#130)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-07-13 17:40:13 -07:00
7af3230825 Automatically reload waybar style on changes (#91) 2025-07-13 17:31:07 -07:00
dc0032c9c3 Revert "Update keyboard shortcuts script to show all runtime keybinds (#70)"
This reverts commit 6433511873.
2025-07-13 17:27:33 -07:00
59b59807a9 Revert "We have F11 for this"
This reverts commit 4f60ac6797.
2025-07-13 17:27:30 -07:00
4f60ac6797 We have F11 for this 2025-07-13 17:24:49 -07:00
6433511873 Update keyboard shortcuts script to show all runtime keybinds (#70)
* feat: Add a keyboard shortcuts helper

This commit:

* Changes keybinds to use `bindd` and adds descriptions for each one
* Changes the keybinds script to use `hyprctl binds` to inspect runtime keybinds
and generate a wofi menu to search/inspect keybinds

* Rely on 'order defined' for sorting

Using `hyprctl binds` lets us get the binds in the order they're
defined. This lets us be deliberate about what keybinds we want to show
up at the top of the presented window.

* Skip cache file for keybinds

* Strip extra newline causing double spacing
2025-07-13 17:17:48 -07:00
41b5893d32 Just a slight indication of the current audio volume with 3 diffrent icons (#158)
* install: explicitly install iwd

When archinstall is run using an ethernet connection, iwd will not be
installed. Explicitly install and enable the service

* Just a slight indication of the current audio volume with 3 diffrent icons

---------

Co-authored-by: Tim Culverhouse <tim@timculverhouse.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-07-13 16:50:22 -07:00
920e236fc7 Focus on active window to solve the problem that opening URLs wouldnt focus browser if on a different workspace
Closes #152
2025-07-13 16:45:33 -07:00
745a16f2a4 Catch up with new spacing and improve color 2025-07-13 16:31:05 -07:00
bde3d915c2 Excess CR 2025-07-13 16:29:33 -07:00
13bc31ad0f Improve matte black lock screen colors 2025-07-13 16:29:24 -07:00
fb3aaaba5f Merge pull request #160 from ryanrhughes/Add-margin-to-notification-box
Add margin to notifications box
2025-07-13 19:27:18 -04:00
83877298b7 We use Liberation Sans for these 2025-07-13 15:45:44 -07:00
1df035864d Bring Matte Black mako.ini in line with the rest 2025-07-13 15:45:05 -07:00
dd207232e1 Add margin to notifications 2025-07-13 17:25:00 -04:00
b761d3df0b Fix the migration, not the installer 2025-07-11 09:23:22 -07:00
a477b41593 Fix backgrounds path 2025-07-11 09:19:17 -07:00
e8b47de2a9 Add migration to install new matte black theme 2025-07-11 09:10:59 -07:00
bd2fc67abc Add new matte black theme by @tahayvr 2025-07-11 09:06:14 -07:00
2d5285fc56 Fix theme switcher to work with real directories in .config/omarchy/themes
Not just symlinks
2025-07-11 08:57:55 -07:00
adc506f053 Merge pull request #128 from basecamp/dev
Omarchy v1.3.2
2025-07-10 21:56:56 -04:00
a6f4c1d68b Combine the rules and explicit center 2025-07-10 18:55:03 -07:00
29f1810c91 Remove duplicates and sort 2025-07-10 18:48:51 -07:00
b3b4c06175 Fix show bindings for the new files 2025-07-10 18:46:08 -07:00
9eb058cbe3 Float nautilus previews too 2025-07-10 18:32:32 -07:00
42e53500b4 Merge pull request #125 from basecamp/dev
Omarchy v1.3.1
2025-07-10 20:12:51 -04:00
62bbc8a698 No longer needed 2025-07-10 17:01:06 -07:00
88f816059b Revert "Merge pull request #118 from leonhazen/waybar-tray"
This reverts commit 1ee5b06161, reversing
changes made to 9cb30b5be6.
2025-07-10 17:00:39 -07:00
c1c8751160 Stop rebuilding initcpio twice during install 2025-07-10 16:56:16 -07:00
e6016034e6 No longer relevant since we moved to polkit-gnome 2025-07-10 16:49:14 -07:00
f20d135256 Only run migration if it hasn't already been done 2025-07-10 16:47:52 -07:00
df8cdf7c64 Reset xdg settings with the new .desktop file 2025-07-10 16:46:17 -07:00
b44aded675 Fractional scaling isn't one fixed value 2025-07-10 16:42:41 -07:00
fe75dd9be4 We already have Printer Settings 2025-07-10 16:36:05 -07:00
cbc64ad09f Switch Basecamp + HEY to use the regular web2app 2025-07-10 16:08:46 -07:00
2b0805a66d install: explicitly install iwd
When archinstall is run using an ethernet connection, iwd will not be
installed. Explicitly install and enable the service
2025-07-10 16:05:21 -07:00
bbb639f8d3 Migrate to using wayland-always chromium.desktop 2025-07-10 16:04:44 -07:00
aed0550e89 Force chromium to use wayland even when launched from .desktop 2025-07-10 16:02:34 -07:00
52f7bd98c1 Make sure we have all of the Propo font styles 2025-07-10 15:50:51 -07:00
5d234b6b3a Include Caskaydia Mono Nerd Font Propo by default 2025-07-10 15:46:33 -07:00
051c1c2ad8 Use CaskaydiaMono Nerd Font Propo for waybar
Ever so slightly nicer spacing
2025-07-10 15:44:48 -07:00
1ee5b06161 Merge pull request #118 from leonhazen/waybar-tray
Add collapsing tray to waybar
2025-07-10 18:37:40 -04:00
9cb30b5be6 Small text tweaks 2025-07-10 15:36:30 -07:00
7e73105e84 Excess CR 2025-07-10 15:34:26 -07:00
8b5275456b Merge pull request #121 from Mane-Pal/battery-low-notification
add low power notfication issue #59
2025-07-10 18:33:36 -04:00
a0baa35c8b Merge pull request #113 from roel4d/patch-1
Do not persist sensitive data in clipboard
2025-07-10 18:32:47 -04:00
ceeaa25f0a Expose all application starter bindings for easy overwriting 2025-07-10 15:30:38 -07:00
f89ad72c58 Only update if hyprlock.conf is still a symlink 2025-07-10 15:10:58 -07:00
62f1e3823b Merge pull request #119 from DrInfinite/dev
De-couple hyprlock themes from layout
2025-07-10 18:04:49 -04:00
9ff7fa715e Force the copy, there's no recursion needed 2025-07-10 15:04:01 -07:00
87767626c6 Merge branch 'dev' into dev 2025-07-11 03:14:39 +05:30
5639486fa5 Migration script for existing users 2025-07-11 03:12:16 +05:30
be29136188 Fewer fonts in the bare mode 2025-07-10 12:50:10 -07:00
b3ae7e69a6 Merge pull request #124 from basecamp/bare-install
Add a bare mode with almost no default applications beyond system basics
2025-07-10 15:47:24 -04:00
a64c0505ec Add a bare mode with almost no default applications beyond system basics 2025-07-10 12:28:42 -07:00
e22b3db049 Merge pull request #122 from rockorager/explicit-iwd-install
install: explicitly install iwd
2025-07-10 14:47:24 -04:00
1cf9492e57 install: explicitly install iwd
When archinstall is run using an ethernet connection, iwd will not be
installed. Explicitly install and enable the service
2025-07-10 13:45:17 -05:00
735ed407a8 Merge branch 'dev' into battery-low-notification 2025-07-10 20:03:28 +02:00
957b23966c add migration for low power notify 2025-07-10 19:32:52 +02:00
4c58879481 add low power notfication 2025-07-10 19:04:40 +02:00
77524a7afa De-couple hyprlock themes from layout 2025-07-10 18:43:08 +05:30
4ff4ddb250 Add collapsing tray to waybar 2025-07-10 21:04:55 +10:00
5a3d57000e Do not persist sensitive data in clipboard 2025-07-10 08:06:59 +02:00
6e05a51b65 Enable all the inputrc settings 2025-07-09 21:14:04 -07:00
583f1b6113 We don't need to shout 2025-07-09 20:52:16 -07:00
55f30eba66 No need to confirm the upgrade 2025-07-09 19:49:10 -07:00
faa279c587 Merge pull request #89 from basecamp/dev
Omarchy v1.3.0
2025-07-09 22:43:25 -04:00
6410f079b6 Merge pull request #108 from anoldguy/more-kernel-cmdline-detection
Adds two more kernel cmdline detections
2025-07-09 22:22:13 -04:00
87f0b599c6 Adds two more kernel cmdline detections
Adds support for UKI images, which read kernel cmdline options out of
either:

* /etc/cmdline.d/*.conf
* /etc/kernel/cmdline
2025-07-09 22:16:05 -04:00
c9a5de6581 Quiet by default 2025-07-09 19:01:19 -07:00
11b71a593b Need to have the install inside the check of course 2025-07-09 19:00:52 -07:00
b25a60395a All protections are already in there 2025-07-09 19:00:20 -07:00
d7b94996c3 Add border to wofi to better delineate from background 2025-07-09 18:52:04 -07:00
b7a3b4b020 Add a way to refresh plymouth setup 2025-07-09 18:39:13 -07:00
ae57e86dac Merge pull request #110 from ryanrhughes/add-boot-screen
Update boot screen graphics & progress bar
2025-07-09 21:35:48 -04:00
8fb9b51d03 Update system packages when updating omarchy 2025-07-09 18:33:06 -07:00
c5ada676ae Skip configuration if plymouth was already installed
This helps us skip the installer if something else on initial all failed
and we need to run things again.
2025-07-09 18:28:48 -07:00
352b0cfae6 Update assets and reduce progress target to 70% 2025-07-09 21:25:15 -04:00
4df84da6e1 Better grouping 2025-07-09 18:24:21 -07:00
9d05326e6f Remove excess CR 2025-07-09 18:23:35 -07:00
b4fc02d3ed Fix indention 2025-07-09 18:21:31 -07:00
601a0e2ac8 Already included as a dependency of fprintd 2025-07-09 18:21:01 -07:00
5d2aa7773e No longer used 2025-07-09 18:19:48 -07:00
64e8a25719 Fix showing user keybindings
Close #106
2025-07-09 18:04:12 -07:00
c314721007 Rely on omarchy-refresh-waybar having its own confirm 2025-07-09 18:01:56 -07:00
3d4198d691 Merge pull request #101 from npenza/add-gum-confirm-to-omarchy-refresh-waybar
Add gum confirm to omarchy-refresh-waybar
2025-07-09 21:00:53 -04:00
96769b4d6a Fix package name for lsusb 2025-07-09 17:53:04 -07:00
041abe8c2e Merge pull request #109 from basecamp/switch-to-polkit-gnome
Switch to polkit-gnome
2025-07-09 20:48:38 -04:00
4f77e71d2c Red means no! 2025-07-09 17:47:54 -07:00
c567dbffaa Only allow fingerprint setup if a sensor is detected 2025-07-09 20:46:43 -04:00
6434fddb59 Explain migration 2025-07-09 20:45:18 -04:00
089f73c518 Remove commented out exec 2025-07-09 17:41:06 -07:00
929aafc17c Guard against running it twice 2025-07-09 20:31:50 -04:00
5684aa80d8 Make sure to run polkit-gnome after migrating to it 2025-07-09 20:30:16 -04:00
d2598464d6 Switch to polkit-gnome to make fingerprint authentication work better
hyprpolkit was not designed well for fingerprint authentication. It
doesn't allow you to easily deal with both fingerprints and passwords in
the same configuration.
2025-07-09 20:26:43 -04:00
5f46b7560e Revert the attempt to fix dark mode for hyprpolkitagent 2025-07-09 19:37:51 -04:00
0d0f1ed692 Restart agent after setting up 2025-07-09 19:31:26 -04:00
5d6fe16e47 Not needed 2025-07-09 19:29:33 -04:00
5e50f00278 Turn on fingerprint authentication for sudo + system prompts 2025-07-09 16:26:24 -07:00
31875282ec Then not do 2025-07-09 19:14:10 -04:00
a873a2cf96 Clean up migrations a bit 2025-07-09 19:13:37 -04:00
e7766926d9 Make it easier to read 2025-07-09 19:12:26 -04:00
08038e272c Only if needed 2025-07-09 19:12:19 -04:00
fef5f38dc9 Only if needed 2025-07-09 19:12:15 -04:00
bc652eb3f7 Then not do 2025-07-09 19:08:44 -04:00
315f3ffe88 Only run Docker config setting if it hasn't been created already 2025-07-09 19:06:58 -04:00
5c1d8cc2b3 Only run if not already configured 2025-07-09 19:05:37 -04:00
bdfab2c305 Only run if missing 2025-07-09 19:05:27 -04:00
00be503e79 Only run migration if impala isn't there 2025-07-09 19:02:17 -04:00
77e2e5f61e Refactor omarchy-refresh-waybar to use conditional confirmation 2025-07-10 06:59:06 +10:00
73a10a6d4e Move plymouth install to the end 2025-07-09 13:33:00 -07:00
4295541c6a Merge pull request #104 from ryanrhughes/add-boot-screen
Add graphical boot screen
2025-07-09 16:09:43 -04:00
9b418abed2 Drop clipse since it would keep clear-text passwords from 1passwords in the buffer
And there's no exclusion option!
2025-07-09 11:50:32 -07:00
2a84c5873b Add hotkey to prevent idling on SUPER + CTRL + I 2025-07-09 11:22:43 -07:00
aa5c955f67 Add migratgion for gnome-keyring 2025-07-09 10:33:49 -07:00
18dadd62f0 Add gnome-keyring to enable 2FA for 1password 2025-07-09 10:33:01 -07:00
b0d94f3e34 Fix path interpolation 2025-07-09 10:31:08 -07:00
a15979dc79 Improve helper 2025-07-09 10:29:49 -07:00
1df37bd3d7 Setup hyprpolkitagent separately with dark mode applied 2025-07-09 10:29:39 -07:00
841596c5a3 Migration for permanently fixing F-keys on Apple-mode keyboards 2025-07-09 10:15:00 -07:00
b707d1974a Add helper to create a new migration 2025-07-09 10:14:48 -07:00
aaedb7d62e Permanently fix F keys on apple mode keyboards 2025-07-09 10:11:28 -07:00
099f094f8e Use larger settings overlay 2025-07-09 10:08:48 -07:00
dd21b5ca5a Fix wofi for showing keybindings after moving css 2025-07-09 10:04:20 -07:00
5f4962188a Fix indention 2025-07-09 09:53:07 -07:00
6513db1bdd Add gum confirm to omarchy-refresh-waybar 2025-07-09 19:07:28 +10:00
c9c05038a0 Cleanup 2025-07-09 00:58:36 -04:00
ce29c0f498 Adjust progress bar and prevent flash 2025-07-09 00:43:49 -04:00
033a2d9f02 Example for fractional scaling 2025-07-08 16:23:44 -04:00
f00436c892 Move GDK_SCALE into monitors.conf since it has to be changed together with the monitor= setting 2025-07-08 16:21:31 -04:00
9692a7985c Remove power menu from icons and just rely on hotkey 2025-07-08 10:49:54 -04:00
d9da252dd3 Rearrange and simplify boot screen 2025-07-07 23:20:50 -04:00
06507963f2 Remove spinner 2025-07-07 21:02:00 -04:00
924a9861c6 Add grub, fix mkinitcpio match, and set theme 2025-07-07 20:33:54 -04:00
6057140ff3 Remove excess themes and move tokyo-night 2025-07-07 19:08:07 -04:00
4e6901734c Remove theme switching 2025-07-07 19:05:07 -04:00
a2fa2cf632 Add plymouth installer and migration 2025-07-07 19:01:28 -04:00
86bcac5d28 Add touch to signal rebuild 2025-07-07 19:01:28 -04:00
820b80f287 Add shutdown sync script 2025-07-07 19:01:28 -04:00
f7afe3f555 Add script to generate new plymouth themes 2025-07-07 19:01:28 -04:00
1fed6096cc Add plymouth themes 2025-07-07 19:01:28 -04:00
f52077a5a1 Give a hint as to how you overwrite Omarchy default bindings 2025-07-07 12:03:44 -07:00
d254969b39 Give a hint about the config format 2025-07-07 11:58:34 -07:00
434b17e27a Add a hint to changing 1x resolution 2025-07-07 11:44:22 -07:00
201d303c2c Better structuring of the wofi css
Reusing look for select menu and reducing theme duplication
2025-07-07 11:37:50 -07:00
6c1c829f86 Fix sorting code on power menu 2025-07-07 11:19:29 -07:00
24f8c31b64 The power menu will rule it all 2025-07-07 11:09:19 -07:00
207f811e47 Be more precise than sleep 2025-07-07 11:09:10 -07:00
cea316425f Tweak presentation, drop the hotkey references 2025-07-07 11:04:40 -07:00
9879726003 Merge pull request #85 from npenza/waybar-power-menu-improvements
Waybar Power Menu - Remove Search and Add Shortcuts
2025-07-07 11:01:52 -07:00
fe6481235d Merge branch 'dev' into waybar-power-menu-improvements 2025-07-07 11:01:24 -07:00
8939d636fb Offer to refresh waybar to use Impala 2025-07-07 10:56:37 -07:00
a64b32e2ee Use power menu on Super+Esc 2025-07-07 10:50:45 -07:00
0073678f1f Use Impala for wifi and float it 2025-07-07 10:50:45 -07:00
67a959f9b9 Merge pull request #84 from da-maltsev/add-ui-iwd
Add impala as iwd TUI on waybar
2025-07-07 10:50:08 -07:00
c63b87b416 Fix yay-bin being checked out to $HOME instead of /tmp and not getting cleaned up
Co-author: @bbondier
Closes #86
2025-07-07 10:28:44 -07:00
3515525d99 Add impala as iwd TUI 2025-07-07 16:37:13 +05:00
c459e03d39 Change power menu css path 2025-07-07 21:25:14 +10:00
51e97fcc76 Kill wofi when using the shortcut and power menu is showing 2025-07-07 21:18:45 +10:00
c032a6aa37 Adding shortcuts to power options 2025-07-07 21:07:13 +10:00
ef5a02a84c Hide the search bar in power menu 2025-07-07 20:44:01 +10:00
17ead79b74 Merge pull request #82 from basecamp/dev
Omarchy v1.2.0
2025-07-06 20:58:36 -07:00
e03c9fce07 Fix up menu with sorting and a relaunch hyprland option 2025-07-06 18:41:12 -07:00
0f7d5744b9 Better height 2025-07-06 18:11:40 -07:00
19c2c708b6 Add script to refresh waybar config and restart it 2025-07-06 18:00:41 -07:00
621628d59b Revert "Merge pull request #74 from ryanrhughes/add-boot-screen"
This reverts commit 425603c790, reversing
changes made to 00b621d7d7.
2025-07-06 17:48:33 -07:00
a62697de23 Revert "Merge pull request #81 from okdas/feat/hyprsunset-master"
This reverts commit 786d14071d, reversing
changes made to 76d26fda4e.
2025-07-06 17:47:10 -07:00
786d14071d Merge pull request #81 from okdas/feat/hyprsunset-master
Add blue light filter
2025-07-06 17:34:19 -07:00
1d93459af5 Add migration to install hyprsunset for existing users 2025-07-06 17:28:30 -07:00
8fb744868f Add hyprsunset to autostart
Ensures hyprsunset daemon starts automatically with Hyprland session
2025-07-06 17:18:51 -07:00
ab1fca0ce9 add hyprsunset 2025-07-06 17:12:56 -07:00
76d26fda4e The Dropbox icon wasn't pulling its own weight
We really should keep those icons on the right only to system-level
concerns. Hardware controls only.
2025-07-06 17:11:47 -07:00
d3953e2b35 Fix early exit 2025-07-06 17:08:35 -07:00
d5fbab541f Fix the grep target 2025-07-06 17:04:31 -07:00
98d758b505 Make it clear what installer we are running at a given moment 2025-07-06 16:44:28 -07:00
425603c790 Merge pull request #74 from ryanrhughes/add-boot-screen
Add graphical boot screen
2025-07-06 16:00:55 -07:00
00b621d7d7 Tweak the menu options 2025-07-06 15:11:56 -07:00
49234a8a16 Don't use tooltip for the power menu 2025-07-06 15:04:49 -07:00
3c93e27440 Drop the power profiles icon, not carrying its weight
This just isnt worth a spot of premium real-estate. Most people aren't
changing it a lot. When you need to, you can do it from the commandline.
2025-07-06 15:04:40 -07:00
ec0a1267b7 Merge pull request #65 from npenza/feat-add-power-menu-to-waybar
Add Power Menu to Waybar
2025-07-06 14:57:58 -07:00
84d2fc3722 Turn notifications on/off with Super+Ctrl+,
Thanks to @ryanrhughes for the groundwork in #63 on this!
2025-07-06 14:55:26 -07:00
0d4f8145a2 Revert "Merge pull request #63 from ryanrhughes/waybar-add-dnd"
This reverts commit 2dc5b4fd8f, reversing
changes made to dea0a547a6.
2025-07-06 14:41:22 -07:00
2dc5b4fd8f Merge pull request #63 from ryanrhughes/waybar-add-dnd
Add DND option to Waybar
2025-07-06 14:35:30 -07:00
dea0a547a6 Merge pull request #77 from ThiaudioTT/feat/close-mako-notifications
feat(mako): adds bindings to close notifications fix #67
2025-07-06 14:30:47 -07:00
9c79ac2208 Merge pull request #79 from olgkv/fix/gpu-detection
fix(detect): Correctly assign gpu_info before use
2025-07-06 14:28:40 -07:00
b9b35c85c0 Merge pull request #80 from smola/smola/bash-completion
Enable bash-completion by default
2025-07-06 14:24:19 -07:00
5a8687b386 Enable bash-completion by default 2025-07-06 19:12:04 +02:00
3aa8c19b6e fix(detect): Correctly assign gpu_info before use
The script attempted to perform driver selection by echoing the
`$gpu_info` variable, but the variable had not yet been populated
with the output from the `lspci` command.

This resulted in the `if` condition always failing and the driver package
incorrectly defaulting to `nvidia-dkms` for all hardware.

This commit moves the `gpu_info` assignment to before it is
referenced, ensuring the detection and selection logic works as intended.
2025-07-06 15:19:47 +03:00
2045056610 feat(bindings): Add keybindings for dismissing notifications in bindings.conf for mako 2025-07-06 00:34:11 -03:00
a0105fab4a Move DND icon to the left of the clock 2025-07-05 18:26:45 -04:00
b43a99c11b Add plymouth installer and migration 2025-07-05 16:42:19 -04:00
d3f5662064 Add touch to signal rebuild 2025-07-05 16:42:00 -04:00
20a09cad86 Add shutdown sync script 2025-07-05 16:41:38 -04:00
9a5f17eefd Add script to generate new plymouth themes 2025-07-05 16:41:00 -04:00
ce766d475a Add plymouth themes 2025-07-05 16:40:37 -04:00
b0beec5c0d Merge pull request #69 from zdehasek/fix-fingerprint
username needs to be set for fprintd-enroll
2025-07-05 12:03:17 -07:00
bd8a98cd63 username needs to be set for fprointd-enroll 2025-07-05 19:15:00 +02:00
6f6b1565fe Float and center file pickers 2025-07-05 10:08:02 -07:00
760f799943 Add power menu to waybar 2025-07-05 17:12:03 +10:00
d58d0f0b45 Add DND option to Waybar 2025-07-04 22:33:00 -04:00
2d0f094449 Add migration for adding ffmpegthumbnailer 2025-07-04 18:32:14 -07:00
c00f4c9608 Add ffmpegthumbnailer to get thumbnails of videos in nautilus 2025-07-04 18:31:09 -07:00
5e2dd6ba15 Suggest clickfinger_behavior 2025-07-04 18:05:37 -07:00
46f52c7e4a Just leave it at default and use as example 2025-07-04 17:55:38 -07:00
54eb2460cb Show where the options can be found 2025-07-04 17:50:09 -07:00
0e7e0b6e4f Expose and slightly increase mouse/trackpad sensitivity 2025-07-04 17:49:06 -07:00
1481003bc4 Just a tad faster 2025-07-04 17:43:49 -07:00
bb59912530 Excess CR 2025-07-04 17:32:50 -07:00
d0e1924556 Just expose directly
And turn up the repeat a little
2025-07-04 17:32:33 -07:00
405bce4c46 Scrolling the terminal needs to be faster than standard 2025-07-04 17:25:09 -07:00
36c6fb8b9e Set a lower default scroll factor for touchpads and suggest other common changes 2025-07-04 17:23:24 -07:00
134 changed files with 1933 additions and 1035 deletions

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Basecamp
Comment=Basecamp Project Management
Exec=chromium --new-window --ozone-platform=wayland --app="https://launchpad.37signals.com" --name=Basecamp --class=Basecamp
Terminal=false
Type=Application
Icon=Basecamp
Categories=GTK;
MimeType=text/html;text/xml;application/xhtml_xml;
StartupNotify=true

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Version=1.0
Name=HEY
Comment=HEY Email + Calendar
Exec=chromium --new-window --ozone-platform=wayland --app="https://app.hey.com" --name=HEY --class=HEY
Terminal=false
Type=Application
Icon=HEY
Categories=GTK;
MimeType=text/html;text/xml;application/xhtml_xml;
StartupNotify=true

View File

@ -0,0 +1,221 @@
[Desktop Entry]
Version=1.0
Name=Chromium
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[ar]=متصفح الشبكة
GenericName[bg]=Уеб браузър
GenericName[ca]=Navegador web
GenericName[cs]=WWW prohlížeč
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής ιστού
GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gu]=વેબ બ્રાઉઝર
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=वेब ब्राउज़र
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=ウェブブラウザ
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
GenericName[ko]=웹 브라우저
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Tīmekļa pārlūks
GenericName[ml]=വെബ് ബ്രൌസര്‍
GenericName[mr]=वेब ब्राऊजर
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador da Internet
GenericName[ro]=Navigator de Internet
GenericName[ru]=Веб-браузер
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[ta]=இணைய உலாவி
GenericName[th]=เว็บเบราว์เซอร์
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[zh_CN]=网页浏览器
GenericName[zh_HK]=網頁瀏覽器
GenericName[zh_TW]=網頁瀏覽器
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
GenericName[bn]=ওয়েব ব্রাউজার
GenericName[fil]=Web Browser
GenericName[hr]=Web preglednik
GenericName[id]=Browser Web
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
GenericName[sk]=WWW prehliadač
GenericName[sr]=Интернет прегледник
GenericName[te]=మహాతల అన్వేషి
GenericName[vi]=Bộ duyệt Web
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[ar]=الدخول إلى الإنترنت
Comment[bg]=Достъп до интернет
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
Comment[ca]=Accedeix a Internet
Comment[cs]=Přístup k internetu
Comment[da]=Få adgang til internettet
Comment[de]=Internetzugriff
Comment[el]=Πρόσβαση στο Διαδίκτυο
Comment[en_GB]=Access the Internet
Comment[es]=Accede a Internet.
Comment[et]=Pääs Internetti
Comment[fi]=Käytä internetiä
Comment[fil]=I-access ang Internet
Comment[fr]=Accéder à Internet
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
Comment[he]=גישה אל האינטרנט
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
Comment[hr]=Pristup Internetu
Comment[hu]=Internetelérés
Comment[id]=Akses Internet
Comment[it]=Accesso a Internet
Comment[ja]=インターネットにアクセス
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
Comment[ko]=인터넷 연결
Comment[lt]=Interneto prieiga
Comment[lv]=Piekļūt internetam
Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
Comment[nb]=Gå til Internett
Comment[nl]=Verbinding maken met internet
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
Comment[pl]=Skorzystaj z internetu
Comment[pt]=Aceder à Internet
Comment[pt_BR]=Acessar a internet
Comment[ro]=Accesaţi Internetul
Comment[ru]=Доступ в Интернет
Comment[sk]=Prístup do siete Internet
Comment[sl]=Dostop do interneta
Comment[sr]=Приступите Интернету
Comment[sv]=Gå ut på Internet
Comment[ta]=இணையத்தை அணுகுதல்
Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి
Comment[th]=เข้าถึงอินเทอร์เน็ต
Comment[tr]=İnternet'e erişin
Comment[uk]=Доступ до Інтернету
Comment[vi]=Truy cập Internet
Comment[zh_CN]=访问互联网
Comment[zh_HK]=連線到網際網路
Comment[zh_TW]=連線到網際網路
Exec=/usr/bin/chromium --ozone-platform=wayland %U
StartupNotify=true
Terminal=false
Icon=chromium
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[am]=አዲስ መስኮት
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=নতুন উইন্ডো
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]=નવી વિંડો
Name[hi]=नई विंडो
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=新規ウインドウ
Name[kn]=ಹೊಸ ವಿಂಡೊ
Name[ko]=새 창
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=പുതിയ വിന്‍ഡോ
Name[mr]=नवीन विंडो
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=புதிய சாளரம்
Name[te]=క్రొత్త విండో
Name[th]=หน้าต่างใหม่
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Cửa sổ Mới
Name[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
Exec=/usr/bin/chromium --ozone-platform=wayland --new-window
[Desktop Action new-private-window]
Name=New Incognito Window
Name[ar]=نافذة جديدة للتصفح المتخفي
Name[bg]=Нов прозорец „инкогнито“
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
Name[ca]=Finestra d'incògnit nova
Name[cs]=Nové anonymní okno
Name[da]=Nyt inkognitovindue
Name[de]=Neues Inkognito-Fenster
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
Name[en_GB]=New Incognito window
Name[es]=Nueva ventana de incógnito
Name[et]=Uus inkognito aken
Name[fa]=پنجره جدید حالت ناشناس
Name[fi]=Uusi incognito-ikkuna
Name[fil]=Bagong Incognito window
Name[fr]=Nouvelle fenêtre de navigation privée
Name[gu]=નવી છુપી વિંડો
Name[hi]=नई गुप्त विंडो
Name[hr]=Novi anoniman prozor
Name[hu]=Új Inkognitóablak
Name[id]=Jendela Penyamaran baru
Name[it]=Nuova finestra di navigazione in incognito
Name[iw]=חלון חדש לגלישה בסתר
Name[ja]=新しいシークレット ウィンドウ
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
Name[ko]=새 시크릿 창
Name[lt]=Naujas inkognito langas
Name[lv]=Jauns inkognito režīma logs
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്‍ഡോ
Name[mr]=नवीन गुप्त विंडो
Name[nl]=Nieuw incognitovenster
Name[no]=Nytt inkognitovindu
Name[pl]=Nowe okno incognito
Name[pt]=Nova janela de navegação anónima
Name[pt_BR]=Nova janela anônima
Name[ro]=Fereastră nouă incognito
Name[ru]=Новое окно в режиме инкогнито
Name[sk]=Nové okno inkognito
Name[sl]=Novo okno brez beleženja zgodovine
Name[sr]=Нови прозор за прегледање без архивирања
Name[sv]=Nytt inkognitofönster
Name[ta]=புதிய மறைநிலைச் சாளரம்
Name[te]=క్రొత్త అజ్ఞాత విండో
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
Name[tr]=Yeni Gizli pencere
Name[uk]=Нове вікно в режимі анонімного перегляду
Name[vi]=Cửa sổ ẩn danh mới
Name[zh_CN]=新建隐身窗口
Name[zh_TW]=新增無痕式視窗
Exec=/usr/bin/chromium --ozone-platform=wayland --new-window --incognito

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

View File

@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Typora
GenericName=Markdown Editor
Exec=typora --enable-wayland-ime %U
Icon=typora
Type=Application
StartupNotify=true
Categories=Office;WordProcessor;
MimeType=text/markdown;text/x-markdown;

30
bin/omarchy-battery-monitor Executable file
View File

@ -0,0 +1,30 @@
#!/bin/bash
# Designed to be run by systemd timer every 30 seconds and alerts if battery is low
BATTERY_THRESHOLD=10
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
get_battery_percentage() {
upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | grep -o '[0-9]\+%' | sed 's/%//'
}
get_battery_state() {
upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}'
}
send_notification() {
notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution
}
BATTERY_LEVEL=$(get_battery_percentage)
BATTERY_STATE=$(get_battery_state)
if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then
if [[ ! -f "$NOTIFICATION_FLAG" ]]; then
send_notification "$BATTERY_LEVEL"
touch "$NOTIFICATION_FLAG"
fi
else
rm -f "$NOTIFICATION_FLAG"
fi

View File

@ -3,5 +3,6 @@
# Link all the key config files to omarchy's internal versions for quicker testing # Link all the key config files to omarchy's internal versions for quicker testing
ln -nsf ~/.local/share/omarchy/config/hypr/hyprland.conf ~/.config/hypr/ ln -nsf ~/.local/share/omarchy/config/hypr/hyprland.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/hypr/hypridle.conf ~/.config/hypr/ ln -nsf ~/.local/share/omarchy/config/hypr/hypridle.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/ ln -nsf ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/
ln -nsf ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/ ln -nsf ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/

6
bin/omarchy-dev-add-migration Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file
nvim $migration_file
echo -e "Run with:\nsource $migration_file"

View File

@ -1,14 +1,36 @@
#!/bin/bash #!/bin/bash
yay -S --noconfirm --needed fprint yay -S --noconfirm --needed fprintd usbutils
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m" if ! lsusb | grep -iq fingerprint; then
sudo fprintd-enroll echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
else else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
# Enroll the first finger
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
sudo fprintd-enroll $USER
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
else
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
fi fi

25
bin/omarchy-power-menu Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
# Power menu for Omarchy
# Provides power off, restart, and sleep options
# Function to show power menu. The first characters are invisible sort keys.
show_power_menu() {
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | wofi --show dmenu --prompt "Power Options" --width 150 --height 195 -O alphabetical --style ~/.local/share/omarchy/default/wofi/select.css)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
# Main execution
show_power_menu

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

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

11
bin/omarchy-refresh-waybar Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
if gum confirm "Refresh Waybar config? This will replace your current Waybar settings with Omarchy defaults."; then
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/waybar/style.css ~/.config/waybar/ 2>/dev/null
# Restart waybar
pkill waybar &>/dev/null
setsid waybar &>/dev/null &
fi

View File

@ -4,7 +4,12 @@
# using wofi for an interactive search menu. # using wofi for an interactive search menu.
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf" OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf $HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf $HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf $HOME/.local/share/omarchy/default/hypr/bindings.conf $HOME/.local/share/omarchy/default/hypr/media.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \
$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \
$HOME/.local/share/omarchy/default/hypr/media.conf"
# Process the configuration file to extract and format keybindings # Process the configuration file to extract and format keybindings
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). # 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
@ -16,7 +21,10 @@ OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf"
# - It joins the command that the key executes. # - It joins the command that the key executes.
# - It prints everything in a nicely aligned format. # - It prints everything in a nicely aligned format.
# 4. The final `sed` cleans up any leftover commas from the end of lines. # 4. The final `sed` cleans up any leftover commas from the end of lines.
grep -h '^[[:space:]]*bind' "$HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" | grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
sed 's/#.*//' |
sed '/^[[:space:]]*$/d' |
sort -u |
awk -F, ' awk -F, '
{ {
# Strip trailing comments # Strip trailing comments
@ -48,4 +56,4 @@ grep -h '^[[:space:]]*bind' "$HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" |
printf "%-35s → %s\n", key_combo, action; printf "%-35s → %s\n", key_combo, action;
} }
}' | }' |
flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical" flock --nonblock /tmp/.wofi.lock -c "wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical --style=\"$HOME/.local/share/omarchy/default/wofi/search.css\""

View File

@ -8,4 +8,10 @@ gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
# Copy .desktop declarations # Copy .desktop declarations
mkdir -p ~/.local/share/applications mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.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
cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
fi
update-desktop-database ~/.local/share/applications update-desktop-database ~/.local/share/applications

View File

@ -3,20 +3,22 @@
THEMES_DIR="$HOME/.config/omarchy/themes/" THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme" CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
THEMES=($(find "$THEMES_DIR" -mindepth 1 | sort)) THEMES=($(find "$THEMES_DIR" -mindepth 1 -maxdepth 1 | sort))
TOTAL=${#THEMES[@]} TOTAL=${#THEMES[@]}
# Get current theme from symlink # Get current theme from symlink
if [[ -L "$CURRENT_THEME_LINK" ]]; then if [[ -L "$CURRENT_THEME_LINK" ]]; then
CURRENT_THEME=$(readlink "$CURRENT_THEME_LINK") CURRENT_THEME=$(realpath "$CURRENT_THEME_LINK")
else else
# Default to first theme if no symlink exists # Default to first theme if no symlink exists
CURRENT_THEME=${THEMES[0]} CURRENT_THEME=$(realpath "${THEMES[0]}")
fi fi
# Find current theme index # Find current theme index
INDEX=0 INDEX=0
for i in "${!THEMES[@]}"; do for i in "${!THEMES[@]}"; do
THEMES[$i]=$(realpath "${THEMES[$i]}")
if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then
INDEX=$i INDEX=$i
break break

9
bin/omarchy-toggle-idle Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
if pgrep -x hypridle > /dev/null; then
pkill -x hypridle
notify-send "Stop locking computer when idle"
else
setsid hypridle &> /dev/null &
notify-send "Now locking computer when idle"
fi

View File

@ -19,10 +19,13 @@ for file in migrations/*.sh; do
migrate_at="${filename%.sh}" migrate_at="${filename%.sh}"
if [ $migrate_at -gt $last_updated_at ]; then if [ $migrate_at -gt $last_updated_at ]; then
echo "Running migration ($migrate_at)" echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
source $file source $file
fi fi
done done
# Back to where we came from # Back to where we came from
cd - >/dev/null cd - >/dev/null
echo -e "\e[32m\nUpdating system packages\e[0m"
yay -Syu --noconfirm

View File

@ -1,5 +1,4 @@
INPUT_METHOD=fcitx INPUT_METHOD=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx SDL_IM_MODULE=fcitx

View File

@ -3,32 +3,33 @@
# Change your personal monitor setup in here to keep the main config portable # Change your personal monitor setup in here to keep the main config portable
source = ~/.config/hypr/monitors.conf source = ~/.config/hypr/monitors.conf
# Default applications
$terminal = alacritty
$fileManager = nautilus --new-window
$browser = chromium --new-window --ozone-platform=wayland
$music = spotify
$passwordManager = 1password
$messenger = signal-desktop
$webapp = $browser --app
# Use defaults Omarchy defaults # 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.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/utilities.conf
source = ~/.local/share/omarchy/default/hypr/envs.conf source = ~/.local/share/omarchy/default/hypr/envs.conf
source = ~/.local/share/omarchy/default/hypr/looknfeel.conf source = ~/.local/share/omarchy/default/hypr/looknfeel.conf
source = ~/.local/share/omarchy/default/hypr/input.conf 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
# Extra autostart processes (uncomment to run Dropbox) # Application bindings
# exec-once = dropbox-cli start $terminal = alacritty
$browser = chromium --new-window --ozone-platform=wayland
$webapp = $browser --app
# Extra env variables bind = SUPER, return, exec, $terminal
env = GDK_SCALE,2 # Change to 1 if on a 1x display bind = SUPER, F, exec, nautilus --new-window
bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, 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, signal-desktop
bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, 1password
# Extra bindings
bind = SUPER, A, exec, $webapp="https://chatgpt.com" bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
@ -39,8 +40,37 @@ bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversation
bind = SUPER, X, exec, $webapp="https://x.com/" bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Use multiple keyboard layouts and switch between them with Alt + Space # Extra autostart processes
# input { # exec-once = dropbox-cli start
# kb_layout = us,dk
# kb_options = compose:caps,grp:alt_space_toggle # Extra env variables
# } # 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

@ -2,6 +2,8 @@
# Hyprlock — minimal blur with ringed input # Hyprlock — minimal blur with ringed input
# ──────────────────────────────────────────────────────────── # ────────────────────────────────────────────────────────────
source = ~/.config/omarchy/current/theme/hyprlock.conf
general { general {
disable_loading_bar = true disable_loading_bar = true
no_fade_in = false no_fade_in = false
@ -9,7 +11,7 @@ general {
background { background {
monitor = monitor =
color = rgba(26,27,38,1.0) # #1a1b26 solid color color = $color
} }
animations { animations {
@ -23,17 +25,17 @@ input-field {
halign = center halign = center
valign = center valign = center
inner_color = rgba(26,27,38,0.8) # #1a1b26 with opacity inner_color = $inner_color
outer_color = rgba(205,214,244,1.0) # #cdd6f4 outer_color = $outer_color
outline_thickness = 4 outline_thickness = 4
font_family = CaskaydiaMono Nerd Font font_family = CaskaydiaMono Nerd Font
font_size = 32 font_size = 32
font_color = rgba(205,214,244,1.0) font_color = $font_color
placeholder_color = rgba(205,214,244,0.6) placeholder_color = $placeholder_color
placeholder_text = Enter Password 󰈷  placeholder_text = Enter Password 󰈷 
check_color = rgba(68, 157, 171, 1.0) check_color = $check_color
fail_text = Wrong fail_text = Wrong
rounding = 0 rounding = 0

View File

@ -1,8 +1,16 @@
# See https://wiki.hyprland.org/Configuring/Monitors/ # 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)
env = GDK_SCALE,2
# Use single default monitor (see all monitors with: hyprctl monitors) # Use single default monitor (see all monitors with: hyprctl monitors)
# Format: monitor = [port], resolution, position, scale
monitor=,preferred,auto,auto monitor=,preferred,auto,auto
# Exmaple for fractional scaling that works well with GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667
# 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.00, auto, 2
# monitor = eDP-1, 2880x1920@120.00, auto, 2 # monitor = eDP-1, 2880x1920@120.00, auto, 2

View File

@ -0,0 +1,8 @@
[Unit]
Description=Omarchy Battery Monitor Check
After=graphical-session.target
[Service]
Type=oneshot
ExecStart=%h/.local/share/omarchy/bin/omarchy-battery-monitor
Environment=DISPLAY=:0

View File

@ -0,0 +1,11 @@
[Unit]
Description=Omarchy Battery Monitor Timer
Requires=omarchy-battery-monitor.service
[Timer]
OnBootSec=1min
OnUnitActiveSec=30sec
AccuracySec=10sec
[Install]
WantedBy=timers.target

View File

@ -1,4 +1,5 @@
{ {
"reload_style_on_change": true,
"layer": "top", "layer": "top",
"position": "top", "position": "top",
"spacing": 0, "spacing": 0,
@ -10,12 +11,11 @@
"clock" "clock"
], ],
"modules-right": [ "modules-right": [
"custom/dropbox", "group/tray-expander",
"bluetooth", "bluetooth",
"network", "network",
"pulseaudio", "pulseaudio",
"cpu", "cpu",
"power-profiles-daemon",
"battery" "battery"
], ],
"hyprland/workspaces": { "hyprland/workspaces": {
@ -63,7 +63,7 @@
"tooltip-format-disconnected": "Disconnected", "tooltip-format-disconnected": "Disconnected",
"interval": 3, "interval": 3,
"nospacing": 1, "nospacing": 1,
"on-click": "alacritty -e iwctl" "on-click": "alacritty --class=Impala -e impala"
}, },
"battery": { "battery": {
"format": "{capacity}% {icon}", "format": "{capacity}% {icon}",
@ -78,7 +78,90 @@
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹" "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
] ]
}, },
"format-full": "Charged ", "format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "GTK_THEME=Adwaita-dark blueberry"
},
"pulseaudio": {
"format": "{icon}",
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%",
"scroll-step": 5,
"format-muted": "󰝟",
"format-icons": {
"default": ["", "", ""]
}
},
"group/tray-expander": {
"orientation": "inherit",
"drawer": {
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": [
"custom/expand-icon",
"tray"
]
},
"custom/expand-icon": {
"format": " ",
"tooltip": false
},
"tray": {
"icon-size": 12,
"spacing": 12
}
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%", "tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%", "tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5, "interval": 5,
@ -102,24 +185,5 @@
"tooltip-format": "Playing at {volume}%", "tooltip-format": "Playing at {volume}%",
"on-click-right": "pamixer -t", "on-click-right": "pamixer -t",
"ignored-sinks": ["Easy Effects Sink"] "ignored-sinks": ["Easy Effects Sink"]
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}",
"tooltip": true,
"format-icons": {
"power-saver": "󰡳",
"balanced": "󰊚",
"performance": "󰡴"
}
},
"custom/dropbox": {
"format": "",
"on-click": "nautilus ~/Dropbox",
"exec": "dropbox-cli status",
"return-type": "text",
"interval": 5,
"tooltip": true,
"tooltip-format": "{}"
} }
} }

View File

@ -2,7 +2,7 @@
border: none; border: none;
border-radius: 0; border-radius: 0;
min-height: 0; min-height: 0;
font-family: CaskaydiaMono Nerd Font; font-family: CaskaydiaMono Nerd Font Propo;
font-size: 12px; font-size: 12px;
} }
@ -17,17 +17,22 @@
} }
#custom-dropbox, #custom-dropbox,
#tray,
#cpu, #cpu,
#power-profiles-daemon,
#battery, #battery,
#network, #network,
#bluetooth, #bluetooth,
#pulseaudio, #pulseaudio,
#clock { #clock,
#custom-power-menu {
min-width: 12px; min-width: 12px;
margin-right: 13px; margin-right: 13px;
} }
#custom-expand-icon {
margin-right: 12px;
}
tooltip { tooltip {
padding: 2px; padding: 2px;
} }

View File

@ -0,0 +1,65 @@
@define-color selected-text #7dcfff;
@define-color text #cfc9c2;
@define-color base #1a1b26;
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
display: none;
opacity: 0;
margin-top: -200px;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

View File

@ -71,6 +71,3 @@ refresh-xcompose() {
pkill fcitx5 pkill fcitx5
setsid fcitx5 &>/dev/null & setsid fcitx5 &>/dev/null &
} }
# Ensure that external keyboards that use an fn key has the F keys as the default
alias fix_fkeys='echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode'

View File

@ -28,14 +28,12 @@ set completion-query-items 200
# Show extra file information when completing, like `ls -F` does # Show extra file information when completing, like `ls -F` does
set visible-stats on set visible-stats on
$if Bash # Be more intelligent when autocompleting by also looking at the text after
# Be more intelligent when autocompleting by also looking at the text after # the cursor. For example, when the current line is "cd ~/src/mozil", and
# the cursor. For example, when the current line is "cd ~/src/mozil", and # the cursor is on the "z", pressing Tab will not autocomplete it to "cd
# the cursor is on the "z", pressing Tab will not autocomplete it to "cd # ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the
# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the # Readline used by Bash 4.)
# Readline used by Bash 4.) set skip-completed-text on
set skip-completed-text on
# Coloring for Bash 4 tab completions. # Coloring for Bash 4 tab completions.
set colored-stats on set colored-stats on
$endif

View File

@ -4,3 +4,4 @@ source ~/.local/share/omarchy/default/bash/functions
source ~/.local/share/omarchy/default/bash/prompt source ~/.local/share/omarchy/default/bash/prompt
source ~/.local/share/omarchy/default/bash/init source ~/.local/share/omarchy/default/bash/init
source ~/.local/share/omarchy/default/bash/envs source ~/.local/share/omarchy/default/bash/envs
bind -f ~/.local/share/omarchy/default/bash/inputrc

View File

@ -5,7 +5,9 @@ HISTSIZE=32768
HISTFILESIZE="${HISTSIZE}" HISTFILESIZE="${HISTSIZE}"
# Autocompletion # Autocompletion
# source /usr/share/bash-completion/bash_completion if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_completion ]]; then
source /usr/share/bash-completion/bash_completion
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"

View File

@ -1,4 +1,4 @@
exec-once = hypridle & mako & waybar & fcitx5 exec-once = hypridle & mako & waybar & fcitx5
exec-once = swaybg -i ~/.config/omarchy/current/background -m fill exec-once = swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = systemctl --user start hyprpolkitagent exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = wl-clip-persist --clipboard regular & clipse -listen exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'

View File

@ -1,4 +1,5 @@
# Start default apps # Deprecated bindings file. New installations include everything directly.
bind = SUPER, return, exec, $terminal bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, $fileManager bind = SUPER, F, exec, $fileManager
bind = SUPER, B, exec, $browser bind = SUPER, B, exec, $browser
@ -10,102 +11,6 @@ bind = SUPER, G, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager bind = SUPER, slash, exec, $passwordManager
bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next source = ~/.local/share/omarchy/default/hypr/bindings/utilities.conf
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
bind = SUPER, W, killactive,
# End active session
bind = SUPER, ESCAPE, exec, hyprlock
bind = SUPER SHIFT, ESCAPE, exec, systemctl suspend
bind = SUPER ALT, ESCAPE, exit,
bind = SUPER CTRL, ESCAPE, exec, reboot
bind = SUPER SHIFT CTRL, ESCAPE, exec, systemctl poweroff
# Control tiling
bind = SUPER, J, togglesplit, # dwindle
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, V, togglefloating,
# Move focus with mainMod + arrow keys
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = SUPER, code:10, workspace, 1
bind = SUPER, code:11, workspace, 2
bind = SUPER, code:12, workspace, 3
bind = SUPER, code:13, workspace, 4
bind = SUPER, code:14, workspace, 5
bind = SUPER, code:15, workspace, 6
bind = SUPER, code:16, workspace, 7
bind = SUPER, code:17, workspace, 8
bind = SUPER, code:18, workspace, 9
bind = SUPER, code:19, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = SUPER SHIFT, code:10, movetoworkspace, 1
bind = SUPER SHIFT, code:11, movetoworkspace, 2
bind = SUPER SHIFT, code:12, movetoworkspace, 3
bind = SUPER SHIFT, code:13, movetoworkspace, 4
bind = SUPER SHIFT, code:14, movetoworkspace, 5
bind = SUPER SHIFT, code:15, movetoworkspace, 6
bind = SUPER SHIFT, code:16, movetoworkspace, 7
bind = SUPER SHIFT, code:17, movetoworkspace, 8
bind = SUPER SHIFT, code:18, movetoworkspace, 9
bind = SUPER SHIFT, code:19, movetoworkspace, 10
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
bind = SUPER SHIFT, left, swapwindow, l
bind = SUPER SHIFT, right, swapwindow, r
bind = SUPER SHIFT, up, swapwindow, u
bind = SUPER SHIFT, down, swapwindow, d
# Resize active window
bind = SUPER, minus, resizeactive, -100 0
bind = SUPER, equal, resizeactive, 100 0
bind = SUPER SHIFT, minus, resizeactive, 0 -100
bind = SUPER SHIFT, equal, resizeactive, 0 100
# Scroll through existing workspaces with mainMod + scroll
bind = SUPER, mouse_down, workspace, e+1
bind = SUPER, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Screenshots
bind = , PRINT, exec, hyprshot -m region
bind = SHIFT, PRINT, exec, hyprshot -m window
bind = CTRL, PRINT, exec, hyprshot -m output
# Color picker
bind = SUPER, PRINT, exec, hyprpicker -a
# Clipse
bind = CTRL SUPER, V, exec, $terminal --class clipse -e clipse

View File

@ -0,0 +1,13 @@
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous

View File

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

View File

@ -0,0 +1,32 @@
# Launching
bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share/omarchy/default/wofi/search.css"
bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
# Aesthetics
bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar
bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/swaybg-next
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-next
# Notifications
bind = SUPER, comma, exec, makoctl dismiss
bind = SUPER SHIFT, comma, exec, makoctl dismiss --all
bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
# Power menu controls lock, suspend, relaunch, restart, shutdown
bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-power-menu
# Toggle idling
bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle
# Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000
# Screenshots
bind = , PRINT, exec, hyprshot -m region
bind = SHIFT, PRINT, exec, hyprshot -m window
bind = CTRL, PRINT, exec, hyprshot -m output
# Color picker
bind = SUPER, PRINT, exec, hyprpicker -a

View File

@ -15,9 +15,6 @@ xwayland {
force_zero_scaling = true force_zero_scaling = true
} }
# Make Chromium use XCompose and all Wayland
env = CHROMIUM_FLAGS,"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4"
# Make .desktop files available for wofi # Make .desktop files available for wofi
env = XDG_DATA_DIRS,/usr/share:/usr/local/share:~/.local/share env = XDG_DATA_DIRS,/usr/share:/usr/local/share:~/.local/share

View File

@ -95,5 +95,5 @@ master {
misc { misc {
disable_hyprland_logo = true disable_hyprland_logo = true
disable_splash_rendering = true disable_splash_rendering = true
focus_on_activate = true
} }

View File

@ -4,8 +4,14 @@ windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug # Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$ windowrule = tile, class:^(Chromium)$
# Float sound and bluetooth settings # Float and center sound, bluetooth, and wifi settings, as well as nautilus previews
windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py)$ windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer)$
windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer)$
windowrule = center, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala|org.gnome.NautilusPreviewer)$
# Float and center file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?)
# Float Steam, fullscreen RetroArch # Float Steam, fullscreen RetroArch
windowrule = float, class:^(steam)$ windowrule = float, class:^(steam)$
@ -23,8 +29,3 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
# Proper background blur for wofi # Proper background blur for wofi
layerrule = blur,wofi layerrule = blur,wofi
# Float in the middle for clipse clipboard manager
windowrule = float, class:(clipse)
windowrule = size 622 652, class:(clipse)
windowrule = stayfocused, class:(clipse)

BIN
default/plymouth/bullet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

BIN
default/plymouth/entry.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

BIN
default/plymouth/lock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
default/plymouth/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,9 @@
[Plymouth Theme]
Name=Omarchy
Description=Omarchy splash screen.
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/omarchy
ScriptFile=/usr/share/plymouth/themes/omarchy/omarchy.script
ConsoleLogBackgroundColor=0x1a1b26

View File

@ -0,0 +1,252 @@
# Omarchy Plymouth Theme Script
Window.SetBackgroundTopColor(0.101, 0.105, 0.149);
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.SetOpacity (1);
# Use these to adjust the progress bar timing
global.fake_progress_limit = 0.7; # Target percentage for fake progress (0.0 to 1.0)
global.fake_progress_duration = 15.0; # Duration in seconds to reach limit
# Progress bar animation variables
global.fake_progress = 0.0;
global.real_progress = 0.0;
global.fake_progress_active = 0; # 0 / 1 boolean
global.animation_frame = 0;
global.fake_progress_start_time = 0; # Track when fake progress started
global.password_shown = 0; # Track if password dialog has been shown
global.max_progress = 0.0; # Track the maximum progress reached to prevent backwards movement
fun refresh_callback ()
{
global.animation_frame++;
# Animate fake progress to limit over time with easing
if (global.fake_progress_active == 1)
{
# Calculate elapsed time since start
elapsed_time = global.animation_frame / 50.0; # Convert frames to seconds (50 FPS)
# Calculate linear progress ratio (0 to 1) based on time
time_ratio = elapsed_time / global.fake_progress_duration;
if (time_ratio > 1.0)
time_ratio = 1.0;
# Apply easing curve: ease-out quadratic
# Formula: 1 - (1 - x)^2
eased_ratio = 1 - ((1 - time_ratio) * (1 - time_ratio));
# Calculate fake progress based on eased ratio
global.fake_progress = eased_ratio * global.fake_progress_limit;
# Update progress bar with fake progress
update_progress_bar(global.fake_progress);
}
}
Plymouth.SetRefreshFunction (refresh_callback);
#----------------------------------------- Helper Functions --------------------------------
fun update_progress_bar(progress)
{
# Only update if progress is moving forward
if (progress > global.max_progress)
{
global.max_progress = progress;
width = Math.Int(progress_bar.original_image.GetWidth() * progress);
if (width < 1) width = 1; # Ensure minimum width of 1 pixel
progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight());
progress_bar.sprite.SetImage(progress_bar.image);
}
}
fun show_progress_bar()
{
progress_box.sprite.SetOpacity(1);
progress_bar.sprite.SetOpacity(1);
}
fun hide_progress_bar()
{
progress_box.sprite.SetOpacity(0);
progress_bar.sprite.SetOpacity(0);
}
fun show_password_dialog()
{
lock.sprite.SetOpacity(1);
entry.sprite.SetOpacity(1);
}
fun hide_password_dialog()
{
lock.sprite.SetOpacity(0);
entry.sprite.SetOpacity(0);
for (index = 0; bullet.sprites[index]; index++)
bullet.sprites[index].SetOpacity(0);
}
fun start_fake_progress()
{
# Don't reset if we already have progress
if (global.max_progress == 0.0)
{
global.fake_progress = 0.0;
global.real_progress = 0.0;
update_progress_bar(0.0);
}
global.fake_progress_active = 1;
global.animation_frame = 0;
}
fun stop_fake_progress()
{
global.fake_progress_active = 0;
}
#----------------------------------------- Dialogue --------------------------------
lock.image = Image("lock.png");
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.y = logo.sprite.GetY() + logo.image.GetHeight() + 40;
entry.sprite.SetPosition(entry.x, entry.y, 10001);
entry.sprite.SetOpacity(0);
# Scale lock to be slightly shorter than entry field height
# Original lock is 84x96, entry height determines scale
lock_height = entry.image.GetHeight() * 0.8;
lock_scale = lock_height / 96;
lock_width = 84 * lock_scale;
scaled_lock = lock.image.Scale(lock_width, lock_height);
lock.sprite = Sprite(scaled_lock);
lock.x = entry.x - lock_width - 15;
lock.y = entry.y + entry.image.GetHeight()/2 - lock_height/2;
lock.sprite.SetPosition(lock.x, lock.y, 10001);
lock.sprite.SetOpacity(0);
# Bullet array
bullet.sprites = [];
fun display_normal_callback ()
{
hide_password_dialog();
# Get current mode
mode = Plymouth.GetMode();
# Only show progress bar for boot and resume modes
if ((mode == "boot" || mode == "resume") && global.password_shown == 1)
{
show_progress_bar();
start_fake_progress();
}
}
fun display_password_callback (prompt, bullets)
{
global.password_shown = 1; # Mark that password dialog has been shown
# Reset progress when password dialog appears
stop_fake_progress();
hide_progress_bar();
global.max_progress = 0.0;
global.fake_progress = 0.0;
global.real_progress = 0.0;
show_password_dialog();
# Clear all bullets first
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++)
{
if (!bullet.sprites[index])
{
# Scale bullet image to 7x7 pixels
scaled_bullet = bullet.image.Scale(7, 7);
bullet.sprites[index] = Sprite(scaled_bullet);
bullet.x = entry.x + 20 + index * (7 + 5);
bullet.y = entry.y + entry.image.GetHeight() / 2 - 3.5;
bullet.sprites[index].SetPosition(bullet.x, bullet.y, 10002);
}
bullet.sprites[index].SetOpacity(1);
}
}
Plymouth.SetDisplayNormalFunction(display_normal_callback);
Plymouth.SetDisplayPasswordFunction(display_password_callback);
#----------------------------------------- Progress Bar --------------------------------
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.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);
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.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);
fun progress_callback (duration, progress)
{
global.real_progress = progress;
# If real progress is above limit, stop fake progress and use real progress
if (progress > global.fake_progress_limit)
{
stop_fake_progress();
update_progress_bar(progress);
}
}
Plymouth.SetBootProgressFunction(progress_callback);
#----------------------------------------- Quit --------------------------------
fun quit_callback ()
{
logo.sprite.SetOpacity (1);
}
Plymouth.SetQuitFunction(quit_callback);
#----------------------------------------- Message --------------------------------
message_sprite = Sprite();
message_sprite.SetPosition(10, 10, 10000);
fun display_message_callback (text)
{
my_image = Image.Text(text, 1, 1, 1);
message_sprite.SetImage(my_image);
}
fun hide_message_callback (text)
{
message_sprite.SetOpacity(0);
}
Plymouth.SetDisplayMessageFunction (display_message_callback);
Plymouth.SetHideMessageFunction (hide_message_callback);

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

72
default/wofi/search.css Normal file
View File

@ -0,0 +1,72 @@
@import ".config/omarchy/current/theme/wofi.css";
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
font-size: 18px;
}
window {
margin: 0px;
padding: 20px;
background-color: @base;
opacity: 0.95;
}
#inner-box {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#outer-box {
margin: 0;
padding: 20px;
border: none;
background-color: @base;
border: 2px solid @border;
}
#scroll {
margin: 0;
padding: 0;
border: none;
background-color: @base;
}
#input {
margin: 0;
padding: 10px;
border: none;
background-color: @base;
color: @text;
}
#input:focus {
outline: none;
box-shadow: none;
border: none;
}
#text {
margin: 5px;
border: none;
color: @text;
}
#entry {
background-color: @base;
}
#entry:selected {
outline: none;
border: none;
}
#entry:selected #text {
color: @selected-text;
}
#entry image {
-gtk-icon-transform: scale(0.7);
}

8
default/wofi/select.css Normal file
View File

@ -0,0 +1,8 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".local/share/omarchy/default/wofi/search.css";
#input {
display: none;
opacity: 0;
margin-top: -200px;
}

View File

@ -5,7 +5,10 @@ set -e
trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR
# Install everything # Install everything
for f in ~/.local/share/omarchy/install/*.sh; do source "$f"; done for f in ~/.local/share/omarchy/install/*.sh; do
echo -e "\nRunning installer: $f"
source "$f"
done
# Ensure locate is up to date now that everything has been installed # Ensure locate is up to date now that everything has been installed
sudo updatedb sudo updatedb

View File

@ -1,9 +1,11 @@
sudo pacman -S --needed --noconfirm base-devel sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then if ! command -v yay &>/dev/null; then
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin cd yay-bin
makepkg -si --noconfirm makepkg -si --noconfirm
cd ~ cd -
rm -rf yay-bin rm -rf yay-bin
cd ~
fi fi

View File

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

View File

@ -7,14 +7,6 @@ mkdir -p ~/.local/share/applications
# Use default bashrc from Omarchy # Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
# Login directly as user, rely on disk encryption + hyprlock for security
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf >/dev/null <<EOF
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin $USER --noclear %I \$TERM
EOF
# Set common git aliases # Set common git aliases
git config --global alias.co checkout git config --global alias.co checkout
git config --global alias.br branch git config --global alias.br branch

View File

@ -1,5 +1,5 @@
# Install asdcontrol for controlling brightness on Apple Displays # Install asdcontrol for controlling brightness on Apple Displays
if ! command -v asdcontrol &>/dev/null; then if [ -z "$OMARCHY_BARE" ] && ! command -v asdcontrol &>/dev/null; then
git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol
cd /tmp/asdcontrol cd /tmp/asdcontrol
make make

View File

@ -1,9 +1,6 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
brightnessctl playerctl pamixer pavucontrol wireplumber \ brightnessctl playerctl pamixer pavucontrol wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \ fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool wl-clip-persist \
wl-clip-persist clipse-bin \ nautilus sushi ffmpegthumbnailer \
nautilus sushi gnome-calculator \ mpv evince imv \
1password-beta 1password-cli \ chromium
chromium mpv \
evince imv \
localsend-bin

6
install/fix-fkeys.sh Normal file
View File

@ -0,0 +1,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
# sudo mkinitcpio -P
fi

View File

@ -1,4 +1,8 @@
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra if [ -z "$OMARCHY_BARE" ]; then
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji noto-fonts-cjk noto-fonts-extra
else
yay -Sy --noconfirm --needed ttf-font-awesome noto-fonts noto-fonts-emoji
fi
mkdir -p ~/.local/share/fonts mkdir -p ~/.local/share/fonts
@ -10,6 +14,10 @@ if ! fc-list | grep -qi "CaskaydiaMono Nerd Font"; then
cp CascadiaFont/CaskaydiaMonoNerdFont-Bold.ttf ~/.local/share/fonts cp CascadiaFont/CaskaydiaMonoNerdFont-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-Italic.ttf ~/.local/share/fonts cp CascadiaFont/CaskaydiaMonoNerdFont-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-BoldItalic.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 rm -rf CascadiaMono.zip CascadiaFont
fc-cache fc-cache
cd - cd -

View File

@ -1,7 +1,4 @@
yay -S --noconfirm --needed \ yay -S --noconfirm --needed \
hyprland hyprshot hyprpicker hyprlock hypridle hyprpolkitagent hyprland-qtutils \ hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \
wofi waybar mako swaybg \ wofi waybar mako swaybg \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-hyprland xdg-desktop-portal-gtk
# Start Hyprland on first session
echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile

115
install/login.sh Normal file
View File

@ -0,0 +1,115 @@
#!/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
sudo systemctl daemon-reload
sudo systemctl enable omarchy-seamless-login.service
# Disable getty@tty1 to prevent conflicts
sudo systemctl disable getty@tty1.service

6
install/network.sh Normal file
View File

@ -0,0 +1,6 @@
# Install iwd explicitly if it wasn't included in archinstall
# This can happen if archinstall used ethernet
if ! command -v iwd &>/dev/null; then
yay -S --noconfirm --needed iwd
sudo systemctl enable --now iwd.service
fi

View File

@ -12,7 +12,7 @@
if [ -n "$(lspci | grep -i 'nvidia')" ]; then if [ -n "$(lspci | grep -i 'nvidia')" ]; then
# --- Driver Selection --- # --- Driver Selection ---
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules # Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
if echo "$gpu_info" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms" NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
else else
NVIDIA_DRIVER_PACKAGE="nvidia-dkms" NVIDIA_DRIVER_PACKAGE="nvidia-dkms"

121
install/plymouth.sh Executable file
View File

@ -0,0 +1,121 @@
#!/usr/bin/env 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

View File

@ -5,6 +5,9 @@ yay -S --noconfirm power-profiles-daemon
if ls /sys/class/power_supply/BAT* &>/dev/null; then if ls /sys/class/power_supply/BAT* &>/dev/null; then
# This computer runs on a battery # This computer runs on a battery
powerprofilesctl set balanced || true powerprofilesctl set balanced || true
# Enable battery monitoring timer for low battery notifications
systemctl --user enable --now omarchy-battery-monitor.timer || true
else else
# This computer runs on power outlet # This computer runs on power outlet
powerprofilesctl set performance || true powerprofilesctl set performance || true

View File

@ -18,7 +18,6 @@ ln -snf ~/.config/omarchy/backgrounds/tokyo-night ~/.config/omarchy/current/back
ln -snf ~/.config/omarchy/current/backgrounds/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg ~/.config/omarchy/current/background ln -snf ~/.config/omarchy/current/backgrounds/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg ~/.config/omarchy/current/background
# Set specific app links for current theme # Set specific app links for current theme
ln -snf ~/.config/omarchy/current/theme/hyprlock.conf ~/.config/hypr/hyprlock.conf
ln -snf ~/.config/omarchy/current/theme/wofi.css ~/.config/wofi/style.css ln -snf ~/.config/omarchy/current/theme/wofi.css ~/.config/wofi/style.css
ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua ln -snf ~/.config/omarchy/current/theme/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
mkdir -p ~/.config/btop/themes mkdir -p ~/.config/btop/themes

View File

@ -1,9 +1,13 @@
source ~/.local/share/omarchy/default/bash/functions if [ -z "$OMARCHY_BARE" ]; then
web2app "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png source ~/.local/share/omarchy/default/bash/functions
web2app "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png web2app "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
web2app "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png web2app "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png
web2app "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png web2app "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
web2app "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png web2app "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png web2app "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png web2app "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png web2app "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
fi

View File

@ -1,7 +1,11 @@
yay -S --noconfirm --needed \ if [ -z "$OMARCHY_BARE" ]; then
yay -S --noconfirm --needed \
gnome-calculator \
signal-desktop spotify dropbox-cli zoom \ signal-desktop spotify dropbox-cli zoom \
obsidian-bin typora libreoffice obs-studio kdenlive \ obsidian-bin typora libreoffice obs-studio kdenlive \
pinta xournalpp 1password-beta 1password-cli gnome-keyring \
pinta xournalpp localsend-bin
fi
# Copy over Omarchy applications # Copy over Omarchy applications
source ~/.local/share/omarchy/bin/omarchy-sync-applications || true source ~/.local/share/omarchy/bin/omarchy-sync-applications || true

4
migrations/.sh Normal file
View File

@ -0,0 +1,4 @@
echo "Fix XCompose use in Typora"
if command -v typora &>/dev/null; then
cp ~/.local/share/omarchy/applications/xtras/typora.desktop ~/.local/share/applications/
fi

View File

@ -1,8 +1,8 @@
# Turn on bluetooth service so blueberry works out the box # Turn on bluetooth service so blueberry works out the box
echo "Let's turn on Bluetooth service so the controls work"
if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then
# Bluetooth is already enabled, nothing to change # Bluetooth is already enabled, nothing to change
: :
else else
echo "Let's turn on Bluetooth service so the controls work"
sudo systemctl enable --now bluetooth.service sudo systemctl enable --now bluetooth.service
fi fi

View File

@ -1,5 +1,5 @@
echo "Add missing installation of bat (used by the ff alias)"
if ! command -v bat &>/dev/null; then if ! command -v bat &>/dev/null; then
# Add missing installation of bat # Add missing installation of bat
echo "Add missing installation of bat (used by the ff alias)"
yay -S --noconfirm --needed bat yay -S --noconfirm --needed bat
fi fi

View File

@ -1,3 +1,2 @@
echo "Installing missing fd terminal tool for finding files" echo "Installing missing fd terminal tool for finding files"
yay -S --noconfirm --needed fd yay -S --noconfirm --needed fd
echo "You must start a new terminal for fd to work"

View File

@ -1,19 +1,21 @@
echo "Switching from vlc to mpv for the default video player" echo "Switching from vlc to mpv for the default video player"
yay -Rns --noconfirm vlc if ! command -v mpv &>/dev/null; then
rm ~/.local/share/applications/vlc.desktop yay -Rns --noconfirm vlc
yay -S --noconfirm mpv rm ~/.local/share/applications/vlc.desktop
xdg-mime default mpv.desktop video/mp4 yay -S --noconfirm mpv
xdg-mime default mpv.desktop video/x-msvideo xdg-mime default mpv.desktop video/mp4
xdg-mime default mpv.desktop video/x-matroska xdg-mime default mpv.desktop video/x-msvideo
xdg-mime default mpv.desktop video/x-flv xdg-mime default mpv.desktop video/x-matroska
xdg-mime default mpv.desktop video/x-ms-wmv xdg-mime default mpv.desktop video/x-flv
xdg-mime default mpv.desktop video/mpeg xdg-mime default mpv.desktop video/x-ms-wmv
xdg-mime default mpv.desktop video/ogg xdg-mime default mpv.desktop video/mpeg
xdg-mime default mpv.desktop video/webm xdg-mime default mpv.desktop video/ogg
xdg-mime default mpv.desktop video/quicktime xdg-mime default mpv.desktop video/webm
xdg-mime default mpv.desktop video/3gpp xdg-mime default mpv.desktop video/quicktime
xdg-mime default mpv.desktop video/3gpp2 xdg-mime default mpv.desktop video/3gpp
xdg-mime default mpv.desktop video/x-ms-asf xdg-mime default mpv.desktop video/3gpp2
xdg-mime default mpv.desktop video/x-ogm+ogg xdg-mime default mpv.desktop video/x-ms-asf
xdg-mime default mpv.desktop video/x-theora+ogg xdg-mime default mpv.desktop video/x-ogm+ogg
xdg-mime default mpv.desktop application/ogg xdg-mime default mpv.desktop video/x-theora+ogg
xdg-mime default mpv.desktop application/ogg
fi

View File

@ -1,3 +1,5 @@
echo "Add missing docker config" echo "Ensure Docker config is set"
sudo mkdir -p /etc/docker if [[ ! -f /etc/docker/daemon.json ]]; then
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json sudo mkdir -p /etc/docker
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
fi

2
migrations/1751679069.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Install ffmpegthumbnailer for video thumbnails in the file manager"
yay -S --noconfirm --needed ffmpegthumbnailer

2
migrations/1751821819.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Install bash-completion"
yay -S --noconfirm --needed bash-completion

6
migrations/1751887718.sh Normal file
View File

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

2
migrations/1752081088.sh Normal file
View File

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

2
migrations/1752082381.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Adding gnome-keyring to make 1password work with 2FA codes"
yay -S --noconfirm --needed gnome-keyring

2
migrations/1752091783.sh Normal file
View File

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

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