245 Commits

Author SHA1 Message Date
df13763d42 Better extraction 2025-07-19 22:43:28 -05:00
81727a20ce Install everything needed for full Dropbox + split out other potentially flaky installs 2025-07-19 22:43:09 -05:00
aac9e158d1 Migration to add libappindicator-gtk3 2025-07-19 22:25:32 -05:00
b98634d06b Need libappindicator-gtk3 for Dropbox tray icon to work right 2025-07-19 22:24:42 -05:00
309c35c866 Extract shared function 2025-07-19 17:02:52 -05:00
4427c0bb28 Add full screen recording as an option 2025-07-19 16:58:22 -05:00
30b3af58e5 Use same naming convention as new screenshot flow 2025-07-19 16:49:50 -05:00
6b947ffb45 Add satty to the default screenshot flow 2025-07-19 16:49:39 -05:00
f569c4e365 Moving away from SIGUSER2 didn't help with the stacking, so return it 2025-07-19 15:11:52 -05:00
cf71a3f101 Ensure apps started with uwsm stay managed by uwsm on restarts 2025-07-19 15:11:32 -05:00
ceedf474cb Include failed attempt counter and notice when you are locked out for 10 mins
Closes #229
Co-authored-by: @jhosdev
2025-07-19 12:34:34 -05:00
178f97a6e3 We don't need the GUI for fcitx5
The fewer packages the better
2025-07-18 23:33:08 -05:00
f99277ad71 Remove needless comments 2025-07-18 23:00:42 -05:00
ca69f15709 Not needed 2025-07-18 22:58:48 -05:00
2e874adb50 Add simple screen recordings (#235)
* Add simple screen recording tool

* Need slurp too
2025-07-18 22:55:28 -05:00
3b0fd13be1 Set class/title in case we want to do window settings on it 2025-07-18 22:54:42 -05:00
f8a7e1c7eb Finish transition from audio settings GUI to TUI 2025-07-18 22:54:17 -05:00
ee5785855a Replace pavucontrol with wiremix (#225)
Add to install
2025-07-18 22:40:42 -05:00
7f681c71fb Extra CR 2025-07-18 17:44:18 -07:00
d76d31a5af Make these executable too 2025-07-18 17:43:20 -07:00
3c156ab059 Better error handling and make these full scripts 2025-07-18 17:43:01 -07:00
dbfad74ba3 Better error catching 2025-07-18 17:33:51 -07:00
56e1ba9c5d Merge branch 'master' into dev 2025-07-18 17:18:02 -07:00
68a188d299 Offer community help link 2025-07-18 17:17:42 -07:00
4df7fcb716 Merge pull request #233 from alansikora/alan/setup-fixes
Setup is failing
2025-07-18 17:13:10 -07:00
913675bd5e Creating plymouth-quit.service.d before running tee 2025-07-18 21:05:38 -03:00
56e25bd02c Update docker.sh 2025-07-18 21:05:29 -03:00
2224249901 Merge pull request #223 from ryanrhughes/improve-boot-times
Improve boot times
2025-07-18 14:52:26 -07:00
2b0c56bbb1 Merge pull request #220 from rmacklin/reset-any-stash-conflicts-before-proceeding-in-omarchy-update
Reset any stash changes before proceeding if there were conflicts
2025-07-18 14:40:39 -07:00
f388e90d3b Add migration for new Catppuccin Latte theme 2025-07-18 14:35:37 -07:00
cd915557ae Merge pull request #212 from ryanyogan/omarchy-catppuccin-latte-theme
Omarchy Theme ~ Adds Catppuccin Latte
2025-07-18 14:32:51 -07:00
96e87d8e7e Minify without quality loss 2025-07-18 14:31:57 -07:00
be751a3dde Merge pull request #223 from ryanrhughes/improve-boot-times
Improve boot times
2025-07-18 14:26:27 -07:00
786b0b2205 adds a light pastel background and official btop theme 2025-07-18 10:12:28 -05:00
ced618318d Mask 2025-07-18 05:12:36 -04:00
f5553a8d30 Update 1752797704.sh
MASK
2025-07-18 05:11:51 -04:00
e34dbe7d50 Create directories 2025-07-18 04:40:41 -04:00
19d45670ce Change when plymouth is dismissed and prevent docker blocking 2025-07-18 04:37:47 -04:00
4bb8afde02 Reset any stash changes before proceeding if there were conflicts
If the worktree has conflicts after applying the user's changes from the
autostash, we should reset them before proceeding to ensure we are in
a working state. When there are conflicts, git still keeps the stash
entry, so the user will still be able to manually re-pop the stash and
resolve the conflicts after `omarchy-update` has finished.

In the case of conflicts, the output will look something like this (I've
omitted most of the normal `git pull` output, hence the `[...]`):

```
Updating 729cd6a..45b5d3e
Created autostash: 91853c4
Fast-forward
 bin/omarchy                                                                |  10 +++++++---
 [...]
 create mode 100644 themes/tokyo-night/backgrounds/2--Milad-Fakurian-Abstract-Purple-Blue.jpg
Applying autostash resulted in conflicts.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
bin/omarchy:65: leftover conflict marker
```

before proceeding with the rest of the `omarchy-update` script from a
clean state. So the user will see 1) that there were conflicts when
applying the autostashed changes, 2) that their changes are still safe
in the stash, and 3) which files (and lines) had conflict markers.
2025-07-17 23:06:25 -07:00
49efa1c3f1 Add third Tokyo Night background 2025-07-17 22:35:02 -07:00
87e55b193b Merge pull request #215 from rmacklin/use-pull-autostash
Use `git pull --autostash` in `omarchy-update`
2025-07-18 00:42:16 -04:00
5252990396 increases the theme menu width for additional characters 2025-07-17 21:49:46 -05:00
276886af8e adds catppuccin logo 2025-07-17 21:35:22 -05:00
0e0741feb7 adds official catppuccin alacritty theme 2025-07-17 21:24:25 -05:00
cc0ac314ef Use git pull --autostash in omarchy-update
This is a minor follow-up to dcc4071979
to leverage the `--autostash` flag of `git pull` which does the same
thing we were doing in three separate commands.

