271 Commits

Author SHA1 Message Date
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
9906414866 Add missing new LocalSend default application 2025-07-04 17:00:36 -07:00
3d871adc4a Merge pull request #60 from basecamp/dev
Omarchy 1.1
2025-07-04 16:49:44 -07:00
59b561a3ac Don't actually install a specific ruby version
Compilation slows down the install too much, and very often projects
specify something specific.
2025-07-04 16:23:18 -07:00
e166cde9d0 Don't let this stop it 2025-07-04 16:20:56 -07:00
fcaf61162c Won't be set in that shell 2025-07-04 16:20:30 -07:00
b15166cce0 Use clipse bin as well 2025-07-04 16:18:50 -07:00
3c1e7e5b10 Switch to bin versions where possible 2025-07-04 16:10:58 -07:00
ce875b6fee Be resilient to power profile not existing 2025-07-04 16:08:04 -07:00
63d4d6d302 Only ask if we don't have the identification already 2025-07-04 16:03:19 -07:00
e3b211efae Fix missing directory 2025-07-04 16:00:28 -07:00
211b99320b Add localsend-bin
No rust conflicts! Closes #51, #46
2025-07-04 15:54:11 -07:00
1d90a15c16 Add missing docker config migration 2025-07-04 15:49:04 -07:00
648d061b3c Fix missing dir for /etc/docker 2025-07-04 15:47:38 -07:00
3d8c15a397 Correct name 2025-07-04 15:44:28 -07:00
559e628ccf Merge branch 'master' into dev 2025-07-04 15:38:45 -07:00
ea37c7ccb5 Use custom branch if $OMARCHY_REF has been specified 2025-07-04 15:38:34 -07:00
c74ad0a013 Catch errors and offer a retry 2025-07-04 15:29:48 -07:00
5957da5ecb No confirm the removal 2025-07-04 15:24:36 -07:00
e4db074d38 Add migration to switch from vlc to mpv 2025-07-04 15:22:04 -07:00
56ec1351d3 Switch default video player from vlc to mpv
It's faster and looks better on hyprland
2025-07-04 15:20:20 -07:00
89ee15f5fb Excess CR 2025-07-04 15:05:34 -07:00
985d137d71 Add a fingerprint setup script
Follow-up to #54
2025-07-04 15:05:07 -07:00
a736c95fdc Turn on fingerprint authentication for hyprlock
Still requires setting up fprint, but we explain that in the manual.
Closes #54.
2025-07-04 14:51:33 -07:00
3b755b09aa Use Chromium as the default browser
Prevents that warning on first start
2025-07-04 12:10:52 -07:00
1b26d75f3e Merge pull request #55 from c4software/patch-1
Improve keyboard layout compatibility
2025-07-04 11:55:03 -07:00
c53125b519 Merge pull request #58 from martinstork/toggle-wofi
Open and close wofi with the same binding
2025-07-04 11:51:34 -07:00
a4e6846cd1 Merge branch 'dev' into toggle-wofi 2025-07-04 11:51:24 -07:00
609c8ef84e Revert "Merge pull request #37 from prertik/nvim-switch-to-current-theme"
This reverts commit 79a8d34cc5, reversing
changes made to d05020b7c1.
2025-07-04 11:49:09 -07:00
79a8d34cc5 Merge pull request #37 from prertik/nvim-switch-to-current-theme
Be able to switch to current theme for neovim
2025-07-04 11:42:44 -07:00
0ab85263e2 Open and close wofi with the same binding 2025-07-04 20:27:51 +02:00
bf19025088 fix: use key codes instead of numeric values to support alternative keyboard layouts
Some layouts (like AZERTY or Bépo) do not provide direct access to number keys.
Using key codes improves compatibility across different keyboard configurations.
2025-07-04 17:59:13 +02:00
d05020b7c1 Include Google Messages as a web app too 2025-07-03 13:59:31 -07:00
5cb345ef28 Merge branch 'master' into dev 2025-07-03 13:50:36 -07:00
1a061cb427 Add Google Messages for RCS via Android
Great for SMS 2FA etc!
2025-07-03 13:38:50 -07:00
9a99e24d67 Tweak keybindings and include the ones in the defaults too 2025-07-03 13:14:42 -07:00
83210c6566 Merge pull request #42 from calvinludwig/feat/yayf-alias
Add yayf alias for easy package search
2025-07-03 12:47:40 -07:00
ebe4420c10 Merge pull request #44 from oca159/master
feat: add script to show keybindings
2025-07-03 12:38:40 -07:00
ea2053bd18 Prevent wofi from stack up
When hitting SUPER + space several times, a new instance of wofi is
launched each time and they stack upon each other. This change uses a
file lock to prevent starting several instances of wofi.

