345 Commits

Author SHA1 Message Date
4d22b627be Merge pull request #186 from basecamp/dev
Omarchy v1.4.0
2025-07-15 23:02:44 -04:00
17c01629ec Noconfirm and needed 2025-07-15 19:48:35 -07:00
3557ce8d3b Shorter to fit inside Omarchy TUI width 2025-07-15 19:35:51 -07:00
e60c37b194 Specific Omarchy TUI size 2025-07-15 19:35:01 -07:00
d305935382 Put all omarchy commands under the omarchy- prefix 2025-07-15 19:30:23 -07:00
018603be6d Make it clear this is just for development of omarchy 2025-07-15 19:23:27 -07:00
c312cd8b06 More updates 2025-07-15 19:22:44 -07:00
f9403977b8 Homogenize command naming 2025-07-15 19:22:40 -07:00
2d1e6d0e69 Add way to refresh wofi settings 2025-07-15 19:22:27 -07:00
49b191b2af Always lowercase 2025-07-15 19:17:32 -07:00
6de7be7e18 Set path for when its run as standalone app 2025-07-15 19:17:09 -07:00
c99f4c9c02 Tweaks and refinements to the Omarchy TUI 2025-07-15 19:14:23 -07:00
ab3904df9a Quiet swaybg output 2025-07-15 19:14:10 -07:00
73d0197b3c Treat Omarchy as a settings window 2025-07-15 17:55:03 -07:00
b8d64f1737 Copy over new Omarchy application desktop definition 2025-07-15 17:54:53 -07:00
ecf42918fb Have to sudo the change to pacman.conf 2025-07-15 17:31:36 -07:00
11406ecc79 Add Centralized omarchy CLI with Version Flag and Help Menu (#116)
* Add main CLI interface for Omarchy

Introduces the omarchy script, providing a command-line interface with options for current version, update, and waybar configuration refresh. Includes help documentation.

* Add really cool Omarchy ASCII art to help menu in cli

* Refactor Omarchy CLI to include a TUI menu with system, theme, and tools options.

* Add .desktop for Omarchy TUI

* Make omarchy script executable

* Refactor omarchy cli and add new theme tools

* Add help menu
2025-07-15 17:29:00 -07:00
a649779d81 envvars: remove xdg-data-dir env for wofi, it's not needed (#184) 2025-07-15 17:24:30 -07:00
f114e5c441 Hide this too 2025-07-15 17:24:06 -07:00
5daa30a629 Fix compatibility with Framework 16 sensor
Closes #181
Co-authored-by: @anagrius
2025-07-15 17:17:14 -07:00
e5e981507f Additional keyservers (#180)
* Adds additional keyservers and faster timeout

* forgot to restart the dirmngr!

* remove openpgp since doesn't work for spotify, dropbox etc
2025-07-15 17:00:11 -07:00
b0d4c2dae4 Fixup and tuneup 2025-07-14 22:35:10 -07:00
e674744714 Fix symlink or directory detection 2025-07-14 21:47:46 -07:00
ba69caaa6d Omarchy Theme Installer (#150)
* Add omarchy theme remove

* Add theme installer

* Add migration to make theme management scripts executable

* Refactor theme installation script to simplify directory structure and remove unnecessary symlinks.

The script now directly clones themes into the ~/.config/omarchy/themes directory and updates paths accordingly for backgrounds and fonts.

* Update permissions for theme scripts and remove unnecessary migration file

* Refactor theme installation script to always use swaybg-next

* Remove fonts from omarchy-theme-install

* Refactor omarchy-theme-remove by swiitching to theme dir and removing unnecessary symlink checks

* Refactor theme installer to use omarchy-theme-set

* Fix Omarchy theme remove removing current theme and throwing error

* Making theme management scripts quiet
2025-07-14 21:39:07 -07:00
b3338c84b6 Reuse the new omarchy-theme-set in omarchy-theme-next 2025-07-14 21:36:15 -07:00
bfc8d73300 Tune this up and make it prettier 2025-07-14 21:31:58 -07:00
45d6aac29c Add Theme Menu Switcher (#154)
* Add theme menu for quick theme switching

* Bind theme menu

* Fix current theme being selected

* Replace omarchy-theme-next binding with theme menu

* Add omarchy-theme-set and refactor theme menu script

* Add solid black fallback if background image does not exist in current theme
2025-07-14 21:17:04 -07:00
7aae9015a5 Make known potentially flaky package not halt installation
Ref #151
2025-07-14 21:10:43 -07:00
3edc8bb470 Add note about overwritting directly in here 2025-07-14 21:08:50 -07:00
005e284d59 Tweaks 2025-07-14 21:04:24 -07:00
46e8fa46ed Extensible, evenly spaced waybar styling (#156)
* Add override to only require one network interface online

* refactor: extensible, evenly spaced waybar style.css

- Use @define-color directive to define colour variables for each theme
(@foreground for text, @background for background-color)
- apply the colour variables in the main theme config, making it more
extensible
- make waybar elements more evenly spaced with consistent margin and
padding values
- add migration to apply the above changes to existing users

* Update style.css

better pixel spacing

---------

Co-authored-by: Ryan Hughes <1630358+ryanrhughes@users.noreply.github.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-07-14 20:56:54 -07:00
5a48f120ec Make wofi stylesheet user editable
Closes #167
Co-authored-by: @cannikin
2025-07-14 20:53:04 -07:00
5501d94896 Not used 2025-07-14 20:43:26 -07:00
1dd64a814a Add color and pacman animation to pacman installer
Closes #174, #129

Co-authored-by: @rockorager
2025-07-14 20:39:08 -07:00
ad6c1f0df1 Errant migration 2025-07-14 20:38:09 -07:00
72e863f6be Split out the packages that need a keyserver and rescue any failure with an explanation 2025-07-14 18:43:21 -07:00
8758b5d4dc Caused other problems 2025-07-14 18:37:02 -07:00
5672d04cb3 Set proper permissions 2025-07-14 18:22:28 -07:00
d4910dd855 Use a custom, known good keyserver to prevent install errors stemming from an inaccessible keyserver 2025-07-14 18:15:48 -07:00
244758fabb Use Liberation instead of Adwaita as default 2025-07-14 16:44:51 -07:00
46010f8e15 Correct monospace references 2025-07-14 16:34:06 -07:00
5739fa741c Migration to create default fontconfig 2025-07-14 16:20:54 -07:00
9157a85da2 Add a default fontconfig 2025-07-14 16:18:04 -07:00
691a881b6f Ensure that the Chromium file picker window is also floated and centered 2025-07-14 16:17:55 -07:00
44d2dc21ab Give a clue that you have to relaunch Hyprland for new envs to get picked up 2025-07-14 13:50:21 -07:00
d435a650cc Catch the Typora save window as well 2025-07-14 11:04:25 -07:00
10d332e5d1 Update matte-black theme for consistency (#164) 2025-07-14 10:42:40 -07:00
6ac1cd4bbe Add Synaptics to the fingerprint check (#172) 2025-07-14 10:39:22 -07:00
03f7403cdd Add migration to fix XCompose in Typora 2025-07-13 18:02:19 -07:00
3d060c384e Fix XCompose use in Typora 2025-07-13 18:01:08 -07:00
c9b1935054 Improve boot screen transition (#140)
* Working concept with SDDM

* Working concept without SDDM dep

* Working concept w/o SDDM and w/ UWSM

* Cleanup and UWSM tweaks

* Cleanup

* Remove call to seamless-login.sh

* Don't allow the progress to go backwards

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

This commit:

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

* Rely on 'order defined' for sorting

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

* Skip cache file for keybinds

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

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

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

---------

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

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

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

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Omarchy
Comment=Omarchy TUI
Exec=alacritty --class=Omarchy --title=Omarchy -e bash -c '$HOME/.local/share/omarchy/bin/omarchy'
Icon=Arch
Terminal=false
Categories=System;Utility;
StartupNotify=false

View File

@ -1,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

View File

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

137
bin/omarchy Executable file
View File

@ -0,0 +1,137 @@
#!/bin/bash
OMARCHY_VERSION=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null)
PATH="$PATH:$HOME/.local/share/omarchy/bin"
show_ascii_art() {
clear
cat <<'EOF'
▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ▄███▄▄▄▄███▄▄ ▀▀▀▀▀▀███
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ▀▀███▀▀▀▀███▀ ▄██ ███
███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ █▄ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ████████▀ ███ █▀ ▀█████▀
███ ███
EOF
echo " $OMARCHY_VERSION"
}
main_menu() {
show_ascii_art
local options=("Theme" "Setup" "Update" "Manual" "Exit")
choice=$(printf "%s\n" "${options[@]}" | gum choose --header "") || exit 0
case "$choice" in
Theme) theme_menu ;;
Update) update_menu ;;
Setup) setup_menu ;;
Manual) open_manual ;;
Exit) clear && exit 0 ;;
esac
}
update_menu() {
show_ascii_art
local menu=("Omarchy" "Waybar" "Wofi" "Plymouth" "Desktop apps" "Back")
local commands=(
"omarchy-update"
"omarchy-refresh-waybar"
"omarchy-refresh-wofi"
"omarchy-refresh-plymouth"
"omarchy-refresh-applications"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
theme_menu() {
show_ascii_art
local menu=("Install" "Remove" "Back")
local commands=(
"install_theme_prompt"
"remove_theme_prompt"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Theme") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
install_theme_prompt() {
local url
url=$(gum input --placeholder="Git repo URL for theme" --header="")
if [[ -n "$url" ]]; then
omarchy-theme-install "$url"
fi
theme_menu
}
remove_theme_prompt() {
local theme
theme=$(gum input --placeholder="Theme name" --header="")
if [[ -n "$theme" ]]; then
omarchy-theme-remove "$theme"
fi
theme_menu
}
setup_menu() {
show_ascii_art
local menu=("Fingerprint sensor" "Back")
local commands=(
"omarchy-fingerprint-setup"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Setup") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
open_manual() {
xdg-open "https://manuals.omamix.org/2/the-omarchy-manual"
}
ack_command() {
gum spin --spinner "globe" --title "Done!" -- sleep 1
}
main_menu

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

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

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

View File

@ -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/

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

@ -0,0 +1,36 @@
#!/bin/bash
yay -S --noconfirm --needed fprintd usbutils
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix'; 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*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
esac
}
# Main execution
show_power_menu

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

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

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

@ -0,0 +1,7 @@
#!/bin/bash
if gum confirm "Refresh Wofi config? This will replace your current settings with Omarchy defaults."; then
# Overwrite local waybar settings with the latest in Omarchy
cp -f ~/.local/share/omarchy/config/wofi/config ~/.config/wofi/ 2>/dev/null
cp -f ~/.local/share/omarchy/config/wofi/style.css ~/.config/wofi/ 2>/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\""

38
bin/omarchy-theme-install Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
# omarchy-theme-install: Install a new theme from a git repo for Omarchy
# Usage: omarchy-theme-install <git-repo-url>
if [ -z "$1" ]; then
echo "Usage: omarchy-theme-install <git-repo-url>"
exit 1
fi
REPO_URL="$1"
THEMES_DIR="$HOME/.config/omarchy/themes"
THEME_NAME=$(basename "$REPO_URL" .git)
THEME_PATH="$THEMES_DIR/$THEME_NAME"
THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds"
BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds"
BACKGROUNDS_THEME_PATH="$BACKGROUNDS_PATH/$THEME_NAME"
# Remove existing theme if present
if [ -d "$THEME_PATH" ]; then
rm -rf "$THEME_PATH"
fi
# Clone the repo directly to ~/.config/omarchy/themes
if ! git clone "$REPO_URL" "$THEME_PATH"; then
echo "Error: Failed to clone theme repo."
exit 1
fi
# Copy backgrounds if present
if [ -d $THEME_BACKGROUND_PATH ]; then
mkdir -p $BACKGROUNDS_THEME_PATH
cp $THEME_BACKGROUND_PATH/* $BACKGROUNDS_THEME_PATH/
fi
# Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME

38
bin/omarchy-theme-menu Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
CURRENT_THEME_NAME=$(basename "$(realpath "$CURRENT_THEME_DIR")")
# Build themes list with pretty display names
mapfile -t themes < <(
find "$THEMES_DIR" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) | while read -r path; do
filename=$(basename "$path")
display_name=$(echo "$filename" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g')
if [[ "$filename" == "$CURRENT_THEME_NAME" ]]; then
echo "<i>$display_name</i>"
else
echo "$display_name"
fi
done | sort
)
# Show Wofi menu (with markup support)
selection=$(printf '%s\n' "${themes[@]}" | wofi \
--show dmenu \
--allow-markup \
--width 150 \
--height 300 \
-O alphabetical \
--style ~/.local/share/omarchy/default/wofi/select.css)
# Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')
# Convert to lowercase and dash-separated: "Tokyo Night" -> "tokyo-night"
selected_theme=$(echo "$clean_selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
# Apply the selected theme
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme"

View File

@ -3,20 +3,22 @@
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_LINK="$HOME/.config/omarchy/current/theme"
THEMES=($(find "$THEMES_DIR" -mindepth 1 | sort))
THEMES=($(find "$THEMES_DIR" -mindepth 1 -maxdepth 1 | sort))
TOTAL=${#THEMES[@]}
# Get current theme from symlink
if [[ -L "$CURRENT_THEME_LINK" ]]; then
CURRENT_THEME=$(readlink "$CURRENT_THEME_LINK")
CURRENT_THEME=$(realpath "$CURRENT_THEME_LINK")
else
# Default to first theme if no symlink exists
CURRENT_THEME=${THEMES[0]}
CURRENT_THEME=$(realpath "${THEMES[0]}")
fi
# Find current theme index
INDEX=0
for i in "${!THEMES[@]}"; do
THEMES[$i]=$(realpath "${THEMES[$i]}")
if [[ "${THEMES[$i]}" == "$CURRENT_THEME" ]]; then
INDEX=$i
break
@ -28,22 +30,5 @@ NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_THEME=${THEMES[$NEXT_INDEX]}
NEW_THEME_NAME=$(basename "$NEW_THEME")
# Set current theme
ln -nsf "$HOME/.config/omarchy/backgrounds/$NEW_THEME_NAME" "$HOME/.config/omarchy/current/backgrounds"
ln -nsf "$NEW_THEME" "$HOME/.config/omarchy/current/theme"
# Touch alacritty config to pickup the changed theme
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart for new theme
pkill -SIGUSR2 waybar
makoctl reload
hyprctl reload
# Set new background
ln -nsf $(find "$HOME/.config/omarchy/current/backgrounds/" -type f | head -n 1) "$HOME/.config/omarchy/current/background"
pkill -x swaybg
setsid swaybg -i "$HOME/.config/omarchy/current/background" -m fill &
# Notify of the new theme
omarchy-theme-set $NEW_THEME_NAME
notify-send "Theme changed to $NEW_THEME_NAME" -t 2000

33
bin/omarchy-theme-remove Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# omarchy-theme-remove: Remove a theme from Omarchy by name
# Usage: omarchy-theme-remove <theme-name>
if [ -z "$1" ]; then
echo "Usage: omarchy-theme-remove <theme-name>"
exit 1
fi
THEME_NAME="$1"
THEMES_DIR="$HOME/.config/omarchy/themes"
BACKGROUND_DIR="$HOME/.config/omarchy/backgrounds"
CURRENT_DIR="$HOME/.config/omarchy/current"
THEME_PATH="$THEMES_DIR/$THEME_NAME"
BACKGROUND_PATH="$BACKGROUND_DIR/$THEME_NAME"
# Check if theme exists before attempting removal
if [ ! -d "$THEME_PATH" ]; then
echo "Error: Theme '$THEME_NAME' not found."
exit 1
fi
# Use readlink -f to resolve symlinks and get the absolute path
if [ "$(readlink -f "$CURRENT_DIR/theme")" = "$(readlink -f "$THEME_PATH")" ]; then
"$HOME/.local/share/omarchy/bin/omarchy-theme-next"
fi
# Now remove the theme directory and backgrounds for THEME_NAME
rm -rf "$THEME_PATH"
rm -rf "$BACKGROUND_PATH"

42
bin/omarchy-theme-set Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# omarchy-theme-set: Set a theme, specified by its name.
# Usage: omarchy-theme-set <theme-name>
if [[ -z "$1" ]]; then
echo "Usage: omarchy-theme-set <theme-name>" >&2
exit 1
fi
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
THEME_NAME="$1"
THEME_PATH="$THEMES_DIR/$THEME_NAME"
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
# Check if the theme entered exists
if [[ ! -d "$THEME_PATH" ]]; then
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2
exit 2
fi
# Update theme symlinks
ln -nsf "$BACKGROUND_PATH" "$HOME/.config/omarchy/current/backgrounds"
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 waybar
makoctl reload
hyprctl reload
# Set new background
first_bg=$(find "$HOME/.config/omarchy/current/backgrounds/" -type f | head -n 1)
if [[ -n "$first_bg" ]]; then
ln -nsf "$first_bg" "$HOME/.config/omarchy/current/background"
pkill -x swaybg
setsid swaybg -i "$HOME/.config/omarchy/current/background" -m fill >/dev/null &
fi

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

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

View File

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="family" qual="any">
<string>sans-serif</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>Liberation Sans</string>
</edit>
</match>
<match target="pattern">
<test name="family" qual="any">
<string>serif</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>Liberation Serif</string>
</edit>
</match>
<match target="pattern">
<test name="family" qual="any">
<string>monospace</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>CaskaydiaMono Nerd Font</string>
</edit>
</match>
<alias>
<family>system-ui</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
<alias>
<family>ui-monospace</family>
<default>
<family>monospace</family>
</default>
</alias>
<alias>
<family>-apple-system</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
<alias>
<family>BlinkMacSystemFont</family>
<prefer>
<family>Liberation Sans</family>
</prefer>
</alias>
</fontconfig>

View File

@ -1,49 +1,81 @@
# Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/
# You're encouraged to tailor your Hyprland config in this file by adding or overwriting any settings.
# But don't change anything that lives in ~/.local/share/omarchy, if you can help it!
# Those files are overwritten when Omarchy is updated.
# Change your personal monitor setup in here to keep the main config portable
source = ~/.config/hypr/monitors.conf
# 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
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
# env = MY_GLOBAL_ENV,setting
# Control your input devices
# See https://wiki.hypr.land/Configuring/Variables/#input
input {
# Use multiple keyboard layouts and switch between them with Alt + Space
# kb_layout = us,dk
# kb_options = compose:caps,grp:alt_space_toggle
# Change speed of keyboard repeat
repeat_rate = 40
repeat_delay = 600
# Increase sensitity for mouse/trackpack (default: 0)
# sensitivity = 0.35
touchpad {
# Use natural (inverse) scrolling
# natural_scroll = true
# Use two-finger clicks for right-click instead of lower-right corner
# clickfinger_behavior = true
# Control the speed of your scrolling
scroll_factor = 0.4
}
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, class:Alacritty

View File

@ -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,17 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
# Change to 1 if on a 1x display (then change last "auto" to 1 in monitor=)
# Change to something like 1.75 for fractional scaling (can work well with 1.66667 monitor scaling)
# Note: You must relaunch Hyprland after changing any env like this (use Super+Esc, then Relaunch)
env = GDK_SCALE,2
# Use single default monitor (see all monitors with: hyprctl monitors)
# 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

@ -1,126 +1,189 @@
{
"reload_style_on_change": true,
"layer": "top",
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"custom/dropbox",
"bluetooth",
"network",
"pulseaudio",
"cpu",
"power-profiles-daemon",
"battery"
],
"hyprland/workspaces": {
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"default": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"active": "󱓻"
},
"persistent_workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"group/tray-expander",
"bluetooth",
"network",
"pulseaudio",
"cpu",
"battery"
],
"hyprland/workspaces": {
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"default": "",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"active": "󱓻"
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty -e iwctl"
},
"battery": {
"interval": 5,
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "Charged ",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "GTK_THEME=Adwaita-dark blueberry"
},
"pulseaudio": {
"format": "",
"format-muted": "󰝟",
"scroll-step": 5,
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"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": "{}"
"persistent-workspaces": {
"1": [],
"2": [],
"3": [],
"4": [],
"5": []
}
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "GTK_THEME=Adwaita-dark blueberry"
},
"pulseaudio": {
"format": "{icon}",
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%",
"scroll-step": 5,
"format-muted": "󰝟",
"format-icons": {
"default": ["", "", ""]
}
},
"group/tray-expander": {
"orientation": "inherit",
"drawer": {
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": [
"custom/expand-icon",
"tray"
]
},
"custom/expand-icon": {
"format": " ",
"tooltip": false
},
"tray": {
"icon-size": 12,
"spacing": 12
}
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "GTK_THEME=Adwaita-dark blueberry"
},
"pulseaudio": {
"format": "",
"format-muted": "󰝟",
"scroll-step": 5,
"on-click": "GTK_THEME=Adwaita-dark pavucontrol",
"tooltip-format": "Playing at {volume}%",
"on-click-right": "pamixer -t",
"ignored-sinks": ["Easy Effects Sink"]
}
}

View File

@ -1,39 +1,46 @@
@import "../omarchy/current/theme/waybar.css";
* {
background-color: @background;
color: @foreground;
border: none;
border-radius: 0;
min-height: 0;
font-family: CaskaydiaMono Nerd Font;
font-family: CaskaydiaMono Nerd Font Propo;
font-size: 12px;
}
#workspaces {
margin-left: 7px;
.modules-left {
margin-left: 8px;
}
.modules-right {
margin-right: 8px;
}
#workspaces button {
all: initial;
padding: 2px 6px;
margin-right: 3px;
padding: 0 6px;
margin: 0 1.5px;
}
#custom-dropbox,
#tray,
#cpu,
#power-profiles-daemon,
#battery,
#network,
#bluetooth,
#pulseaudio,
#clock {
#clock,
#custom-power-menu {
min-width: 12px;
margin-right: 13px;
margin: 0 7.5px;
}
#custom-expand-icon {
margin-right: 12px;
}
tooltip {
padding: 2px;
}
tooltip label {
padding: 2px;
}
@import "../omarchy/current/theme/waybar.css";

73
config/wofi/style.css Normal file
View File

@ -0,0 +1,73 @@
/* Colors are defined by theme files and can be referenced via @base, @text, @selected-text, and @border */
* {
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);
}

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"

7
default/gpg/dirmngr.conf Normal file
View File

@ -0,0 +1,7 @@
keyserver hkps://keyserver.ubuntu.com
keyserver hkps://pgp.surfnet.nl
keyserver hkps://keys.mailvelope.com
keyserver hkps://keyring.debian.org
keyserver hkps://pgp.mit.edu
connect-quick-timeout 4

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/omarchy-theme-bg-next
bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu
# 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/omarchy-apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-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,12 +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
# Use XCompose file
env = XCOMPOSEFILE,~/.XCompose

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

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

@ -0,0 +1,73 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".config/wofi/style.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,14 @@
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 ~
# Add fun and color to the pacman installer
sudo sed -i '/^\[options\]/a Color\nILoveCandy' /etc/pacman.conf
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,23 +1,26 @@
# Copy over Omarchy configs
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Ensure application directory exists for update-desktop-database
mkdir -p ~/.local/share/applications
# Setup GPG configuration with multiple keyservers for better reliability
sudo mkdir -p /etc/gnupg
sudo cp ~/.local/share/omarchy/default/gpg/dirmngr.conf /etc/gnupg/
sudo chmod 644 /etc/gnupg/dirmngr.conf
sudo gpgconf --kill dirmngr || true
sudo gpgconf --launch dirmngr || true
# Use default bashrc from Omarchy
echo "source ~/.local/share/omarchy/default/bash/rc" >~/.bashrc
# Login directly as user, rely on disk encryption + hyprlock for security
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf >/dev/null <<EOF
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin $USER --noclear %I \$TERM
EOF
# Set common git aliases
git config --global alias.co checkout
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,7 +1,4 @@
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
# Start Hyprland on first session
echo "[[ -z \$DISPLAY && \$(tty) == /dev/tty1 ]] && exec Hyprland" >~/.bash_profile

115
install/login.sh Normal file
View File

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

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