This also avoids the possibility of popping something from the stash
that `omarchy-update` didn't actually stash. In other words, if the
initial `git stash` was a no-op (because there were no changes in the
working tree), it's actually not desirable for `omarchy-update` to
`git stash pop` at the end, since that potentially pops something the
user had manually stashed (we only want `omarchy-update` to pop its own
stash entry). Using `--autostash` handles this correctly.

Ref:
https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---autostash
2025-07-17 19:13:35 -07:00
98c269e6d5 adds catppuccin from base catppuccin theme 2025-07-17 21:11:34 -05:00
45b5d3ea47 Merge pull request #209 from basecamp/dev
Omarchy v1.5.0
2025-07-17 20:15:04 -04:00
d200cec03c removes not-needed styles 2025-07-17 19:14:15 -05:00
94afc734ef Merge pull request #210 from t0gun/fix-iwd-detection
fix: check for iwctl instead of iwd
2025-07-17 20:12:44 -04:00
5c7f1a5037 Add theme picking to the TUI 2025-07-17 17:03:40 -07:00
c76cd8f0c6 Fix paths for sub command invocation 2025-07-17 16:56:13 -07:00
45bab7a92e Will be set separately 2025-07-17 16:54:19 -07:00
2bcff1662b removes personal neovim configs 2025-07-17 18:50:58 -05:00
761f08982f Merge pull request #211 from tahayvr/omarchy-theme-set/dev
Add trigger to reload btop when theme changes
2025-07-17 19:44:11 -04:00
4097582572 Merge branch 'basecamp:dev' into dev 2025-07-17 18:36:03 -05:00
39604d2d48 Backgrounds now live in theme folders 2025-07-17 16:34:47 -07:00
ee74a87020 Add trigger to reload btop when theme changes 2025-07-17 16:33:36 -07:00
61c0bfd22b Seems like pinta can unfortunately also be a bit flaky! 2025-07-17 16:29:06 -07:00
f880531621 Stop wrapping wofi in uwsm for now as it was producing errors 2025-07-17 16:07:33 -07:00
49c38c835f Add migration for waybar/config.jsonc rename
Co-authored-by: @nullndr
Closes #169
2025-07-17 16:00:13 -07:00
7991835576 Use waybar/config.jsonc for syntax highlighting 2025-07-17 15:58:42 -07:00
51c2437f2a fix broken iwd check by validating iwctl instead 2025-07-17 18:57:37 -04:00
2696fb39da Protect theme-bg-next from missing background and always start with the first one 2025-07-17 15:34:21 -07:00
296e232151 Just use existing logic for setting theme bg 2025-07-17 15:29:57 -07:00
e2c8e3ccfe Pull backgrounds into the repo to simplify setup and theme selection
This was too complicated for something too remote
2025-07-17 15:16:37 -07:00
03a541a9a2 [THEME] // Adds initial catppuccin-latte base styles 2025-07-17 17:11:34 -05:00
86a3c84db9 Consistent command naming scheme for menus too 2025-07-17 15:04:46 -07:00
b9c782d142 Use consistent naming setup and expose add/remove in TUI 2025-07-17 15:02:20 -07:00
ef8df30f01 Add --remove option to fingerprint setup 2025-07-17 14:59:16 -07:00
9467b56be0 Uninstall packages too 2025-07-17 14:53:45 -07:00
68e77daffa Better setup flow and add --remove option 2025-07-17 14:51:59 -07:00
729cd6a3a2 Merge pull request #171 from icehunt/fido2-setup-script
add fido2-setup script
2025-07-17 17:39:09 -04:00
3f01ced913 Fixup migration 2025-07-17 14:32:22 -07:00
89fe64aa23 Merge pull request #206 from Shaps/add-docker-buildx
Add docker-buildx package
2025-07-17 17:31:17 -04:00
38417b36e9 Merge branch 'dev' into add-docker-buildx 2025-07-17 17:26:51 -04:00
fd087719a2 Merge pull request #204 from basecamp/light-mode-easy
Add light mode
2025-07-17 17:23:31 -04:00
e00c4ad0dc Link up the theme too 2025-07-17 14:22:01 -07:00
f38420e954 Fit more themes! 2025-07-17 14:18:09 -07:00
6e229feb43 light.mode sounds better! 2025-07-17 14:15:55 -07:00
bb5f6b00e3 Confirm before updating system packages 2025-07-17 14:12:58 -07:00
e9f0239f57 Stash/pop any local changes before pulling updates
More user customizations will survive without commits.
2025-07-17 14:12:58 -07:00
25459cb539 Confirm before updating system packages 2025-07-17 09:39:42 -07:00
dcc4071979 Stash/pop any local changes before pulling updates
More user customizations will survive without commits.
2025-07-17 09:39:31 -07:00
ea7d615eef add docker-buildx package 2025-07-17 11:46:12 +02:00
86bf311866 add option to opt out of sudo 2025-07-17 02:05:41 -07:00
2235332cb9 Let the themes include backgrounds directly 2025-07-16 22:32:35 -07:00
5170b7a653 Needless 2025-07-16 22:24:32 -07:00
53f77dd267 Add Rose Pine light theme 2025-07-16 22:08:28 -07:00
fb17d91fad Merge branch 'dev' into light-mode-easy 2025-07-16 21:49:23 -07:00
ebe38078de Disable uwsmifying wofi launcher until we can fix the issues 2025-07-16 21:49:17 -07:00
6542784559 Make light mode possible via gsettings based off a marker 2025-07-16 21:48:14 -07:00
9a2d8852d3 Kill waybar proper and restart on suspecion that SIGUSR2 is whats causing the stacking bug 2025-07-16 21:13:36 -07:00
4f565b743a Simpler shebang 2025-07-16 20:15:56 -07:00
c8656cb10f Merge pull request #201 from basecamp/firewall
Enable ufw firewall by default
2025-07-16 20:48:24 -04:00
a735337a59 Turn on ufw-docker 2025-07-16 16:56:40 -07:00
b1c5b420bc Add migration to enable firewall 2025-07-16 16:47:36 -07:00
e6e280dd84 Merge branch 'dev' into firewall 2025-07-16 16:46:50 -07:00
5c42f35839 Install and enable ufw firewall by default
Gotta be safe out there!
2025-07-16 16:46:35 -07:00
65933ad060 Merge pull request #182 from abenz1267/uwsm
use uwsm to properly wrap applications as systemd units
2025-07-16 17:31:36 -04:00
f52c261735 Update utilities.conf
Match latest
2025-07-16 14:30:56 -07:00
e9c7bbb490 uwsm: wrap gui exec-once applications with uwsm 2025-07-16 23:21:06 +02:00
f756d742da use uwsm to properly wrap applications 2025-07-16 23:19:55 +02:00
12a43ae400 Ensure all installers have a shebang line to specify bash
Closes #134
2025-07-16 14:19:03 -07:00
f4b172e029 Fix switching to background images with spaces in the filename
Fixes #138
2025-07-16 14:10:04 -07:00
ea9d451474 Don't hang the opening terminal 2025-07-16 13:15:12 -07:00
28dc1f505c No transparency on nautilus previews 2025-07-16 13:00:50 -07:00
4b13434cda Merge pull request #195 from basecamp/dev
Omarchy v1.4.1
2025-07-16 11:15:32 -04:00
3dfa4c3216 Start manual as a webapp 2025-07-16 08:13:27 -07:00
b95eae0e10 Actually fine just to use SIGUSR2 2025-07-16 07:42:04 -07:00
7098260e69 Refresh waybar configuration 2025-07-16 07:39:02 -07:00
419951a892 Full restart required 2025-07-16 07:33:22 -07:00
df19472350 On the first install its safe to overwrite 2025-07-16 07:29:08 -07:00
781a7888cb Move to fully user editable wofi styles
Closes #190
2025-07-16 07:11:36 -07:00
4ea0e65950 Fix indention 2025-07-16 06:37:40 -07:00
63d9710e62 Merge pull request #192 from mrtnin/master
Fix a botched merge in the waybar config
2025-07-16 09:37:07 -04:00
2a9ebc8ff9 Toggle wofi menus instead of stacking them
Closes #194
2025-07-16 06:33:12 -07:00
5e4167a0db Silence wofi output when run from cli 2025-07-16 06:30:57 -07:00
149feae288 Move the matte black theme migration forward
It was missed by several people by being older than where they were.
Closes #187
2025-07-16 06:27:03 -07:00
f464c6b8d0 Fix a botched merge 2025-07-16 12:57:10 +02:00
e7e5ff96eb Fix moved bin 2025-07-15 22:21:09 -07:00
10109bbadc Link backgrounds instead of copying 2025-07-15 22:00:25 -07:00
89bda8468e Turn omarchy-synthwave-theme into just synthwave for the name 2025-07-15 22:00:08 -07:00
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
dcd63233af added sudo support 2025-07-15 03:30:28 -07:00
f1761319e9 got testing for device working 2025-07-15 02:34:18 -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
0a8d3c3322 add fido2-setup script 2025-07-14 01:10:12 -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
204 changed files with 2610 additions and 859 deletions