Thanks to everyone from this thread
https://www.reddit.com/r/archlinux/comments/m327pt/prevent_wofi_from_stacking_up/
2025-07-03 12:38:03 -07:00
f7ec407891 feat: add script to show keybindings 2025-07-03 13:09:15 -06:00
59b18ce5b8 add yayf alias 2025-07-03 10:14:22 -03:00
4f0271b588 Be able to switch to current theme
Additionally, check if the current theme is accessible
and loadable else, fallback to a default theme as to not
break the theme.

Signed-off-by: Pratik Karki <pratik@prertik.com>
2025-07-03 12:28:47 +05:45
6faa33f422 No transparency on image viewing 2025-07-02 22:16:15 -07:00
8c631250c2 Merge pull request #29 from iharsuvorau/wofi-fix
Prevent wofi from stacking up
2025-07-02 20:39:25 -07:00
d00e463eca Merge branch 'master' into dev 2025-07-02 20:07:51 -07:00
56ebe49468 Fix missing fd tool and bad alias 2025-07-02 20:07:45 -07:00
8df95b6fb3 Explain how to get this working 2025-07-02 20:06:42 -07:00
04b4c3c9a5 Install missing fd 2025-07-02 19:53:44 -07:00
e0a123d56e Merge branch 'master' into dev 2025-07-02 19:47:28 -07:00
863a1b0b3e Fix nvidia check 2025-07-02 16:21:52 -07:00
7100c41449 Prevent wofi from stack up
When hitting SUPER + space several times, a new instance of wofi is
launched each time and they stack upon each other. This change uses a
file lock to prevent starting several instances of wofi.