View File

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

View File

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

View File

@ -1,10 +0,0 @@
[Desktop Entry]
Name=Bluetooth
Comment=Configure Bluetooth settings
Icon=bluetooth
Exec=env GTK_THEME=Adwaita-dark blueberry
Terminal=false
Type=Application
Categories=GTK;GNOME;Settings;HardwareSettings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
StartupNotify=true
NotShowIn=GNOME;KDE;Unity;

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

@ -2,7 +2,7 @@
Name=Neovim
GenericName=Text Editor
Comment=Edit text files
Exec=alacritty -e nvim -- %F
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F
Terminal=false
Type=Application
Keywords=Text;editor;

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,10 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Volume Control
Comment=Adjust the volume level
Exec=env GTK_THEME=Adwaita-dark pavucontrol
Icon=multimedia-volume-control
StartupNotify=true
Type=Application
Categories=AudioVideo;Audio;Mixer;GTK;Settings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;
Keywords=pavucontrol;PulseAudio;Microphone;Volume;Fade;Balance;Headset;Speakers;Headphones;Audio;Mixer;Output;Input;Devices;Playback;Recording;System Sounds;Sound Card;Settings;Preferences;

View File

@ -0,0 +1,7 @@
[Desktop Entry]
Name=Audio Settings
Comment=Using Wiremix
Exec=alacritty --class=Wiremix --title=Wiremix -e wiremix
Icon=audio-card
Type=Application
Terminal=false

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;

141
bin/omarchy Executable file
View File

@ -0,0 +1,141 @@
#!/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=("Pick" "Install" "Remove" "Back")
local commands=(
"omarchy-theme-menu"
"install_theme_prompt"
"remove_theme_prompt"
"main_menu"
)
local choice
choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Theme") || main_menu
for i in "${!menu[@]}"; do
if [[ "${menu[$i]}" == "$choice" ]]; then
if [[ "$choice" == "Back" ]]; then
main_menu
else
eval "${commands[$i]}"
ack_command
main_menu
fi
break
fi
done
}
install_theme_prompt() {
local url
url=$(gum input --placeholder="Git repo URL for theme" --header="")
if [[ -n "$url" ]]; then
omarchy-theme-install "$url"
fi
theme_menu
}
remove_theme_prompt() {
local theme
theme=$(gum input --placeholder="Theme name" --header="")
if [[ -n "$theme" ]]; then
omarchy-theme-remove "$theme"
fi
theme_menu
}
setup_menu() {
show_ascii_art
local menu=("Add fingerprint sensor" "Remove fingerprint sensor" "Add Fido2 device" "Remove Fido2 device" "Back")
local commands=(
"omarchy-setup-fingerprint"
"omarchy-setup-fingerprint --remove"
"omarchy-setup-fido2"
"omarchy-setup-fido2 --remove"
"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() {
setsid chromium --new-window --ozone-platform=wayland --app="https://manuals.omamix.org/2/the-omarchy-manual" >/dev/null 2>&1 &
clear
}
ack_command() {
gum spin --spinner "globe" --title "Done!" -- sleep 1
}
main_menu

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

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

View File

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

View File

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

View File

@ -4,7 +4,12 @@
# 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"
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).
@ -16,7 +21,10 @@ OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf"
# - 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" |
grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF |
sed 's/#.*//' |
sed '/^[[:space:]]*$/d' |
sort -u |
awk -F, '
{
# Strip trailing comments
@ -48,4 +56,4 @@ grep -h '^[[:space:]]*bind' "$USER_HYPRLAND_CONF" "$OMARCHY_BINDINGS_CONF" |
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\""
wofi -dmenu -i --width 60% --height 70% -p 'Hyprland Keybindings' -O alphabetical

View File

@ -1,25 +1,22 @@
#!/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() {
# The first characters are invisible sort keys.
local menu_options="\u200B Lock
\u200C󰤄 Suspend
\u200D Relaunch
\u2060󰜉 Restart
\u2063󰐥 Shutdown"
local selection=$(echo -e "$menu_options" | wofi --show dmenu --prompt "Power Options" --width 150 --height 195 -O alphabetical --style ~/.local/share/omarchy/default/wofi/select.css)
local selection=$(echo -e "$menu_options" | wofi --show dmenu --width 150 --height 195 -O alphabetical --style ~/.config/wofi/select.css)
case "$selection" in
*Lock*) hyprlock ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) hyprctl dispatch exit ;;
*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

5
bin/omarchy-refresh-hyprlock Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
# Overwrite local Hyprlock settings with the latest in Omarchy, but create a backup
cp -f ~/.config/hypr/hyprlock.conf ~/.config/hypr/hyprlock.conf.bak 2>/dev/null
cp -f ~/.local/share/omarchy/config/hypr/hyprlock.conf ~/.config/hypr/ 2>/dev/null