Thanks to everyone from this thread
https://www.reddit.com/r/archlinux/comments/m327pt/prevent_wofi_from_stacking_up/
2025-07-03 01:45:50 +03:00
e9a399173b Set a default branch name 2025-07-02 13:15:43 -07:00
14fe67e179 Merge pull request #13 from Kn0ax/master
Nvidia support for omarchy
2025-07-02 12:54:21 -07:00
e8c9a5ad49 remove defensive code 2025-07-01 21:52:49 +02:00
35aa002475 Merge pull request #20 from harilvfs/license
chore: add MIT license file
2025-06-30 16:42:20 -07:00
8d15510a0c Update LICENSE 2025-06-30 16:42:09 -07:00
3c07b541bd Good window defaults for gaming 2025-06-30 16:00:03 -07:00
f244be542f add license file 2025-07-01 00:47:40 +05:45
d6a44c24a7 remove unneeded comments 2025-06-30 20:53:36 +02:00
188d1c331a requested changes 2025-06-30 20:45:17 +02:00
cfa63fdc67 Add function to refresh xcompose after changes 2025-06-29 21:11:49 -07:00
da31736b9a Explain it 2025-06-29 19:01:48 -07:00
5e56279fee Float sound and bluetooth settings 2025-06-29 19:01:25 -07:00
504a7a85c2 Merge pull request #15 from 0xProt/master
chore: removed duplicated key in waybar battery config
2025-06-29 17:16:43 -07:00
b5dfaef8bb enable multilib (if not already) 2025-06-30 00:47:42 +02:00
8f68793f7c fix script path
meh, stupid me
2025-06-30 00:38:36 +02:00
86d9050420 chore: removed duplicated key in waybar battery config 2025-06-29 22:38:14 +01:00
fbd85990d0 [not tested] nvidia support
this commit tries to add nvidia suppport.
it's not tested yet.
2025-06-29 22:27:16 +02:00
3162a4cd5a This strategy didnt actually work, just use all 2025-06-29 12:50:53 -07:00
dedc08a76e Allow you to easily run all migrations by passing "all"
Helpful for testing or if something went wrong
2025-06-29 12:49:51 -07:00
d227a541f0 Add migration to fix the persistent workspaces in the waybar config 2025-06-29 12:39:22 -07:00
40cd9575d2 Merge pull request #10 from kennethgeerts/master
Fix for persistent workspaces shown in waybar
2025-06-29 12:35:07 -07:00
671f9c7882 Sleep on Super + Shift + Escape
And move restarting Hyprland to Super + Alt + Escape
2025-06-28 16:48:16 -07:00
6af496f394 Fix opacity 2025-06-28 16:30:43 -07:00
56f60adf6b Fix for persistent workspaces shown in waybar 2025-06-29 01:17:17 +02:00
9a8f4523e7 Fix that Chromium is now a capitalized class 2025-06-28 16:01:43 -07:00
18931a8fd3 Need to have the service available first 2025-06-28 15:50:19 -07:00
6842258031 Fix this 2025-06-28 11:51:11 -07:00
aa4fddf53f Run these again so the updated omarchy-update gets them too 2025-06-28 11:50:19 -07:00
07b89e0ad8 Only run this if we are missing bat 2025-06-28 11:48:08 -07:00
2a2a77685c Add migration system and fix bluetooth service + missing bat 2025-06-28 11:46:28 -07:00
128 changed files with 1586 additions and 927 deletions

20
LICENSE Normal file
View File

@ -0,0 +1,20 @@
Copyright (c) David Heinemeier Hansson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

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

@ -1,14 +0,0 @@
[Desktop Entry]
Version=1.0
Name=VLC media player
GenericName=Media player
Comment=Read, capture, broadcast your multimedia streams
Exec=env QT_SCALE_FACTOR=2 /usr/bin/vlc --started-from-file %U
TryExec=/usr/bin/vlc
Icon=vlc
Terminal=false
Type=Application
Categories=AudioVideo;Player;Recorder;
MimeType=application/ogg;application/x-ogg;audio/ogg;audio/vorbis;audio/x-vorbis;audio/x-vorbis+ogg;video/ogg;video/x-ogm;video/x-ogm+ogg;video/x-theora+ogg;video/x-theora;audio/x-speex;audio/opus;application/x-flac;audio/flac;audio/x-flac;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;audio/x-ms-wma;video/x-ms-asf;video/x-ms-asf-plugin;video/x-ms-asx;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-msvideo;audio/x-pn-windows-acm;video/divx;video/msvideo;video/vnd.divx;video/avi;video/x-avi;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/vnd.rn-realaudio;audio/x-pn-realaudio;audio/x-pn-realaudio-plugin;audio/x-real-audio;audio/x-realaudio;video/vnd.rn-realvideo;audio/mpeg;audio/mpg;audio/mp1;audio/mp2;audio/mp3;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpg;video/mp2t;video/mpeg;video/mpeg-system;video/x-mpeg;video/x-mpeg2;video/x-mpeg-system;application/mpeg4-iod;application/mpeg4-muxcodetable;application/x-extension-m4a;application/x-extension-mp4;audio/aac;audio/m4a;audio/mp4;audio/x-m4a;audio/x-aac;video/mp4;video/mp4v-es;video/x-m4v;application/x-quicktime-media-link;application/x-quicktimeplayer;video/quicktime;application/x-matroska;audio/x-matroska;video/x-matroska;video/webm;audio/webm;audio/3gpp;audio/3gpp2;audio/AMR;audio/AMR-WB;video/3gp;video/3gpp;video/3gpp2;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtsp;x-scheme-handler/rtp;x-scheme-handler/rtmp;x-scheme-handler/icy;x-scheme-handler/icyx;application/x-cd-image;x-content/video-vcd;x-content/video-svcd;x-content/video-dvd;x-content/audio-cdda;x-content/audio-player;application/ram;application/xspf+xml;audio/mpegurl;audio/x-mpegurl;audio/scpls;audio/x-scpls;text/google-video-pointer;text/x-google-video-pointer;video/vnd.mpegurl;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.ms-wpl;application/sdp;audio/dv;video/dv;audio/x-aiff;audio/x-pn-aiff;video/x-anim;video/x-nsv;video/fli;video/flv;video/x-flc;video/x-fli;video/x-flv;audio/wav;audio/x-pn-au;audio/x-pn-wav;audio/x-wav;audio/x-adpcm;audio/ac3;audio/eac3;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/basic;audio/midi;audio/x-ape;audio/x-gsm;audio/x-musepack;audio/x-tta;audio/x-wavpack;audio/x-shorten;application/x-shockwave-flash;application/x-flash-video;misc/ultravox;image/vnd.rn-realpix;audio/x-it;audio/x-mod;audio/x-s3m;audio/x-xm;application/mxf;
X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb
Keywords=Player;Capture;DVD;Audio;Video;Server;Broadcast;