View File

@ -1,6 +1,6 @@
#!/bin/bash
if gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
if [[ "$1" == "-y" ]] || 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

View File

@ -1,11 +1,10 @@
#!/bin/bash
if gum confirm "Refresh Waybar config? This will replace your current Waybar settings with Omarchy defaults."; then
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/config.jsonc ~/.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 &
pkill -SIGUSR2 waybar
fi

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

@ -0,0 +1,8 @@
#!/bin/bash
if [[ "$1" == "-y" ]] || 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
cp -f ~/.local/share/omarchy/config/wofi/select.css ~/.config/wofi/ 2>/dev/null
fi

20
bin/omarchy-screenrecord Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
screenrecording() {
notify-send "Screen recording starting..." -t 1000
sleep 1
wl-screenrec \
-f "$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" \
--ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" \
"$@"
}
if pgrep -x wl-screenrec >/dev/null; then
pkill -x wl-screenrec
notify-send "Screen recording saved to ~/Videos" -t 2000
elif [[ "$1" == "output" ]]; then
screenrecording -o ""
else
region=$(slurp) || exit 1
screenrecording -g "$region"
fi

9
bin/omarchy-screenshot Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
hyprshot -m ${1:-region} --raw |
satty --filename - \
--output-filename ~/Pictures/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png \
--early-exit \
--actions-on-enter save-to-clipboard \
--save-after-copy \
--copy-command 'wl-copy'

33
bin/omarchy-setup-fido2 Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm libfido2 pam-u2f
sudo rm -rf /etc/fido2
sudo sed -i '\|^auth[[:space:]]\+sufficient[[:space:]]\+pam_u2f\.so[[:space:]]\+cue[[:space:]]\+authfile=/etc/fido2/fido2$|d' /etc/pam.d/sudo
echo -e "\e[32m\nYou've successfully removed the fido2 device setup.\e[0m"
else
yay -S --noconfirm --needed libfido2 pam-u2f
tokens=$(fido2-token -L)
if [ -z "$tokens" ]; then
echo -e "\e[31m\nNo fido2 device detected. Plug it in, you may have to unlock it as well\e[0m"
else
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m"
pamu2fcfg >/tmp/fido2 # This needs to run as the user
sudo mv /tmp/fido2 /etc/fido2/fido2
fi
# Add fido2 auth as an option for sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
if ! sudo echo -e "\e[32m\nPerfect! Now you can use your fido2 device for sudo.\e[0m"; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
fi
fi

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

@ -0,0 +1,43 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
yay -Rns --noconfirm fprintd
sudo rm -rf /etc/pam.d/polkit-1
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m"
else
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
fi

48
bin/omarchy-theme-bg-next Executable file
View File

@ -0,0 +1,48 @@
#!/bin/bash
# Cycles through the background images available
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/backgrounds/"
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
mapfile -d '' -t BACKGROUNDS < <(find "$BACKGROUNDS_DIR" -type f -print0 | sort -z)
TOTAL=${#BACKGROUNDS[@]}
if [[ $TOTAL -eq 0 ]]; then
notify-send "No background was found for theme" -t 2000
pkill -x swaybg
uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
else
# Get current background from symlink
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
else
# Default to first background if no symlink exists
CURRENT_BACKGROUND=""
fi
# Find current background index
INDEX=-1
for i in "${!BACKGROUNDS[@]}"; do
if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then
INDEX=$i
break
fi
done
# Get next background (wrap around)
if [[ $INDEX -eq -1 ]]; then
# Use the first background when no match was found
NEW_BACKGROUND="${BACKGROUNDS[0]}"
else
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}"
fi
# Set new background symlink
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
# Relaunch swaybg
pkill -x swaybg
uwsm app -- swaybg -i "$NEW_BACKGROUND" -m fill >/dev/null 2>&1 &
fi

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

@ -0,0 +1,36 @@
#!/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 | sed -E 's/^omarchy-//; s/-theme$//')
THEME_PATH="$THEMES_DIR/$THEME_NAME"
THEME_BACKGROUND_PATH="$THEME_PATH/backgrounds"
BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds"
BACKGROUNDS_THEME_PATH="$BACKGROUNDS_PATH/$THEME_NAME"
# Remove existing theme if present
if [ -d "$THEME_PATH" ]; then
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
# Link backgrounds if present
if [ -d $THEME_BACKGROUND_PATH ]; then
ln -snf $THEME_BACKGROUND_PATH $BACKGROUNDS_THEME_PATH
fi
# Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME

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