View File

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

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
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/hyprlock.conf ~/.config/hypr/
ln -nsf ~/.local/share/omarchy/config/waybar/config ~/.config/waybar/
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"

36
bin/omarchy-fingerprint-setup Executable file
View File

@ -0,0 +1,36 @@
#!/bin/bash
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -iq fingerprint; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# 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"
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*) hyprctl dispatch exit ;;
*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

59
bin/omarchy-show-keybindings Executable file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# A script to display Hyprland keybindings defined in your configuration
# using wofi for an interactive search menu.
USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf $HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf $HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf $HOME/.local/share/omarchy/default/hypr/bindings.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
# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces).
# 2. The first `sed` removes comments (anything after a '#').
# 3. `awk` does the heavy lifting of formatting the output.
# - It sets the field separator to a comma ','.
# - It removes the 'bind... =' part from the beginning of the line.
# - It joins the key combination (e.g., "SUPER + Q").
# - It joins the command that the key executes.
# - It prints everything in a nicely aligned format.
# 4. The final `sed` cleans up any leftover commas from the end of lines.
grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
sed 's/#.*//' |
sed '/^[[:space:]]*$/d' |
sort -u |
awk -F, '
{
# Strip trailing comments
sub(/#.*/, "");
# Remove the "bind... =" part and surrounding whitespace
sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1);
# Combine the modifier and key (first two fields)
key_combo = $1 " + " $2;
# Clean up: strip leading "+" if present, trim spaces
gsub(/^[ \t]*\+?[ \t]*/, "", key_combo);
gsub(/[ \t]+$/, "", key_combo);
# Reconstruct the command from the remaining fields
action = "";
for (i = 3; i <= NF; i++) {
action = action $i (i < NF ? "," : "");
}
# Clean up trailing commas, remove leading "exec, ", and trim
sub(/,$/, "", action);
gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action);
gsub(/^[ \t]+|[ \t]+$/, "", action);
gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one
if (action != "") {
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 --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
mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
if [ -z "$OMARCHY_BARE" ]; then
cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
fi
update-desktop-database ~/.local/share/applications

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

@ -2,8 +2,13 @@
cd ~/.local/share/omarchy
# Remember the version we're at before upgrading
last_updated_at=$(git log -1 --format=%cd --date=unix)
if [[ $1 == "all" ]]; then
# Run all migrations
last_updated_at=1
else
# Remember the version we're at before upgrading
last_updated_at=$(git log -1 --format=%cd --date=unix)
fi
# Get the latest
git pull
@ -14,10 +19,13 @@ for file in migrations/*.sh; do
migrate_at="${filename%.sh}"
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
fi
done
# Back to where we came from
cd -
cd - >/dev/null
echo -e "\e[32m\nUpdating system packages\e[0m"
yay -Syu --noconfirm

View File

@ -16,5 +16,13 @@ echo -e "\nCloning Omarchy..."
rm -rf ~/.local/share/omarchy/
git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
cd -
fi
echo -e "\nInstallation starting..."
source ~/.local/share/omarchy/install.sh

View File

@ -3,47 +3,74 @@
# Change your personal monitor setup in here to keep the main config portable
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
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/looknfeel.conf
source = ~/.local/share/omarchy/default/hypr/input.conf
source = ~/.local/share/omarchy/default/hypr/windows.conf
source = ~/.config/omarchy/current/theme/hyprland.conf
# Extra autostart processes (uncomment to run Dropbox)
# exec-once = dropbox-cli start
# Application bindings
$terminal = alacritty
$browser = chromium --new-window --ozone-platform=wayland
$webapp = $browser --app
# Extra env variables
env = GDK_SCALE,2 # Change to 1 if on a 1x display
bind = SUPER, return, exec, $terminal
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 env variables needed if running an NVIDIA GPU
# env = NVD_BACKEND,direct
# env = LIBVA_DRIVER_NAME,nvidia
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# Extra bindings
bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
bind = SUPER, E, exec, $webapp="https://app.hey.com"
bind = SUPER, Y, exec, $webapp="https://youtube.com/"
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Use multiple keyboard layouts and switch between them with Alt + Space
# input {
# kb_layout = us,dk
# kb_options = compose:caps,grp:alt_space_toggle
# }
# Extra autostart processes
# exec-once = dropbox-cli start
# 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
# ────────────────────────────────────────────────────────────
source = ~/.config/omarchy/current/theme/hyprlock.conf
general {
disable_loading_bar = true
no_fade_in = false
@ -9,7 +11,7 @@ general {
background {
monitor =
color = rgba(26,27,38,1.0) # #1a1b26 solid color
color = $color
}
animations {
@ -23,20 +25,24 @@ input-field {
halign = center
valign = center
inner_color = rgba(26,27,38,0.8) # #1a1b26 with opacity
outer_color = rgba(205,214,244,1.0) # #cdd6f4
inner_color = $inner_color
outer_color = $outer_color
outline_thickness = 4
font_family = CaskaydiaMono Nerd Font
font_size = 32
font_color = rgba(205,214,244,1.0)
font_color = $font_color
placeholder_color = rgba(205,214,244,0.6)
placeholder_text = Enter Password
check_color = rgba(68, 157, 171, 1.0)
placeholder_color = $placeholder_color
placeholder_text = Enter Password 󰈷 
check_color = $check_color
fail_text = Wrong
rounding = 0
shadow_passes = 0
fade_on_empty = false
}
auth {
fingerprint:enabled = true
}

View File

@ -1,8 +1,16 @@
# 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)
# Format: monitor = [port], resolution, position, scale
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
# monitor = DP-5, 6016x3384@60.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

@ -10,12 +10,10 @@
"clock"
],
"modules-right": [
"custom/dropbox",
"bluetooth",
"network",
"pulseaudio",
"cpu",
"power-profiles-daemon",
"battery"
],
"hyprland/workspaces": {
@ -34,7 +32,7 @@
"9": "9",
"active": "󱓻"
},
"persistent_workspaces": {
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
@ -63,23 +61,22 @@
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty -e iwctl"
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"interval": 5,
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "Charged ",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
@ -103,24 +100,5 @@
"tooltip-format": "Playing at {volume}%",
"on-click-right": "pamixer -t",
"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-radius: 0;
min-height: 0;
font-family: CaskaydiaMono Nerd Font;
font-family: CaskaydiaMono Nerd Font Propo;
font-size: 12px;
}
@ -18,12 +18,12 @@
#custom-dropbox,
#cpu,
#power-profiles-daemon,
#battery,
#network,
#bluetooth,
#pulseaudio,
#clock {
#clock,
#custom-power-menu {
min-width: 12px;
margin-right: 13px;
}

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

@ -33,3 +33,6 @@ alias r='rails'
alias gcm='git commit -m'
alias gcam='git commit -a -m'
alias gcad='git commit -a --amend'
# Find packages without leaving the terminal
alias yayf="yay -Slq | fzf --multi --preview 'yay -Sii {1}' --preview-window=down:75% | xargs -ro yay -S"

View File

@ -66,5 +66,8 @@ web2app-remove() {
rm "$ICON_PATH"
}
# 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'
# Ensure changes to ~/.XCompose are immediately available
refresh-xcompose() {
pkill fcitx5
setsid fcitx5 &>/dev/null &
}

View File

@ -28,14 +28,12 @@ set completion-query-items 200
# Show extra file information when completing, like `ls -F` does
set visible-stats on
$if Bash
# 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 is on the "z", pressing Tab will not autocomplete it to "cd
# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the
# Readline used by Bash 4.)
set skip-completed-text on
# 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 is on the "z", pressing Tab will not autocomplete it to "cd
# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the
# Readline used by Bash 4.)
set skip-completed-text on
# Coloring for Bash 4 tab completions.
set colored-stats on
$endif
# Coloring for Bash 4 tab completions.
set colored-stats on

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/init
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}"
# 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
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 = swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = systemctl --user start hyprpolkitagent
exec-once = wl-clip-persist --clipboard regular & clipse -listen
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
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, F, exec, $fileManager
bind = SUPER, B, exec, $browser
@ -10,100 +11,6 @@ bind = SUPER, G, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager
bind = SUPER, space, exec, wofi --show drun --sort-order=alphabetical
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
bind = SUPER, W, killactive,
# End active session
bind = SUPER, ESCAPE, exec, hyprlock
bind = SUPER SHIFT, 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, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
bind = SUPER, 6, workspace, 6
bind = SUPER, 7, workspace, 7
bind = SUPER, 8, workspace, 8
bind = SUPER, 9, workspace, 9
bind = SUPER, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER SHIFT, 6, movetoworkspace, 6
bind = SUPER SHIFT, 7, movetoworkspace, 7
bind = SUPER SHIFT, 8, movetoworkspace, 8
bind = SUPER SHIFT, 9, movetoworkspace, 9
bind = SUPER SHIFT, 0, 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
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

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
}
# 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
env = XDG_DATA_DIRS,/usr/share:/usr/local/share:~/.local/share

View File

@ -2,22 +2,30 @@
windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(chromium)$
windowrule = tile, class:^(Chromium)$
# Float and center sound, bluetooth, and wifi settings, as well as nautilus previews
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
windowrule = float, class:^(steam)$
windowrule = fullscreen, class:^(com.libretro.RetroArch)$
# Just dash of opacity
windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 0.97 0.9, initialClass:^(chrome-.*-Default)$ # web apps
windowrule = opacity 1 1, initialClass:^(chrome-youtube.*-Default)$ # Youtube
windowrule = opacity 1 1, class:^(zoom|vlc|org.kde.kdenlive|com.obsproject.Studio)$
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Proper background blur for 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,238 @@
# 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
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)
{
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()
{
global.fake_progress = 0.0;
global.real_progress = 0.0;
global.fake_progress_active = 1;
global.animation_frame = 0;
update_progress_bar(0.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
stop_fake_progress();
hide_progress_bar();
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

@ -1,5 +1,14 @@
# Exit immediately if a command exits with a non-zero status
set -e
# Give people a chance to retry running the installation
trap 'echo "Omarchy installation failed! You can retry by running: source ~/.local/share/omarchy/install.sh"' ERR
# 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
sudo updatedb

View File

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

View File

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

View File

@ -1,6 +1,9 @@
# Copy over Omarchy configs
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications
# Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
@ -18,6 +21,7 @@ git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Set identification from install inputs
if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then

View File

@ -1,5 +1,5 @@
# 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
cd /tmp/asdcontrol
make

View File

@ -1,5 +1,5 @@
# Turn on bluetooth by default
sudo systemctl enable --now bluetooth.service
# Install bluetooth controls
yay -S --noconfirm --needed blueberry
# Turn on bluetooth by default
sudo systemctl enable --now bluetooth.service

View File

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

View File

@ -3,4 +3,4 @@ yay -S --noconfirm --needed \
imagemagick \
mariadb-libs postgresql-libs \
github-cli \
lazygit lazydocker
lazygit lazydocker-bin

View File

@ -1,6 +1,7 @@
yay -S --noconfirm --needed docker docker-compose
# Limit log size to avoid running out of disk
sudo mkdir -p /etc/docker
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
# Start Docker automatically

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
@ -10,6 +14,10 @@ if ! fc-list | grep -qi "CaskaydiaMono Nerd Font"; then
cp CascadiaFont/CaskaydiaMonoNerdFont-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFont-BoldItalic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Regular.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Bold.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-Italic.ttf ~/.local/share/fonts
cp CascadiaFont/CaskaydiaMonoNerdFontPropo-BoldItalic.ttf ~/.local/share/fonts
rm -rf CascadiaMono.zip CascadiaFont
fc-cache
cd -

View File

@ -1,5 +1,5 @@
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 \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk

View File

@ -11,19 +11,24 @@ xdg-mime default imv.desktop image/tiff
# Open PDFs with the Document Viewer
xdg-mime default org.gnome.Evince.desktop application/pdf
# Open video files with VLC
xdg-mime default vlc.desktop video/mp4
xdg-mime default vlc.desktop video/x-msvideo
xdg-mime default vlc.desktop video/x-matroska
xdg-mime default vlc.desktop video/x-flv
xdg-mime default vlc.desktop video/x-ms-wmv
xdg-mime default vlc.desktop video/mpeg
xdg-mime default vlc.desktop video/ogg
xdg-mime default vlc.desktop video/webm
xdg-mime default vlc.desktop video/quicktime
xdg-mime default vlc.desktop video/3gpp
xdg-mime default vlc.desktop video/3gpp2
xdg-mime default vlc.desktop video/x-ms-asf
xdg-mime default vlc.desktop video/x-ogm+ogg
xdg-mime default vlc.desktop video/x-theora+ogg
xdg-mime default vlc.desktop application/ogg
# Use Chromium as the default browser
xdg-settings set default-web-browser chromium.desktop
xdg-mime default chromium.desktop x-scheme-handler/http
xdg-mime default chromium.desktop x-scheme-handler/https
# Open video files with mpv
xdg-mime default mpv.desktop video/mp4
xdg-mime default mpv.desktop video/x-msvideo
xdg-mime default mpv.desktop video/x-matroska
xdg-mime default mpv.desktop video/x-flv
xdg-mime default mpv.desktop video/x-ms-wmv
xdg-mime default mpv.desktop video/mpeg
xdg-mime default mpv.desktop video/ogg
xdg-mime default mpv.desktop video/webm
xdg-mime default mpv.desktop video/quicktime
xdg-mime default mpv.desktop video/3gpp
xdg-mime default mpv.desktop video/3gpp2
xdg-mime default mpv.desktop video/x-ms-asf
xdg-mime default mpv.desktop video/x-ogm+ogg
xdg-mime default mpv.desktop video/x-theora+ogg
xdg-mime default mpv.desktop application/ogg

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

82
install/nvidia.sh Normal file
View File

@ -0,0 +1,82 @@
# ==============================================================================
# Hyprland NVIDIA Setup Script for Arch Linux
# ==============================================================================
# This script automates the installation and configuration of NVIDIA drivers
# for use with Hyprland on Arch Linux, following the official Hyprland wiki.
#
# Author: https://github.com/Kn0ax
#
# ==============================================================================
# --- GPU Detection ---
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
# --- Driver Selection ---
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
else
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
fi
# Check which kernel is installed and set appropriate headers package
KERNEL_HEADERS="linux-headers" # Default
if pacman -Q linux-zen &>/dev/null; then
KERNEL_HEADERS="linux-zen-headers"
elif pacman -Q linux-lts &>/dev/null; then
KERNEL_HEADERS="linux-lts-headers"
elif pacman -Q linux-hardened &>/dev/null; then
KERNEL_HEADERS="linux-hardened-headers"
fi
# Enable multilib repository for 32-bit libraries
if ! grep -q "^\[multilib\]" /etc/pacman.conf; then
sudo sed -i '/^#\[multilib\]/,/^#Include/ s/^#//' /etc/pacman.conf
fi
# Install packages
PACKAGES_TO_INSTALL=(
"${KERNEL_HEADERS}"
"${NVIDIA_DRIVER_PACKAGE}"
"nvidia-utils"
"lib32-nvidia-utils"
"egl-wayland"
"libva-nvidia-driver" # For VA-API hardware acceleration
"qt5-wayland"
"qt6-wayland"
)
yay -Syu --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}"
# Configure modprobe for early KMS
echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null
# Configure mkinitcpio for early loading
MKINITCPIO_CONF="/etc/mkinitcpio.conf"
# Define modules
NVIDIA_MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
# Create backup
sudo cp "$MKINITCPIO_CONF" "${MKINITCPIO_CONF}.backup"
# Remove any old nvidia modules to prevent duplicates
sudo sed -i -E 's/ nvidia_drm//g; s/ nvidia_uvm//g; s/ nvidia_modeset//g; s/ nvidia//g;' "$MKINITCPIO_CONF"
# Add the new modules at the start of the MODULES array
sudo sed -i -E "s/^(MODULES=\\()/\\1${NVIDIA_MODULES} /" "$MKINITCPIO_CONF"
# Clean up potential double spaces
sudo sed -i -E 's/ +/ /g' "$MKINITCPIO_CONF"
sudo mkinitcpio -P
# Add NVIDIA environment variables to hyprland.conf
HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
if [ -f "$HYPRLAND_CONF" ]; then
cat >>"$HYPRLAND_CONF" <<'EOF'
# NVIDIA environment variables
env = NVD_BACKEND,direct
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
EOF
fi
fi

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

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

View File

@ -1,10 +1,6 @@
if ! command -v ruby &>/dev/null; then
# Install Ruby using gcc-14 for compatibility
yay -S --noconfirm --needed gcc14
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"
mise install ruby
mise use ruby -g
# Install Ruby using gcc-14 for compatibility
yay -S --noconfirm --needed gcc14
mise settings set ruby.ruby_build_opts "CC=gcc-14 CXX=g++-14"
# Trust .ruby-version
mise settings add idiomatic_version_file_enable_tools ruby
fi
# Trust .ruby-version
mise settings add idiomatic_version_file_enable_tools ruby

View File

@ -1,4 +1,4 @@
# Use dark mode for QT apps too (like VLC and kdenlive)
# Use dark mode for QT apps too (like kdenlive)
sudo pacman -S --noconfirm kvantum-qt5
# Prefer dark mode everything
@ -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
# 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/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
mkdir -p ~/.config/btop/themes

View File

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

View File

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

View File

@ -1,8 +1,8 @@
# 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
# Bluetooth is already enabled, nothing to change
:
else
echo "Let's turn on Bluetooth service so the controls work"
sudo systemctl enable --now bluetooth.service
fi

View File

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

3
migrations/1751225707.sh Normal file
View File

@ -0,0 +1,3 @@
echo "Fixing persistent workspaces in waybar config"
sed -i 's/"persistent_workspaces":/"persistent-workspaces":/' ~/.config/waybar/config
pkill -SIGUSR2 waybar

2
migrations/1751510848.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Installing missing fd terminal tool for finding files"
yay -S --noconfirm --needed fd

21
migrations/1751667620.sh Normal file
View File

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

5
migrations/1751669258.sh Normal file
View File

@ -0,0 +1,5 @@
echo "Ensure Docker config is set"
if [[ ! -f /etc/docker/daemon.json ]]; then
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/1751672984.sh Normal file
View File

@ -0,0 +1,2 @@
echo "Add LocalSend as new default application"
yay -S --noconfirm --needed localsend-bin

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

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