@ -0,0 +1,37 @@
#!/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 200 \
--height 400 \
-O alphabetical \
--style ~/.config/wofi/select.css 2>/dev/null)
# Remove any Pango markup before converting back to filename
clean_selection=$(echo "$selection" | sed -E 's/<[^>]+>//g')
# Convert to lowercase and dash-separated: "Tokyo Night" -> "tokyo-night"
selected_theme=$(echo "$clean_selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
# Apply the selected theme
"$HOME/.local/share/omarchy/bin/omarchy-theme-set" "$selected_theme"

View File

@ -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
"$HOME/.local/share/omarchy/bin/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"

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

@ -0,0 +1,54 @@
#!/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"
if [[ -d "$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds" ]]; then
BACKGROUND_PATH="$HOME/.config/omarchy/themes/$THEME_NAME/backgrounds"
else
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
fi
# 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"
# Change gnome modes
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
else
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Trigger btop config reload
pkill -SIGUSR2 btop
# Restart components to apply new theme
pkill -SIGUSR2 waybar
makoctl reload
hyprctl reload
# Set new background
"$HOME/.local/share/omarchy/bin/omarchy-theme-bg-next"

View File

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

View File

@ -10,8 +10,9 @@ else
last_updated_at=$(git log -1 --format=%cd --date=unix)
fi
# Get the latest
git pull
# Get the latest while trying to preserve any modifications
git pull --autostash
git diff --check || git reset --merge
# Run any pending migrations
for file in migrations/*.sh; do
@ -27,5 +28,5 @@ done
# Back to where we came from
cd - >/dev/null
echo -e "\e[32m\nUpdating system packages\e[0m"
yay -Syu
echo -e ""
gum confirm "Update system packages too?" && yay -Syu --noconfirm

View File

@ -1,37 +0,0 @@
#!/bin/bash
# Cycles through the background images available
BACKGROUNDS_DIR="$HOME/.config/omarchy/current/backgrounds/"
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
BACKGROUNDS=($(find "$BACKGROUNDS_DIR" -type f | sort))
TOTAL=${#BACKGROUNDS[@]}
# Get current background from symlink
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
else
# Default to first background if no symlink exists
CURRENT_BACKGROUND=${BACKGROUNDS[0]}
fi
# Find current background index
INDEX=0
for i in "${!BACKGROUNDS[@]}"; do
if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then
INDEX=$i
break
fi
done
# Get next background (wrap around)
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BACKGROUND=${BACKGROUNDS[$NEXT_INDEX]}
# Set new background symlink
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
# Relaunch swaybg
pkill -x swaybg
setsid swaybg -i "$NEW_BACKGROUND" -m fill >/dev/null 2>&2 &

2
boot.sh Normal file → Executable file
View File

@ -1,3 +1,5 @@
#!/bin/bash
ascii_art=' ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄████████ ▄█ █▄ ▄██ ▄
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███▄▄▄███

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,33 +1,39 @@
# 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 = uwsm app -- alacritty
$browser = uwsm app -- chromium --new-window --ozone-platform=wayland
$webapp = $browser --app
# Extra env variables
# env = MY_GLOBAL_ENV,setting
bind = SUPER, return, exec, $terminal
bind = SUPER, F, exec, uwsm app -- nautilus --new-window
bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, uwsm app -- spotify
bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker
bind = SUPER, G, exec, uwsm app -- signal-desktop
bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu
bind = SUPER, slash, exec, uwsm app -- 1password
# Extra bindings (overwrite existing binding with: unbind = SUPER, O)
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/"
@ -38,6 +44,13 @@ bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversation
bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# 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 {

View File

@ -1,6 +1,4 @@
# ────────────────────────────────────────────────────────────
# Hyprlock — minimal blur with ringed input
# ────────────────────────────────────────────────────────────
source = ~/.config/omarchy/current/theme/hyprlock.conf
general {
disable_loading_bar = true
@ -9,7 +7,7 @@ general {
background {
monitor =
color = rgba(26,27,38,1.0) # #1a1b26 solid color
color = $color
}
animations {
@ -23,18 +21,18 @@ 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_color = $placeholder_color
placeholder_text = Enter Password 󰈷 
check_color = rgba(68, 157, 171, 1.0)
fail_text = Wrong
check_color = $check_color
fail_text = <i>$PAMFAIL ($ATTEMPTS)</i>
rounding = 0
shadow_passes = 0

View File

@ -1,7 +1,8 @@
# 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 1.75 for fractional scaling
# 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)

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,104 +0,0 @@
{
"layer": "top",
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"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": "󱓻"
},
"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": "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"]
}
}

127
config/waybar/config.jsonc Normal file
View File

@ -0,0 +1,127 @@
{
"reload_style_on_change": true,
"layer": "top",
"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": "󱓻"
},
"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": "blueberry"
},
"pulseaudio": {
"format": "{icon}",
"on-click": "alacritty --class=Wiremix -e wiremix",
"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
}
}

View File

@ -1,22 +1,31 @@
@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,
#battery,
#network,
@ -25,15 +34,13 @@
#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";

View File

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

View File

@ -1,8 +1,11 @@
@import ".config/omarchy/current/theme/wofi.css";
@import ".local/share/omarchy/default/wofi/search.css";
/* Use by power menu, theme selector, and other menus without visible search bar */
@import ".config/wofi/style.css";
#input {
display: none;
opacity: 0;
margin-top: -200px;
}
@import ".config/omarchy/current/theme/wofi.css";

View File

@ -1,4 +1,4 @@
@import ".config/omarchy/current/theme/wofi.css";
/* Colors are defined by theme file and can be referenced via @base, @text, @selected-text, and @border */
* {
font-family: 'CaskaydiaMono Nerd Font', monospace;
@ -70,3 +70,5 @@ window {
#entry image {
-gtk-icon-transform: scale(0.7);
}
@import ".config/omarchy/current/theme/wofi.css";

View File

@ -15,7 +15,7 @@ zd() {
fi
}
open() {
xdg-open "$@" >/dev/null 2>&1
xdg-open "$@" >/dev/null 2>&1 &
}
# Directories

View File

@ -69,5 +69,5 @@ web2app-remove() {
# Ensure changes to ~/.XCompose are immediately available
refresh-xcompose() {
pkill fcitx5
setsid fcitx5 &>/dev/null &
uwsm app -- fcitx5 >/dev/null 2>&1 &
}

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

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,7 @@
exec-once = hypridle & mako & waybar & fcitx5
exec-once = swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- hypridle
exec-once = uwsm app -- mako
exec-once = uwsm app -- waybar
exec-once = uwsm app -- fcitx5
exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = wl-clip-persist --clipboard regular
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,104 +11,6 @@ bind = SUPER, G, exec, $messenger
bind = SUPER, O, exec, obsidian -disable-gpu
bind = SUPER, slash, exec, $passwordManager
bind = SUPER, space, exec, pkill wofi || wofi --show drun --sort-order=alphabetical --style="$HOME/.local/share/omarchy/default/wofi/search.css"
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, K, exec, ~/.local/share/omarchy/bin/omarchy-show-keybindings
# 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"
bind = SUPER, W, killactive,
# 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 tiling
bind = SUPER, J, togglesplit, # dwindle
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, V, togglefloating,
# Move focus with mainMod + arrow keys
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = SUPER, code:10, workspace, 1
bind = SUPER, code:11, workspace, 2
bind = SUPER, code:12, workspace, 3
bind = SUPER, code:13, workspace, 4
bind = SUPER, code:14, workspace, 5
bind = SUPER, code:15, workspace, 6
bind = SUPER, code:16, workspace, 7
bind = SUPER, code:17, workspace, 8
bind = SUPER, code:18, workspace, 9
bind = SUPER, code:19, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = SUPER SHIFT, code:10, movetoworkspace, 1
bind = SUPER SHIFT, code:11, movetoworkspace, 2
bind = SUPER SHIFT, code:12, movetoworkspace, 3
bind = SUPER SHIFT, code:13, movetoworkspace, 4
bind = SUPER SHIFT, code:14, movetoworkspace, 5
bind = SUPER SHIFT, code:15, movetoworkspace, 6
bind = SUPER SHIFT, code:16, movetoworkspace, 7
bind = SUPER SHIFT, code:17, movetoworkspace, 8
bind = SUPER SHIFT, code:18, movetoworkspace, 9
bind = SUPER SHIFT, code:19, movetoworkspace, 10
# Swap active window with the one next to it with mainMod + SHIFT + arrow keys
bind = SUPER SHIFT, left, swapwindow, l
bind = SUPER SHIFT, right, swapwindow, r
bind = SUPER SHIFT, up, swapwindow, u
bind = SUPER SHIFT, down, swapwindow, d
# Resize active window
bind = SUPER, minus, resizeactive, -100 0
bind = SUPER, equal, resizeactive, 100 0
bind = SUPER SHIFT, minus, resizeactive, 0 -100
bind = SUPER SHIFT, equal, resizeactive, 0 100
# Scroll through existing workspaces with mainMod + scroll
bind = SUPER, mouse_down, workspace, e+1
bind = SUPER, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Control Apple Display brightness
bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/apple-display-brightness -5000
bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +5000
bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/apple-display-brightness +60000
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Screenshots
bind = , PRINT, exec, hyprshot -m region
bind = SHIFT, PRINT, exec, hyprshot -m window
bind = CTRL, PRINT, exec, hyprshot -m output
# Color picker
bind = SUPER, PRINT, exec, hyprpicker -a
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,36 @@
# Launching
bind = SUPER, space, exec, pkill wofi || wofi --show drun -O alphabetical
bind = SUPER, K, exec, pkill wofi || ~/.local/share/omarchy/bin/omarchy-menu-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, pkill wofi || ~/.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, pkill wofi || ~/.local/share/omarchy/bin/omarchy-menu-power
# 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, omarchy-screenshot
bind = SHIFT, PRINT, exec, omarchy-screenshot window
bind = CTRL, PRINT, exec, omarchy-screenshot output
# Screenshots
bind = ALT, PRINT, exec, omarchy-screenrecord
bind = CTRL ALT, PRINT, exec, omarchy-screenrecord 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

@ -4,9 +4,15 @@ windowrule = suppressevent maximize, class:.*
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Float sound, bluetooth, and wifi settings
windowrule = float, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$
windowrule = size 800 600, class:^(org.pulseaudio.pavucontrol|blueberry.py|Impala)$
# Float and center settings and previews
windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy)$
windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer)$
windowrule = size 645 350, class:Omarchy
windowrule = center, class:^(blueberry.py|Impala|Wiremix|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)$
@ -16,7 +22,7 @@ windowrule = fullscreen, class:^(com.libretro.RetroArch)$
windowrule = opacity 0.97 0.9, class:.*
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv)$
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$
# Fix some dragging issues with XWayland
@ -24,7 +30,3 @@ windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned
# Proper background blur for wofi
layerrule = blur,wofi
# Float and cneter file pickers
windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?)
windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?)

View File

@ -20,6 +20,7 @@ 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 ()
{
@ -55,11 +56,16 @@ Plymouth.SetRefreshFunction (refresh_callback);
fun update_progress_bar(progress)
{
width = Math.Int(progress_bar.original_image.GetWidth() * progress);
if (width < 1) width = 1; # Ensure minimum width of 1 pixel
progress_bar.image = progress_bar.original_image.Scale(width, progress_bar.original_image.GetHeight());
progress_bar.sprite.SetImage(progress_bar.image);
# 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()
@ -90,11 +96,15 @@ fun hide_password_dialog()
fun start_fake_progress()
{
global.fake_progress = 0.0;
global.real_progress = 0.0;
# 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;
update_progress_bar(0.0);
}
fun stop_fake_progress()
@ -149,8 +159,12 @@ 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

10
install.sh Normal file → Executable file
View File

@ -1,8 +1,16 @@
#!/bin/bash
# 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
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
echo "Get help from the community: https://discord.gg/tXFUdasqhY"
}
trap catch_errors ERR
# Install everything
for f in ~/.local/share/omarchy/install/*.sh; do

View File

@ -1,3 +1,5 @@
#!/bin/bash
sudo pacman -S --needed --noconfirm base-devel
if ! command -v yay &>/dev/null; then
@ -8,4 +10,7 @@ if ! command -v yay &>/dev/null; then
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,3 +1,5 @@
#!/bin/bash
# Need gum to query for input
yay -S --noconfirm --needed gum

View File

@ -1,3 +1,5 @@
#!/bin/bash
yay -S --noconfirm --needed \
wget curl unzip inetutils impala \
fd eza fzf ripgrep zoxide bat \

View File

@ -1,20 +1,21 @@
#!/bin/bash
# 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

View File

@ -1,5 +1,7 @@
#!/bin/bash
# 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,9 +0,0 @@
BACKGROUNDS_DIR=~/.config/omarchy/backgrounds/
download_background_image() {
local url="$1"
local path="$2"
gum spin --title "Downloading $url as $path..." -- curl -sL -o "$BACKGROUNDS_DIR/$path" "$url"
}
for t in ~/.local/share/omarchy/themes/*; do source "$t/backgrounds.sh"; done

View File

@ -1,3 +1,5 @@
#!/bin/bash
# Install bluetooth controls
yay -S --noconfirm --needed blueberry

View File

@ -1,9 +1,9 @@
#!/bin/bash
yay -S --noconfirm --needed \
brightnessctl playerctl pamixer pavucontrol wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool \
wl-clip-persist \
nautilus sushi ffmpegthumbnailer gnome-calculator \
1password-beta 1password-cli gnome-keyring \
chromium mpv \
evince imv \
localsend-bin
brightnessctl playerctl pamixer wiremix wireplumber \
fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \
nautilus sushi ffmpegthumbnailer \
slurp wl-screenrec satty \
mpv evince imv \
chromium

View File

@ -1,3 +1,5 @@
#!/bin/bash
yay -S --noconfirm --needed \
cargo clang llvm mise \
imagemagick \

View File

@ -1,4 +1,6 @@
yay -S --noconfirm --needed docker docker-compose
#!/bin/bash
yay -S --noconfirm --needed docker docker-compose docker-buildx
# Limit log size to avoid running out of disk
sudo mkdir -p /etc/docker
@ -9,3 +11,12 @@ sudo systemctl enable docker
# Give this user privileged Docker access
sudo usermod -aG docker ${USER}
# Prevent Docker from preventing boot for network-online.target
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/no-block-boot.conf <<'EOF'
[Unit]
DefaultDependencies=no
EOF
sudo systemctl daemon-reload

26
install/firewall.sh Normal file
View File

@ -0,0 +1,26 @@
#!/bin/bash
if ! command -v ufw &>/dev/null; then
yay -Sy --noconfirm --needed ufw ufw-docker
# Allow nothing in, everything out
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow ports for LocalSend
sudo ufw allow 53317/udp
sudo ufw allow 53317/tcp
# Allow SSH in
sudo ufw allow 22/tcp
# Allow Docker containers to use DNS on host
sudo ufw allow in on docker0 to any port 53
# Turn on the firewall
sudo ufw enable
# Turn on Docker protections
sudo ufw-docker install
sudo ufw reload
fi

View File

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

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