Compare commits

...

1188 Commits

Author SHA1 Message Date
Ryan Hughes
b42dcf098b Merge pull request #4170 from basecamp/dev
v3.3.2
2026-01-08 17:18:41 -05:00
Ryan Hughes
6ae31aedae Update message 2026-01-08 17:17:32 -05:00
Ryan Hughes
63b0cd64bd Add update logger w/ analysis 2026-01-08 16:52:49 -05:00
Ryan Hughes
bf779a6bbc Add additional hardening for missing headers 2026-01-08 15:28:56 -05:00
Ryan Hughes
774b4700ef Extra hardening the driver swap 2026-01-08 13:44:34 -05:00
Ryan Hughes
400a87955e Use omarchy-pkg-add 2026-01-08 13:41:20 -05:00
David Heinemeier Hansson
fe48a16a90 Correct the accent color 2026-01-08 15:02:05 +01:00
David Heinemeier Hansson
78ef351269 Merge pull request #4148 from basecamp/dev
Omarchy 3.3.1
2026-01-08 13:51:47 +01:00
David Heinemeier Hansson
558cd68810 Bump version 2026-01-08 13:44:54 +01:00
David Heinemeier Hansson
067ec2bd71 Fix migration for when current theme is a directory, not a symlink
Closes #4147
2026-01-08 13:41:26 +01:00
David Heinemeier Hansson
ec4cd81e63 Fix the singletonlock issue properly 2026-01-08 13:18:55 +01:00
David Heinemeier Hansson
7c0a05cc70 Remove the SingletonLock that's present for some reason on new ISO installs
Closes #4149
2026-01-08 13:15:16 +01:00
David Heinemeier Hansson
70bdbfe545 Fix kitty cursor shape to match alacritty + ghostty 2026-01-08 10:49:44 +01:00
David Heinemeier Hansson
72b3b930c7 Drop the needless active_border_color/active_tab_background settings in favor of just using accent
Closes #4121
2026-01-08 10:32:21 +01:00
David Heinemeier Hansson
e08301dee2 Remove opencode binding (prefer c alias in terminal)
Closes #4124
2026-01-08 10:26:07 +01:00
David Heinemeier Hansson
9fc65dd2de Simplify the VSCode/derivatives theme setting 2026-01-08 10:22:10 +01:00
David Heinemeier Hansson
5603fb50fd Dramatically simplify omarchy-theme-set-obsidian
The cost is that only themes with a colors.toml file will get Obsidian
themeing.
2026-01-08 10:16:14 +01:00
David Heinemeier Hansson
037f034ece Merge pull request #4141 from timohubois/fix-migration-1767138576
fix(migrations-1767138576): split sed commands in scrolltouchpad migration
2026-01-08 10:00:19 +01:00
David Heinemeier Hansson
e95f8f2847 Merge pull request #4138 from Nm1ss/patch-1
Fix NVIDIA Legacy Driver for Older Professional/Workstation GPUs
2026-01-08 09:58:43 +01:00
Timo Hubois
8826aa10ca fix(migrations-1767138576): split sed commands in scrolltouchpad migration
The sed expression for converting scrolltouchpad syntax to Hyprland 0.53
format was broken across two lines, causing the second substitution
pattern to fail silently. Split into separate sed commands to ensure
both class:(pattern) and class:pattern formats are migrated correctly.
2026-01-08 09:34:38 +01:00
David Heinemeier Hansson
2851687bbb Fix use of accent colors 2026-01-08 09:18:22 +01:00
George
e25a00a38c Update NVIDIA GPU detection for legacy support on professional/workstation cards 2026-01-08 07:53:11 +01:00
David Heinemeier Hansson
7d9858a013 Run the gcc14 removal as early as possible 2026-01-07 23:51:08 +01:00
David Heinemeier Hansson
95bfb16cd4 Hotfix to remove gcc14 AUR package that would take eons to update 2026-01-07 22:05:54 +01:00
David Heinemeier Hansson
8873f03cb1 Merge pull request #4111 from basecamp/dev
Omarchy 3.3.0
2026-01-07 21:36:27 +01:00
David Heinemeier Hansson
a5f8ab3194 Bump version 2026-01-07 21:16:11 +01:00
David Heinemeier Hansson
17968cb2d3 Offer to reboot after reinstall 2026-01-07 20:58:57 +01:00
David Heinemeier Hansson
6cbca7825b Excess CR 2026-01-07 20:51:40 +01:00
David Heinemeier Hansson
eb8bd24d83 Now hosted on OPR 2026-01-07 20:03:41 +01:00
David Heinemeier Hansson
4bb8bfc44c Do not allow hibernation to be setup if its not supported 2026-01-07 19:51:00 +01:00
David Heinemeier Hansson
f3b9a90120 Fix conditional 2026-01-07 19:46:23 +01:00
David Heinemeier Hansson
2855712158 Ensure mirror and pkgs channels are always kept in sync as stable or edge 2026-01-07 19:45:00 +01:00
David Heinemeier Hansson
3489bf5ceb Fix perms 2026-01-07 19:34:56 +01:00
David Heinemeier Hansson
bc198c7270 Export the ref so we can refer to it during install 2026-01-07 19:31:42 +01:00
David Heinemeier Hansson
2063680c82 Move to correct location 2026-01-07 19:27:19 +01:00
David Heinemeier Hansson
d20e8351fc Don't show the voxtype icon when not recording/transcribing 2026-01-07 19:24:46 +01:00
David Heinemeier Hansson
cd8a6430e2 Use edge mirror for dev online installs 2026-01-07 19:14:32 +01:00
David Heinemeier Hansson
cfded08b94 Use OPR version of voxtype-bin 2026-01-07 19:05:57 +01:00
LunarLollipop
76b3e68c97 Fix hyprctl crash when screensaver is terminated (#4045)
Redirect hyprctl output in exit_screensaver() to prevent SIGABRT crash
when the screensaver window is closed externally (via keybind or lock screen).

The crash occurs because hyprctl's std::println() throws when writing to
a broken stdout after the terminal is killed.
2026-01-07 18:52:52 +01:00
David Heinemeier Hansson
f7f28bb655 Fix idle icon 2026-01-07 18:49:58 +01:00
David Heinemeier Hansson
ab5544ad61 Revise description 2026-01-07 18:41:14 +01:00
David Heinemeier Hansson
96479adbcd Get ready for opencode 1.1.6 2026-01-07 17:53:03 +01:00
Ryan Hughes
d207d505f5 Add initial omarchy skill for OpenCode (and friends) (#4090) 2026-01-07 17:19:53 +01:00
David Heinemeier Hansson
ed935bedef Correct download estimate 2026-01-07 13:50:14 +01:00
Rizky Fauzi Ilmi
1409cd7831 fix(fingerprint): Refactor fingerprint hardware check to use fprintd-list for device detection (#3948) 2026-01-07 13:46:08 +01:00
Pete Jackson
5800a0f4a1 Suppress generic post-install instructions in voxtype setup (#4106)
Voxtype v0.4.9 adds a --no-post-install flag that suppresses the
"Next steps" instructions after downloading the model. Since Omarchy
handles systemd setup, hotkey configuration, and displays its own
success notification, these generic instructions are redundant and
potentially confusing to users.

The flag still shows download progress, just suppresses the
post-download instructions.
2026-01-07 07:41:36 +01:00
Pierre Olivier Martel
eb904062f5 Add icons for additional audio profiles in Waybar (#4100)
* Add icons for additional audio profiles in Waybar

* Only keep the headphone icon
2026-01-07 07:39:00 +01:00
David Heinemeier Hansson
4a88ec876b Disable Copy-on-Write for the swap subvolume per best practices 2026-01-06 22:58:24 +01:00
David Heinemeier Hansson
59a7153d02 Make system sleep setup more prominent 2026-01-06 22:53:43 +01:00
David Heinemeier Hansson
7cafdfcef3 Fix OMARCHY_PATH 2026-01-06 22:51:25 +01:00
David Heinemeier Hansson
9c4a0c2abd Add sleep-then-hibernate after 30 minutes
Taken from
https://hacktheplanet.be/spells/Linux/4-suspend-then-hibernate-in-omarchy/
2026-01-06 22:49:32 +01:00
David Heinemeier Hansson
68ca8d8083 Add Super + Shift + Ctrl + L to lock system 2026-01-06 22:43:05 +01:00
David Heinemeier Hansson
a01ce9b563 Suspend example doesn't work any more 2026-01-06 22:40:19 +01:00
David Heinemeier Hansson
3dbebd7a4d Add option to enable/disable hibernation (#4103)
* Add option to enable/disable hibernation

* Actually do it

* Match hibernation toggle words

* Both enable and disable

* Match the tense

* Match options

* Remove excess CR
2026-01-06 22:36:40 +01:00
Reno
3a4536059a fix : typo (Nautilius -> Nautilus) (#4098) 2026-01-06 16:50:16 +01:00
David Heinemeier Hansson
9ae225a15a Add tweak to bring back suspend option to system menu 2026-01-06 16:45:12 +01:00
David Heinemeier Hansson
0b8bbdf01d Fix old tag:terminal style input config too 2026-01-06 14:01:17 +01:00
David Heinemeier Hansson
df3d07e41f Fix timeout correction 2026-01-06 13:55:52 +01:00
David Heinemeier Hansson
3da77ffc36 Don't need this piping 2026-01-06 13:31:46 +01:00
David Heinemeier Hansson
e08ef5866a Ensure it only matches the module activation 2026-01-06 13:26:37 +01:00
David Heinemeier Hansson
41c6048758 Patch is too brittle 2026-01-06 13:20:34 +01:00
David Heinemeier Hansson
ebc8a9ef62 Make patching more resilient 2026-01-06 13:09:51 +01:00
David Heinemeier Hansson
0d42f1bafe Add voice dictation with voxtype (#4088)
* Try with voxtype

* Update delay to prevent skipped characters

* Add removal of voxtype

* Use -bin package

* Fix for yay

* Nerdicons!

* Use new, subtle nerdfont glyphs instead of standard icons

* Do this in the waybar config instead

* Make voxtype a permanent fixture so it is not lost on waybar resets

* Record purpose

* Add Dictation hotkeys

* Tweak wording and point to config

* Reuse the same help

* Better communication

* Anticipate moving the package to OPR

* Clarify where the packages are coming from

* input group not needed when using hyprland hotkey

* Explain hotkey off

* Allow for changing of the model on right click

* Allow config on right click

* Be more specific

* Focus on config editing with waybar clicks

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2026-01-06 13:00:19 +01:00
Ryan Hughes
e3cd567f6f Move to themed and add sample 2026-01-05 16:32:46 -05:00
Ryan Hughes
103fc09dcf Add user-defined theme templates 2026-01-05 16:19:53 -05:00
David Heinemeier Hansson
3da8c2a023 Extract (almost) all chromium.theme files to use a template based on the background color 2026-01-05 21:47:23 +01:00
Ryan Hughes
ee37be1124 Merge pull request #4089 from basecamp/improve-rdp-ready-check
Improve RDP readiness check before launching VM
2026-01-05 15:27:50 -05:00
Ryan Hughes
7118ef6b19 Correct message 2026-01-05 15:27:44 -05:00
Ryan Hughes
e8880b5154 Simplify 2026-01-05 15:27:44 -05:00
David Heinemeier Hansson
a41cb03ac5 Always add user to input group to prevent restarts needed for dictation or xbox controllers 2026-01-05 17:38:45 +01:00
David Heinemeier Hansson
09f696aea4 Bring back the removal of conflicting limine.confs 2026-01-05 16:14:58 +01:00
David Heinemeier Hansson
54e5be18ea Fix use of stable mirror list when doing an online installation 2026-01-05 15:57:37 +01:00
David Heinemeier Hansson
503e4c765c Arrange a few more keybindings 2026-01-05 15:54:19 +01:00
David Heinemeier Hansson
37c37c0a87 Fix perms 2026-01-05 15:44:33 +01:00
David Heinemeier Hansson
40028a7fa9 Reload the opencode config when changing themes 2026-01-05 15:22:52 +01:00
David Heinemeier Hansson
8533d7ff3b Match new syntax 2026-01-05 15:16:27 +01:00
David Heinemeier Hansson
923d5fb0cd Extract the duplicated limine confs into distinct files (#4084)
* Extract the duplicated limine.conf into its own file

* Extract the /etc/limine/default config as well
2026-01-05 15:07:25 +01:00
David Heinemeier Hansson
88603ea9d6 Ensure the opencode directory is present 2026-01-05 13:30:08 +01:00
David Wales
b9b5de4751 Add example to enable touchpad while typing (#4075)
Useful for games!
2026-01-05 12:17:43 +01:00
Tsurgcom
1a5fdbc294 Make manifest version from 4 to 3 (#4080) 2026-01-05 12:17:18 +01:00
David Heinemeier Hansson
78b05bcc54 Just downgrade packages instead 2026-01-05 11:04:30 +01:00
David Heinemeier Hansson
3631695a7f Reinstall packages too when switching back to the stable branch 2026-01-05 11:03:29 +01:00
David Heinemeier Hansson
11d2d2f70e Extract the rest of the reinstall flow into separate parts 2026-01-05 11:00:56 +01:00
David Heinemeier Hansson
24a557ac7f Documentation 2026-01-05 10:53:24 +01:00
David Heinemeier Hansson
2fcaf4b6ff Extract all restart commands in consistent wrappers 2026-01-05 10:49:38 +01:00
David Heinemeier Hansson
13149f5fc9 Adapt to new theme setup 2026-01-05 10:47:19 +01:00
David Heinemeier Hansson
59b83b3585 Quiet config changes 2026-01-05 10:46:48 +01:00
David Heinemeier Hansson
f8f3dcb3ef Quiet hyprctl reload 2026-01-05 10:46:01 +01:00
David Heinemeier Hansson
3ed8e8e3c4 Quiet the normal execution 2026-01-05 10:45:50 +01:00
David Heinemeier Hansson
e2573b41c1 Silence running checks 2026-01-05 10:44:06 +01:00
David Heinemeier Hansson
2dca78cd83 Trigger the extracted new subcommand 2026-01-05 10:37:19 +01:00
David Heinemeier Hansson
60b7e4900f noconfirm 2026-01-05 10:36:12 +01:00
David Heinemeier Hansson
df3b1cbb82 Add a subcommand for reinstalling packages from the stable repository 2026-01-05 10:33:47 +01:00
David Heinemeier Hansson
ca40676657 Add documentation to Omarchy commands 2026-01-05 10:17:32 +01:00
David Heinemeier Hansson
3801e0e633 Move walker.desktop into default config directory
No need for a top-level directory just for this.
2026-01-05 09:13:38 +01:00
David Heinemeier Hansson
f4def40181 Ensure it doesn't race the screensaver 2026-01-04 21:08:04 +01:00
David Heinemeier Hansson
e8d063ef27 Ensure omarchy-cmd-shutdown can also be run from a terminal that'll be closed 2026-01-04 20:50:35 +01:00
David Heinemeier Hansson
4d81a8aaa7 Need a fully disowned schedule 2026-01-04 20:48:22 +01:00
David Heinemeier Hansson
e02925f257 Ensure the reboot can be triggered from a terminal that itself will be closed 2026-01-04 20:45:58 +01:00
Ryan Hughes
ef4ecdbfcf Add --no-edit option 2026-01-03 23:45:19 -05:00
David Heinemeier Hansson
7bf1c38937 Add extensions/menu.sh example 2026-01-03 18:28:46 -08:00
David Heinemeier Hansson
4a07b94cb6 Use theme config templates with singular color definition (#4053)
* Attempt to templaterize the theme specific files

* Cleanup

* Slim down

* Combine render into -set

* Pull out the dynamic template rendering again, but simpler

* Fix vars

* Variables are lowercase

* Better presentation

* Fix missing colors

* Provide stripped values too

* Fix colors for regular hex format

* Bring back explicit btop themes

They're too involved to derive from a basic color set

* Make an atomic swap of the theme directories

* No longer used by walker to cancel

* Explain why

* Remove redundant const

* Consistent const naming

* No longe have $THEMES_DIR

* Correct the blue

* Set opencode colors too

* Fix colors for readability

* Move the templates together with the others in default

* Split user themes and default themes

* Fix paths

* Look for both user themes and default themes

Plus speed things up

* Migrate to the new setup where default themes live inside omarchy

* Explicitly store the name of the current theme

* Cleanup

* No longer need omarchy-theme-next since themes are now fully rendered, not symlinks

* Get current theme name from the new theme.name file

* Look for user background images in dedicated directory

* Need yq for toml

* Need yq to parse colors.toml

* Look for backgrounds matching the new theme.name

We no longer have symlinks

* Migrate existing user backgrounds to the new proper location

* Install user backgrounds in the correct path

* Fix quoting

* Just rely on the system theme for opencode and get ready for USRSIG2 being available to live reload

* Fix template generation for rgb colors
2026-01-03 18:22:14 -08:00
David Heinemeier Hansson
de2757466b Add opencode (#4071) 2026-01-03 16:50:10 -08:00
David Heinemeier Hansson
6dfa5f0807 This would trigger before screensaver/hyprlock
So need a different way to deal with resetting of the idle timer
2026-01-03 16:21:22 -08:00
David Heinemeier Hansson
4e802d8058 No longer used either 2026-01-03 14:18:07 -08:00
David Heinemeier Hansson
5e75c2d3a9 Never did use pinning
Better served with our stable setup
2026-01-03 14:16:22 -08:00
David Heinemeier Hansson
d20ad9032f Label hyprwhspr as Dictation and launch setup post install 2026-01-03 14:02:38 -08:00
David Heinemeier Hansson
9e2ff7be1d Allow menu extensions to be set by the user
Closes #4012
Co-authored-by: @DarrenVictoriano
2026-01-03 13:57:26 -08:00
Ryan Hughes
e1b3a88126 Add hyprwhspr to AI install menu 2026-01-03 16:34:53 -05:00
Ryan Hughes
16a9bc295c Add --no-sudo and --print to debug 2026-01-03 16:34:53 -05:00
David Heinemeier Hansson
fdee76e2d2 Fix windowrule sizing changes 2026-01-03 13:31:50 -08:00
Justin Mißmahl
941e1c2dd8 omarchy remove dev (#4065)
Co-authored-by: JustinMissmahl <github@emeruslabs.com~>
2026-01-03 13:23:43 -08:00
David Heinemeier Hansson
c723411049 Comply with changed layerrule syntax in Hyprland 0.53 2026-01-03 13:10:43 -08:00
Ryan Hughes
c82b1bfb7e Add --print option to output keybindings to terminal 2026-01-03 13:34:30 -05:00
David Heinemeier Hansson
36095c1ac8 Fix with variable 2026-01-02 21:20:52 -08:00
David Heinemeier Hansson
57bbe425df Unused variable 2026-01-02 21:20:44 -08:00
Vaibhav Verma
d90bc6d3f3 Add theming support for VSCodium (#2519) 2026-01-02 21:09:17 -08:00
Omar Skalli
dbc3c006dd Make sure to re-install chromium google accounts when refreshing config (#1737) 2026-01-02 20:58:42 -08:00
David Heinemeier Hansson
807c74d405 The idle counter is reset between each listener
Re: #641
Co-authored-by: @marcinczenko
2026-01-02 20:31:16 -08:00
David Heinemeier Hansson
a9cea21463 Add missing up/down for moving workspaces to other monitors
Closes #844
Co-authored-by: @erdostom
2026-01-02 20:14:17 -08:00
Jeff Nunn
c832b7dc75 Skip "press any key" message when user cancels TUI or Web App install (#3866)
with Ctrl+C
2026-01-02 20:03:54 -08:00
David Heinemeier Hansson
b08b419bfc Use encapsulated reboot command 2026-01-02 19:49:52 -08:00
Pierre Olivier Martel
2643967424 Use omarchy-launch-audio stub in waybar and menu (#4043)
* Use omarchy-launch-audio in waybar

* Use omarchy-launch-audio in omarchy-menu
2025-12-31 18:13:12 -07:00
Derek Wierson
64f254653f Fix windowrule syntax change for kanagawa theme (#4032) 2025-12-31 17:12:09 -07:00
Lázaro Nixon
687ac4567e Add github-copilot-cli to the AI install menu (#4041)
* Add github-copilot-cli to the AI install menu

* Mark the copilot package as coming from AUR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-31 17:06:22 -07:00
Pierre Olivier Martel
72cecc600d Move btop binding to Control Panels utilities (#4042)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-31 17:03:23 -07:00
Marco Troisi
7fbc139cb5 Google Maps as a default webapp (#4028)
* Google Maps as a default webapp

* Using icon from DashboardIcons
2025-12-30 16:27:01 -08:00
me
7c213db46d add fresh to omarchy-launch-editor (#4015)
fixes #4014
2025-12-30 16:22:41 -08:00
LunarLollipop
5dd4bec68a Fix Hyprland 0.53 windowrule syntax breaking changes (#4025)
* Fix Hyprland 0.53 windowrule syntax breaking changes

Hyprland 0.53 introduced breaking changes to windowrule syntax:

- Props now use `match:` prefix: `class:pattern` → `match:class pattern`
- Boolean effects require `on` suffix: `float` → `float on`
- Snake_case naming: `nofocus` → `no_focus`, `stayfocused` → `stay_focused`
- `noborder` replaced with `border_size 0`
- `noanim` replaced with `animation none`
- layerrule syntax: `noanim, X` → `animation none, match:namespace X`
- `misc:new_window_takes_over_fullscreen` → `misc:on_focus_under_fullscreen`

See: https://github.com/hyprwm/hyprland-wiki/pull/1278

* Correct for the new style

* Migrate the scrolltouchpad setting in userland too

* Need a reboot to pair with new Hyprland

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-30 16:21:59 -08:00
David Heinemeier Hansson
4311a00ca4 Just install latest node 2025-12-30 15:40:02 -08:00
Ryan Hughes
cd224e7ecd Merge pull request #3956 from ashddev/fix/nvidia-legacy-driver-for-older-gpus
fix(nvidia): install legacy NVIDIA driver on older GPUs
2025-12-28 13:42:13 -05:00
Ryan Hughes
7e12473f80 Don't continue if we don't have a GPU 2025-12-28 13:27:52 -05:00
Ryan Hughes
2c7480135a Add migration 2025-12-28 13:27:33 -05:00
Ryan Hughes
df0a019c6a Add migration 2025-12-28 12:34:13 -05:00
Jack Blakely
083715c8c6 Fix omarchy-update failing outside Hyprland session (#4002) 2025-12-28 08:46:44 -08:00
Ryan Hughes
d0aabc162a Add packages to others 2025-12-27 22:20:44 -05:00
Ryan Hughes
e416988d4e Rearrange and don't hard-fail 2025-12-27 22:20:38 -05:00
Ryan Hughes
314abce4e8 We know what we're doing 2025-12-27 21:47:17 -05:00
Ryan Hughes
fe8927b351 Simplify further 2025-12-27 21:46:43 -05:00
Ryan Hughes
13390441a9 Don't need to run this 2025-12-27 21:42:35 -05:00
Ryan Hughes
65a238d805 Simplify 2025-12-27 21:42:26 -05:00
Ryan Hughes
c535b19235 These already get installed or are dependencies 2025-12-27 21:06:04 -05:00
Ryan Hughes
9c8c789453 Simplify this check 2025-12-27 21:05:45 -05:00
Jan L. Große
2bc88ebf25 Update PostgresSQL version in installation script from 17 to 18 (#3990)
Bumping PostgresSQL DB from 17 to 18.
2025-12-26 21:11:03 +01:00
David Heinemeier Hansson
2573da8f5e Make impressionism the default 2025-12-24 22:40:19 +01:00
David Heinemeier Hansson
e44e937284 Ensure that noidle is turned off after update is complete
Closees #3982
Co-authored-by: @sgruendel
2025-12-24 19:25:18 +01:00
David Heinemeier Hansson
fd952c2323 Add The Backwater as a second Gruvbox background image 2025-12-24 18:27:49 +01:00
Ash Daly
4e09523127 fix(nvidia): do not install nvidia-580xx-dkms for GPUs older than Maxwell 2025-12-23 11:19:11 +00:00
Fredrik Mikal Wold
643cf35448 fix: stop paging git diff output when running omarchy-update (#3959)
* fix: stop paging git diff output when running omarchy-update

* Keep option list similar between the two

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-22 13:56:02 -08:00
Ash Daly
1fd1b65cd0 chore: add noconfirm to yay command 2025-12-21 16:13:53 +00:00
Ash Daly
9a704fdadb chore: edit comment 2025-12-21 16:12:06 +00:00
Ash Daly
a252a42772 fix(nvidia): install legacy driver on older GPUs 2025-12-21 16:11:05 +00:00
David Heinemeier Hansson
c59089e9f3 Use omarchy-launch-* stubs for all control panels 2025-12-18 16:24:55 -08:00
David Heinemeier Hansson
ca8f25fba1 Switch to our bluetooth launcher 2025-12-18 13:54:27 -08:00
David Heinemeier Hansson
dae89574dd Add Super + Ctrl + A/B for Audio and Bluetooth controls
Also, move waybar-less information notifications to Super + Ctrl + Alt +
T/B to make room. These are very specialized and probably not broadly
used.

Closes #3909
Co-authored-by: @ddVital
2025-12-18 09:19:38 -08:00
SantiagoH10
49a9ce14b8 fix: unquoted variable expansion was breaking omarchy-launch-about (#3933) 2025-12-18 09:08:13 -08:00
David Heinemeier Hansson
d2ea6ad183 Canceling the screensaver on mouse movement doesn't work with bluetooth mice
Could not get it to stop existing with a Logitech MX4 when connected via
bluetooth.
2025-12-17 15:04:10 -08:00
David Heinemeier Hansson
d5066561ca Got lost on a bad merge
Closes #3853
Co-authored-by: @nirabyte
2025-12-16 09:24:38 -08:00
Diogo Ferreira
fe9493bd86 openai-codex-bin -> openai-codex in menus (#3894)
This was done in a migration in 0588cc8e5b but the menu entry was never updated. So, installs after the migration will get the outdated version.

Added a new migration as well for those that installed after the
previous one.
2025-12-16 07:50:45 -08:00
David Heinemeier Hansson
f578880bc8 Guard against crash bug when scrolling over expand icon in tray
Closes #3892
2025-12-16 07:49:17 -08:00
David Heinemeier Hansson
7ce838565c Add missing dotnet-runtime-9.0 needed for Pinta
Closes #3859
2025-12-16 07:41:52 -08:00
Ryan Hughes
aacc40c954 Alert user if unable to restart 2025-12-15 19:58:59 -05:00
Ryan Hughes
f3b9ca2149 Prevent error if service doesn't exist 2025-12-15 18:47:13 -05:00
David Heinemeier Hansson
ee8f62d967 Only run update if limine-update is available
It won't be on grub
2025-12-15 14:48:44 -08:00
David Heinemeier Hansson
32592e2e28 Merge pull request #3852 from basecamp/dev
Omarchy 3.2.3
2025-12-15 14:09:38 -08:00
David Heinemeier Hansson
adf7fba2b3 Prepare for release 2025-12-15 10:20:44 -08:00
David Heinemeier Hansson
021d66f9b6 Channel changes should prompt a full update 2025-12-15 10:04:00 -08:00
David Heinemeier Hansson
1a34be257c Add backdoor to start alacritty
Will help folks who have trouble with ghostty to still get a terminal
going
2025-12-15 09:58:08 -08:00
David Heinemeier Hansson
1f4c50eddf Pull noidle setting out into its own step 2025-12-15 09:55:09 -08:00
Ryan Hughes
92af9f41f2 Reorder 2025-12-15 12:38:28 -05:00
Ryan Hughes
8ed20d0524 And create the folder 2025-12-15 12:35:47 -05:00
Ryan Hughes
2d00b2a02f Actually add the config in the migration 2025-12-15 12:35:05 -05:00
David Heinemeier Hansson
97396f5fb2 Fix excessive size for Fizzy 2025-12-15 08:28:28 -08:00
Wolfgang Woehl
46c85e49a3 Quit Walker before screensaver launch (#3873)
Screensaver launch is broken when Walker is open: It will fail to go fullscreen and exits right after input read's first iteration, due to the screensaver_in_focus() check. See https://github.com/basecamp/omarchy/issues/2992 for an example report.

This addition will silently quit an opened Walker menu before launching the screensaver terminal. It is mildly intrusive, alas, as a return from screensaver will not present the pre-screensaver state exactly.
2025-12-15 08:24:31 -08:00
David Heinemeier Hansson
8357dd3da2 Use the traffic light metaphor for channel setting 2025-12-14 12:40:12 -08:00
David Heinemeier Hansson
860624d3f4 Add channel setting menu 2025-12-14 12:34:20 -08:00
Ryan Hughes
a15d3740a9 Increase faillock to 10 2025-12-14 15:32:40 -05:00
Ryan Hughes
7b05dcfe0c Merge pull request #1894 from sgruendel/mkinitcpio_module_thunderbolt
Add thunderbolt module in omarchy hook.
2025-12-14 15:25:55 -05:00
Ryan Hughes
df8b69bf27 Add portal restart to pickup changes 2025-12-14 15:24:48 -05:00
David Heinemeier Hansson
f39c2a91a5 Run the migration after switching channel 2025-12-14 12:24:20 -08:00
Ryan Hughes
906baa8fee Rework migration 2025-12-14 15:19:35 -05:00
Ryan Hughes
457b954db5 Move module to a separate file 2025-12-14 15:19:25 -05:00
Ryan Hughes
9b78e3c571 Enable btrfs quota to allow space-aware algorithms to work
Co-authored-by: Raul Salinas <nacapulque@gmail.com>

Replaces #3858

Fixes #3850
Fixes #3055
2025-12-14 14:23:28 -05:00
Ryan Hughes
88e9c9db49 Tell the user what we're doing 2025-12-14 14:19:37 -05:00
Ryan Hughes
64a8d7bb04 Add new default limine location for archinstall
Co-authored-by: madhurdhama <madhurdhama@gmail.com>
2025-12-14 13:06:43 -05:00
Ryan Hughes
c11a1c7989 Merge pull request #3492 from SoAp9035/fix-limine-uki-path
fix the UKI directory checks in omarchy-refresh-limine
2025-12-14 12:51:46 -05:00
Ryan Hughes
c37ef6d78c Update limine logic to check all .conf locations
Co-authored-by: Tjalve Aarflot <tjalve.github@proton.me>
2025-12-14 12:47:21 -05:00
Ryan Hughes
4d5dab3e32 Add walker emergency mode entry 2025-12-14 11:33:43 -05:00
Ryan Hughes
133d54f600 Refresh daemon if we change it 2025-12-14 11:32:39 -05:00
Ryan Hughes
4194c649a1 Restarts handled via systemd now 2025-12-14 11:09:16 -05:00
Ryan Hughes
33eabb0c88 Change to non-git version 2025-12-13 20:29:31 -05:00
Ryan Hughes
573cbd8ec3 Prevent idle while updating 2025-12-13 19:12:25 -05:00
Ryan Hughes
fec0731c17 Merge pull request #3857 from basecamp/share-picker
Add better portal share picker
2025-12-13 00:50:27 -05:00
Ryan Hughes
abffb0abfe Add hyprland-preview-share-picker 2025-12-13 00:44:24 -05:00
Ryan Hughes
5789c0a1fb Add themes for share pickers 2025-12-13 00:44:24 -05:00
Søren H Johansen
4e37a766ac Remove deprecated and unsupported Kitty settings (#3849)
The following options are no longer recognized by Kitty and caused warnings during startup:

window_padding_height

show_window_resize_notification

single_instance

They have been removed to keep the configuration compatible with current Kitty versions.
2025-12-12 10:21:45 +01:00
David Heinemeier Hansson
ccc147229e Force an update of the index DBs
This will prevent folks from ending up with index DBs that are out of
sync with their channel
2025-12-11 15:33:36 +01:00
David Heinemeier Hansson
6bd9d510d6 Add back alacritty as a default install to deal with machines that can't run Ghostty
Alacritty is more broadly supported
2025-12-11 15:30:25 +01:00
Alessandro Scalzulli
a22668fe17 fix(mako): show notifications over fullscreen apps (#3838)
Added line  layer=overlay to core.ini config
2025-12-11 15:23:48 +01:00
Ahum Maitra
1c59f1ae62 enhancement : Fixed the messy and long command (#3842) 2025-12-11 15:22:46 +01:00
David Heinemeier Hansson
c67856b9b6 Clarify purpose 2025-12-08 10:59:25 +01:00
Timo Hubois
12cba29e2e feat(bitwarden): Use float by default (#3734)
- Similar to current 1Password configuration
2025-12-08 10:54:24 +01:00
David Heinemeier Hansson
20fde4d71a Add new Ethereal background image
Closes #3741
Co-authored-by: @s-pra1ham
2025-12-08 10:53:19 +01:00
jazzzooo
8780db4bf0 feat: support mullvad-browser private window launch (#3756) 2025-12-08 10:41:06 +01:00
David Heinemeier Hansson
b2bd95197a Include webapps in omarchy-refresh-applications 2025-12-08 10:38:13 +01:00
Dakota Chambers
c90e93b5fc Add Fizzy webapp (#3759)
* Add Fizzy webapp

* Replace icon
2025-12-08 10:34:17 +01:00
Lennart Ochel
3af42f6be1 Fix omarchy-launch-browser for microsoft-edge (#3763) 2025-12-08 10:30:57 +01:00
robergd83
03f04386ec Enable independent screensaver effects on multi-monitor setups (#3781)
Updated the `omarchy-cmd-screensaver` script to allow screensaver effects to run independently on each monitor in multi-display configurations.

Previously, the effect loop waited for all animations on all monitors to finish before starting the next effect. With this change, each monitor handles its own effect cycle independently, improving smoothness and responsiveness in multi-monitor setups.
2025-12-08 10:27:07 +01:00
Dimitrie Hoekstra
9dc8e0c051 Enable tiny-dfr and t2fanrd services on T2 Macs (#3792) 2025-12-08 10:24:07 +01:00
David Wales
c5ebad0b67 Add example to enable three-finger drag in input configuration (#3798)
* Add example to enable three-finger drag

* Clarify comment

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-12-08 10:22:09 +01:00
Miras Mustimov
9691e638b2 fix: avoid layout shift on screensaver close (#3804) 2025-12-08 10:18:46 +01:00
Lennart Breede
fef12b6c0e Added Iosevka to font menu (#3811) 2025-12-08 10:14:25 +01:00
David Heinemeier Hansson
fc04525f03 Suspend is not properly supported on a lot of computers
Can't suggest an option that doesn't work much of the time
2025-12-08 10:10:28 +01:00
David Heinemeier Hansson
cfbfb2ffed Offer reboot if kernel was changed during channel change
Closes #3787
2025-12-08 09:50:48 +01:00
Wolfgang Woehl
ddf0d1e8e0 Exit screensaver when mouse moves or clicks (#3723)
Turns out there are control codes for tracking mouse actions in xterm-compatible terminal emulators (mind blown).

This patch adds mouse action awareness to our beloved screensaver setup:

- on setup it sends the respective control codes for movement and click detection
- in the main loop it opens up the input reader to read raw bytes and, thus, enable to detect even so much as a mouse's squeak

Personally, I love swiping my trackpad to exit screensaver. But the explicit pressing-a-key to exit is nice, also.

And I don't know if many people have jitter issues with their mouses or trackpads. Reckon, if they had they wouldn't get to see the glory that TTE is anyway, ever :)

This is tested and working in Ghostty. Sorry for the low-effort testing.
2025-12-02 12:09:02 +01:00
David Heinemeier Hansson
029000abb0 Overloading doesn't work when you have two tiling groups next to each other 2025-12-01 15:51:50 +01:00
Stefan Gründel
0a9e7205c3 add bolt to omarchy base packages 2025-12-01 13:34:24 +01:00
Stefan Gründel
a810b8058b Merge branch 'dev' into mkinitcpio_module_thunderbolt 2025-12-01 13:29:23 +01:00
David Heinemeier Hansson
b9792f7ba1 Don't submit empty passwords on lock screen 2025-12-01 11:10:21 +01:00
Stefan Gründel
9450ac868e fix expand icon in post install message (#3691) 2025-11-30 21:01:35 +01:00
Ahmed Abdelhafiez
add215c464 fix: restore last notification command typo (#3694) 2025-11-30 21:01:21 +01:00
David Heinemeier Hansson
306714f825 Ensure Walker service is started automatically on boot for new installations
Ref: #1684
2025-11-30 20:51:19 +01:00
Ryan Hughes
8a37f3dce7 Merge pull request #3683 from basecamp/dev
Omarchy 3.2.2
2025-11-28 20:13:08 -05:00
David Heinemeier Hansson
03be87b42c Bump for upcoming release 2025-11-28 16:50:09 -08:00
David Heinemeier Hansson
d6aa65d03c Rely on new TTE 0.14.1 settings 2025-11-28 16:45:36 -08:00
David Heinemeier Hansson
1514e4e501 Merge branch 'master' into dev 2025-11-28 07:15:24 -08:00
Gary Allan Howard
91cf593b76 feat: Silently move active workspace to another workspace. (#3546)
* feat: silently move active window to target workspace

Adds a quality-of-life keybind:

  SUPER + ALT + SHIFT + [1-9, 0]

This silently moves the active window from the active workspace to the
chosen destination workspace. The destination workspace re-tiles
correctly upon receiving the window.

The currently active workspace remains active, and the moved window
retains focus throughout the operation (no workspace switch, no
animation, no extra UI noise).

Why:
- Provides fast, silent window reshuffling during multitasking.
- Avoids disruptive workspace switching.
- Matches Omarchy’s focus on efficient Hyprland ergonomics.
- Keeps the user anchored to their current workflow while reorganizing.

Testing:
1. Open multiple windows across several workspaces.
2. Focus a window on the active workspace.
3. Press SUPER + ALT + [1–9, 0].
4. Verify the window appears on the target workspace and re-tiles.
5. Confirm the **source workspace stays active**.
6. Confirm **focus remains on the moved window**.
7. Repeat with multiple applications and workspace combinations.

* We've frozen this old tiling config

* Put on Super + Shift + Alt

This is an alternative version of an existing move

* Fix description

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 07:14:51 -08:00
Raymond46
7327f95aa1 feat: restore the last notification keybinding (#3580)
* feat: restore the last notification.

* Stick with comma

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 07:09:04 -08:00
Alexander
a8b8eb6f5e Reset keyboard layout to default first one on the lock screen (#3541) 2025-11-28 07:06:54 -08:00
Jeff Nunn
16d0133037 Remove theme menu now sorts themes alphabetically (like list themes does) (#3635) 2025-11-28 07:05:08 -08:00
Patrick Lenz
68c3917386 Fix usage message in omarchy-branch-set script (#3634) 2025-11-28 06:58:18 -08:00
Jeff Nunn
2cfc3b0f9e Fixes Ristretto cursor visibility in Ghostty/neovim (#3620) 2025-11-28 06:57:44 -08:00
David Heinemeier Hansson
96f140b93f Do the update too 2025-11-28 05:03:44 -08:00
David Heinemeier Hansson
c97995b9ea Can just do it in one go 2025-11-28 05:03:04 -08:00
David Heinemeier Hansson
8d61c73465 Fix channel updating for edge 2025-11-28 05:00:34 -08:00
David Heinemeier Hansson
2b3c48b725 Fix issue with package DBs being wrong when switching to stable channel 2025-11-28 04:59:25 -08:00
David Heinemeier Hansson
e15b2ae78c Fix emoji picker would use a 3-column design and that it would bleed into other menus
Closes #3604
2025-11-28 13:41:05 +01:00
David Heinemeier Hansson
30a5f5846c Tweaks 2025-11-28 13:15:15 +01:00
Nathan Willson
7e44ab33ac feat: show link to changelog in update confirm window (#3651)
* Update version

* feat: show link to changelog in update confirm window

* Link to scrollable changelog

You may be updating more than one version at the time.

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-28 13:13:16 +01:00
David Heinemeier Hansson
6a181adf0d Reset all package DBs when changing channel 2025-11-28 13:03:55 +01:00
Ahmet Burhan Kayalı
930246aee5 Merge branch 'basecamp:master' into fix-limine-uki-path 2025-11-26 10:22:13 +03:00
Ryan Hughes
d7841e30b5 Update version 2025-11-26 02:07:16 -05:00
Ryan Hughes
bc54b97117 Merge pull request #3588 from basecamp/dev
Omarchy 3.2.1
2025-11-26 02:06:11 -05:00
David Heinemeier Hansson
a8106085aa Setup helpers to change branch and channel 2025-11-25 15:43:32 +01:00
David Heinemeier Hansson
a996438eaf Add explicit reboot + shutdown scripts that close all windows first (and allow a second to save state) 2025-11-25 15:07:20 +01:00
David Heinemeier Hansson
9524259765 Ensure lockout limit is reset on restart 2025-11-25 15:03:41 +01:00
David Heinemeier Hansson
77fd86ae93 Fix lack of quotes for multi-line batches
Closes #3597
2025-11-25 11:52:43 +01:00
David Heinemeier Hansson
8cca056b90 Use Bluetooth off icon in the waybar when BlueTUI has turned off the adapter
Closes #3599
2025-11-25 11:46:59 +01:00
David Heinemeier Hansson
a522a47f70 Ensure walker is set to autostart and that elephant is running as a service after running omarchy-refresh-walker
Closes #3609
2025-11-25 11:37:48 +01:00
Lukasz Gut
97382274f6 Add copy-url support for Brave browser (#3017)
* Add copy-url support for Brave browser

* Add required migration

* Excess CR

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-24 17:05:31 +01:00
Miras Mustimov
55692e0893 Exclude long new screensaver effect (#3553)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-24 11:00:25 +01:00
David Heinemeier Hansson
aa98e9307c Now included in the omarchy-refresh-pacman script 2025-11-24 09:53:49 +01:00
David Heinemeier Hansson
14b1ee317f Remove noconfirm from Zed install so user can pick correct vulkan backend
Related #1441
2025-11-24 09:48:27 +01:00
David Heinemeier Hansson
8f3f89fdfd Make sure the user gets a chance to actually pick the graphics options
Closes #3585
2025-11-24 09:30:10 +01:00
David Heinemeier Hansson
3765417d9a Wording 2025-11-24 09:25:28 +01:00
David Heinemeier Hansson
a6c2576a3c Start PDF viewing as float as well 2025-11-23 11:46:33 +01:00
Gerrit Dolderer
0d7fbbce02 Because TUI Apps are now saved with Exec=xdg-terminal-exec and not (#3552)
Exec=$TERMINAL the omarchy-tui-remove wont find newly created TUI-Apps. This fixes it and ensures backwards compability.

Co-authored-by: Gerrit Dolderer <gerrit.dolderer@hey.com>
2025-11-23 11:32:18 +01:00
Felix Sanchez
602d60d3d9 feat: fullscreen for ghostty/kitty screensaver (#3510)
* feat: fullscreen for ghostty/kitty screensaver

* feat: add ghostty screensaver config

* Remove the extra two bottom lines as well

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-22 14:44:03 +01:00
David Heinemeier Hansson
e3b8016e26 Bump for beta version 2025-11-22 11:39:36 +01:00
David Heinemeier Hansson
c86614039e Take backups of existing pacman.conf + mirrorlist before refreshing
Closes #3479
2025-11-22 11:05:45 +01:00
Felix Sanchez
aadb4fae08 fix: tte screensaver fullscreen (#3499)
to go tte full screen on 0.13, the option --reuse-canvas is needed
2025-11-22 10:59:37 +01:00
David Heinemeier Hansson
e864c2da43 Add marker for when packages were last updated 2025-11-22 10:54:40 +01:00
David Heinemeier Hansson
88a1141301 Simplify mirror/pkgs to just channel 2025-11-22 10:50:23 +01:00
David Heinemeier Hansson
f6cd5e076d Simplify switching between edge and stable channels 2025-11-22 10:41:30 +01:00
David Heinemeier Hansson
49f33169c1 Add mirror + pkgs channel to About menu 2025-11-22 10:37:49 +01:00
David Heinemeier Hansson
04d2f10840 Merge pull request #3295 from basecamp/dev
Omarchy 3.2.0
2025-11-21 14:34:01 -05:00
David Heinemeier Hansson
45e3272e25 No confirm 2025-11-21 20:21:55 +01:00
David Heinemeier Hansson
934b22d4c2 Do the full pacman reset and then update 2025-11-21 20:19:27 +01:00
David Heinemeier Hansson
ba7ffc39ad Ensure upgrades are sorted for later versions too 2025-11-21 20:05:23 +01:00
Ryan Hughes
cb8d42ba26 Adjust screensaver for tte v13 2025-11-21 13:46:51 -05:00
dec05eba
d725058d33 Make the screenrecord hotkey and menu stop recording if already recording 2025-11-21 13:46:51 -05:00
dec05eba
128a6125a9 Redesign screen capture option
Use desktop portal capture option which allows capturing monitors
connected to external gpus (common on laptops with dedicated gpus)
and supports capturing properly when hdr is enabled.

Desktop portal capture allows selecting capture of a window, monitor
or screen region.

Add -fallback-cpu-encoding yes to use cpu encoding if the system
doesn't support gpu encoding. Ideally omarchy should install vaapi
drivers which would fix this issue for most users, but some users
have a gpu that dont support gpu encoding at all so this option is still
needed.

Use pgrep with ^ as is done in waybar indicator screen-recording.sh
to only grep for gpu-screen-recorder program.

Update omarchy-menu to reflect not selecting region/display capture
and instead allow capturing only desktop audio or desktop + microphone
audio.

Fixes #3367 and #3303
2025-11-21 13:46:51 -05:00
David Heinemeier Hansson
cb869457c4 Use the safe-if-not-there form 2025-11-21 19:34:20 +01:00
David Heinemeier Hansson
a606b53cd9 Collapse the walker migrations to the one that does 2.0 2025-11-21 19:32:40 +01:00
David Heinemeier Hansson
f968f2012a Just refresh the whole pacman config 2025-11-21 19:28:50 +01:00
David Heinemeier Hansson
033afbbc00 Remove other slow builders that will be dropped anyway 2025-11-21 19:28:36 +01:00
David Heinemeier Hansson
4fae366a5b Explain the migration 2025-11-21 19:22:04 +01:00
David Heinemeier Hansson
63df15c967 Stick to stable 2025-11-21 19:15:25 +01:00
David Heinemeier Hansson
6385b966e8 No longer using eza themeing 2025-11-21 19:09:50 +01:00
David Heinemeier Hansson
70fa03dbb3 We don't change the font config, but rely on general monospace 2025-11-21 19:09:04 +01:00
David Heinemeier Hansson
06de54559d Update indexes 2025-11-21 19:04:48 +01:00
David Heinemeier Hansson
2bdf3fd450 Do all the upgrade work in that initial migration for old installations 2025-11-21 19:02:19 +01:00
David Heinemeier Hansson
d87f0aaa19 Improve the update for old installs 2025-11-21 18:49:34 +01:00
David Heinemeier Hansson
3e91190e50 Make sure we use stable for this too 2025-11-21 18:35:16 +01:00
David Heinemeier Hansson
fc7feda70f Link the visual menu config at install too 2025-11-21 18:27:00 +01:00
David Heinemeier Hansson
8007e38d88 Bump version for new release 2025-11-21 18:17:12 +01:00
David Heinemeier Hansson
292ac8318f Remove this from the initial config too 2025-11-21 18:14:10 +01:00
David Heinemeier Hansson
597fcb8db8 Rely on a later restart of waybar
So we don't do it over and over again on a regular upgrade
2025-11-21 18:12:53 +01:00
David Heinemeier Hansson
db7070f9d6 Ensure elephant is setup on first run 2025-11-21 18:02:04 +01:00
David Heinemeier Hansson
385df32daa Refresh Walker config to ensure compatibility with latest version 2025-11-21 17:54:55 +01:00
Ryan Hughes
50ec3cec42 Merge pull request #3451 from abenz1267/walkerlayout
fix(walker): update for breaking changes in latest version
2025-11-21 11:49:15 -05:00
David Heinemeier Hansson
8b6fd9eed9 Update to match current colors 2025-11-21 16:09:38 +01:00
David Heinemeier Hansson
328c26efa2 Stick to the lighter Everforest colors we have in Alacritty 2025-11-21 14:35:03 +01:00
David Heinemeier Hansson
2c4a9275d1 Revert "Reapply "feat: don't screenshare notifications (#3482)""
This reverts commit 7ebe9fd7ab.
2025-11-21 12:36:35 +01:00
David Heinemeier Hansson
4efdcc62c6 Also default to float for video playback 2025-11-21 11:20:48 +01:00
bjarneo
62665abd0e Remove Aether nvim dependency (#3485)
This nvim theme is now standalone
2025-11-21 09:22:38 +01:00
SoAp9035
f9450e1fb7 Fix limine UKI cleanup path 2025-11-21 10:59:08 +03:00
David Heinemeier Hansson
7ebe9fd7ab Reapply "feat: don't screenshare notifications (#3482)"
This reverts commit cf6a8476c5.
2025-11-20 21:04:56 +01:00
David Heinemeier Hansson
cf6a8476c5 Revert "feat: don't screenshare notifications (#3482)"
This reverts commit bdb97195d8.
2025-11-20 18:01:10 +01:00
Maxime Mangel
bdb97195d8 feat: don't screenshare notifications (#3482) 2025-11-20 17:22:13 +01:00
David Heinemeier Hansson
a5ceb3f860 We never ended up using this
Its very hard to properly ignore packages. So better we just double down
on the stable repo and keeping them out of general rotation.
2025-11-20 17:06:02 +01:00
David Heinemeier Hansson
9d8961915e Fix the style update too 2025-11-20 16:59:28 +01:00
David Heinemeier Hansson
661e4f5add Add migration 2025-11-20 16:52:10 +01:00
brink-lab
f6786e4c23 Update Waybar tray icon (#3479)
* Update style.css

Fixes the uneven spacing between icons on waybar by updating styling.css with Propo font family.
However, Propo introduces a small issue as the volume icons don't have the same with. As a consequence, icons left of volume will move based on the displayed volume icon. To solve this, I added a non-Propo font to the pipewire module as well - this way the volume icons have fixed length but eats a bit into the spacing towards the CPU icon. But I see this as the best trade-off.

* Update waybar config.jsonc

* Update tray spacing in waybar config

* Modify margins in style.css

Adjusted margins for various elements.

* Update waybar css for even spacing

* Update Waybar config tray spacing

* Change expand-icon format character

* Adjust margin-right for custom-expand-icon
2025-11-20 16:51:42 +01:00
David Heinemeier Hansson
9626408259 Remove the menus from the general provider so themes don't show up in the app launcher 2025-11-20 14:25:24 +01:00
David Heinemeier Hansson
4c8ee6cc1a There could have been another format-no-controller actually 2025-11-20 14:21:29 +01:00
David Heinemeier Hansson
37e5ed0d9d Restart waybar not walker 2025-11-20 14:19:40 +01:00
David Heinemeier Hansson
ec59388634 Make sure we just match exact 2025-11-20 13:58:39 +01:00
David Heinemeier Hansson
b5002b1f1d Need to have fuzzy match to work with the web apps for matching 2025-11-20 13:57:00 +01:00
Darren
4c414f8dc2 updated omarchy-hyprland-window-pop to have an optional parameters (#3456)
* added optional argument for floating a window

* added sample comment

* Style

* This file isn't meant to be changed so not a good place for commented out recommendations

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 13:38:29 +01:00
David Heinemeier Hansson
5ea1ae260e Explain why -Sy is ok
Closes #3467
2025-11-20 13:20:08 +01:00
David Heinemeier Hansson
4dbaf5e35f Use connected bluetooth icon when appropriate
Closes #3274
Co-authored-by: @vander00
2025-11-20 13:14:24 +01:00
David Heinemeier Hansson
0fc901d4fc Add 100-line split moves to Ghostty config
Using Super + Ctrl + Shift + Alt + Arrows
2025-11-20 11:21:39 +01:00
David Heinemeier Hansson
fef7efc841 Blue fits better imo 2025-11-20 11:08:27 +01:00
bjarneo
cd2a4e416b Add theme ethereal (#3464)
* Add theme Ethereal

* Update to follow the Omarchy hot reload

* Add aether to all themes

* Add a vscode theme

* Revert "Add aether to all themes"

This reverts commit 421f467e21.

* Format the kitty file

* Make available to all via migration

* Fix

* Add hot reload

* Change the background image to something of higher quality

This looks a lot better on a 6K monitor

* Highlight border color should be brighter than inactive color

* Add preview.png for new visual theme selector

* Add the ethereal nvim variant of aehter

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 11:05:07 +01:00
David Heinemeier Hansson
c298823af4 This conflicts with Chromium when both are installed 2025-11-20 11:00:59 +01:00
bjarneo
a1b1eb5920 Add a new theme called Hackerman (#3317)
* Add a new theme called hackerman

* Update to follow the Omarchy hot reload

* Add high res wallpapers

* Add an initial vscode color scheme

* Excess CR

* Set the colorscheme name to aether

* Change the nvim plugin name back to aether

* Add hot reload

* Use a variant of aether

* Swap the starting background

* Add migration

* Add preview.png

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-20 10:54:17 +01:00
David Heinemeier Hansson
08143c5cbc No longer need these variables 2025-11-20 10:08:55 +01:00
David Heinemeier Hansson
261a7dcc1f Don't suggest invalid scale 2025-11-20 09:59:31 +01:00
David Heinemeier Hansson
44b37dafce Allow optional arguments to img transcoding functions and prevent overwrites 2025-11-20 09:37:44 +01:00
David Heinemeier Hansson
20a3c469ed Float imv by default 2025-11-20 09:16:08 +01:00
David Heinemeier Hansson
8c4bf65727 Start using the stable pkg server by default 2025-11-19 20:59:12 +01:00
David Heinemeier Hansson
3e4421a37f Ensure we are using the new stable mirror before updating 2025-11-19 15:09:56 +01:00
David Heinemeier Hansson
f77f107b7e Hide Bluetooth module in waybar if there's no BT controller 2025-11-19 15:03:20 +01:00
David Heinemeier Hansson
da8c3d9c64 Add bash as well 2025-11-19 14:49:21 +01:00
David Heinemeier Hansson
8f19806742 Make existing alacritty installations compatible with X-TerminalArg 2025-11-19 14:45:44 +01:00
David Heinemeier Hansson
8fe1d627f4 End good 2025-11-19 14:27:08 +01:00
David Heinemeier Hansson
1b7fca5fa4 Simplify with a launch or focus variaty for tui 2025-11-19 14:15:22 +01:00
David Heinemeier Hansson
6e83c4f661 The restart is coming later when we switch to systemd 2025-11-19 12:06:38 +01:00
David Heinemeier Hansson
8174dc7df9 Let btop float by default to match all other system terminal windows 2025-11-19 12:04:35 +01:00
David Heinemeier Hansson
f8dcc7e190 Later migration does the refresh 2025-11-19 11:57:48 +01:00
David Heinemeier Hansson
13c3973c7a Spelling! 2025-11-19 11:56:45 +01:00
David Heinemeier Hansson
489ddc7fb0 Fix escaping 2025-11-19 11:52:57 +01:00
David Heinemeier Hansson
2c1a761b88 Walker is not run as a systemd service 2025-11-19 11:42:01 +01:00
David Heinemeier Hansson
c50003a996 Make sure to stop and start in the new fashion 2025-11-19 11:36:15 +01:00
David Heinemeier Hansson
e4a3d5e3ad Synchronize with new stable mirror 2025-11-19 11:08:44 +01:00
Andrey Sologub
9af41afd06 Feature: Add bluetui integration and migration (#3207)
* Add bluetui integration and launch script

- Add omarchy-launch-bluetooth script to launch bluetui TUI
- Create migration scripts for bluetui installation
- Update omarchy-menu and waybar configuration for bluetui support
- Add bluetui to base packages

* Move unblock into launchers and reuse existing launch or focus setup

* Fix installer to remove blueberry and be more surgical with waybar changes

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 09:41:12 +01:00
Eric Jimenez-Chung
335845bd26 Add install options for xpadneo driver under gaming (#2009)
* Add optional xpadneo driver prompt to Steam installer

Prompts users during Steam installation to optionally install the xpadneo driver, which fixes common Xbox/Bluetooth controller issues including detection problems and missing rumble support.

* Install xpadneo controller driver by default

* Add idempotency checks and relaunch state

* Remove Steam launch since relaunch required

* Extract xbox controller installer into separate step

* Bring back launch

* Force reinstall

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 09:20:59 +01:00
Patrick Roza
eec075bdf9 improve: uniquely identify terminal apps for window rules and focus. Unify waybar behaviour to use launch-or-focus (#3389)
* improve: uniquely identify btop when launched from waybar.

* align btop app id

* add migration to uniquely identify btop

* also add unique app ids to lazydocker and terminal editor

* introduce new omarchy-launch-tui that sets class.

* align all the tuis and behaviour in waybar

* update migration accordingly

* fixes

* separate terminal from tui

* fix: double setsid uswm-app --

* Standardize namespace on org.omarchy and lowercase

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:54:17 +01:00
Taha
438fa96291 Add preview images to the themes menu (#3444)
* Add new script for themes menu

* remove icons from the themes menu

* Make theme titles human readable and add spacing at the end

* Migrate to using a link for the new menu generator

* Retain consistent width

But we still do have movement when filtering the menu down to a
shorter-than-longest name. Should try to stabilize that.

* Update all previews to 2K resolution and same dimensions

* Update script to use first bg file if theme preview file doesn't exist

* Add padding to preview box instead of spaces to theme name

* Consistent formatting/indenting

* Prevent height jump

* Revert padding change and remove background color

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:30:24 +01:00
Michal Landsman
42e181054a fix: disable mouse focus for JetBrains (#3336)
* disable mouse focus for jetbrains

* Match existing style

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-19 08:26:30 +01:00
Larry Dewey
c1fca69de5 hypr: Adding xdph token default of true (#3404)
* hypr: Adding xdph token default of true

The `allow_token_by_default` configuration option under `screencopy` within
`xdg-dektop-portal-hyprland` (xdph) enables the "Allow restore token" checkbox
by default in the screen sharing section dialog. Enabling it to `true` ensures
the checkbox is pre-ticked, which can help avoid repeated selection prompts
during screen sharing sessions, such as those reported with Slack, Google Meet,
Zoom, etc. on Hyprland.

Signed-off-by: Larry Dewey <larry.j.dewey@gmail.com>

* Enable the XDPH config on existing installations

---------

Signed-off-by: Larry Dewey <larry.j.dewey@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-18 16:20:08 +01:00
Andrej Benz
367eb5b871 fix(walker): update for breaking changes in latest version 2025-11-18 16:05:36 +01:00
David Heinemeier Hansson
5ab2a69722 Add migration to add the 10th workspace back to waybar config 2025-11-18 16:02:13 +01:00
Vilém Jelen
854b14029c add back workspace 10 (#3447)
Co-authored-by: jelenv <jelenv@users.noreply.github.com>
2025-11-18 15:53:33 +01:00
David Wales
72dc352c1a Add exfatprogs to base packages (#3448)
Complements 279259d547
2025-11-18 09:27:43 +01:00
David Heinemeier Hansson
83a8740fc8 Match to Ghostty Mocha too 2025-11-17 17:40:36 +01:00
David Heinemeier Hansson
b2b65d55a7 Match Everforest Dark Hard from Ghostty
We should standardize this so it looks the same everywhere though!
2025-11-17 17:36:39 +01:00
Christopher Lewis
1ec9ccd1b1 overload lateral window navigation for grouped windows (#3325)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-17 10:17:13 +01:00
Andrej Benz
c17bd85c38 fix: start elephant as systemd service (#3405) 2025-11-17 09:51:12 +01:00
David Wales
e1745d7ff9 Avoid invalid terminal working directory (#3428)
Don't use the working directory of the last child of the active window
when opening a new terminal with Super+Enter.

Fixes #3427.
2025-11-17 09:18:56 +01:00
David Heinemeier Hansson
88684b6dd0 Merge branch 'master' into dev 2025-11-16 21:00:10 +01:00
Tony Messias
d833b45e8b Update terminal binding to use --dir option (#3339)
In basecamp@4c97a31, a migration was added to fix this option on
existing installs, but I think the default config was never updated with
the new option.
2025-11-16 20:59:33 +01:00
David Heinemeier Hansson
4b2ff4f329 Revert "improve: add image/video share and run share commands silently" (#3434)
* Revert "improve: add image/video share and run share commands silently (#3330)"

This reverts commit 03cbbd2f7f.

* Refactor share menu to remove terminal command
2025-11-16 20:58:54 +01:00
David Heinemeier Hansson
279259d547 Change format-disk to use exfat for better cross-platform compatibility 2025-11-16 15:53:08 +01:00
ctarx
9b849fc824 feat: add custom imv keybindings for delete and rotate currently opened image (#3312)
* feat: add custom imv keybindings for delete and rotate

* Update imv config and migration script

* Simplify this

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 16:05:45 +01:00
Nicolas Dorier
bea57919b6 Fix: Jetbrains popup dialog would not get focus automatically (#3326)
* Fix: Jetbrains popup dialog would not get focus automatically

The config shipped with omarchy misbehaves with popups. Opening a popup
would not shift the focus automatically to it, requiring manual click on
it to start typing into it.

You can reproduce with by trying to open any popup dialog (for example
CTRL+T on Rider, or CTRL+SHIFT+F)

This config with `-Dawt.toolkit.name=WLToolkit` in the custom VM options
fixes all the issues I have with jetbrains. I am also making a dedicated
workspace which float all windows just for jetbrains.

* Use existing formatting conventions

* More tweaks

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 15:54:25 +01:00
Dante897
03cbbd2f7f improve: add image/video share and run share commands silently (#3330)
* improve: add image/video share and run share commands silently

- Added 'image' and 'video' modes to omarchy-cmd-share to quickly send
  the most recent screenshot or video without selecting manually.
- Updated show_share_menu to run share commands in the background using
  'nohup' to avoid opening a terminal window.
- Comments added to explain each section for clarity and maintainability.

* Match names with folders

* Correct here too

* Don't need to keep this around

* Fix these up for what's needed only

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-11 15:48:02 +01:00
David Heinemeier Hansson
8840af8df9 Don't waste time creating ri docs by default 2025-11-11 14:20:55 +01:00
David Heinemeier Hansson
a54ec3a9cb Exact matching is now part of omarchy-launch-or-focus 2025-11-11 09:16:47 +01:00
David Heinemeier Hansson
42f47195ea Match exact not partial window pattern 2025-11-11 09:16:27 +01:00
David Heinemeier Hansson
89b1029588 Can't use the blur on walker until we can run the whole thing as a single process 2025-11-11 08:45:36 +01:00
David Heinemeier Hansson
29aae9a93e Tweak blur settings and apply it to walker
Settings by @tobi ✌️
2025-11-10 21:29:41 +01:00
David Heinemeier Hansson
a6d49196d0 Make sure the ruby is added separately from just try
So we always have a system Ruby available
2025-11-10 15:22:06 +01:00
David Heinemeier Hansson
b7989ac89b Ensure the system always has a base ruby even if one is not installed via mise 2025-11-10 15:21:15 +01:00
David Heinemeier Hansson
3c19e4e12c Add @tobi's try as a default install 2025-11-10 15:20:17 +01:00
Mislav Pukljak
94f29f3cba small fix in input.conf (#3298) 2025-11-10 15:18:00 +01:00
David Heinemeier Hansson
2fcc4e9c47 More 2025-11-10 14:38:27 +01:00
David Heinemeier Hansson
d81f6de211 Make Work/tries ready too 2025-11-10 14:37:46 +01:00
David Heinemeier Hansson
e97ae0d842 Activate try when it is available 2025-11-10 14:36:44 +01:00
David Heinemeier Hansson
2290152fb9 Fit height better for JetBrainsMono 2025-11-10 11:47:07 +01:00
David Heinemeier Hansson
f364ee1167 Move everyone over to the stable mirror by default 2025-11-10 11:35:32 +01:00
David Heinemeier Hansson
6e1f1cae1b Slowdown the ghostty scrolling a tad 2025-11-10 11:33:35 +01:00
David Heinemeier Hansson
e354df3143 Use a slower mouse scroll 2025-11-10 11:27:22 +01:00
David Heinemeier Hansson
c981dda55a Change default font to JetBrainsMono Nerd Font
Caskaydia Mono doesn't look quite right in Ghostty
2025-11-10 10:57:16 +01:00
David Heinemeier Hansson
b6ba588fa3 Switch to Ghostty as the default terminal 2025-11-10 10:54:41 +01:00
David Heinemeier Hansson
bf3a5b0a36 Style 2025-11-10 10:49:46 +01:00
David Heinemeier Hansson
9e1a70488b Fix killing of screensaver running in any terminal 2025-11-10 10:46:18 +01:00
David Heinemeier Hansson
a43d090596 We've been using fresh 2025-11-10 10:36:31 +01:00
David Heinemeier Hansson
fceb7106d9 Package only exists on AUR
Not sure why what would be using this, @ryanrhughes?
2025-11-10 10:28:14 +01:00
David Heinemeier Hansson
d2aeb520fc Prevent the conflict asking for rust v rustup 2025-11-10 10:23:10 +01:00
David Heinemeier Hansson
61678986fc Use packages that exist 2025-11-10 10:19:36 +01:00
David Heinemeier Hansson
2425f4d3e0 Default to the new stable mirror 2025-11-10 10:12:24 +01:00
David Heinemeier Hansson
c6918e637b Make screensaver capable of running in any of the terminal options 2025-11-10 10:02:02 +01:00
David Heinemeier Hansson
6f334868d6 Fix match and make 1password float by default 2025-11-10 09:15:27 +01:00
David Heinemeier Hansson
79207160e6 Add migration 2025-11-10 08:57:43 +01:00
Jan Costandius
a9d6a77ee6 Add usage to base packages (#3280)
The usage CLI is required for mise tab completions to work.
2025-11-10 08:57:27 +01:00
Mitch Lombardi
a304b32cc1 Dynamically set hyprlock font and placeholder text (#3281) 2025-11-10 08:51:49 +01:00
David Heinemeier Hansson
3a744e0f78 Still need the setsid 2025-11-10 08:48:32 +01:00
David Heinemeier Hansson
88b13e6899 Launch or focus wifi settings
Closes #3288
Co-authored-by: @AdamMusa
2025-11-10 08:39:18 +01:00
David Heinemeier Hansson
70d15921b9 Add Super + Shift + Alt + Left/Right to move workspaces between monitors
Closes #1373, #3010
Co-authored-by: @jheuing
2025-11-09 11:37:43 +01:00
David Heinemeier Hansson
283a41c494 Add Super + Alt + PageUp/Down for tiling groups to mimic browser
More ergonomic to press than tab, but we will keep tab so not to confuse
folks who already adopted that.
2025-11-09 11:36:41 +01:00
David Heinemeier Hansson
3d10b38054 Ensure we can wake screen on both mouse and keyboard
Closes #2146
Co-authored-by: @nicoestrada
2025-11-09 11:14:32 +01:00
David Heinemeier Hansson
d33e947b99 We were already doing this! 2025-11-09 09:25:35 +01:00
David Heinemeier Hansson
79d48b4d8a Notify user that font changes require a Ghostty restart 2025-11-09 09:25:00 +01:00
David Heinemeier Hansson
4d3c02c69d Only restart if they are running 2025-11-09 09:22:48 +01:00
Dylan
e96bd085a5 Improve contrast on volume notification for Matte Black theme (#3212) 2025-11-09 08:10:12 +01:00
Rob Zolkos
64e581e5aa Use AAC audio codec for screen recordings (#3220)
AAC provides better cross-platform compatibility compared to Opus when
using MP4 containers. While Opus is supported in MP4, compatibility
varies across different media players and platforms.

In testing, screen recordings with Opus codec sent to Windows users
played without audio in Windows Media Player, while recordings with
AAC codec worked immediately without issues. AAC ensures recordings
are playable out-of-the-box across all platforms without requiring
users to install additional codecs or use alternative media players.
2025-11-09 08:08:23 +01:00
Chris Roth
694c83f518 Add binding to invoke last mako notification (#3232)
This additional bind lets the user follow the default action of a notification with a keystroke in the same position `,` as the other notification binds.
2025-11-09 08:07:09 +01:00
MatyiFKBT
49308eb12a Update Helium browser in omarchy-launch-webapp (#3225)
* Update Helium browser in omarchy-launch-webapp

see https://github.com/basecamp/omarchy/pull/1945#discussion_r2401957283

* Fix browser pattern matching in launch script for helium

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-09 08:06:23 +01:00
Adam
26d37ca2e0 Fix: hard-coded binding for changegroupactive (#3233)
Changed default bindings for switching to a window in a group. The original values did not respect different keyboard layouts.
2025-11-09 08:02:35 +01:00
Miguel P
c92362937a Use xdg-terminal-exec in TUI installer for terminal compatibility (#3237)
Replace hardcoded --class flag with xdg-terminal-exec --app-id to properly
support kitty and other terminals. This aligns with the rest of the codebase
and ensures floating window rules work correctly across different terminals.
2025-11-09 08:01:37 +01:00
Dmytro Budnyk
7a0fa07454 Update icon URL placeholder to accept SVG format (#3253)
SVGs work just fine, changing misleading caption
2025-11-09 07:50:36 +01:00
David Heinemeier Hansson
917279bff7 Merge branch 'master' into dev 2025-11-09 07:45:37 +01:00
David Heinemeier Hansson
8350b84eee This has been swapped 2025-11-09 07:17:38 +01:00
Ryan Hughes
d9acd35ef4 Version bump 2025-11-09 00:54:44 -05:00
Ryan Hughes
044e826bb7 Merge pull request #3258 from sk4rrjin/patch-1
Update pip.conf, fix Invalid rule/parameter errors after hyprland update
2025-11-09 00:43:25 -05:00
karr
57e726f0c5 Update pip.conf, fix Invalid rule/parameter errors after hyprland update
Updated hyprland throws Invalid rule / Invalid parameter on the pip windowrule
2025-11-08 23:37:30 +01:00
David Heinemeier Hansson
06fc4db4db Merge branch 'master' into dev 2025-11-07 21:54:13 +01:00
Ryan Hughes
15b5ee92d7 Merge pull request #3234 from basecamp/hotfix-limine-conf-location
Hotfix limine.conf order sourcing causing boot errors
2025-11-07 15:50:55 -05:00
Ryan Hughes
f6aa97350e Update to prevent error 2025-11-07 15:48:45 -05:00
David Heinemeier Hansson
5192c9b687 Ensure successful ending of migration 2025-11-07 21:35:41 +01:00
Ryan Hughes
e263b5d00a Only run for Limine installs 2025-11-07 15:09:34 -05:00
Ryan Hughes
26821c9b34 Cleanup on install 2025-11-07 15:04:23 -05:00
Ryan Hughes
7cd5661f89 Bump version 2025-11-07 14:57:19 -05:00
Ryan Hughes
6cdf4a3790 Remove any alternative limine.conf files 2025-11-07 14:46:29 -05:00
Ryan Hughes
c92a7eab81 Revert "Kill the actual screensaver command"
This reverts commit 33dde26902.
2025-11-06 11:32:19 -05:00
Ryan Hughes
8aa2d295e5 Revert "Make screensaver work with xdg-terminal-exec"
This reverts commit fc8e4c0400.
2025-11-06 11:32:10 -05:00
Ryan Hughes
5fb29c199a Revert "Update screensaver with 2x version"
This reverts commit b1b6e5d2a7.
2025-11-06 11:30:02 -05:00
David Heinemeier Hansson
962aca303d Change order and let it live forever 2025-11-06 09:14:33 +01:00
David Heinemeier Hansson
870356ecc3 Fix max_results to live under [providers]
Re #3175
2025-11-06 08:32:07 +01:00
David Heinemeier Hansson
cb03d7d84b Raise walker max_entries to 256
The default is only 50

Closes #3175
2025-11-05 17:29:10 +01:00
y0no
7a0bdaafa4 Scale with the right monitor (#3174) 2025-11-05 16:08:25 +01:00
David Heinemeier Hansson
638e35fcac Hyprland envs are superseeded by uwsm/env 2025-11-05 15:15:01 +01:00
David Heinemeier Hansson
904d253b4d Restart terminal (reload config) when changing font as well
This doesn't work for Ghostty (yet?) but it does work for Kitty
2025-11-05 11:59:51 +01:00
innerviewer
a40ff463c9 (Hypr) Added 'stayfocused' window rule for DaVinci Resolve dialog windows. (#3064) 2025-11-05 11:44:30 +01:00
Patrick Roza
8e210088c1 Fix class name for Microsoft Edge in browser.conf (#3145) 2025-11-05 11:20:28 +01:00
David Heinemeier Hansson
bf26366be4 Setting PS1 is not necessary when we have starship 2025-11-05 11:13:49 +01:00
David Heinemeier Hansson
4391df6853 Fix declining an update 2025-11-04 08:47:17 +01:00
David Heinemeier Hansson
2498216a4f Merge branch 'master' into dev 2025-11-04 08:35:27 +01:00
Ryan Hughes
33dde26902 Kill the actual screensaver command 2025-11-03 21:37:51 -05:00
Ryan Hughes
b1b6e5d2a7 Update screensaver with 2x version 2025-11-03 21:34:22 -05:00
Ryan Hughes
fc8e4c0400 Make screensaver work with xdg-terminal-exec 2025-11-03 21:34:22 -05:00
Ryan Hughes
f9557177dc Merge pull request #2648 from wolfgangw/patch-1
TTE go fullscreen: --no-eol (tte 0.12.2/0.13.0)
2025-11-03 21:33:06 -05:00
Ryan Hughes
3065ca9f2a Fix --dir 2025-11-03 15:37:46 -05:00
Ryan Hughes
ba5343ca11 Bump version 2025-11-03 15:37:27 -05:00
Ryan Hughes
7f9ee95e1a Merge pull request #3084 from basecamp/dev
Omarchy 3.1.5
2025-11-03 12:13:01 -05:00
David Heinemeier Hansson
e369d68fe1 Take the rounding back a notch 2025-11-03 17:46:31 +01:00
Ryan Hughes
661abc89a6 Add omarchy-walker meta package 2025-11-03 11:37:20 -05:00
David Heinemeier Hansson
28ba448020 Merge branch 'master' into dev 2025-11-03 10:51:19 +01:00
David Heinemeier Hansson
4b15fe9a52 More wordsmithing 2025-11-03 10:50:54 +01:00
David Heinemeier Hansson
886a9f6f2c More wordsmithing 2025-11-03 10:49:35 +01:00
David Heinemeier Hansson
54795a2f55 Direct enhancements and ideas to discussions 2025-11-03 10:48:24 +01:00
Miha Rekar
d528393df6 Do not create eza theme symlink (#3092) 2025-11-03 10:19:54 +01:00
Ryan Hughes
4c97a31c98 Switch to xdg-terminal-exec
Solves the issue from ae10133b5e the right
way using the actual xdg-terminal-exec package and provides resillient
fallbacks no matter what the user might do.

This also removes the need to restart after changing terminals at all.

fixes #2198
fixes #2329
fixes #2673
fixes #1754
2025-11-03 01:11:09 -05:00
Ryan Hughes
66b5f7eab8 Move a few more to OPR 2025-11-02 22:50:25 -05:00
Ryan Hughes
9e971e3e56 Fix not working with alacritty 2025-11-02 18:58:11 -05:00
Ryan Hughes
ae10133b5e Fix neovim launching from files
Because of [hardcoded terminals in
glib](https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/gdesktopappinfo.c#L2755)
the previous fix still doesn't work well with Alacritty and Kitty.

Using our `omarchy-launch-terminal` aliased to `xdg-terminal-exec` does
the trick and doesn't introduce any new dependencies or rely on a lib
that isn't stable.
2025-11-02 17:57:25 -05:00
David Heinemeier Hansson
0f64a11f4e Follow naming convention from other hyprland scripts 2025-11-02 20:36:42 +01:00
Ryan Robitaille
b738c77acf Feature (hypr): add “Pop window” (float+pin) on SUPER+O (#2954)
* Feature (hypr): add “Pop window” (float+pin) on SUPER+L

* fix: changed default keybinding to SUPER+O
2025-11-02 20:36:28 +01:00
killeik
f76ba69f70 Make omarchy-launch-editor check that setted $EDITOR exists (#3072) 2025-11-02 20:28:41 +01:00
David Heinemeier Hansson
bfeb3a1e65 Gemini is now on extra/gemini-cli
Closes #3040
Co-authored-by: @maromalo
2025-11-02 20:12:08 +01:00
Wojciech Wnętrzak
3c89acadc1 Further instructions for auto nightlight (#3082)
Follow up to https://github.com/basecamp/omarchy/pull/2446l

I noticed that it did not work because the process was not running by default, vide d9efaac906
2025-11-02 20:04:53 +01:00
David Heinemeier Hansson
58ecda3b80 Make Yes the default 2025-10-31 14:34:08 +01:00
David Heinemeier Hansson
dd3b64ef7f Extract the confirmation into its own file 2025-10-31 14:33:54 +01:00
Brian Blakely
fc0983624e VS Code: Apply Omarchy theme during install (#2983)
* Apply Omarchy theme; Install Neovim extension (automatically scoops up LazyVim config).

* Just set the Omarchy theme

Removed installation of Neovim extension from script.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-31 14:22:30 +01:00
David Heinemeier Hansson
fb3271f3af Fix phantom recording indicator
Closes #2656
Co-authored-by: @davidszp
2025-10-31 14:09:51 +01:00
Ryan Hughes
3344f33104 Use xdg-mime to set nvim as default
As @abenz1267 pointed out, the previous solution wasn't the greatest.
This is the proper solution.
2025-10-29 13:25:48 -04:00
David Heinemeier Hansson
407d283cb7 Rephrase 2025-10-29 10:58:24 +01:00
Joshua Fouch
ac8073fc81 Fix: Low Battery notification returning empty value on reboot (#2949)
* Fix: Low Battery notification returning empty value on reboot

* Simplify the check

* Double paste

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-29 10:58:06 +01:00
David Heinemeier Hansson
7770f49c1a Looks better without margin 2025-10-28 18:20:39 +01:00
David Heinemeier Hansson
9490e714c3 Moved 2025-10-28 18:19:28 +01:00
David Heinemeier Hansson
d3a54dc32e Show keybindings notice right away and vary update based on internet or not 2025-10-28 18:19:17 +01:00
David Heinemeier Hansson
d7cd1950ce Bump for the next version 2025-10-28 16:56:07 +01:00
David Heinemeier Hansson
e58569b947 Merge pull request #2862 from basecamp/dev
Omarchy 3.1.4
2025-10-28 16:18:13 +01:00
David Heinemeier Hansson
6243c82251 Turn off the trigger keys instead 2025-10-28 16:06:12 +01:00
David Heinemeier Hansson
928910773c Make sure to restart fxitc5 after making config changes 2025-10-28 15:38:50 +01:00
David Heinemeier Hansson
a48001b8cc Turn off fcitx5 clipboard hotkeys that are interferring with other apps
Co-authored-by: @cairin
Ref: #2795
2025-10-28 11:30:27 +01:00
David Heinemeier Hansson
c17e4f57ff No need for this either 2025-10-28 08:59:37 +01:00
AdamMusa
62cdece33a Allow interaction with first Android Studio dialog ("Send usage statistics") by adjusting JetBrains window rules (#2899)
* fix(jetbrains.conf): allow focus for Android Studio’s first dialog by unsetting nofocus rules for empty-title windows

* Refactor window rules for JetBrains apps

Updated window rules for JetBrains applications to allow focus and interaction with dialogs.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-28 08:38:09 +01:00
Jordan Kicklighter
45d4b41749 Include all shell-integration-features options together (#2915)
Ghostty will only use the last `shell-integration-features` line found
in the config, so multiple options need to be presented as a
comma-separated list. Including them on separate lines meant that only
the `ssh-env` option was getting set, causing the `no-cursor` option to
be ignored. This prevented the cursor from going into the `block` style.
2025-10-28 08:37:11 +01:00
David Heinemeier Hansson
d64a178635 No need to ask 2025-10-28 08:34:22 +01:00
David Heinemeier Hansson
d493e0536a Make it update-time instead of reset-time and use before doing an update 2025-10-28 08:30:54 +01:00
Ryan Hughes
0e5c22ac38 Add the keyring for manual installs 2025-10-28 02:33:54 -04:00
Ryan Hughes
d5a8f1b06b Move update-keyring to the beginning 2025-10-28 01:43:25 -04:00
Ryan Hughes
f3c816fe85 Set version 2025-10-28 01:08:05 -04:00
Ryan Hughes
ba348a6a15 Remove nvim.desktop in favor of symlink
Moving to symlink fixes the following issues:
- App removes from launchers if you uninstall Nvim
- Nvim launches in the correct terminal without invalid desktop entry

Symlink setup moved to omarchy-nvim-setup (Ref:
bb7a0f4c1f)
2025-10-27 23:48:58 -04:00
Ryan Hughes
ef0a9464a2 Back to default colors here 2025-10-27 19:05:01 -04:00
Ryan Hughes
d9a077d5b6 Style gum confirm using ANSI colors so they match 2025-10-27 19:02:56 -04:00
Ryan Hughes
b75e70fb9b Add an update confirmation
Will prevent some users from accidentally clicking the update icon only
to terminate and wind up in a broken state.
2025-10-27 18:12:35 -04:00
Ryan Hughes
4bb626bc4e Add omarchy-keyring for existing installs 2025-10-27 17:50:08 -04:00
Ryan Hughes
b3e7ff2b60 Update install method for openai-codex 2025-10-27 14:20:46 -04:00
Ryan Hughes
4bd29207c6 Add migration for news alerts box 2025-10-27 13:29:09 -04:00
Anton Lindholm
a39ecf41bc config/uwsm/env: remove extra trailing / in path (#2907) 2025-10-27 18:03:52 +01:00
David Heinemeier Hansson
048fdea87a Ensure nvim always opens nvim not $EDITOR
Closes #2900
2025-10-27 17:57:52 +01:00
Alex Six
d8f97b8d02 Fix auto-generated everforest obsidian theme readability issues (#2752)
* Fix auto-generated everforest obsidian theme

* Update `--text-muted` and `--text-faint` to be readable against
background color

* Add contrast detection and color correction logic

* Remove dedicated Obsidian CSS file

* Add dedicated text color variables to obsidian theme generation

* Replace closest color logic with generated color for code bg in Obsidian

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 17:50:37 +01:00
Ryan Hughes
556e474942 Add setting systemd vars to prevent slow app launches 2025-10-27 12:46:55 -04:00
David Heinemeier Hansson
9d9f362c7a Just use the basics in case there is a problem with path 2025-10-27 17:32:16 +01:00
ctarx
1060a54c1a Remove default SSH allow rule from UFW (#2887)
* UFW: limit LocalSend (53317) to LAN and remove default SSH (22) rule

* Revert LocalSend change and drop SSH allow rule
2025-10-27 15:43:48 +01:00
David Heinemeier Hansson
06389d0422 Bump checking for new version from 1 to 6 hours
Lessen the stampede going forward
2025-10-27 15:36:07 +01:00
ctarx
e0e71a34fe imv: add default Ctrl+P binding to print current image via CUPS (#2872)
* imv: add default Ctrl+P binding to print current image via CUPS

* Add imv config migration with backup

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 14:55:14 +01:00
David Heinemeier Hansson
d128833e7b Already in mise-work 2025-10-27 14:51:52 +01:00
David Heinemeier Hansson
bba2ade78f Ensure node is installed for use by treesitter in neovim
cc @ryanrhughes
2025-10-27 09:55:54 +01:00
Zacharias Knudsen
e4f2cc2175 Use better git defaults (#1601) 2025-10-27 09:42:04 +01:00
David Heinemeier Hansson
e0f9beda7a Reposition scratchpad keybindings in cheatsheet 2025-10-27 09:02:54 +01:00
Fredrik Storm
79267da5f2 Add bindings for scratchpad support (#2669)
* Add bindings for scratchpad support

This is great for hiding windows temporarily and bringing them up when
needed in an overlay, I'm using it to hide away my webcam control in
meetings. ;)

* Change shortcut to move window to scratchpad

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-27 09:00:35 +01:00
Wiehann
cc5c842f9f Fix ls when not using eza (#2607)
* Fix ls when not using eza

* Make use of omarchy-cmd-present
2025-10-27 08:56:27 +01:00
Wiehann
9b37d8549f Fix cd command if zoxide is missing (#2609)
* Fix cd command if zoxide is missing

* Make use of omarchy-cmd-present
2025-10-27 08:55:38 +01:00
neimadTL
75eb059779 Remove after install usb installer message (#2888)
Since in almost all cases, the EFI entries will get positioned
above the USB, this notice is not needed.
2025-10-27 08:47:50 +01:00
Rishabh Sarang
7a7881b176 Update windowrule for xdg-desktop-portal-gtk class (#2876) 2025-10-26 20:45:59 +01:00
David Heinemeier Hansson
2586cec7a0 Merge branch 'master' into dev 2025-10-26 13:16:45 +01:00
Ryan Hughes
fc30a25842 Merge pull request #2516 from ZorudaRinku/master
Clarify error message when no web apps have been selected in the WebApp Remove menu
2025-10-25 20:04:26 -04:00
Andrej Benz
1d29406910 fix: cleanup default walker config values (#2560) 2025-10-25 21:47:23 +02:00
David Heinemeier Hansson
249318b398 Ensure that elephant is started before walker
Because if not, we get the dreaded "Waiting for elephant" message. CC:
@abenz1267
2025-10-25 21:46:31 +02:00
Manuel
9b798c3c0f Add the keybinding for the copy url extension in the SUPER+K Menu (#2801)
* init

* go with a hardcoded list

* revert manifest modification

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-25 21:38:13 +02:00
Ryan Hughes
14f803857c Update issue templates 2025-10-25 12:58:21 -04:00
David Heinemeier Hansson
b92beef294 Ensure Wayland IME is turned on when starting Typora from hotkey too 2025-10-25 14:25:06 +02:00
Rishabh Sarang
6fce5e28c9 fix(portal): match additional 'Choose Export Directory' dialogs (#2839)
Some applications (e.g. Aether) use xdg-desktop-portal-gtk to open folder chooser dialogs titled "Choose Export Directory" or similar. These were not matched by the previous floating-window regex, causing them to tile instead of float.

This change expands the title regex to include "Choose …" patterns, ensuring these dialogs float and center properly in Hyprland
2025-10-25 13:16:16 +02:00
Brennan Coslett
7b02895962 Surface: enable built-in keyboard at LUKS (#2621)
Derives the list of required modules for the installer from Chris
McLeod's manual installation steps. His instructions say to use the
surface-linux kernel however the default kernel has the right set
of modules already (as noted by the fact that the right modules are
loaded for the keyboard to work during the install and after the LUKS
unlock screen).

I only have a Surface Laptop 3 to test this on but based on the guide
where Chris is using a newer laptop and the only difference is the
pinctrl module which I attempt to autodetect I think it should "just"
work for others but definitely "use at your own risk".
2025-10-25 08:18:23 +02:00
Nikhil Jain
9a90afb6e8 New window replaces the current fullscreen or maximized window (#2821)
* New window replaces the current fullscreen or maximized window

Currently if we are in fullscreen or full-width mode and either

start a new application OR
create a new window of an existing application. Like an incognito window
Then those new windows/apps start in the background. There is no indication that something new has been created.

IMHO, if I am opening an application then I want to switch to it. I cannot think of any common use case for having new applications open in the background.

This change will cause new application to replace current application as the fullscreen / fullwidth window

Please see docs: https://wiki.hypr.land/Configuring/Variables/#misc

Option:
new_window_takes_over_fullscreen

Desc:
if there is a fullscreen or maximized window, decide whether a new tiled window opened should replace it, stay behind or disable the fullscreen/maximized state. 0 - behind, 1 - takes over, 2 - unfullscreen/unmaxize [0/1/2]

Type:
int

Default:
0

* fix the setting name
2025-10-24 12:55:14 -07:00
David Heinemeier Hansson
37518c222c Control border size instead so it works if default is 0 2025-10-24 07:16:36 -07:00
David Heinemeier Hansson
6f0958aa67 Suggest entirely fullscreen view option 2025-10-24 07:13:01 -07:00
David Heinemeier Hansson
475e831391 Merge branch 'master' into dev 2025-10-24 06:45:33 -07:00
Rishabh Sarang
69c2195c10 fix(hyprland): match Brave portal dialogs in floating-window rule (#2788)
* fix(hyprland): match Brave portal dialogs in floating-window rule

Brave on Wayland uses xdg-desktop-portal-gtk for permission and file dialogs.
These windows use website-based titles (e.g. "chatgpt.com wants to open")
instead of "Open File" or "Save File", so they were not matched by the
floating-window rule. This commit expands the title regex to include those
patterns, ensuring Brave dialogs float properly.

* Shrink scope

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-24 06:35:30 -07:00
David Heinemeier Hansson
795bfdd969 Include all workspace movements together 2025-10-24 06:30:47 -07:00
David Heinemeier Hansson
eac7ea8a49 Few more tweaks to the keybindings 2025-10-24 06:26:46 -07:00
David Heinemeier Hansson
de2b32d77f Sort keybindings on SUPER + K
Easier to learn when presented in order
2025-10-24 06:06:34 -07:00
Ryan Hughes
63d4482e8c Hotfix: Prevent error when no orphans exist 2025-10-24 04:01:07 -04:00
Ryan Hughes
efdea50053 Update issue templates 2025-10-24 03:43:52 -04:00
Ryan Hughes
15c22d5e75 Merge pull request #2770 from basecamp/dev
Omarchy v3.1.2
2025-10-24 03:01:34 -04:00
Ryan Hughes
1776981ebf Set version for release 2025-10-24 02:55:42 -04:00
Ryan Hughes
cff15363c9 Add asdcontrol 2025-10-24 02:37:17 -04:00
Ryan Hughes
d2efdcede4 Revert "Add wayfreeze"
This reverts commit be24e38ea2.
2025-10-24 02:33:29 -04:00
Ryan Hughes
be24e38ea2 Add wayfreeze 2025-10-24 02:29:21 -04:00
Ryan Hughes
717a015537 Migrate to non-bin again 2025-10-24 02:26:38 -04:00
Ryan Hughes
a37495e3d1 Add migration to add node if it's missing 2025-10-23 23:03:00 -04:00
Ryan Hughes
7882893a23 Add right-click for emergency terminal 2025-10-23 22:32:43 -04:00
Ryan Hughes
7437c73113 Add launch terminal 2025-10-23 22:26:46 -04:00
Ryan Hughes
413d292f2a Improve update error catching 2025-10-23 21:33:23 -04:00
Ryan Hughes
50e68f466e Just kidding 2025-10-23 20:29:07 -04:00
Ryan Hughes
d106cd9284 Don't run as root and add missing pieces 2025-10-23 20:28:51 -04:00
Ryan Hughes
62b6802641 Don't run as root 2025-10-23 20:28:23 -04:00
Ryan Hughes
4f2f7b41e7 Add branch 2025-10-23 20:17:58 -04:00
Ryan Hughes
74473f5650 Add omarchy-refresh-limine 2025-10-23 17:23:05 -04:00
3x3cut0r
a7d76bfc24 Merge pull request #1 from 3x3cut0r/codex/refactor-omarchy-windows-vm-rdp-initialization
Improve Windows VM launch to verify RDP readiness
2025-10-23 23:20:05 +02:00
Ryan Hughes
b6eb76d3ea Add omarchy-debug 2025-10-23 17:15:57 -04:00
3x3cut0r
f5d0c16f85 Improve RDP readiness check before launching VM 2025-10-23 22:50:10 +02:00
David Heinemeier Hansson
ba2018087c Provide time and battery notifications for when you're running without the waybar 2025-10-23 13:40:41 -07:00
David Heinemeier Hansson
9f00d5a3a0 Extract omarchy-battery-remaining command 2025-10-23 13:40:18 -07:00
David Heinemeier Hansson
260d586343 Revert "Use our OPR version"
This reverts commit d29e5777e0.
2025-10-23 12:26:09 -07:00
David Heinemeier Hansson
027825cbad Add way to update time with latest sync 2025-10-23 12:18:14 -07:00
David Heinemeier Hansson
d29e5777e0 Use our OPR version 2025-10-23 12:15:50 -07:00
David Heinemeier Hansson
5d756de561 Just do the missing ones 2025-10-23 12:10:48 -07:00
David Heinemeier Hansson
6529472cad No output 2025-10-23 11:58:49 -07:00
David Heinemeier Hansson
2310569eae Fix path 2025-10-23 11:56:55 -07:00
David Heinemeier Hansson
70f69c7fc6 Also ensure we are resetting the Omarchy repository 2025-10-23 11:39:10 -07:00
David Heinemeier Hansson
c7f851cc57 More work needed 2025-10-23 11:32:00 -07:00
David Heinemeier Hansson
56f1c82b7d Add omarchy-reinstall command to bring back screwed up systems 2025-10-23 11:31:29 -07:00
David Heinemeier Hansson
83beedabab Remove branch selector
It should not be so easy to get yourself into trouble with the dev
branch
2025-10-23 11:08:43 -07:00
Ryan Hughes
76209ee33e Only clean if we see the entry 2025-10-23 14:06:28 -04:00
Ryan Hughes
7c7d472e39 Don't scan to prevent prompting users 2025-10-23 13:57:25 -04:00
Ryan Hughes
9b4a42cc03 Remove setting UKI as primary boot from default 2025-10-23 13:51:31 -04:00
Ryan Hughes
385020cbb0 Cleanup after having moved to omarch_linux.efi 2025-10-23 13:51:31 -04:00
David Heinemeier Hansson
6fbb3d4464 Don't start in fullscreen 2025-10-23 10:48:07 -07:00
David Heinemeier Hansson
5171475836 Shine up notification to set expectations 2025-10-23 10:48:07 -07:00
Ryan Hughes
9ddcfbe466 Move to pinned version of wayfreeze 2025-10-23 13:44:53 -04:00
David Heinemeier Hansson
9d7c9e7344 Wait a little longer
We need something better here though
2025-10-23 10:34:08 -07:00
David Heinemeier Hansson
101c29f3b1 Merge branch 'master' into dev 2025-10-23 08:22:59 -07:00
David Heinemeier Hansson
c84d98a80b Document defaults better 2025-10-23 08:12:41 -07:00
David Heinemeier Hansson
88011f5d11 Ensure we always return successfully even if waybar isn't running 2025-10-23 07:50:56 -07:00
David Heinemeier Hansson
832ca69ba2 Simplify
Updated project description to be more concise and focused.
2025-10-23 07:34:11 -07:00
Vu Hoang Nam
786ae66154 Enable AVC444 graphics for RDP connection (#2722) 2025-10-23 06:26:05 -07:00
hans
7dca096807 Fix typo in bindings.conf comment (#2754)
Corrected a typo and fixed grammar in the comment regarding web app URLs.  (changed hyperland to hyprland and fixed grammar in the same line)

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-10-23 06:17:19 -07:00
Pedro Adame
2fa7d64d77 Differentiate clipboard screenshot keybinding in utilities.conf (#2757)
* Differentiate clipboard screenshot keybinding in utilities.conf

* Change screenshot binding description

Updated screenshot binding description for clarity.

---------

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-23 06:12:21 -07:00
Ryan Hughes
83d4349ea1 Add non-interactive check back 2025-10-22 20:59:26 -04:00
David Heinemeier Hansson
bddccf30cb Add bindings for Typora and Google Photos 2025-10-21 18:16:32 -07:00
David Heinemeier Hansson
910c23f539 Only update extra themes that are git repositories
Fixes #2688
2025-10-21 17:52:25 -07:00
Taha
33baf59cef Add preview image file for Flexoki-light theme (#2670) 2025-10-21 17:11:07 -07:00
David Heinemeier Hansson
e9c40445dd Give hyprland commands their own namespace 2025-10-21 17:06:02 -07:00
David Heinemeier Hansson
e2b56720ac Add binding to toggle workspace gaps on SUPER + SHIFT + BACKSPACE 2025-10-21 16:58:33 -07:00
Christopher Newman
54bcc68490 Enable sound and microphone in RDP connection (#2676)
adding /sound and /microphone to omarchy-windows-vm

Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-21 15:39:02 -07:00
David Heinemeier Hansson
c3b86c602e No need to add .local/bin 2025-10-21 07:25:18 -07:00
Demis Bellot
61e0fa27e2 Add mouse scroll bindings for window group navigation (#2653)
Added mouse scroll bindings for navigating grouped windows.
2025-10-21 07:14:03 -07:00
David Heinemeier Hansson
ea985fd471 Fix migration to work with both uwsm-app and uwsm app
Closes #2666
Co-authored-by: @sedubois
2025-10-21 07:11:42 -07:00
John Zetterman
dfa689f4ea Updated logic to find Obsidian vault regardless of location (#2668)
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-10-21 07:01:58 -07:00
Alex R Teal
530577e8fe Add /dynamic-resolution flag to be reactive to window size changes (#2647)
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-10-21 06:58:19 -07:00
Wolfgang Woehl
1388a2558a Screensaver go fullscreen: --no-eol (tte 0.12.2/0.13.0) and --canvas-height 0 2025-10-21 02:44:41 +02:00
Stefan Gründel
42a5b3bf22 disable update checks in VS Code on install, now creating target dir first (#2636)
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-10-20 14:21:44 -07:00
Ryan Hughes
f0f319ed92 Move version forward 2025-10-20 12:30:20 -04:00
Ryan Hughes
38f5a00ad6 Merge pull request #2622 from basecamp/dev
v3.1.1
2025-10-20 11:42:26 -04:00
Ryan Hughes
12f9beab86 Update version 2025-10-20 11:23:14 -04:00
Ryan Hughes
572bbf823b Update walker migration to run for everyone 2025-10-20 10:52:03 -04:00
Bruno Martins
f297ad1e99 fix: universal RAM detection (locale-independent) (#2566)
* fix: make RAM detection compatible with all locales (free output in any language)

* Look at total RAM, not just free

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-20 07:01:44 -07:00
Jon Kinney
c4f93787d6 Error fallback if terminal was not installed successfully (#2611) 2025-10-20 06:55:28 -07:00
Timo Hubois
730cba2e2a feat(clipboard.conf): add descriptions (#2615) 2025-10-20 06:54:38 -07:00
David Heinemeier Hansson
d70d84af71 Fix changing workspace with mousescroll
Fixes #2586
2025-10-20 06:53:14 -07:00
Brian Blakely
d11d30ac31 Add binding for tiled full screen toggle (#2598)
This seems niche, but you might like it. Binds Super + Ctrl + F to force-tile a fullscreen app. It works nice for things including running games in a tile or watching YouTube in a pip tile without needing to configure these apps specifically to do so.
2025-10-20 05:27:49 -07:00
David Heinemeier Hansson
ef52bb5f93 Move version forward 2025-10-19 09:29:44 +02:00
David Heinemeier Hansson
73036988ed Update version 2025-10-19 09:29:04 +02:00
David Heinemeier Hansson
6ee6dbaf2a Merge pull request #2417 from basecamp/dev
Omarchy 3.1.0
2025-10-19 09:27:33 +02:00
David Heinemeier Hansson
be697860aa Stick with existing name inside theme 2025-10-19 09:25:39 +02:00
Ryan Hughes
f64d73c24c Ensure consistent size 2025-10-19 02:30:28 -04:00
Ryan Hughes
880e779cf2 Make border easier to override 2025-10-19 02:30:20 -04:00
Ryan Hughes
a1e80e1cab Add migration for misc. items since 3.1.0-RC 2025-10-18 17:44:06 -04:00
Ryan Hughes
bd761379a7 Add nfs support 2025-10-18 17:01:02 -04:00
David Heinemeier Hansson
cc2523ff89 Use 3 blur passes by default
Co-authored-by: @vyrx-dev
2025-10-18 21:51:57 +02:00
David Heinemeier Hansson
d421b63873 Revert "Walker now needs a default qalculate/qalc.cfg to work out of the box"
This reverts commit bc99b8ce96.
2025-10-18 21:38:27 +02:00
Ryan Hughes
5cf56f31e6 Update wayfreeze to -git 2025-10-18 15:19:43 -04:00
Ryan Hughes
636416bbd2 Revert "Remove wayfreeze until we have the AUR pkg built in OPR"
This reverts commit ea30329522.
2025-10-18 15:19:09 -04:00
David Heinemeier Hansson
40312523e3 Suggest that this is a fine spot for custom Hyprland configs 2025-10-18 21:17:06 +02:00
David Heinemeier Hansson
735fc2d263 Fix indention 2025-10-18 21:09:02 +02:00
David Heinemeier Hansson
dc00227f0a Fix all themes active border for groups to match regular active border 2025-10-18 21:09:02 +02:00
Ryan Hughes
5028e241c5 Install Node by default 2025-10-18 14:27:09 -04:00
David Heinemeier Hansson
fc4cf86487 We can no longer just relaunch hyprland
So restart it is
2025-10-18 20:08:42 +02:00
David Heinemeier Hansson
3bf7c15906 Relaunching Hyprland is not compatible with sddm
But it is also no longer necessary since ENVs are dynamically reloaded
2025-10-18 20:05:01 +02:00
David Heinemeier Hansson
bc99b8ce96 Walker now needs a default qalculate/qalc.cfg to work out of the box 2025-10-18 16:23:27 +02:00
Hendrik Bergunde
53336e21b1 Fix google-chrome opacity in hyprland (#2526)
Google Chrome reports itself as google-chrome in `hyprctl clients` but
the matching for the windowrule did not work, probably because since
hyprland 0.46.0 the regex matching needs to span the entire string.

This change makes "google-chrome" get recognized so that windows of that
browser receive the chromium-based-browser tag, which in turn provides
better opacity settings for Chrome windows. Since "chrome" was matched
by the regex before, this fix now should restore the originally intended
behavior for Google Chrome.

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-18 16:17:23 +02:00
David Heinemeier Hansson
24e76a3b90 Add hooks for theme set, font set, and post update (#2527)
Ala git hooks
2025-10-18 16:11:49 +02:00
David Heinemeier Hansson
63e3b3e32f Hide yet another fcitx5 filler app 2025-10-18 15:34:40 +02:00
David Heinemeier Hansson
6790cfc1f5 Fix spacing for waybar icons for all 2025-10-18 13:40:23 +02:00
brink-lab
920b1a983f Fix spacing between icons on Waybar (#1411)
* Update style.css

Fixes the uneven spacing between icons on waybar by updating styling.css with Propo font family.
However, Propo introduces a small issue as the volume icons don't have the same with. As a consequence, icons left of volume will move based on the displayed volume icon. To solve this, I added a non-Propo font to the pipewire module as well - this way the volume icons have fixed length but eats a bit into the spacing towards the CPU icon. But I see this as the best trade-off.

* Update waybar config.jsonc

* Update tray spacing in waybar config

* Modify margins in style.css

Adjusted margins for various elements.

* Update waybar css for even spacing

* Update Waybar config tray spacing
2025-10-18 13:32:38 +02:00
David Heinemeier Hansson
80907fcf4f Ensure we use 644 for all configs and migrations 2025-10-18 13:30:19 +02:00
Vaibhav Verma
c401c877a3 Fix theming for Brave and add theming support for helium (#2518)
* Fix theeming for Brave and add theeming support for helium

* bugfix: syntax
2025-10-18 12:18:01 +02:00
Vaibhav Verma
e03193eea4 Fix omarchy-theme-set-vscode to only remove theme instead of the complete line (#2523) 2025-10-18 12:16:27 +02:00
Miha Rekar
c24c1f1c5a Update clipboard manager shortcut in the migration warning (#2524) 2025-10-18 12:15:55 +02:00
David Heinemeier Hansson
ef2bfb37ad Correct the clipboard manager hotkey 2025-10-18 12:11:50 +02:00
David Heinemeier Hansson
ea30329522 Remove wayfreeze until we have the AUR pkg built in OPR
CC @ryanrhughes
2025-10-18 12:00:07 +02:00
ZorudaRinku
8b896b60a9 Clarify error message when no web apps have been selected in the WebApp Remove menu 2025-10-17 19:30:29 -06:00
David Heinemeier Hansson
9ea990b88c Add missing CR 2025-10-17 23:51:25 +02:00
David Heinemeier Hansson
5a2a49c999 Note that accepting will change existing bindings but make a backup 2025-10-17 23:48:20 +02:00
David Heinemeier Hansson
5a10222dc9 No longer needed
We are moving all the bindings together
2025-10-17 23:45:38 +02:00
David Heinemeier Hansson
cad71169c2 Add Aether to existing installations as well 2025-10-17 23:38:16 +02:00
Ryan Hughes
0588cc8e5b openai-codex-bin -> openai-codex due to being outdated 2025-10-17 15:44:13 -04:00
Ryan Hughes
0b1875e2b9 Include Aether by default 2025-10-17 14:15:31 -04:00
Ryan Hughes
648551f98a Add shift+insert keybind 2025-10-17 14:00:51 -04:00
David Heinemeier Hansson
1a1c736936 Make setting timezone an explicit act
Since we can't always rely on geo guessing everywhere and it is slow
2025-10-17 12:50:02 +03:00
Claudio Benvenuti
a874f6f8a6 Fix: include symlinked backgrounds in theme rotation (#2355) 2025-10-17 12:27:02 +03:00
Darcy Brown
4174ff7b13 Dynamic Color Match Obsidian theme to current Omarchy theme (#791)
* feat: obsidian theme to tie into Omarchy theme

* better color matching for search result matches

* feat: simplify install flow

* Removed install/remove scripts and flow
* First `omarchy-theme-set-obsidian` run will look for vaults in
Documents and Dropbox folders and add them to
`/.local/state/omarchy/obsidian-vaults`
  * Point of this is such that we assume a couple locations to look for
vaults but allow people to add vaults to the file for custom locations.
Subsequent theme-set invocations aren't impacted by find/search on large
systems
* Each `omarchy-theme-set` invocation will install the themes on all
found/registered vaults if missing and update the live theme
* Added an option of `omarchy-theme-set-obsidian --reset` to wipe out
themes in registered vaults and remove the registry file. This would be
the option to re-run to the automatic vault registration.
* Added migration to trigger install immediately in Obisdian, note that
you still need to pick Omarchy theme.
2025-10-17 12:22:38 +03:00
David Heinemeier Hansson
f607ba51ff Include Super + X for cut
This won't work in terminal, but still better to have it consistent
2025-10-17 12:11:30 +03:00
Ryan Hughes
06827c8ee6 Add smart region selection to omarchy-cmd-snapshot (#1714)
* Add smart snapshot selection

* Add wayfreeze

* Update to only include current workspace in rectangles

* Fix if there are no windows on screen

* Add option to sidestep slurp and copy straight to clipboard

* Update capture menu

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-17 11:58:40 +03:00
Stefan Gründel
dcac313bb2 disable update checks in VS Code on install (#1730)
* Add ssh-agent configuration and enable service on user install

* add migration

* install SSH Agent via service menu

* Delete install/config/all.sh

* Delete migrations/1757524404.sh

* Delete install/config/ssh-agent.sh

* Update envs.conf

* Revert "Delete install/config/all.sh"

This reverts commit 579fb835ad.

* revert all.sh changes

* disable update checks in VS Code on install

* Delete bin/omarchy-install-ssh-agent

* Update omarchy-menu

revert changes from wrong branch

* add migration script

* Merge back

* Fixup

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-17 11:42:59 +03:00
David Heinemeier Hansson
48feb5d404 Need to grab the last not first pid now
Not entirely sure why!
2025-10-17 11:39:25 +03:00
David Heinemeier Hansson
a8a6cde199 Remove eza theming in favor of just sticking with ansi
Ended up not liking the themes better than what ansi gives us
2025-10-17 11:03:54 +03:00
Ryan Hughes
ccde212644 Add Windows VM (#2462)
* adding TUI for starting up windows VM

* updating to use docker-compose

* adding possibility to set windows product-key

* ram and cpu settings

* first time run notes

* add two needed pacman packages

* key and package install

* Revert "add two needed pacman packages"

This reverts commit 04dc96cee0.

* add install and remove scripts

* install icon

* rename scripts and menu to Windows VM

* rename also launch script to windows vm

* update nameing

* remove quotes

* fix paramter and quiting after installation

* fix launch script

* update

* certificate acceptance and remove of desktop app

* move desktop app

* rename app from "Windows VM" to "Windows"

* add example of sharing local share with Windows

* merge 'dev' into windows-docker-vm

* exchange rdesktop with freerdc

* accept certificates automatically so user don't fail first try

* remove certi during normal launch (handled in install process)

* remove volumes and orphans to have clean state (avoids hang on login)

* /cert option still needed

* Simplify package installs

* Fix icon + desktop to prevent creation on initial install

* omarchy-windows-vm in working form

* Don't need this anymore

* Fix commands

* Always use uwsm-app

* We are generating it instead

* Make omarchy-pkg-add quiet when the packages are already there

* Improve the questionnaire

* Show where you change resource usage

* Add default Windows share

---------

Co-authored-by: sspaeti <simon@ssp.sh>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-17 10:07:08 +03:00
Ryan Hughes
ea38e43fe6 Add calc to refresh 2025-10-17 00:41:19 -04:00
Ryan Hughes
a672f6350a Don't need this 2025-10-17 00:41:13 -04:00
Ryan Hughes
2789454183 Don't need to relaunch anymore 2025-10-16 20:52:57 -04:00
Ryan Hughes
a7a075d898 Prevent calculating flash 2025-10-16 12:26:35 -04:00
Ryan Hughes
c6b598ba91 Rename nvim setup 2025-10-16 11:44:02 -04:00
Ryan Hughes
ad3bc03653 Rename nvim setup 2025-10-16 11:41:30 -04:00
Ryan Hughes
96eed35b51 Kickstart Walker service if it goes down 2025-10-16 11:27:14 -04:00
Ryan Hughes
f81f9dd181 Disable actions 2025-10-16 10:55:06 -04:00
Ryan Hughes
d50e4a6814 Add elephant config to refresh 2025-10-16 10:55:06 -04:00
David Heinemeier Hansson
6b1b73b87c Use uwsm-app instead of uwsm app consistently 2025-10-16 13:59:08 +03:00
David Heinemeier Hansson
94aac3777c Expose screenrecording with webcam 2025-10-16 13:52:36 +03:00
David Heinemeier Hansson
8bc0980bc5 Always reload every terminal
So you can use it even if you mix and match
2025-10-16 13:47:20 +03:00
Carl-Johan Landin
9c145b91d7 Fix typo in everforest theme ghostty.conf (#2471)
Co-authored-by: Carl-Johan Landin <carl-johan@teenage.engineering>
2025-10-16 13:44:09 +03:00
Johannes Normann Jensen
dff61f0748 feat: add mssql-server to omarchy-install-docker-dbs (#2474) 2025-10-16 10:24:21 +03:00
David Heinemeier Hansson
fecf83d07b Hookup keybindings notification to actual keybindings menu 2025-10-15 22:04:06 +03:00
David Heinemeier Hansson
f0bba6c6e8 Fix the terminal fixer 2025-10-15 19:21:43 +03:00
David Heinemeier Hansson
f6330054fd Drop localsend-bin if it was already there 2025-10-15 19:11:26 +03:00
David Heinemeier Hansson
6247712205 Keep terminal on SUPER + RETURN 2025-10-15 19:09:08 +03:00
David Heinemeier Hansson
44231e43b7 Ensure clock is up to date 2025-10-15 18:55:09 +03:00
David Heinemeier Hansson
ac0ffa42dd Kick off the new migration from within itself 2025-10-15 18:36:57 +03:00
David Heinemeier Hansson
e080f62de0 Simplify the initial setup to just the PATH 2025-10-15 18:28:28 +03:00
David Heinemeier Hansson
c0dc0a0e47 Revert "Update packages as the very first thing"
This reverts commit 351d8ac938.
2025-10-15 18:25:05 +03:00
David Heinemeier Hansson
351d8ac938 Update packages as the very first thing 2025-10-15 18:22:03 +03:00
Ryan Hughes
4100ebba47 Merge pull request #2425 from sa-dd/dev
fix: make bcm43xx driver script vendor agnostic
2025-10-15 10:53:43 -04:00
Ryan Hughes
a67391b3ea Clarify Broadcom chip support comments 2025-10-15 10:53:29 -04:00
David Heinemeier Hansson
06668cf20f Reveal main keybindings on welcome 2025-10-15 17:48:17 +03:00
Ryan Hughes
385f846fff Re-add ristretto color fixes 2025-10-15 10:47:25 -04:00
Ryan Hughes
d3048b56bd Consolidate migrations for wl-screenrec + wf-recorder 2025-10-15 10:35:13 -04:00
David Heinemeier Hansson
1a4d1d675c Ensure all packages are up to date
Needed for versions prior to when we do this before applying migrations
2025-10-15 13:51:41 +03:00
David Heinemeier Hansson
d06708d56e No longer needed 2025-10-15 13:48:16 +03:00
David Heinemeier Hansson
2d788dec21 wl-clip-hist is buggy and feels like its a cure worse than the disease 2025-10-15 13:42:26 +03:00
David Heinemeier Hansson
de1e47d2f7 New version 2025-10-15 13:33:42 +03:00
David Heinemeier Hansson
1eecf0b8e7 Copy over updated app icons that work with light mode 2025-10-15 12:46:21 +03:00
Ryan Hughes
bd52f8ae52 Fix some missing bindings 2025-10-14 21:54:56 -04:00
Ryan Hughes
d625178a9b Remove test garbage 2025-10-14 16:09:29 -04:00
Ryan Hughes
bb943ae24f Update restart to prevent dbus error 2025-10-14 16:03:17 -04:00
David Heinemeier Hansson
e4d24ca637 Use SUPER + G for grouping 2025-10-14 22:43:29 +03:00
David Heinemeier Hansson
fd9a6f48b3 Can't add this if we are using SUPER + G 2025-10-14 22:43:29 +03:00
Alexander Zaytsev
1d2d6740dd Update application icons (#2450)
* Update icons

* Optimize images
2025-10-14 22:42:51 +03:00
Steve Lamotte
102f952c55 Fix UFW autostart issue (#2453)
* Improve theme-set-vscode to support jsonc and respect symlinks (#1756)

* Ghostty needs a very different scrollfactor than Alacritty and Kitty

cc @mitchellh

* Hide hyperland cursor while typing (#1812)

* Fix Matte Black theme ghostty and vscode configs (#1801)

* Update Matte Black ghostty.conf with more color settings

* Rename theme from 'MatteBlack' to 'Matte Black'

* Catch obsidian vault dialog too

* Add Update > Hardware > Audio for restarting pipewire service

* Give output on what's intended to happen

* Ensure libyaml is available for installs made before that was on the ISO

* Limit pattern to prevent incorrect matches

* fix: ghostty config typos

* No longer used

Closes #1815

* Revert "Ensure libyaml is available for installs made before that was on the ISO"

This reverts commit ad01082a86.

* Add Helium browser to supported browsers list in omarchy-launch-webapp

* Fix Helium browser detection in launch script

* feat: Added MacBook10,1 to the fix-apple-spi-keyboard.sh

* Suggest how to have a smaller-than-max-width single window aspect ratio

* Add more Mac models to SPI keyboard support

Added:

MacBook 8,1
MacBook 9,1

MacBook 8,1 uses slightly different moduels from what I can tell, so I’ve added a case statment.  Please tweak as needed.

* Fix conflict + rearrange

* Added fix for ealy 2013 macbook pro's using an older chipset, BCM4331

* Tried with a different approach for cleaner code

* Clean up

Tested the logic on the MacBook. It worked and the install of the
drivers are reenabled.

* Combine ifs

* Update install script name

* Fix for '(null)' display on AirPod source selection

* Use output display or region geometry to record

The previous code did not identify the output display correctly,
leading to wf-recorder asking the user to select the region when the
user requested the display output to be selected.

With this change the bash script will use slurp with the -o flag to
identify the display output.

This has not been tested with wl-screenrec as no change has been made to
its call signature in omarchy-cmd-screenrecord and the wl-screenrec
binary is not included in the default omarchy installation.

* Fix TUI install script

- $TERMINAL should remain variable

* Add migration to fix Docker and Disk Usage TUIs

* Replace "--class" with "--class="

* Revert "Fix for '(null)' display on AirPod source selection"

* Typo

* Fix comment

* Change up firewall setup

* Enable ufw

* Disable ufw-docker (isolation test)

* Add some reboot on done debugging

* Debug firewall install/config

* Add first-run logging

* Don't suppress output from apparently-failing systemctl reboot command

* Fix logging

* Use old reboot. Still chrooted so probably won't work.

* Allow systemctl on first run

* Revert logging and other changes

---------

Co-authored-by: Omar Skalli <omar.skalli7@gmail.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Johan Sørensen <johan@johansorensen.com>
Co-authored-by: Taha <paprikataha@gmail.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: Che-Wei Lin <linton.tw@gmail.com>
Co-authored-by: Patrick Byrne <pby.software@byrne.dk>
Co-authored-by: Eduardo Mínguez <e.minguez@gmail.com>
Co-authored-by: Joel Gaff, Jr <joelga@hey.com>
Co-authored-by: Michael Larsen <michaelarsen@gmail.com>
Co-authored-by: Shawn Yeager <shawn@shawnyeager.com>
Co-authored-by: observable <hello@observable.art>
Co-authored-by: Djordje Kovacevic <djordjek65@gmail.com>
2025-10-14 22:41:26 +03:00
David Heinemeier Hansson
3d335a5278 Add migration for new hotkeys 2025-10-14 22:26:54 +03:00
David Heinemeier Hansson
fcae2e9809 Switch to new hotkeys
Make room for unified super + c/v and put all app launches on super +
shift + [letter]
2025-10-14 22:26:48 +03:00
Ryan Hughes
671194dfa9 Nvim is self-contained now 2025-10-14 13:17:40 -04:00
Ryan Hughes
ab3b65a2b1 Move to omarchy-nvim 2025-10-14 12:56:31 -04:00
Ryan Hughes
7c273f4944 Don't use chrootable here 2025-10-14 12:37:45 -04:00
David Heinemeier Hansson
3b8fce1c2d Consistent ordering with other themes 2025-10-14 12:41:35 +03:00
Wojciech Wnętrzak
154cd066ee Add auto nightlight example config (#2446)
By commenting out this config one can have nightlight applied automatically
2025-10-14 12:37:57 +03:00
David Heinemeier Hansson
90536dff3f Fix screenrecording menu and reveal it as the only hotkey 2025-10-14 12:35:06 +03:00
David Heinemeier Hansson
9c8dad9054 Not needed and distracting when themes are not available for Cursor 2025-10-14 12:15:10 +03:00
David Heinemeier Hansson
491e980dd9 Style 2025-10-14 12:02:27 +03:00
David Heinemeier Hansson
313dcd4468 Fix referencing existing extension 2025-10-14 12:02:18 +03:00
Alexandre Perreault
d615d2f9b5 fix: mute output when hiding cursor in screensaver (#2419) 2025-10-14 11:51:55 +03:00
Derek
800962b18f fix: prevent Chromium crash when moving windows between monitors (#2394)
* fix: prevent Chromium crash when moving windows between monitors

Adds --disable-features=WaylandWpColorManagerV1 to Chromium and Brave
flag configs to prevent crashes when moving windows between monitors or
workspaces on Hyprland. This is a workaround for a Chromium/Wayland
color management conflict.

Upstream Chromium fix exists but won't reach stable for ~a month. This
provides a temporary bridge until the fix lands in stable releases.

Fixes #2384
Refs #2184
Refs: https://github.com/hyprwm/Hyprland/issues/11957
Refs: https://github.com/hyprwm/Hyprland/discussions/11961
Refs: https://issues.chromium.org/issues/40263183
Refs: https://chromium-review.googlesource.com/c/chromium/src/+/7003036

* Add migration to update existing Chromium/Brave configs with crash fix

Adds migration script to append --disable-features=WaylandWpColorManagerV1
to existing users' chromium-flags.conf and brave-flags.conf files.

The script:
- Checks if config files exist before attempting to modify them
- Uses grep to verify the flag isn't already present
- Only adds the flag and explanatory comment if needed
- Handles both Chromium and Brave configurations

This ensures existing Omarchy users get the Hyprland crash workaround
without needing to manually update their configs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix warnings and make conditional explicit

---------

Co-authored-by: Derek Castillo <d-cas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-14 11:44:55 +03:00
Luke Hsiao
87d7bd966b Fix typo in omarchy-update-firmware (#2442)
Signed-off-by: Luke Hsiao <luke@hsiao.dev>
2025-10-14 10:43:57 +03:00
Luke Hsiao
ff3d65993e Fix font menu by using --width parameter for walker (#2444)
When we call `omarchy-launch-walker` with `-w`, we get the following
error.

    echo -e $'Adwaita Mono\nBerkeley Mono\nBerkeley Mono Variable\nCaskaydiaMono Nerd Font\nCaskaydiaMono Nerd Font Mono\niA Writer Mono S\nIosevka Fixed\nJetBrainsMono Nerd Font\nJetBrainsMono Nerd Font Mono\nJetBrainsMonoNL Nerd Font\nJetBrainsMonoNL Nerd Font Mono\nLiberation Mono\nNimbus Mono PS' | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 600 -p Font… -w 350 -c 3
    Error parsing option -w

Instead, we now pass `--width`, to properly override the default
`--width 295` for fonts.

Closes: https://github.com/basecamp/omarchy/issues/2404

Signed-off-by: Luke Hsiao <luke@hsiao.dev>
2025-10-14 10:43:20 +03:00
sadd al
5b8ee60cc4 fix: make bcm43xx driver script vendor agnostic 2025-10-13 14:27:30 +05:00
Ryan Hughes
80b37f229b Merge pull request #2422 from abenz1267/walkerfix
fix: broken walker keybinding
2025-10-13 01:52:00 -04:00
Ryan Hughes
5057101bbd Use chrootabl_systemctl_enable 2025-10-13 01:09:12 -04:00
Ryan Hughes
c6627f0e67 Cleanup 2025-10-13 01:06:56 -04:00
Ryan Hughes
9783b4b782 Exit hyprland for now 2025-10-13 01:01:57 -04:00
Ryan Hughes
2213589e6e Remove restart sddm 2025-10-13 01:01:57 -04:00
Ryan Hughes
10e8fe581b Prompt if they have a keyring 2025-10-13 01:01:57 -04:00
Andrej Benz
7e7b37095f fix: broken walker keybinding 2025-10-13 05:34:50 +02:00
David Heinemeier Hansson
6c2c85d2b9 Couldn't install them like this without having them appear as corporate managed 2025-10-12 21:13:01 -04:00
David Heinemeier Hansson
9d8d4bc5c1 Include flexoki as new default theme 2025-10-12 21:09:14 -04:00
David Heinemeier Hansson
00b3983f8a Fix ctrl+insert keybindings in kitty and ghostty too
So we can use it for super+c
2025-10-12 20:34:52 -04:00
Wey Gu
fa029c54fb macbook 12' fixes on login keyboard & suspend wake up (#1959)
* macbook 12' fixes on login keyboard & suspend wake up

- apple spi keyboard production_name pattern fixed:

Macbook 12' are MacBook8,1 9,1 and 10,1 for 2015, 2016 and 2017 models
The MacBookPro12,1 is not a thing.

ref: https://everymac.com/ultimate-mac-lookup/?identify=MacBook10%2C1

- add fix-apple-suspend-nvme.sh to fix MacBooks with NVMe cannot wake up

ref: https://github.com/Dunedan/mbp-2016-linux?tab=readme-ov-file#suspend--hibernation

* fix escapes in file path

* add invocation in all.sh and migration script

* Fix paths

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-12 20:19:10 -04:00
Martin Mose Facondini
56e690b861 feat: enable vim keys for btop (#1581)
* feat: enable vim keys for btop

* feat: add migration for btop vim keys

* Cleanup

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-12 20:13:45 -04:00
Qasim
cac8b03821 alacritty.toml with proper bg and fg (#1851)
* alacritty.toml wity proper bg and fg

background = "#1e1e2e"
foreground = "#cdd6f4"

are the proper colors for terminal bg and fg when themeing with Catppuccin

* Update alacritty.toml with proper Catppuccin Mocha colors

* vscode.json to use Proper Catppuccin Mocha
2025-10-12 20:06:43 -04:00
Jarek
adad20b6a1 Fix Tailscale split DNS compatibility by removing [!UNAVAIL=return] (#1884)
Removes [!UNAVAIL=return] from nsswitch.conf configuration to resolve
Tailscale split DNS issues while maintaining mDNS printer discovery.

- Updated printer setup script
- Updated existing Avahi migration
- Added migration for existing users

Addresses: https://github.com/basecamp/omarchy/pull/1021#issuecomment-3318650490
2025-10-12 19:59:04 -04:00
Miha Rekar
55604e43f5 Show overlay when changing display brightness (#2348) 2025-10-12 19:57:52 -04:00
Celso Benedetti
9f8db77a24 tweak(omarchy-theme-set): only restart waybar if already running (#2416) 2025-10-12 19:52:09 -04:00
Ryan Hughes
a20835f835 Add copy bind as well 2025-10-12 19:25:35 -04:00
David Heinemeier Hansson
c70e018571 Add the default keyring to existing systems
cc @ryanrhughes
2025-10-12 17:38:27 -04:00
David Heinemeier Hansson
ab7feeac6d Unnecessary 2025-10-12 17:36:03 -04:00
David Heinemeier Hansson
7ef30f69b8 Match the other themes 2025-10-12 17:30:27 -04:00
David Heinemeier Hansson
ebcb489621 No need for the empty opts 2025-10-12 17:25:04 -04:00
David Heinemeier Hansson
d72e948e03 We DID need two lines to prevent the ugly jitter between effects 2025-10-12 17:17:55 -04:00
David Heinemeier Hansson
6cab5d3e14 Fix light mode live switching for chromium 2025-10-12 17:06:32 -04:00
David Heinemeier Hansson
0df4dc1a1d Add Flexoki Light as new default theme 2025-10-12 16:43:17 -04:00
Ofir Miller
35cc9937ff feat(update): Add firmware update script to update process (#2014)
* Add firmware update script and include in update process

* typo

* type 2

* add sudo

* Add firmware update option to update menu

* Remove firmware update command from update process

* Lazy-install firmware updater

* Move option down and change icon

* Only lazy install if missing

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-12 16:34:50 -04:00
Mitch Lombardi
268b48644c Fix placeholder position and adjust fail text on lock screen (#2124)
* Fix placeholder position and adjust fail text on lock screen

* Expand input field to fully fit fingerprint authentication failure message

* Better explain what's happening

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-12 16:22:49 -04:00
Artem Popov
360a2ed943 Add LogLevelMax to battery monitor service (#2373) 2025-10-12 16:06:00 -04:00
Ryan Hughes
01a1e43b25 Fix command description
Co-authored-by: Daniel Pavone <danielpavone@gmail.com>
2025-10-11 18:58:52 -04:00
Shawn Yeager
04fa3fd32e Fix for '(null)' display on AirPod source selection 2025-10-11 02:08:06 -04:00
Ryan Hughes
a42ba3dcbf Merge pull request #2365 from basecamp/fix-omarchy-screenrecord
Fix Omarchy Screenrecord
2025-10-11 02:00:23 -04:00
Ryan Hughes
63aff7cd71 Cleanup 2025-10-11 01:36:51 -04:00
Ryan Hughes
a6aec518a5 Remove wl-screenrec 2025-10-11 01:33:45 -04:00
Ryan Hughes
a7a6ac1d21 Add error explanation if we have to kill 2025-10-11 01:25:44 -04:00
Ryan Hughes
af564ed07d Fix webcam to select 16:9 on FW13 and others 2025-10-10 21:37:57 -04:00
Ryan Hughes
eb74a97a0c Fix scaling for non 16:9 2025-10-10 21:23:42 -04:00
Ryan Hughes
883cb66f99 Migrate to gpu-screen-recorder 2025-10-10 21:11:25 -04:00
Ryan Hughes
2c74696735 Update packages 2025-10-10 21:11:05 -04:00
Ryan Hughes
a54044ea30 Change screenrecorder to gpu-screen-recorder 2025-10-10 21:07:20 -04:00
David Heinemeier Hansson
651025e3e8 Add Walker clipboard manager on Super + Ctrl + V 2025-10-10 10:20:25 -04:00
Samuel Péchèr
44de66dd2a Create migration to symlink systemd-resolved (#2313)
* Backup file if modified since system birth
* Symlink /etc/resolv.conf -> systemd-resolve's stub resolver
2025-10-10 10:18:38 -04:00
Damian Ignaczak
6b3fc34361 Add background for matte black theme (#2288) 2025-10-10 10:05:05 -04:00
Andrej Benz
cc1acc10b8 Walker: migrate to 2.0.0 (#1005)
* fix: remove theme-flag

* migration: walker 1.0.0-beta

* Fixups

* Add elephant and walker

* Update for new layout.xml

* Clean up some styling

* add unicode and todo providers

* remove default quick activate keybinds

* Update keybinds and remove defaults to prevent conflict

* Fix menu option

* Fixes

* Remove

* Update height

* Add elephant service

* Remove from hyprland

* Restart service now

* Trim

* Update height

* Fix keybindings style

* Fix install location

* Add walker restart

* Fix indention

* Fix indention

* Fix indention

* Fix indention

* Advance to present

* Need to refresh to bring over the new config

* style adjustments

* Correct the installation of the 1pw policy installer

* Skip the prebuilt for a second while we test

* Need libyaml to build ruby

* No longer needed, gcc-15 compatibility has been added

* Let's just stick to the official path

* GCC15 compatibility for Ruby has been achieved

* No longer necessary

The other mise option is set on Ruby on Rails install

* Added ZLS - Zig's Language Server when installing Zig (#1718)

* style adjustments

* styling changes

* add only_search_title

* css adjustments to fix broken styles

* Be tall again

* Remove for future variable height menu

* Update height / width params

* fix: remove theme-flag

* Fix spacing..again

* Remove service and add launch util

* Fix

* fix: wrong emojis flag

* remove flag, its dmenu only

* set min content width to prevent flickering if the item list contains shorter items

* Remove unused service

* Megakill needed

* Remove any old themes too

* Remove min-width

* Style adjustments

* changes for walker/elephant updates

* Match current width

* Add a little more space between icon and text

* fix: bluetooth find bind

* remove archlinux provider, fix migration with missing providers

* fix: css import

* Fix theme path

* fix: add new error label to layout

* Fix migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
Co-authored-by: DoKoB0512 <123281216+DoKoB0512@users.noreply.github.com>
2025-10-10 10:01:02 -04:00
missing person
b063c7f5f3 fix comment: wrong path for base packages script (#2325)
* Fix comment

* fix comment: wrong path for base package script

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-10 09:19:43 -04:00
David Heinemeier Hansson
8871c829c5 Merge branch 'master' into dev 2025-10-10 09:19:12 -04:00
Mitch Lombardi
41b09c29f8 Disable wall messages on shutdown/reboot (#2341) 2025-10-10 09:18:36 -04:00
David Heinemeier Hansson
d7d8f525e3 Control icon size still 2025-10-09 07:52:32 -04:00
David Heinemeier Hansson
a544e78107 Add Ctrl + Super + Ins as Copy
So we can hook it up to super + C/V
2025-10-09 07:16:13 -04:00
Miguel P
c541faff7d chore: better contrast for ristretto kitty conf (#2297)
* Fix comment

* chore: better contrast for ristretto kitty conf

* better looking tab background

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-09 07:04:26 -04:00
David Heinemeier Hansson
8caf6dbe2c Remove settings that made it awkward for single line notifications 2025-10-09 07:02:39 -04:00
Ryan Hughes
779fd5a9f5 Prevent polkit error on reboot (fixes #2175) 2025-10-08 20:40:53 -04:00
Ryan Hughes
d3f70a0c22 Make keyring dir 2025-10-08 19:21:26 -04:00
Ryan Hughes
39541b4876 Fix package name 2025-10-08 18:08:45 -04:00
Ryan Hughes
edbafe7a13 Add SUPER + C / V 2025-10-08 14:11:25 -04:00
Ryan Hughes
b97cba39af Login and UKI updates (#2242)
* Change DM to SDDM

* Move to custom named UKI

* Skip creation on Mac

* Add entry to make sure VSCode uses gnome keyring

* Fix order for UKI generation

* Limine only

* BTRFS only

* Add checks for possible issues

* Remove

* Add verification to omarchy-pkg-add and speed up installs

* Use omarchy-pkg-add

* Update files to include dirs

* Fix relaunch
2025-10-08 10:47:26 +02:00
Yashraj Maher
6d20a13076 Added Cursor CLI in Install > AI (#2153)
* Fix comment

* Added Cursor CLI in Install > AI

* Using AUR Package Instead of Installer Script

Co-authored-by: Aidan Timson <aidan@timmo.dev>

* Mark cursor cli as an AUR package

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Aidan Timson <aidan@timmo.dev>
2025-10-08 10:41:02 +02:00
David Heinemeier Hansson
bf4fb40877 Rollback flatpak fix
Since it broke direct launch of browser with arguments
2025-10-08 09:12:22 +02:00
Ryan Hughes
4365a52a08 Make shift + insert paste from clipboard in ghostty 2025-10-08 00:18:11 -04:00
Ryan Hughes
f701cf7c6d Merge pull request #989 from bvdwalt/alacritty-default-to-system-clipboard
Make shift+insert paste from clipboard in Alacritty
2025-10-08 00:16:43 -04:00
Jonathan Cammisuli
9c5cf01410 add helix in omarchy-launch-editor (#1740)
* use helix instead of hx in omarchy-launch-editor

fixes #1739

* add both hx and helix

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 22:25:05 +02:00
ctarx
6ea9c9311e fix(bindings): anchor Obsidian class to avoid false matches (#1838)
Prevent false positives when another window title contains 'Obsidian'.
The helper script matches with a case-insensitive regex against class+title,
so anchoring to '^obsidian$' ensures we only target the Obsidian window class.

Before: SUPER+O could focus a YouTube webapp/FreeTube titled 'Obsidian is great!'.
After: SUPER+O focuses Obsidian or launches it if not running.
2025-10-07 22:18:07 +02:00
Greg Kurts
66abd7dc2e Float org.gnome.Calculator (#1747)
* Float and size Calculator

* just use float

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 22:14:22 +02:00
Dylan Bridgman
819da32ebb Add .editorconfig (#946) 2025-10-07 18:17:47 +02:00
Reza
5b062cddce Configure grouping functionality (#656)
* Configure grouping functionality

* Change google message shortcut to CTRL + SUPER, fix typo

* Standardize all group hotkeys around SUPER ALT

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 17:58:15 +02:00
David Heinemeier Hansson
e9ab1d9bcc Cleanup the code a bit 2025-10-07 15:37:29 +02:00
Matt Harrison
f956233ecf fix current working directory if readlink doesn't return a valid directory (#1940) 2025-10-07 15:36:17 +02:00
Samuel Péchèr
e6d1a2f754 Use systemd-resolved's stub resolver (#2150)
* Fix comment

* Use systemd-resolved's stub resolver

On first run, symlink systemd-resolved's resolver into /etc/resolv.conf

Matches migration 1754984623

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 14:27:01 +02:00
w3ntry
dfd133df87 Fix browser launching for flatpak (#2187)
* Fix comment

* Fix browser launching for flatpak

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-07 13:42:29 +02:00
Alexander Zaytsev
2326018341 Group mako settings and adjust notification styles (#2273)
* Move common mako settings to `core.ini`

* Use monospace font, set font size in px

* Increase line height

* Adjust paddings

* Add 10px width so the Welcome notification fits on one line

* Remove extra whitespace

* Remove extra whitespace, adjust wording

* Improve text-to-bg contrast in Tokyo Night

* Follow the system font

* Use sans-serif font

* Restore width and extra space characters

* Adjust vertical paddings

* Remove `omarchy-restart-mako` (no longer needed)
2025-10-07 13:14:48 +02:00
David Heinemeier Hansson
011174699c Expand all the guard conditionals to be as readable as possible 2025-10-07 13:04:44 +02:00
David Heinemeier Hansson
1ffed127db Invert the logic to only fail when we know for sure secure boot is on 2025-10-07 13:01:24 +02:00
Mirza Pasic
a38d80ee9f Add SSH session integration for Ghostty (#1950)
* Add SSH session integration for Ghostty

* Set only ssh-env for Ghosty integration feature
2025-10-07 08:38:29 +02:00
David Heinemeier Hansson
a401c74083 Add migration for new nvim.desktop 2025-10-06 22:29:16 +02:00
Dharma
5faa2c8d49 Fixes the nvim desktop entry exec command (#1892)
* fixes nvim desktop entry exec command

* switched to `omarchy-launch-editor` so it opens in nautilus, walker and a keybind
2025-10-06 22:27:39 +02:00
David Heinemeier Hansson
3f25fcbd98 Revert "Fix Neovim .desktop file to open files from GUI file manager (#2233)"
This reverts commit 479f20d294.
2025-10-06 22:25:35 +02:00
Justin Lowry
14b020dcfb fix: update legibility with bright green color (#1895)
Bright green color was hard to read on dark backgrounds. Adjusted color value for alacritty, ghostty, and kitty.
2025-10-06 22:22:21 +02:00
David Heinemeier Hansson
c91c75a5e6 Add even cleaner ghostty tabs as default
Via @Thundernirmal
Ref #1956
2025-10-06 22:09:47 +02:00
Simon Cossar
e3658556ea Add window theme to Ghostty config (#1956) 2025-10-06 22:05:31 +02:00
Andreas Krüger
2971a25a4f fix: change uwsm app to uwsm-app for performance (#1960)
* fix: change uwsm app to uwsm-app for performance

* Do not run uwsm-app in parallel as it's not supported

* Fix comment

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-06 22:03:16 +02:00
Meir Dick
2c14252d7d Fix: Allow passing flags/arguments to omarchy-launch-webapp in launch-or-focus-webapp script (#1980)
This resolves the issue where extra arguments like Chromium's --profile-directory were ignored when launching a web app via omarchy-launch-or-focus-webapp.

The script now uses 'shift' to isolate the window pattern ($1) and passes all remaining arguments ($@), which include the URL and flags, to the omarchy-launch-webapp function.

Closes #1977
2025-10-06 21:53:37 +02:00
Vladyslav
b0ee5d2e79 Fix lock screen killing ghostty screensaver instance instead of alacritty (#1979) 2025-10-06 21:51:30 +02:00
Lucas Goossen
7a7266aed0 Theme support for Cursor (#2015)
* Imitating VSCode omarchy-theme-set

* Changed VSCode theme setter take arguments to Cursor theme setter could call it.

* All omarchy commands are in path

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: @adelplace
2025-10-06 21:49:44 +02:00
Damian Ignaczak
6892304277 fix(presentation-terminal): Ensure consistent ASCII logo alignment (#2260)
* Fix comment

* fix(presentation-terminal): Ensure consistent ASCII logo alignment

The presentation terminal's ASCII logo, displayed by 'omarchy-show-logo',
would misalign if the user had a non-default font size set in their
global Alacritty configuration.

This change fixes the issue by explicitly setting the font size to 9
for this specific terminal instance using the  flag.

This approach guarantees correct rendering of the logo without overriding
the user's personal font preferences for their regular terminal sessions.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-06 21:28:57 +02:00
Jeff Mancilla
6aac67a1d5 Fix comment typos in bindings.conf (#2261)
* Fix comment

* Fix comment typos in bindings.conf

Fixing some comment typos.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-06 14:27:49 -05:00
killeik
5aa39c9261 Simple check to prevent secure boot issues (#2145) 2025-10-05 22:13:16 +02:00
Wojciech Wnętrzak
5da10be63e Adjust database installation message to only one (#2192)
* Fix comment

* Adjust database installation message to only one

Follow up to e260d28f43

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 22:02:22 +02:00
David Heinemeier Hansson
2316c2f365 Hide OpenJDK apps from app launcher 2025-10-05 21:59:41 +02:00
IngridMorstrad
ea7d98e6b7 Fix typo in comments in input.conf (#2180)
* Fix comment

* Fix typo in comments in input.conf

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 21:56:03 +02:00
Stefan Gründel
443173e29d Hide electron36 and electron37 from walker menu (#2183)
* Hide electron36 and electron37 from walker menu

* Add migration scriptt

* Simplify migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 21:54:36 +02:00
Gustave Denis
164fc5ceb1 fix(eza): added correct light theme for rosé pine (#2214)
correct light theme for rosé pine is rose-pine-dawn

Co-authored-by: Gustave Denis <gustavetdenis@gmail.com>
2025-10-05 21:47:27 +02:00
Pastilhas
9c24150e69 added gnome-disk-utility to base-packages (#2230)
* Fix comment

* added gnome-disk-utility next to nautilus in install/omarchy-base-packages

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 21:46:23 +02:00
CHINMOY SAIKIA
479f20d294 Fix Neovim .desktop file to open files from GUI file manager (#2233)
* Fix comment

* Update Exec command to use shell execution for Nvim

Fix Neovim .desktop file to allow opening files from GUI file manager.

* Add migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 21:40:31 +02:00
Stefan Gründel
bb4df39bbd Remove background process from walker service in autostart configuration (#2235) 2025-10-05 21:36:49 +02:00
David Heinemeier Hansson
d4fddd7c75 Interesting idea, but then we should do it across everything
And update omarchy-dev-add-migration
2025-10-05 21:19:27 +02:00
David Heinemeier Hansson
3cb52c0b38 Correct bad path for sudoless Apple Display controls 2025-10-05 21:18:34 +02:00
David Heinemeier Hansson
cab70bbe4f Revert "Login and UKI updates (#1860)"
This reverts commit f2021a95a4.
2025-10-05 21:10:13 +02:00
David Heinemeier Hansson
5f2013a482 Correct the path for asdcontrol on new installations 2025-10-05 21:09:56 +02:00
Ryan Hughes
f2021a95a4 Login and UKI updates (#1860)
* Change DM to SDDM

* Move to custom named UKI

* Skip creation on Mac

* Add entry to make sure VSCode uses gnome keyring

* Fix order for UKI generation

* Limine only

* BTRFS only
2025-10-05 18:30:43 +02:00
Ryan Hughes
2e0064943b Update version reporting (#1724) 2025-10-05 18:23:26 +02:00
Ryan Hughes
c7aa0f570a Make HEY the default mailto handler (#1822) 2025-10-05 18:18:22 +02:00
Ryan Hughes
a079af948b Change default shutdown timeout to 5sec (#1886)
* Shutdown faster

* Add migration

* Reduce shutdown timeout from 10s to 5s

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 18:14:11 +02:00
Ryan Hughes
6544d1b970 Add auto-changing colors for Neovim (#1712)
* Add MVP variant of nvim switcher

* Update nvim configs

* Remove config

* Add migration for the new live themeing

* Fix plugin

* Remove theme

* Update to actually work

* Make it faster

* Fix quirks

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-10-05 17:18:40 +02:00
David Heinemeier Hansson
bbe4461c05 Only give one line to avoid the jitter 2025-10-05 10:54:45 +02:00
David Heinemeier Hansson
bba224e9a5 Speedup keybindings show by using caching
Co-authored-by: @davidwinter
2025-10-04 17:55:38 +02:00
Lucas Goossen
4283533858 Made keybindings menu a little more human readable (#1824)
Co-authored-by: Lucas Goossen <lucas.goossen@hey.com>
2025-10-04 17:53:55 +02:00
David Heinemeier Hansson
e0f16b9098 Reduce timeout for hung applications to more like 5-6s 2025-10-04 17:41:06 +02:00
David Heinemeier Hansson
7819ae354e Go back to using -set-theme-color until the policy coloring is fixed 2025-10-02 20:04:19 +02:00
David Heinemeier Hansson
1e859d37cb Fix comment 2025-10-01 23:27:11 +02:00
David Heinemeier Hansson
058b233da8 Merge branch 'master' into dev 2025-09-30 18:51:30 +02:00
Ulf Köther
1ac8e96df3 Alter input.conf kb_options to take non-us keyboards into account (#2086)
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-09-30 12:29:02 +02:00
Kye Davey
977103011e fix removal of webapps that use additional handler (#2096)
Co-authored-by: Ryan Hughes <ryan@heyoodle.com>
2025-09-30 12:27:41 +02:00
David Heinemeier Hansson
9903a9b333 Increase the delay before the "window is not responding" notice is shown
Closes #2098
Co-authored-by: @CaffeinatedTech
2025-09-30 12:24:21 +02:00
Aislan Dener Souza Vicentini
a51011fbb8 add suport fingerprint from FPC - Thinkpad E14 Gen 6 (#2023) 2025-09-29 18:32:53 +02:00
Alexandre Perreault
1022734a67 feat: clear states when relaunching or rebooting from the system menu (#2053) 2025-09-29 18:18:20 +02:00
Fransiscus Rolanda Malau
67011160b2 hypr: add Helium to chromium-based browser tagging (follow-up to #1945) (#2056) 2025-09-29 18:14:53 +02:00
Ryan Hughes
f634bfeeb6 Merge pull request #2048 from basecamp/dev
Omarchy 3.0.2
2025-09-28 17:10:27 -04:00
Ryan Hughes
ea6b6c6b7f Typo 2025-09-28 17:08:08 -04:00
Ryan Hughes
499e7383c2 Merge branch 'master' into dev 2025-09-28 15:25:11 -04:00
Ryan Hughes
9b8819d9b9 Merge pull request #2051 from shawnyeager/audio-switch-fix
Fix for '(null)' display on AirPod source selection
2025-09-28 15:22:17 -04:00
Ryan Hughes
a8f76783e3 Merge pull request #2050 from basecamp/revert-1859-audio-switch-fix
Revert "Fix for '(null)' display on AirPod source selection"
2025-09-28 15:20:09 -04:00
Ryan Hughes
796ef67ede Revert "Fix for '(null)' display on AirPod source selection" 2025-09-28 15:18:25 -04:00
Ryan Hughes
0eccf22921 Merge pull request #1766 from mrlarsendk/master
Add support for Broadcom BCM4331 chipset alongside BCM4360
2025-09-28 15:04:13 -04:00
Ryan Hughes
971422b757 Update install script name 2025-09-28 15:02:54 -04:00
Ryan Hughes
076da663f5 Merge pull request #1845 from djordje/fix-omarchy-tui-install
Fix omarchy-tui-install
2025-09-28 15:01:17 -04:00
Ryan Hughes
b92ebff29b Merge pull request #1859 from shawnyeager/audio-switch-fix
Fix for '(null)' display on AirPod source selection
2025-09-28 14:56:47 -04:00
Ryan Hughes
8e5b59995a Merge pull request #1920 from iamobservable/iamobservable/bug/screen-recording-no-longer-works-after-updating
Use output display or region geometry to record
2025-09-28 14:55:55 -04:00
Ryan Hughes
dc49358a81 Merge pull request #1957 from joelgaff/mac-keyboard-fixes-again
Add more Mac models to SPI keyboard support
2025-09-28 14:54:28 -04:00
Ryan Hughes
cd39bbf692 Fix conflict + rearrange 2025-09-28 14:53:25 -04:00
Joel Gaff, Jr
fba17b7da4 Add more Mac models to SPI keyboard support
Added:

MacBook 8,1
MacBook 9,1

MacBook 8,1 uses slightly different moduels from what I can tell, so I’ve added a case statment.  Please tweak as needed.
2025-09-28 14:53:25 -04:00
Stefan Gründel
d6dc1c7b86 add bolt to omarchy base packages 2025-09-27 13:55:46 +02:00
David Heinemeier Hansson
25df782e2f Suggest how to have a smaller-than-max-width single window aspect ratio 2025-09-26 18:52:27 +02:00
observable
d4b0ba5d94 Use output display or region geometry to record
The previous code did not identify the output display correctly,
leading to wf-recorder asking the user to select the region when the
user requested the display output to be selected.

With this change the bash script will use slurp with the -o flag to
identify the display output.

This has not been tested with wl-screenrec as no change has been made to
its call signature in omarchy-cmd-screenrecord and the wl-screenrec
binary is not included in the default omarchy installation.
2025-09-25 19:37:18 -05:00
Ryan Hughes
a74b426c9f Merge pull request #1947 from e-minguez/macbook10,1-spi-fix
feat: Added MacBook10,1 to the fix-apple-spi-keyboard.sh
2025-09-25 20:07:15 -04:00
Ryan Hughes
e0a50f12a7 Merge pull request #1945 from Furyfree/master
Add Helium browser to supported browsers list in omarchy-launch-webapp
2025-09-25 20:05:01 -04:00
Eduardo Mínguez
96b64189a6 feat: Added MacBook10,1 to the fix-apple-spi-keyboard.sh 2025-09-25 22:58:55 +02:00
Patrick Byrne
3376838dfb Fix Helium browser detection in launch script 2025-09-25 21:59:37 +02:00
Patrick Byrne
0f3e6f5101 Add Helium browser to supported browsers list in omarchy-launch-webapp 2025-09-25 21:54:07 +02:00
Djordje Kovacevic
4d9f932e6c Replace "--class" with "--class=" 2025-09-23 22:52:58 +02:00
Stefan Gruendel
e39269f9f0 add migration script 2025-09-23 20:52:17 +02:00
Stefan Gruendel
74f2900db1 Add thunderbolt module in omarchy hook. 2025-09-23 06:40:56 +02:00
Ryan Hughes
607915a5d1 Combine ifs 2025-09-21 18:12:21 -04:00
Shawn Yeager
38d536ba9d Fix for '(null)' display on AirPod source selection 2025-09-21 16:18:12 -05:00
David Heinemeier Hansson
c4d8ef6a15 Merge branch 'master' into dev 2025-09-21 07:57:07 -04:00
Kostas
2df8c5f7e0 Install libyaml before attempting to install ruby (#1835)
* Install libyaml before attempting to install ruby

* Use omarchy helper

And unsafe -Sy

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-21 07:56:56 -04:00
David Heinemeier Hansson
a820b72da9 Revert "Ensure libyaml is available for installs made before that was on the ISO"
This reverts commit ad01082a86.
2025-09-21 07:55:52 -04:00
David Heinemeier Hansson
39c27939f3 No longer used
Closes #1815
2025-09-21 07:51:04 -04:00
Ryan Hughes
0123cf7917 Merge pull request #1774 from John-Lin/patch-1
fix: ghostty config typos
2025-09-21 03:39:27 -04:00
Djordje Kovacevic
441ee10d70 Add migration to fix Docker and Disk Usage TUIs 2025-09-21 09:29:44 +02:00
Djordje Kovacevic
45465d3e7c Fix TUI install script
- $TERMINAL should remain variable
2025-09-21 08:40:48 +02:00
Ryan Hughes
a746812504 Limit pattern to prevent incorrect matches 2025-09-19 20:39:20 -04:00
David Heinemeier Hansson
ad01082a86 Ensure libyaml is available for installs made before that was on the ISO 2025-09-19 18:44:36 -04:00
David Heinemeier Hansson
ba743c623d Give output on what's intended to happen 2025-09-19 17:44:13 -04:00
David Heinemeier Hansson
779c1b9ecc Add Update > Hardware > Audio for restarting pipewire service 2025-09-19 17:44:03 -04:00
David Heinemeier Hansson
e4ab5bee14 Catch obsidian vault dialog too 2025-09-19 17:31:20 -04:00
Taha
f60b9d1cb4 Fix Matte Black theme ghostty and vscode configs (#1801)
* Update Matte Black ghostty.conf with more color settings

* Rename theme from 'MatteBlack' to 'Matte Black'
2025-09-19 15:41:52 -04:00
Johan Sørensen
70661d5d5b Hide hyperland cursor while typing (#1812) 2025-09-19 15:40:54 -04:00
David Heinemeier Hansson
ad155b2545 Ghostty needs a very different scrollfactor than Alacritty and Kitty
cc @mitchellh
2025-09-19 05:32:47 -05:00
Omar Skalli
206930def8 Improve theme-set-vscode to support jsonc and respect symlinks (#1756) 2025-09-18 16:43:01 -05:00
Che-Wei Lin
a965a333ea fix: ghostty config typos 2025-09-18 23:18:51 +08:00
Michael Larsen
4d50c8bd33 Clean up
Tested the logic on the MacBook. It worked and the install of the
drivers are reenabled.
2025-09-18 15:16:24 +02:00
Michael Larsen
ad30ef6339 Tried with a different approach for cleaner code 2025-09-18 14:53:04 +02:00
Michael Larsen
19d1ee2b00 Added fix for ealy 2013 macbook pro's using an older chipset, BCM4331 2025-09-18 13:01:26 +02:00
David Heinemeier Hansson
ed3b723c7f Merge branch 'master' into dev 2025-09-17 23:02:32 +02:00
David Heinemeier Hansson
83ab85799b Fix permissions 2025-09-17 23:02:23 +02:00
David Heinemeier Hansson
ffe7cd5099 Fix osaka jade theme for ghostty 2025-09-17 21:03:52 +02:00
David Heinemeier Hansson
28c4814f5a Fix osaka jade theme for ghostty 2025-09-17 21:03:44 +02:00
David Heinemeier Hansson
cf41ecaaa5 Merge pull request #1568 from basecamp/dev
Omarchy 3.0
2025-09-17 20:47:41 +02:00
David Heinemeier Hansson
9aef0ffab6 Use conditional theme file instead and send correct signal 2025-09-17 20:45:02 +02:00
David Heinemeier Hansson
f6383fd3e9 Now it is opt-in 2025-09-17 16:40:38 +02:00
David Heinemeier Hansson
e81994f182 Dont let the update system notification expire 2025-09-17 16:36:11 +02:00
David Heinemeier Hansson
7ca60bd590 We no longer need gcc14 for Ruby 2025-09-17 16:16:32 +02:00
David Heinemeier Hansson
dac34aa5e0 Move adding Google Account into Install > Service > Chromium Account
Otherwise it'll prompt on first start for everyone.
2025-09-17 16:13:49 +02:00
David Heinemeier Hansson
81165f1947 This made it seem like the extension couldn't be removed by the user (#1722) 2025-09-17 16:07:48 +02:00
David Heinemeier Hansson
fc3d1a4af5 Less isn't installed if the packages are the ones failing 2025-09-17 16:02:09 +02:00
David Heinemeier Hansson
020a4659ec Output something if we don't have timing 2025-09-17 15:56:58 +02:00
David Heinemeier Hansson
d66909de14 Include the browser policies 2025-09-17 15:53:46 +02:00
David Heinemeier Hansson
0e17c419be Bring back the walker service for now even with the known memory leak
The move to Walker 1.0 is going to take a little longer. We will fix
this in Omarchy 3.1.
2025-09-17 15:31:22 +02:00
David Heinemeier Hansson
75f035ddb6 Ensure a default theme is used if none exist 2025-09-17 15:12:25 +02:00
DoKoB0512
a039a0fdae Added ZLS - Zig's Language Server when installing Zig (#1718) 2025-09-17 14:40:01 +02:00
David Heinemeier Hansson
9a24ca8a36 No longer necessary
The other mise option is set on Ruby on Rails install
2025-09-17 14:18:03 +02:00
David Heinemeier Hansson
0b8540e663 GCC15 compatibility for Ruby has been achieved 2025-09-17 14:16:33 +02:00
David Heinemeier Hansson
ebb12f187e Let's just stick to the official path 2025-09-17 14:15:04 +02:00
David Heinemeier Hansson
1669832693 No longer needed, gcc-15 compatibility has been added 2025-09-17 14:14:56 +02:00
David Heinemeier Hansson
80bd5e5979 Need libyaml to build ruby 2025-09-17 14:13:21 +02:00
David Heinemeier Hansson
832a33eb93 Skip the prebuilt for a second while we test 2025-09-17 13:51:53 +02:00
David Heinemeier Hansson
a15ccdd1ed Correct the installation of the 1pw policy installer 2025-09-17 13:40:31 +02:00
David Heinemeier Hansson
6d9ae608e5 Move learn back, it was better before 2025-09-17 12:31:21 +02:00
David Heinemeier Hansson
f6df59c9ed Ensure powerprofilesctl always use system python to prevent conflicts with mise 2025-09-17 12:30:35 +02:00
David Heinemeier Hansson
1514c5c633 Fix references 2025-09-17 12:16:41 +02:00
David Heinemeier Hansson
d92e13143f Updates 2025-09-17 10:43:52 +02:00
David Heinemeier Hansson
e14d58fe54 Allow changing Omarchy branches from the menu 2025-09-17 10:28:20 +02:00
David Heinemeier Hansson
f592bca968 Fix download with proper path 2025-09-17 10:12:15 +02:00
Helmut Januschka
b5b4dea4ff Add 1Password extension policy configuration (#1708)
* Add 1Password extension policy configuration for Chromium and Brave

- Added policy files in config/chromium/policies/managed/ and config/brave/policies/managed/
- Created migration to copy policies to system directories /etc/chromium and /etc/brave

* I don't want to push it into existing installations at the moment

We just leave it for new installs

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-17 09:53:57 +02:00
Taha
4cda82bc98 Rename theme and update extension identifier (#1711) 2025-09-17 08:19:21 +02:00
David Heinemeier Hansson
69ec570aad Make sure binding starts $TERMINAL 2025-09-16 22:33:40 +02:00
David Heinemeier Hansson
a51c58c20c Ensure directories are present 2025-09-16 22:14:40 +02:00
David Heinemeier Hansson
761a51fac0 Add ALT + F11 to go full width on a window
Closes #1679
Co-authored-by: @c4software
2025-09-16 21:57:16 +02:00
Simon Dawson
654723aa7f Looser GUI editor handling in omarchy-launch-editor script (#1702)
* fix: Default to nvim if $EDITOR not set in omarchy-launch-editor

Refs: https://github.com/basecamp/omarchy/pull/1697/files#r2352727184

* fix: Handle $EDITOR as GUI application by default

If we do not definitively handle $EDITOR as a known TUI editor,
assume a GUI editor and launch without using the terminal.

Refs: https://github.com/basecamp/omarchy/pull/1697/files#r2352727184
2025-09-16 21:53:51 +02:00
David Heinemeier Hansson
b9dfbb8f4c Correct default configs 2025-09-16 21:50:23 +02:00
David Heinemeier Hansson
eec51b1fb5 Add a migration to ensure that ghostty and kitty configs are available if someone switches over 2025-09-16 21:46:06 +02:00
Amit
a1228dac6b add kitty.conf for each theme; config switches with theme (#1296)
* add kitty.conf for each theme; config switches with theme

* Revise default config

* Correct restart location

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-16 21:40:07 +02:00
David Heinemeier Hansson
432ffb508c Themeing for ghostty (#1701)
* Themeing for ghostty

* Fix theme name

* Set font for ghostty too if its on the system

* Use correct class for ghostty styling

* Uniformity

* Need to keep this alacritty until we have it fully working for other terminals

* Stick to alacritty so we can control font size

* Stick with alacritty for system terminals

* Add menu to install different terminal

* Use taha approved colors
2025-09-16 21:31:40 +02:00
David Heinemeier Hansson
bf0c2cc9a5 Allow custom editor, like we do custom terminal (#1697) 2025-09-16 15:14:29 +02:00
Ofir Miller
7e1c88b932 update to use $TERMINAL instead of alacitty (#1648)
* update to use $TERMINAL instead of alacitty

* revert

* move env to hyprconfig

* Only set if we have alacritty

* Add launcher for wifi settings so it can be used in mako config

* Set system terminal in config/uwsm/env to ensure its available everywhere

* Ensure that $TERMINAL is available after update

* Didn't work to have the TERMINAL env in Hyprland

* Configure terminal settings against a full set of options

* Make About usable with any terminal

* One more alacritty-specific setting

* Use the new wifi launcher bin

* Only require the update/relaunch if TERMINAL isn't already set in config/uwsm/env

* More alacritty usage converted to $TERMINAL

* Use new launcher

* Change scrolltouchpad input rule to apply to all terminals

* Its a singular match

* Take current font from waybar, in case we don't have alacritty

* Only set font for alacritty if its being used

* Get ready to be terminal agnostic on the refresh of config too

* Use new launcher

* Note the last reliance we have on alacritty

* Make theme setting for terminals generic and include kitty

* Set font_family for kitty as well

* Quiet grep

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-16 14:32:40 +02:00
David Heinemeier Hansson
c8fa96f382 Revert "Feed the image folder to the Image Viewer so the next/previous image navigation works (#1444)"
This reverts commit 55bf2457d4.
2025-09-16 10:31:55 +02:00
Gustavo Nascimento
2e4c9d0de8 fix: correct ANSI escape sequence in boot branch message (#1689)
The branch message had an incomplete ANSI escape sequence that was
  cutting off the first character and breaking the display formatting.

  Before: \eUsing branch: master (displayed as 'sing branch: master')
  After: \e[32mUsing branch: master\e[0m (displayed as 'Using branch: master' in green)

  This fix ensures the complete message is displayed with proper green coloring.
2025-09-16 08:39:45 +02:00
Manuel
facae82630 Bugfix screensaver not exiting (#1687)
* exit if screensaver not in focus

* Extract explaining function

* Consistent function style

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 22:46:15 +02:00
David Heinemeier Hansson
2719db01f9 Separate out the bulk of omarchy-update so we can get any changes from git to it first
Also run migrate after we have updated system packages
2025-09-15 21:58:11 +02:00
David Heinemeier Hansson
461f8186f6 Reliably dismiss notification based on a summary match 2025-09-15 20:30:57 +02:00
David Heinemeier Hansson
c5d04e8e9c Fix new references 2025-09-15 19:04:11 +02:00
Stefan Gründel
c072715ebe add themes from https://github.com/eza-community/eza-themes (#1242)
* add themes from https://github.com/eza-community/eza-themes

* init eza theme during install

* add migration

* refactor migration script to only link eza theme if it exists for current theme

* only link to eza theme if current theme supports it

* only link to eza theme if current theme supports it

* Cleanup

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 19:02:57 +02:00
David Heinemeier Hansson
55911ebf7d Cleanup and extract theme setting 2025-09-15 18:56:49 +02:00
Omar Skalli
d3304c4a88 Automatically change VS Code theme along with Omarchy themes (#800)
* Automatically change VS Code theme along with Omarchy themes

* Create a way to skip vscode auto-theming

* Make theme setting resilient to different states of the settings.json

* Improve setting and removing theme and notify when waiting on install

* Explain what we're doing

* Extract dedicated bin for vscode theme change

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 18:20:02 +02:00
Guilherme Nandi Tiscoski
f401c72ea2 Add omarchy-cmd-share script/menu (#884)
* add: omarchy-cmd-share-files script

* add: call script from main menu

* add: hyprland binding for sharing files

* fix: dispatcher syntax

* fix: make script executable

* fix: script name on main menu

* fix: show share menu call

* fix: dispatcher order

* fix: script call via shorcut

* fix: share shortcut and share class for alacritty

* add parameters to share files, folders and clipboard content

* do not clean tmp files in clipboard mode

* make tmp file txts for clipboard sharing

* add menu options for folder and clipboard sharing

* rename script

* shortcut opens walker share menu

* fix spacing in share menu

* fix: share menu calls

* Files with spaces in the path were breaking 'send' action

* Add Trigger menu to house capture/share/toggle

* Style

* Fix going straight to share menu on Ctrl + Super + S

* Combine

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 16:39:13 +02:00
David Heinemeier Hansson
3986afd0c5 Quote for multi word 2025-09-15 15:22:07 +02:00
Ofir Levitan
415896605e revert: Fix screen recording on Intel graphics #669 (#1559)
* remove intel

* remove accidental paste

* Update omarchy-cmd-screenrecord
2025-09-15 12:23:46 +02:00
Jankees van Woezik
1e6ddf55ce Copy URL to clipboard from Chromium apps (#1458)
* Copy current URL to clipboard with browser extension

In Omarchy web apps it's impossible to get the curent URL to share it in
another applications. This commit adds a browser extension which is
included by default via the chromium-flags.conf config. With this
extension you can get the current URL via a keyboard shortcut.

The default shortcut for getting the current URL is `Ctrl+Shift+L`, this
shortcut can be changed via this page: chrome://extensions/shortcuts.

* Change the shortcut to Alt+Shift+L

In my testing and research I found out that not all shortcuts
are available as suggested_key. We still want to use L because
that's easy to remember because we associate it with the location bar.

* Improve notification language

* Move it to just Alt + L since that's not used

Better mirrors Ctrl + L as well

* Move this under default/chromium

* Fix symlink

* It didn't like Alt+L alone after all

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 12:22:28 +02:00
David Heinemeier Hansson
5582c51676 Add invitation to update the system to the latest 2025-09-15 11:36:07 +02:00
David Heinemeier Hansson
5f56f4ccc7 Expose Hyprland styling directly
Closes #660
Co-authored-by: @med502
2025-09-14 22:14:29 +02:00
v-oleg
e4ca98301b Add focus or launch script (#925)
* Add focus or launch script

* Replace eval with exec

* Use eval so it properly expands the variables

* Apply to the apps where it makes most sense

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 21:58:08 +02:00
David Heinemeier Hansson
e228a987a8 Add migration to ensure Obsidian binding is using wayland-ime 2025-09-14 21:16:04 +02:00
David Heinemeier Hansson
f9edbfe10c Enable wayland IME to cure compatibility with fcitx5 and other languages
Closes #1036
Co-authored-by: @ashutoshbw
2025-09-14 21:12:03 +02:00
David Heinemeier Hansson
2cb285c267 Add Super + Ctrl + Tab to go to former workspace
Closes #1218
Co-authored-by: @zaborowskimichal
2025-09-14 20:47:57 +02:00
Ryan Hughes
5be0e4de44 Skip adding UKI EFI entry for Apple 2025-09-14 14:28:57 -04:00
Luis Daniel Casais
5f92574586 Add option to show PKGBUILD in omarchy-pkg-aur-install (#1146)
* Add option to show PKGBUILD in omarchy-pkg-aur-install

* Fix extra parenthesis

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 20:08:59 +02:00
Ryan Hughes
772a75376e Add T2 MacBook support (#1657)
* First swing at t2 support

* Remove unnecessary enables

* Trim up

* Trim

* Need to use official mirror until we have our own setup

* Use GitHub mirror for now

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 19:49:43 +02:00
Helmut Januschka
d5314cecb7 Enable Google Signin / sync (#1365)
* Enable Google Signin / sync

* Add migration to add the flags

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 19:45:02 +02:00
David Heinemeier Hansson
c16766c8b1 Deal with not-available sinks on audio switcher
Closes #1603
Co-authored-by: @elpritchos
2025-09-14 19:38:17 +02:00
Helmut Januschka
f8ff57e2af Add Chrome and Brave browser policy support for theme colors (#1251)
* Add Chrome and Brave browser policy support for theme colors

Replace chromium --set-theme-color commands with managed policies
- Add RGB to hex conversion function
- Create /etc/chromium/policies/managed/color.json for Chrome
- Create /etc/brave/policies/managed/color.json for Brave
- Remove deprecated chromium command line theme setting

* force reload

* remove sudo

* renamed flag due to code review on google side

* Add the required directories

* Cleanup

* Slim down

* Unnecessary

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 19:30:41 +02:00
David Boot
8e4487ca41 Add private browser key binding (#1324)
* Add private browser key binding

* Include other Firefox-based browsers

* Simplify implementation

* Add migration to add the hotkey

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 18:18:57 +02:00
brink-lab
b422281840 Update waybar config with proper sized mute icon and wifi-off icon in matching style (#1386)
* Update waybar config with proper sized mute icon

Update waybar config with proper sized mute icon - same size as the two volume indicators. Current mute icon is smaller.

* Update config.jsonc
2025-09-14 17:47:47 +02:00
David Heinemeier Hansson
2e41b2c400 Add blurred theme background to the lock screen 2025-09-14 17:33:08 +02:00
Bogdan Tanase
55bf2457d4 Feed the image folder to the Image Viewer so the next/previous image navigation works (#1444)
* Feed the image folder to the Image Viewer so the next/previous image navigation works

When double clicking an image in Nautilus, my expectation is that I can navigate to the other images in the folder with the arrow keys.

This doesn't happen currently because the imv command receives only the filename as a parameter.

However, if we use:

`imv -n /myfolder/image.jpg /myfolder`

works becasue we're opening  the folder starting at the image given by the -n parameter.

* add migration for imv.desktop update

* Simplify migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 16:51:24 +02:00
Taha
a77264ae99 Add preview images to system theme folders (#1662)
* add preview images to theme folders

* fix image sizes for previews

* rename all preview images to preview.png
2025-09-14 16:28:15 +02:00
Alex R Teal
13349180b6 Better Zoom Webapp Support for meeting links (#1542)
* Support for exec and mime types. Zoom integration

In order to better support webapp zoom:
  - Added optional params for omarchy-webapp-install
    - exec, defaults to omarchy-launch-webapp
    - mimetypes, defaults blank
  - added zoom webapp launcher that parses meeting links and transforms
them and calls launch webapp to join meeting links
  - migration to convert existing zoom installs to the new custom
handler
  - updated the base installer to call new zoom handler and set
mimetypes

* default should be in the else

* Add new line at end of file

* Missed new line on migration

* Updated conditionals to be a little more clean

* This is a rare setup so let's just save it for the direct CLI

* Use new bash conditionals

* Rename to fit under the existing namespace of cmds

* Fix after merge

* Use new syntax and add missing segment comments

* Cleanup a bit

* Use local icon for zoom with migration

* Fix regexp

* Refer to raw local icon references

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 16:20:08 +02:00
David Heinemeier Hansson
445ccdebbf Give feedback while time + tz is updating
Closes #1546
2025-09-14 15:33:23 +02:00
David Heinemeier Hansson
27f020af4d Add SUPER + BACKSPACE to toggle transparency on/off for a window
Useful for video sites etc
2025-09-14 14:55:32 +02:00
Samrudh Nelli
8920c95586 Bind calculator key with gnome-calculator (#1585) 2025-09-14 14:36:14 +02:00
Ryan Hughes
52680f4b3e Create ~/Work with ./bin in the path for contained projects (#1654)
* Create ~/Work with ./bin in the path for contained projects

* Split out the mise work setup as its own configurator

* Fixup the migration to reuse config logic

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 14:32:07 +02:00
David Heinemeier Hansson
d96322e58a Freeze seems to not be reliable in practice 2025-09-14 13:32:40 +02:00
David Heinemeier Hansson
0f09febf4d Tweak the welcome 2025-09-14 13:29:06 +02:00
David Heinemeier Hansson
d58fe8b4a0 Lower timeout test
Network should be up and runn
2025-09-14 11:41:42 +02:00
David Heinemeier Hansson
4a4ff04741 It was the icon update that was hanging things 2025-09-14 11:40:13 +02:00
David Heinemeier Hansson
a0e3d86c12 Explicitly wait until notifications are available 2025-09-14 10:59:00 +02:00
David Heinemeier Hansson
2132c684ff Try to delay until mako is ready 2025-09-14 10:34:13 +02:00
David Heinemeier Hansson
47bdbec9f1 Wording 2025-09-14 10:17:45 +02:00
David Heinemeier Hansson
5b0deb90ba Add a basic welcome inviting you to start with the Omarchy Menu 2025-09-14 10:13:04 +02:00
David Heinemeier Hansson
3e1e466938 Invite new installations to setup wifi 2025-09-14 10:07:37 +02:00
Joel Gaff, Jr.
e018692e5e Macbook: enable internal keyboard at LUKS (#1313)
* macbook: enable internal keyboard at LUKS by loading applespi in initramfs

- Detect T1 models (MacBookPro13,2/13,3 and 14,2/14,3)
- Add mkinitcpio drop-in: MODULES+=(applespi intel_lpss_pci spi_pxa2xx_platform)
- Add HOOKS+=(keyboard) for early input
- Prefer in-kernel applespi; fallback to DKMS via AUR helper if needed

* macbook: expand SPI keyboard support to include 12-inch MacBook

- Add support for MacBook12,1 (12-inch MacBook 2015-2017) with SPI keyboards
- Rename configuration from T1-specific to SPI-keyboard-specific terminology
- Update mkinitcpio drop-in filename: omarchy-macbook-t1.conf -> omarchy-macbook-spi.conf
- Clarify that this fix targets SPI keyboard interface, not just T1 chip models
- Improved detection: covers all models with SPI keyboards needing applespi
- Update comments and messages to reflect broader hardware support scope

* Integrate MacBook SPI keyboard detection into limine-snapper.sh

- Move MacBook detection from separate hardware script into limine-snapper.sh
- Add comprehensive error handling with systemd journal logging
- Ensure persistent MacBook SPI module loading for every boot
- Remove redundant separate macbook-keyboard.sh file
- Consolidate terminal and log output using tee with process substitution

* Add support for MacbookPro13,1 and 14,1 models

* change log tags

from “omarchy” to “macbook” which is more appropriate.

* Slim down and rearrange code

* Unrelated change

* More specific naming and make sure its actually run

---------

Co-authored-by: Ryan Hughes <1630358+ryanrhughes@users.noreply.github.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-14 09:47:42 +02:00
David Heinemeier Hansson
123f970b20 Match logo elsewhere pushed down one line 2025-09-13 21:26:27 +02:00
David Heinemeier Hansson
9de375648e Still need proper set of $TERMINAL 2025-09-13 21:25:17 +02:00
David Heinemeier Hansson
115fcb786d Ensure we detach when starting terminal for impala 2025-09-13 21:24:37 +02:00
David Heinemeier Hansson
23d9b3ae71 Use 644 to match with ISO 2025-09-13 21:18:33 +02:00
David Heinemeier Hansson
6bffd1be8e We already have the logo 2025-09-13 21:00:14 +02:00
David Heinemeier Hansson
a9fe693ed9 Open Impala on first run if we don't have internet already 2025-09-13 20:29:51 +02:00
David Heinemeier Hansson
57bb63b5a3 Match spacing from ISO installer 2025-09-13 19:42:54 +02:00
David Heinemeier Hansson
6b3d1d5dc7 Excessive wrappers 2025-09-13 19:33:17 +02:00
David Heinemeier Hansson
759003eed9 Revert "Add extra packages that were needed from archinstall"
This reverts commit beb2e6b865.
2025-09-13 19:29:23 +02:00
David Heinemeier Hansson
2684322975 Revert "Include all packages needed from the ISO"
This reverts commit f14f63b9e6.
2025-09-13 19:29:05 +02:00
David Heinemeier Hansson
51607f1978 Switch to a simple boolean 2025-09-13 19:19:52 +02:00
David Heinemeier Hansson
beb2e6b865 Add extra packages that were needed from archinstall 2025-09-13 19:02:08 +02:00
David Heinemeier Hansson
f14f63b9e6 Include all packages needed from the ISO 2025-09-13 18:56:23 +02:00
David Heinemeier Hansson
01ce4bb4dd One character too far 2025-09-13 18:48:45 +02:00
David Heinemeier Hansson
02fbe0f305 Further design tweaks 2025-09-13 18:29:58 +02:00
David Heinemeier Hansson
2601311b62 Nix extra padding 2025-09-13 18:26:03 +02:00
David Heinemeier Hansson
dc53c34b6a No help and better centering 2025-09-13 18:16:59 +02:00
David Heinemeier Hansson
418159bd31 Use uniform echo style 2025-09-13 18:08:24 +02:00
David Heinemeier Hansson
10f909fdfc Correct path 2025-09-13 18:02:07 +02:00
David Heinemeier Hansson
5372393211 Remove interdependencies and ordering issues 2025-09-13 17:40:19 +02:00
David Heinemeier Hansson
6bf32a082e Need layout defined first to use it in logo and gum 2025-09-13 17:23:43 +02:00
David Heinemeier Hansson
49ca5ee249 Quote them 2025-09-13 17:13:29 +02:00
David Heinemeier Hansson
8651f6d8b0 Let each segment declare its all 2025-09-13 17:12:43 +02:00
Ryan Hughes
cfbc71c117 Add modifications to support Offline ISO (#1621)
* Change lazyvim and asdcontrol to packages

* Remove asdcontrol and lazyvim

* Add lazyvim setup

* Don't trigger rebuild. We already rebuild later.

* Add new pacman.conf after install

* Update config to keep mirrors in mirrorlist

* Add lazyvim setup back

* Make webapp installer work with local images

* Update tuis to work offline

* Update pacman config situation

* Extract the reboot segment into its own file

* Explainer

* Can't return in executed scripts

* Add post-install

* Extract the reboot segment into its own file

* Fix rebase doubling up

* Add run wrapper function for feedback

* Redirect output to log

* Move gnome updates to first-run

* Add theme to first-run

* Updat to try to get logging working

* Create the file and give permissions

* Test gsettings

* Revert "Test gsettings"

This reverts commit 49c27d319407f6c95fcbb4c5a2646e54b50c9ab4.

* Stop logging

* Add time outputs to end of logs

* Rearrange some scripts to cleanup

* Cleanup

* Add timing to run script

* Don't enable multilib for offline

* Add prebuild ruby

* Try spinner setup

* Prevent exit 1 due to grep not matching

* Update limine config to work for USB installs as well

* Add offline install to env report

* Fix grep pipefailure

* Update logs exports to work with subshells

* Fix backward logic

* Attempt to fix logging again

* Export chrootable for subshells

* Clean up outputs

* Move chrootable up

* Source chroot instead

* Changes for logging

* Center up reboot notice

* Update fixed paths

* Update trap

* Revert reverting precompiled ruby due to issues

* Revert "Revert reverting precompiled ruby due to issues"

This reverts commit c159e7dc51cfdd2fb750c49c66bc4468e1208446.

* Remove junk to cleanup fixed paths now that we have relative

* Add git branch check to transition beta to main

* Log output

* Add time output on summary screen

* We don't need sudo here

* Add ansi helpers to make code cleaner

* Add dry-run helpers for testing

* Split out some common / reused items

* Add log output function

* Use gum log to output cleaner

* Cleanup

* Update trap with options

* Fix reboot and pad it

* Cleanup

* Add dry-run for testing

* Use default $PADDING for gum

* More styles

* Styles and really exit

* Update to new format

* Add ansi vars

* Update log output to prevent flickering

* Fix logo exporting

* Trap updates

* Add exit handler

* Prevent double-trapping

* Update traps

* Consolidate logic

* Update reboot to work in chroot

* Eliminate double-guard

* Attempt to speed up by removing mkinitcpio hooks

* Add multilib for nvidia users

* Add back wireless-regdom

* Remove dryrun items

* Fix to be offline

* Set fonts for plymouth to solve freetype2 issue

* Required -y to run

* Update omarchy-refresh-plymouth to account for limine changes

* Update omarchy-refresh-plymouth to account for limine changes (#1575)

* Required -y to run

* Update omarchy-refresh-plymouth to account for limine changes

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>

* Update modes

* Remove direct executions of .sh files

* Add variable safety

* Add omarchy-upload-log

* Add broadcome fix for MBP

* Prevent printing on screen when rebooting

* Make packages list universal

* Rename

* Remove retry message

* Fix packages target

* Add system info to upload

* Update variable name

* Remove unnecessary executable statuses

* Remove gesture default

* Add bcm4360 fix to install

* Add useful debug info

* Add OMARCHY_PATH

* Only look locally offline

* Rename / rearrange files

* Export so they're available to subshells

* Update for alternate

* Rearrange

* Log install time if no arch

* Add limine to packages list

* Update comments

* Update sizing method

* Update mode switcher

* Move icons to be embedded in installer

* Set install mode to online

* shebang and sudo

* Remove deleted branch check

* Elim banners

* Elim verbosity

* Rename LOG_FILE

* Multilib on by default

* Flip to positive

* Switch to gnome-theme.sh for first run

* Elim ansi-codes helper

* Move guard up to be the first thing that's hit

* Extract a couple of functions

* Trim

* Trim

* Move back to trap

* Update to single gum file

* Just show total

* Pulled function to a helper

* Extract explaining function

* Use complete conditional flows where possible

* Reference variable close to its use

* Use modern bash conditional syntax

* Comment before function

* Use a simpler shared exit headline

Doesn't matter how we stopped, just that we did

* CRs

* Keep constants together

* Style on comment

* Explain QR Code

* Modern bash conditional and use lowercase for all local variables

* Use bash calculation syntax for numbers

* Use calculation syntax where possible

* cleanup was not intention revealing enough imo

* Spacing

* Retry won't produce something different in offline mode

* Not needed

* Use modern bash conditional style

* String-wrapping not needed in [[ ]]

* Might as well use constants for all of these

* Don't need the wrapping

* Move the output saving into where we're working with it

* Not needed as long as we just source this

* Gum is a helper

* Slim down logging setup

* Reflect broader scope of work

* Everything should live in file

* Simpler

* Ordering

* Style

* Better separation of concerns

* Stop pretending these are meant to run directly

* Move all packaging execution together

* No longer used in an offline centric setup

* None of these are directly executable any more either

* Modern bash conditional

* Better name

* Explain what's going on

* Use modern bash conditional

* Use modern bash styule

* No need for bashing

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: DoppioJP <jakub@doppio.jp>
2025-09-13 16:42:00 +02:00
David Heinemeier Hansson
fc58a79ea5 Merge branch 'master' into dev 2025-09-13 15:09:24 +02:00
David Heinemeier Hansson
87469f5f43 Hide cursor during screensaver
Closes #1644
Co-authored-by: @alexperreault
2025-09-13 08:04:19 +02:00
David Heinemeier Hansson
5157932947 Add clue on how to turn on touchpad gestures
Closes #1618
2025-09-12 21:25:46 +02:00
Thomas Klein
6599a6eb70 Move nightlight reset closer to morning (#1638) 2025-09-12 21:20:53 +02:00
Brosseau Valentin
d09b6aa42a Change condition for exiting back_to function (#1582) 2025-09-12 15:23:09 +02:00
Brosseau Valentin
e9754b5460 Change condition for exiting back_to function (#1582) 2025-09-12 15:22:48 +02:00
David Heinemeier Hansson
8356358097 Hyprland 0.51 yanked workspace_swipe!
There's now more advanced features we have to look into.
2025-09-11 21:54:09 +02:00
David Heinemeier Hansson
e57026a067 Hyprland 0.51 yanked workspace_swipe!
There's now more advanced features we have to look into.
2025-09-11 21:53:59 +02:00
Ryan Hughes
f5cd7a4237 Merge pull request #1596 from denisu14/master
delete deprecated workspace_swipe
2025-09-11 00:51:39 -04:00
denisu
381e43d124 delete deprecated workspace_swipe 2025-09-10 23:35:12 -04:00
David Heinemeier Hansson
844091341c Add config/hypr/looknfeel.conf to suggest ways to make common style tweaks to Hyprland 2025-09-10 22:10:24 +02:00
Ryan Hughes
bdcd78484b Update omarchy-refresh-plymouth to account for limine changes (#1575)
* Required -y to run

* Update omarchy-refresh-plymouth to account for limine changes

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-10 19:13:24 +02:00
Ryan Hughes
8c3c93eed1 Update omarchy-refresh-plymouth to account for limine changes (#1575)
* Required -y to run

* Update omarchy-refresh-plymouth to account for limine changes

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-10 19:08:42 +02:00
David Heinemeier Hansson
19d85a7710 Required -y to run 2025-09-10 18:08:13 +02:00
David Heinemeier Hansson
1f5a86ba8e Required -y to run 2025-09-10 18:07:54 +02:00
David Heinemeier Hansson
a9d9faef24 Merge branch 'master' into dev 2025-09-10 17:42:49 +02:00
Ryan Hughes
16460b5203 Set fixed fonts for Plymouth to solve freetype2 issue (#1572)
* Set fonts for plymouth to solve freetype2 issue

* Fix typo in plymouth theme update message

Clarified the reason for the plymouth theme update.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-10 17:11:27 +02:00
Ryan Hughes
bf07883e82 Set fixed fonts for Plymouth to solve freetype2 issue (#1572)
* Set fonts for plymouth to solve freetype2 issue

* Fix typo in plymouth theme update message

Clarified the reason for the plymouth theme update.

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-10 17:05:13 +02:00
David Heinemeier Hansson
a66e8ebebd Stop restarting waybar entirely on updates
This had problems and like this we also won't have an ugly flash
2025-09-10 16:00:14 +02:00
Ofir Levitan
a57060ee31 feat(waybar): add recording indicator (#1561)
* init

* remove comment
format

* add pulse animation

* change to signals

* Move file to an internal location, match signal with what's being sent

* Need to sleep a second to ensure that the recording has either started or stopped before we render config

* Put it in a more prominent place

* Use OMARCHY_PATH

* Sharpen icons and add on-click to stop

* Drop animation but reserve space

* Lean entirely on waybar indicator rather than notification when starting

* Use an explaining function instead of comments

* Give time to ensure the process is dead before updating the indicator

* No longer needed

* Don't need to repeat the on-click

* Don't need a full second

* Naming

* SIRGTMIN shouldn't be here

* Don't need any of this that isn't seen or used

* Explain the sleep

* Mirror start/stop functions

* Go all-in on explaining functions

* Inline audio toggle

* Better just to move the clock rather than have it be permanently offset

* Fix all parameters and name them

* Add migration

* There is now a later omarchy-refresh-waybar offer

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-10 15:48:55 +02:00
David Heinemeier Hansson
9ca2081742 No confirm install only 2025-09-10 14:43:26 +02:00
David Heinemeier Hansson
c9bacbe318 Make gum available as early as possible 2025-09-10 14:38:46 +02:00
David Heinemeier Hansson
a0674703f8 Can't set gsettings this early so move to first-run 2025-09-10 09:08:06 +02:00
elpritchos
627b5f4ead Update audio switch script to filter available sinks (#1555)
Filter audio sinks to include only available ports.
2025-09-10 08:51:28 +02:00
David Heinemeier Hansson
80767e8686 Add 6Ghz Wi-Fi + Intel graphics acceleration for existing installations 2025-09-10 07:58:27 +02:00
David Heinemeier Hansson
e260d28f43 The mulit-selector is just too confusing for people 2025-09-10 07:49:38 +02:00
David Heinemeier Hansson
8af2d3257f Correct spacing 2025-09-09 21:52:02 +02:00
David Heinemeier Hansson
477ec351e7 Merge pull request #1540 from basecamp/dev
Omarchy 2.1.1
2025-09-09 21:36:14 +02:00
Jarek
6824ce0d0f Enable full mDNS resolution for .local domains (#1021)
* Enable full mDNS resolution for .local domains

* Add migration to enable mDNS resolution for existing users
2025-09-09 21:01:22 +02:00
Adam Michaels
70c0f70940 fix: implement proper hierarchical menu navigation (#1100)
* fix: implement proper hierarchical menu navigation

Add intelligent exit behavior that respects menu hierarchy and direct access:

**Direct Access Behavior:**
- When menus are accessed via command line arguments or keybindings
- Pressing Escape/Cancel exits the application completely
- Example: `omarchy-menu theme` → Escape → exits completely

**Hierarchical Navigation:**
- When navigating through menu system (Main → Style → Theme)
- Pressing Escape/Cancel returns to parent menu
- Examples:
  - Theme menu → Style menu (not main menu)
  - Font menu → Style menu (not main menu)
  - Power menu → Setup menu (not main menu)
  - Update Process/Config menus → Update menu (not main menu)

**Implementation:**
- `DIRECT_ACCESS` global variable tracks access method
- `handle_exit(parent_menu)` provides consistent behavior
- Applied to theme, font, power, and update submenus
- Maintains backward compatibility for all existing navigation

* Naming and add to system menu too

* Naming

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-09 20:43:26 +02:00
Joe Dang
251997cf54 fix: keybinding menu size (#1152) 2025-09-09 20:19:52 +02:00
Nirav Patel
e79cfa76a8 Include wireless-regdb to resolve #1083 (#1279)
* Add wireless-regdb alongside iwd

Needed for regulatory compliance for Wi-Fi and enabling some bands on some chipsets

* Add wireless-regdb

* Changed location of wireless-regdb install

* configure the wireless-regdom during install

* remove extra newline

* don't unset the variable too early

* also set the region as part of the script

* writing to wireless-regdom requires root

* need to use tee

* changing logic since this is brought in as source

* handle timezones that start with country code already

---------

Co-authored-by: Nirav Patel <eclecticc@users.noreply.github.com>
2025-09-09 20:13:14 +02:00
Nirav Patel
a8a907791b Install video acceleration for intel GPUs (#1368)
* install the needed packages for intel GPUs

* keep forgetting that this is included by source

---------

Co-authored-by: Nirav Patel <eclecticc@users.noreply.github.com>
2025-09-09 20:04:22 +02:00
cluah
0dbb81ee9b add visual feedback for super + mute + fix (#1474)
* add visual feedback for super + mute

- show visual feedback (device name and volume icon) when super+mute is pressed
- avoid reassigning the sink when only one is available, since this prevents devices (e.g. headphones) from regaining audio after reconnect

* cleanup

* changes needed

* fix: remove hardcoded channel reference
2025-09-09 18:43:34 +02:00
rez1coder
9ecf59dd60 chore: add waybar clock locale migration (#1498) 2025-09-09 18:40:55 +02:00
David Heinemeier Hansson
78b2f926c8 Add screen recording with audio to menu 2025-09-09 18:27:16 +02:00
Patrick van de Glind
40d7d074a9 Added Clojure to the Development Omarchy Menu & implementation (#1238)
* Added Clojure to the Development Omarchy Menu

also implemented it in omarchy-install-dev-env

* Update the icon to use the Clojure logo from Nerd Fonts

Thanks to @Sgierek106

* Use omarchy-pkg-add

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-09 17:28:30 +02:00
Ali Ismayilov
8a83234298 Provide postgres 17 (#1524) 2025-09-09 16:30:47 +02:00
Jarek
88c7c4c748 Fix VPN DNS resolution in DHCP mode (#1514)
Empty DNS= and FallbackDNS= in resolved.conf were blocking VPN DNS
servers when VPN clients replaced /etc/resolv.conf.

Removing these empty values allows systemd-resolved to:
- Use DHCP DNS from network interfaces (existing behavior)
- Fall back to system defaults when needed
- Switch to 'foreign' mode for VPN DNS override

Fixes #1509
2025-09-09 16:24:49 +02:00
David Heinemeier Hansson
ddef52c192 We don't need this to run every time 2025-09-09 14:54:42 +02:00
David Heinemeier Hansson
57ca3d74e5 Revert "Onlt run updatedb if the install worked"
This reverts commit 8e67e717a0.
2025-09-09 14:54:08 +02:00
David Heinemeier Hansson
8e67e717a0 Onlt run updatedb if the install worked 2025-09-09 14:51:27 +02:00
David Heinemeier Hansson
d5ae9ffa05 Don't stop execution on a failure or the script will exit before we get to omarchy-show-done
Which in turn means you can't see error messages on failed installs.

Closes #1521
2025-09-09 14:47:40 +02:00
robert stringer
1de4a49ab0 feat: Notification settings persist across theme changes (#1484)
* Added a core.ini file for setting persistent notification settings

* migration

* remove: max-icon-size from core.ini

* rearranging mako files

* moving core.ini mako config inside omarchy

* added core.ini to migration

* We don't actually need this

Mako is already loaded. The new config will get picked up automatically
on next reboot.

* Don't change

* No change required here

---------

Co-authored-by: robert stringer <bitmap+github@gmail.com>
Co-authored-by: xz <xz>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-09 14:41:41 +02:00
Keyfer Cisek
8493054cd0 Install Gemini CLI via AUR (#1517)
* Install Gemini CLI via AUR

* Update bin/omarchy-menu

Co-authored-by: Roberto Aguilar <roberto.aguilar.arrieta@gmail.com>

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Roberto Aguilar <roberto.aguilar.arrieta@gmail.com>
2025-09-09 14:24:10 +02:00
David Heinemeier Hansson
dbd67e6354 Add menu option for updating drive encryption and user passwords (#1535) 2025-09-09 14:10:42 +02:00
David Heinemeier Hansson
bc1eee1857 Add audio recording on SHIFT to the screenrecording options 2025-09-08 13:11:38 +02:00
David Heinemeier Hansson
9467ff2de3 Add audio recording on SHIFT to the screenrecording options 2025-09-08 13:10:26 +02:00
David Heinemeier Hansson
e5a1b99497 Add new default background for matte black 2025-09-08 11:49:30 +02:00
Árni Gunnarsson
2f6607c03d Add locale to the waybar clock (#1380)
Icelandic was not being picked up by the clock on waybar, this issue
contains more information.

https://github.com/Alexays/Waybar/issues/2694#issuecomment-1837118050
2025-09-07 21:14:48 +02:00
David Heinemeier Hansson
597c2f58eb Fix package reference to use the Omarchy package
Closes #1385
2025-09-07 21:11:42 +02:00
Roberto Aguilar
633b5da37e Install PHP Xdebug debugger (#1399)
While working in a non-trivial feature, debugging support was needed.
Since Xdebug is the official PHP debugger, is available in Arch's
official repositories, and is trivial to configure, it makes sense to
include it in the PHP development environment.

This addition improves the overall development experience for PHP
developers by enabling easier inspection and troubleshooting.

With this PR, the debugger now shows up an enabled extension:

```
$ php -v

PHP 8.4.12 (cli) (built: Aug 27 2025 06:23:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.12, Copyright (c) Zend Technologies
    with Xdebug v3.4.4, Copyright (c) 2002-2025, by Derick Rethans
```
2025-09-07 21:08:11 +02:00
David Heinemeier Hansson
816a660059 Merge pull request #1424 from roberto-aguilar/docker-dbs
Make the Docker DBs file scriptable
2025-09-07 21:01:03 +02:00
David Heinemeier Hansson
05d864c8b4 Merge pull request #1426 from ollymarkey/fix-make-character-under-cursor-readable-in-alacritty-ristretto-theme
fix: make character under cursor readable in alacritty ristretto theme
2025-09-07 20:59:56 +02:00
David Heinemeier Hansson
ca1ea6ccb8 Merge pull request #1427 from typeshaper/fix-firefox-class
change firefox class regex
2025-09-07 20:58:48 +02:00
David Heinemeier Hansson
8e601e1fca Improves screensharing compatibility
Closes #1438
Co-authored-by: @keithhubner
2025-09-07 20:55:41 +02:00
David Heinemeier Hansson
33ebce49b0 Merge pull request #1443 from bftanase/fix-numlock
Enable numlock by default in input configuration
2025-09-07 20:51:22 +02:00
David Heinemeier Hansson
3d075602cb Merge pull request #1429 from martinmose/fix/ufw
Fix UFW Persistence
2025-09-07 20:48:47 +02:00
David Heinemeier Hansson
c87c5e5a04 Merge pull request #1459 from Esteban-Bermudez/place-git-config-in-config-directory
Create git config file under `~/.config`
2025-09-07 20:36:03 +02:00
David Heinemeier Hansson
8088effe9f Update git.sh 2025-09-07 20:35:29 +02:00
David Heinemeier Hansson
653b389c9a Merge pull request #1471 from rsd/hyprshot-freeze
Add --freeze option to screenshot command for improved capture stability
2025-09-07 20:32:44 +02:00
David Heinemeier Hansson
7286bbb674 Merge pull request #1480 from mgbaron/master
Match youtube subdomains in opacity windowrule
2025-09-07 20:25:47 +02:00
David Heinemeier Hansson
20ef3c821d Merge branch 'master' into dev 2025-09-07 20:02:50 +02:00
David Heinemeier Hansson
05a5bfc9b4 Ensure btop and other alacritty-without-bash-subshell commands work with cwd 2025-09-07 20:02:14 +02:00
David Heinemeier Hansson
95336e730f Stick to what we offer 2025-09-07 19:52:55 +02:00
David Heinemeier Hansson
d5e445b743 Another template 2025-09-07 19:51:32 +02:00
David Heinemeier Hansson
00fe154e43 Singular 2025-09-07 19:47:03 +02:00
David Heinemeier Hansson
27742c8f43 Template for suggestions too 2025-09-07 19:46:12 +02:00
mgbaron
15c22fb05b Match youtube subdomains in opacity windowrule
Ensures that any browser apps opening youtube or its subdomains (e.g. tv.youtube.com) have no transparency.
2025-09-06 08:12:17 -06:00
David Heinemeier Hansson
0d5b41b83a Slim further 2025-09-06 10:02:39 +02:00
David Heinemeier Hansson
8065eb87d8 Slim down 2025-09-06 10:00:32 +02:00
David Heinemeier Hansson
bee90aa121 Try the yaml instead 2025-09-06 09:56:54 +02:00
David Heinemeier Hansson
29b1ed6c4e Add an issue template for bugs 2025-09-06 09:52:51 +02:00
Raul Dias
7fe02e7d68 Update screenshot command to include --freeze option for improved capture stability 2025-09-05 18:23:16 -03:00
esteban_ba
ec428bc05f Create git config file under ~/.config
This will help to keep our git config alongside our other configuration
files instead of in the home directory under `~/.gitconfig`
2025-09-04 16:16:04 -07:00
Bogdan Tanase
73bc6159ea Enable numlock by default in input configuration
I believe this is a sensible default for those that have keyboards with num pads. Whenever I want to enter a number I reach for the numpad, just to realize that numlock is off and it doesn't do what I expect it.
2025-09-04 07:20:23 +02:00
Martin Mose Facondini
136a2268ea refactor: pr feedback - ufw 2025-09-03 21:02:12 +02:00
Martin Mose Hansen
0723059fb3 fix: ensure that ufw is enabled 2025-09-03 17:08:09 +02:00
typeshaper
5e5b253dc6 change firefox class regex
It wouldn't recognize Firefox with this kind of regex so browser was
still transparent when it shouldn't
2025-09-03 16:48:30 +03:00
Olly
9cc185c82d Update alacritty.toml
The cursor and text color in the ristretto alactritty theme config are currently the same. This change sets the cursor text color to match the background color. This should be the expected behavior.
2025-09-03 20:41:54 +10:00
Roberto Aguilar
ba76610512 Make the Docker DBs file scriptable
I'm creating dotfiles that as soon as Omarchy is installed, allow me to
perform my own customizations to get the system up and running in no
time according to my own needs.

One of them for example runs:

    ~/.local/share/omarchy/bin/omarchy-install-dev-env laravel

However, something like that is not possible with the Docker databases
because it assumes interactivity via `gum`.

This PR fixes that by either taking the choices as arguments or
providing interactivity when that's not the case.

    ~/.local/share/omarchy/bin/omarchy-install-docker-dbs MySQL
2025-09-03 00:55:39 -06:00
David Heinemeier Hansson
787d0c75a2 Fix quoting for current path 2025-09-02 22:23:20 +02:00
David Heinemeier Hansson
b84e687262 Merge pull request #1376 from ncr/unify-top-bar-toggle
Unify top bar toggle: always pkill waybar
2025-09-01 11:58:31 +02:00
Jacek Becela
c499413812 Unify top bar toggle via keybinding 2025-09-01 11:22:17 +02:00
David Heinemeier Hansson
c82754d423 Merge pull request #1372 from roberto-aguilar/minecraft-launcher
Fix Minecraft installation
2025-09-01 09:36:17 +02:00
Roberto Aguilar
9ec006a1b2 Fix Minecraft installation
I tried to install `Minecraft` through Omarchy's menu, however it fails
with the following error message:

    error: target not found: minecraft-launcher

This occurs because, according to Arch's documentation, the package is
available through AUR rather than the official repositories.

Reference: https://wiki.archlinux.org/title/Minecraft#Installation
2025-08-31 22:29:10 -06:00
Barend van der Walt
2666e75666 Fix syntax error in alacritty.toml bindings 2025-08-31 20:03:01 +02:00
Barend van der Walt
d40c1ba454 Update alacritty.toml to remove clipboard setting, bind shift+insert to paste action
Removed selection settings to save to clipboard.
bind shift+insert to paste action
2025-08-31 20:00:44 +02:00
Ryan Hughes
8fd668fbb3 Fix multilib regex for steam installer 2025-08-31 20:04:35 +03:00
David Heinemeier Hansson
25d02e1f3f Merge pull request #1357 from basecamp/fix-multilib-sed-issue
Account for space between # and text for Nvidia multilib
2025-08-31 18:07:04 +02:00
Ryan Hughes
261e1aec08 Account for space between # and text 2025-08-31 18:56:13 +03:00
David Heinemeier Hansson
43206dba92 Revert "Temporarily yank ttf-ia-writer until bad cache expires"
This reverts commit 6f2f48b412.
2025-08-31 17:12:58 +02:00
David Heinemeier Hansson
6f2f48b412 Temporarily yank ttf-ia-writer until bad cache expires 2025-08-31 17:06:41 +02:00
David Heinemeier Hansson
ca7f6ebb3b Sublime is only on AUR 2025-08-31 16:51:28 +02:00
David Heinemeier Hansson
131f934f17 Fix JetBrains font setting 2025-08-31 16:50:22 +02:00
David Heinemeier Hansson
91177a6546 Needed for pre-migrations setups 2025-08-31 16:28:27 +02:00
David Heinemeier Hansson
57a9a1aed0 Merge pull request #1348 from basecamp/dev
Omarchy 2.1.0
2025-08-31 16:09:53 +02:00
David Heinemeier Hansson
4409f4478b We have to bail if the package couldn't be installed 2025-08-31 15:55:23 +02:00
David Heinemeier Hansson
6d832cba42 Reapply "Make fixing the F13 AMD audio input just a thing that happens"
This reverts commit a5814e0bfd.
2025-08-31 15:50:24 +02:00
David Heinemeier Hansson
8610f4f9da Explainer 2025-08-31 15:41:55 +02:00
David Heinemeier Hansson
4bdbb06cfc Extract the reboot segment into its own file 2025-08-31 15:41:32 +02:00
David Heinemeier Hansson
7a9499eb66 Always have the shebang 2025-08-31 15:41:18 +02:00
David Heinemeier Hansson
a5814e0bfd Revert "Make fixing the F13 AMD audio input just a thing that happens"
This reverts commit c6cd49a0aa.
2025-08-31 15:35:43 +02:00
David Heinemeier Hansson
434265cea2 Include multilib but commented out 2025-08-31 15:12:01 +02:00
David Heinemeier Hansson
6a5f98cb8e Slim even more 2025-08-31 15:09:31 +02:00
David Heinemeier Hansson
a4c4b3570c Ship our own pacman.conf 2025-08-31 15:07:36 +02:00
David Heinemeier Hansson
849628b288 Need fontconfig too 2025-08-31 14:57:42 +02:00
David Heinemeier Hansson
3ea45aa995 Convert most of the optional AUR dependencies over to OPR 2025-08-31 14:54:44 +02:00
David Heinemeier Hansson
37d59ca78e Use our own asdcontrol-git package now 2025-08-31 14:46:06 +02:00
David Heinemeier Hansson
c6cd49a0aa Make fixing the F13 AMD audio input just a thing that happens 2025-08-31 14:31:15 +02:00
David Heinemeier Hansson
05d5f07cca Add migration to fix the AMD F13 input audio problem 2025-08-31 14:19:30 +02:00
David Heinemeier Hansson
91c8ad36f2 Add hardware restart menu to unblock wifi/bluetooth/audio if stuck 2025-08-31 14:18:01 +02:00
David Heinemeier Hansson
521de9794a Glenn was right, 3 is better! 2025-08-31 14:02:08 +02:00
David Heinemeier Hansson
e15caaf713 Only do a gum offer if we have gum 2025-08-31 13:58:01 +02:00
David Heinemeier Hansson
219d2d43e7 Gets called too early to rely on the ENV 2025-08-31 13:56:40 +02:00
David Heinemeier Hansson
d68a757b7f Extract actual list to a file that's easier to maintain 2025-08-31 13:53:16 +02:00
David Heinemeier Hansson
8dd7c7a94e Make default ENVs available here and reuse 2025-08-31 13:53:06 +02:00
David Heinemeier Hansson
763cbcbc02 Use one consistent mirror list 2025-08-31 13:49:54 +02:00
David Heinemeier Hansson
db8d814071 Split conditionals 2025-08-31 13:46:54 +02:00
David Heinemeier Hansson
e621e41be2 Only try to update from AUR if there are any AUR packages installed 2025-08-31 13:45:47 +02:00
David Heinemeier Hansson
1099a44c77 Don't need this 2025-08-31 13:35:45 +02:00
David Heinemeier Hansson
3210ec44f5 Fix pkg-add 2025-08-31 13:35:28 +02:00
David Heinemeier Hansson
a44ea9c232 Ensure new mirrorlist is added as early as possible 2025-08-31 13:30:57 +02:00
David Heinemeier Hansson
f643d97211 Make sure we have the latest omarchy-chromium available 2025-08-31 13:27:23 +02:00
David Heinemeier Hansson
cc1f49519e Only fetch the ignored package list once and shout about it if necessary 2025-08-31 13:25:14 +02:00
David Heinemeier Hansson
c0c040f9c0 Just install iwd along with everything else so it is always there 2025-08-31 13:21:00 +02:00
David Heinemeier Hansson
5f94df198f Offer instant retry of the installation on failure 2025-08-31 13:09:45 +02:00
David Heinemeier Hansson
fe20e89e0e Set everything under the chromium guard 2025-08-31 13:08:40 +02:00
David Heinemeier Hansson
80341b296e Sort alphabetically 2025-08-31 12:43:09 +02:00
David Heinemeier Hansson
eeee49e702 QEMU should not be transparent 2025-08-31 12:42:57 +02:00
David Heinemeier Hansson
927abd86ba Be more specific
This is pacman land!
2025-08-31 12:41:33 +02:00
David Heinemeier Hansson
256a27ca8e Apply idle inhibitor just to fullscreen on stream and retroarch for gaming
#1303
2025-08-31 11:19:05 +02:00
Cristian Álvarez Belaustegui
64ec80fb7e Bitwarden installer and rule to avoid sharing it's window contents (#1044)
* Don't share Bitwarden windows content

* Install Bitwarden

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 10:51:03 +02:00
David Heinemeier Hansson
24b94fde54 Ensure qt5-wayland has been installed
Closes #596
Co-authored-by: @roelandmoors
2025-08-31 10:49:14 +02:00
David Heinemeier Hansson
3b0752820e Revert "Quick fix for lazyvim bufferline error when using catppuccin (#1084)" (#1346)
This reverts commit b6896bd58f.
2025-08-31 10:34:55 +02:00
Ramtin Javanmardi
b6896bd58f Quick fix for lazyvim bufferline error when using catppuccin (#1084)
* Quick fix for lazyvim bufferline error when using catppuccin

* This is a slightly better fix

* Adding the fix in theme, actually messed up the theme colors

* Adding the migration file

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 10:34:09 +02:00
robert stringer
2442f774e4 fix: cleans the output of upower, strips the percentage and decimals, prevents arithmetic syntax error (#1236)
Co-authored-by: xz <xz>
2025-08-31 10:24:54 +02:00
Oleg Luganskiy
0d62a03ae0 feat: add OpenAI Codex to AI installation menu (#1255)
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 10:13:25 +02:00
David Heinemeier Hansson
7d2759b807 Don't need extra sleep 2025-08-31 10:11:42 +02:00
Rick
792f7827a6 Handle case when no databases are selected (#1259)
At least two users were asking for support in Discord due to not selecting DBs to install. This aims to prevent confusion in that scenario.
2025-08-31 10:11:23 +02:00
David Heinemeier Hansson
9293e2ed17 Add icons for OS Age and Uptime
Closes #1299
Co-authored-by: @theamit-969
2025-08-31 10:07:37 +02:00
Valberto Enoc
3d49ced97e Change Ollama install from AUR package to official website (#881)
* install ollama from the official website

* installing ollama-cuda if nvidia-smi exists

* add check for rocminfo installation for AMD GPUs

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 09:59:28 +02:00
Simon Dawson
35e169e3cc chore: Add Emacs to editor install menu (#1323)
As well as installing the `emacs-wayland` package, we enable and start
the `emacs` systemd service. A GUI Emacs client can then be started
using e.g. `emacsclient -c`.
2025-08-31 09:53:18 +02:00
David Heinemeier Hansson
4ee48dd238 Switch from returns to exit codes 2025-08-31 09:21:02 +02:00
David Heinemeier Hansson
9e5b4fc871 Turn pkg and cmd functions into bins to avoid PATH issues in subshells 2025-08-31 09:18:06 +02:00
robert stringer
94ad5d4d37 fix: symlinks to default icons to prevent text chevron fallbacks (#1114)
* fix: symlinks to default icons to prevent text chevron fallbacks

* consistent symlink syntax

* Needs sudo and had extra quotes

* Add migration

* added gtk-update-icon-cache for symlinked files

* pkill any running Files windows

* Cleanup and ensure successful exit so as not to halt migrations

* Excess CR

---------

Co-authored-by: xz <xz>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: robert stringer <bitmap+github@gmail.com>
2025-08-31 09:08:32 +02:00
Gary Rennie
0a3ce5c393 Allow failed migrations to be skipped (#1124)
* Allow failed migrations to be skipped

Failed migrations can be now be skipped by a prompt. This means that if
a migration is "stuck" then a user can opt to store it in a separate
skipped directory. Skipped migrations will be considered for the
purposes of running the pending migrations, however in future, we can
allow the user to run their skipped migrations with a flag.

To allow the script to continue and prompt for failed migrations, the
`set -e` has been removed. A manual check on the exit code is used
instead.

* Cleanup implementation a bit

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 09:03:25 +02:00
David Heinemeier Hansson
9f5975b717 Only configure Docker if it is present on the system 2025-08-31 08:50:32 +02:00
chan
29c2233399 Add gvfs-smb so GNOME Files (Nautilus) can handle smb:// URIs. (#1327)
* add gvfs-smb to packages

gvfs-smb and its dependencies (smbclient, samba, and cifs-utils) afford access to Samba servers in Nautilus/Files.

* Add migration

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-31 08:07:42 +02:00
David Heinemeier Hansson
98db40fd0d This is preventing Android Studio from working correctly
Closes #1300
2025-08-31 07:54:16 +02:00
Glenn Oppegard
a35055e562 Give the screensaver time to breathe (#1184)
Add a three second delay between screensaver effects

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-30 20:53:10 +02:00
David Heinemeier Hansson
3ce7849c89 Group git together 2025-08-30 11:48:32 +02:00
Jarek
59c70fdd46 Fix DNS migration to handle UseDNS=no in network files (#1314)
* Fix DNS migration to handle UseDNS=no in network files

Issue #1246: Migration 1755109182.sh only fixes resolved.conf but doesn't
remove UseDNS=no from network files. When UseDNS=no persists, it blocks
DHCP DNS and forces fallback to Cloudflare after reboot.

Fix: Remove UseDNS=no from all network files, matching omarchy-setup-dns DHCP behavior.

* Add new migration 1756491748.sh for existing users

Fixes DNS issue for users who already ran migration 1755109182.sh.
Removes UseDNS=no from network files to enable DHCP DNS.

* Apply requested changes

- Revert 1755109182.sh to original state
- Consolidate all fixes in new migration 1756491748.sh
- Follow migration style guidelines
2025-08-30 09:41:14 +02:00
David Heinemeier Hansson
effae1e7f2 Include nautilus dialogs as floating windows 2025-08-30 08:51:15 +02:00
David Heinemeier Hansson
a3c5e589f6 Extract pkg cmd abstractions and clean up all migrations (#1291)
* No using custom chromium.desktop any more

* Spacing

* Rely on $OMARCHY_PATH

* Add common pkg and cmd functions for use in migrations and elsewhere

* Simple pkg-adds

* Later migration does it

* Ensure running migrations on older installs have the new pkg/cmds available

* Spacing

* Use new abstractions

* Installed in later migration

* Needless comment

* Use new commands

* Fix package name from 'batt' to 'bat'
2025-08-30 07:41:05 +02:00
Ankur Kotwal
4f6f92b2cc Use ttf-jetbrains-mono-nerd font instead of the non-nerd variant. (#1308)
* Use ttf-jetbrains-mono-nerd font instead of the non-nerd variant.

* Update font installation script for JetBrains Mono

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-30 07:37:25 +02:00
Cosmin Popovici
b388d95d4b Fix comment formatting for key unbinding example (#1245)
`unbind = SUPER, Space` will not work, but `unbind = SUPER, SPACE` will
2025-08-29 21:46:39 +02:00
Jordan King
ed3e1f901b Set hypridle exception for fullscreen apps (#1303) 2025-08-29 21:43:26 +02:00
David Heinemeier Hansson
07c072cf21 Spacing 2025-08-29 21:42:02 +02:00
Alexandre Perreault
3266a18897 fix screensaver exit behavior on multiple monitors (#1249) 2025-08-29 21:38:46 +02:00
David Heinemeier Hansson
94eeba4849 Just tweak Alacritty 2025-08-29 21:24:31 +02:00
David Heinemeier Hansson
d755de4042 Tweak Kanagawa opacity to more closely match the other themes in appearance 2025-08-29 21:22:17 +02:00
David Heinemeier Hansson
ace0fb1cd5 Migrate away the alacritty default override of opacity so Hyprland has full control 2025-08-29 21:19:12 +02:00
David Heinemeier Hansson
2647ea7745 Let Hyprland control the opacity
And reduce it a bit this way
2025-08-29 21:16:38 +02:00
David Heinemeier Hansson
defe63a91c No trailing slash 2025-08-29 19:44:07 +02:00
Charles Ji
4e8afd7ad6 fix: remove extra slash (#1141) 2025-08-29 19:43:07 +02:00
David Heinemeier Hansson
37699e80e4 Bring back ttf-ia-writer now that it is safe 2025-08-28 22:23:38 +02:00
David Heinemeier Hansson
0b276c4f49 Improve readability here too 2025-08-28 22:11:05 +02:00
David Heinemeier Hansson
8350355a20 Easier to read 2025-08-28 22:09:21 +02:00
David Heinemeier Hansson
c5fffc2f1d Use new Omarchy mirror as primary mirror 2025-08-28 22:04:32 +02:00
David Heinemeier Hansson
d9c69b8d02 Silence errors if they are missing 2025-08-28 22:02:13 +02:00
David Heinemeier Hansson
3e29949745 Only remove the key if it exists 2025-08-28 22:00:41 +02:00
David Heinemeier Hansson
bb9fbceca2 Only update AUR packages in the AUR step 2025-08-28 21:59:10 +02:00
David Heinemeier Hansson
615aa64f01 Remove lingering Chaotic-AUR packages 2025-08-28 21:55:52 +02:00
David Heinemeier Hansson
a21ace2ee7 Drop Chaotic-AUR repository now that we have OPR (#1264)
* Drop Chaotic AUR repo

Now that we have the AUR packages we need on the OPR, we don't need this
as a default.

* Fix escape issue and rename so it will run again
2025-08-28 21:50:49 +02:00
David Heinemeier Hansson
f16908d701 Busted 2025-08-28 21:46:14 +02:00
David Heinemeier Hansson
1fd5966bd9 Merge branch 'master' into dev 2025-08-28 21:41:19 +02:00
David Heinemeier Hansson
94006b5bb1 Duplicate 2025-08-28 21:38:59 +02:00
David Heinemeier Hansson
bc94bb2d6c We should not be pinning this 2025-08-28 21:37:50 +02:00
David Heinemeier Hansson
305e799581 Was a consequence of the escaping bug 2025-08-28 21:35:55 +02:00
David Heinemeier Hansson
43ee2cf4e0 Fix escaping bug as hotfix 2025-08-28 21:34:31 +02:00
David Heinemeier Hansson
48e5aa5e91 Include Open Folder from VSCode 2025-08-28 18:47:58 +02:00
David Heinemeier Hansson
c5290ee970 Add Omarchy mirror first 2025-08-28 15:53:56 +02:00
David Heinemeier Hansson
ba4f1f20fc Upgrade the system after the potentially missing omarchy repo has been added 2025-08-28 15:40:45 +02:00
David Heinemeier Hansson
005d286f92 Pull borked package as a hotfix 2025-08-28 15:16:32 +02:00
David Heinemeier Hansson
cd378a55a2 Merge pull request #1232 from basecamp/dev
Omarchy 2.0.5
2025-08-28 11:14:58 +02:00
Ryan Hughes
4480b3638f Merge pull request #1160 from michielryvers/snapper-existing-configs
Don't hardcode snapper configs, read the config list first
2025-08-28 12:12:15 +03:00
Ryan Hughes
5f2b6566f1 Add missing configs if user already had snapper 2025-08-28 12:11:26 +03:00
David Heinemeier Hansson
b4d76cecdf Stop restarting waybar on unlock to see if we have solved the stacking problem for good 2025-08-28 10:58:39 +02:00
michielryvers
52dcf01987 Merge branch 'dev' into snapper-existing-configs 2025-08-28 10:54:20 +02:00
David Heinemeier Hansson
91dadc905d Let user know why we are asking for sudo 2025-08-28 10:50:20 +02:00
David Heinemeier Hansson
69f5c62f8f pacman actually does this itself 2025-08-28 10:42:41 +02:00
David Heinemeier Hansson
e3df85ba8c Switch to the new Font Awesome 7.0 package 2025-08-28 10:41:05 +02:00
David Heinemeier Hansson
3f2e282c46 Ensure walker doesn't walk off into the night
Closes #1226
2025-08-28 10:29:36 +02:00
David Heinemeier Hansson
06b15257e2 Fix repo setup 2025-08-28 09:21:47 +02:00
David Heinemeier Hansson
33d6d38332 Include Omarchy branch in About (#1231) 2025-08-28 09:05:26 +02:00
David Heinemeier Hansson
30ad634349 Move OPR behind Arch default repos (#1229)
* Move OPR behind Arch default repos

* No longer first
2025-08-28 08:47:42 +02:00
Roberto Aguilar
6e3d023fee Install node as part of Laravel's dev env (#1201)
When running `laravel new`, if a starter kit like `React` or `Vue` are
selected, the installer will ask:

```
Would you like to run npm install and npm run build?
```

And in order for it to work, `npm` should be available.

Having this installed will definitively smooth out the experience from
install to up-and-running!
2025-08-28 07:55:51 +02:00
David Heinemeier Hansson
950f1f0adc Merge pull request #1223 from basecamp/dev
Omarchy v2.0.4
2025-08-28 07:10:37 +02:00
David Heinemeier Hansson
126131daa1 Merge branch 'master' into dev 2025-08-28 07:08:55 +02:00
David Heinemeier Hansson
4e7aa33868 Don't need to start immediately 2025-08-28 07:05:03 +02:00
David Heinemeier Hansson
a34b7bd131 Remove entirely 2025-08-28 06:58:10 +02:00
David Heinemeier Hansson
2c751a0920 Stop pinning 2025-08-28 06:47:32 +02:00
David Heinemeier Hansson
42f7f5f558 Hopefully no longer needed 2025-08-28 06:38:48 +02:00
David Heinemeier Hansson
c56c192b89 Set keyboard layout in the correct default file 2025-08-27 21:15:48 +02:00
David Heinemeier Hansson
203dcce898 Order of appearance 2025-08-27 21:05:38 +02:00
David Heinemeier Hansson
e337c0bbdc Merge pull request #1178 from cstrickjacke/waybar-power-menu
make clicking on the battery icon open the power menu
2025-08-27 21:04:17 +02:00
David Heinemeier Hansson
512df06f36 Don't need output for success 2025-08-27 20:49:34 +02:00
David Heinemeier Hansson
71fe2cbafd Merge pull request #1188 from bastnic/patch-1
Fix keyboard layout at install
2025-08-27 20:24:48 +02:00
Bastien Jaillot
37d10feba3 Update Hyprland config path for keyboard layout
Keyboard is wrongly set after install, this is because the config moved to a dedicated input.conf and so no substitution is done.
2025-08-27 18:14:27 +02:00
David Heinemeier Hansson
d94715d59e Merge pull request #1174 from basecamp/dev
Omarchy 2.0.3
2025-08-27 16:11:01 +02:00
Cai Strickland
393767cbec make clicking on the battery open the power menu
Bothered me that the power profile setting was so hidden away, so I made it pop up by clicking the battery icon. :)
2025-08-27 15:49:33 +02:00
David Heinemeier Hansson
e9d2a3d3f7 Revert "Confirm whether issue is still present with proper use of pacman -Syu"
This reverts commit 3882fbf21c.
2025-08-27 15:46:59 +02:00
David Heinemeier Hansson
2832c59970 Always --noconfirm 2025-08-27 15:40:48 +02:00
David Heinemeier Hansson
3882fbf21c Confirm whether issue is still present with proper use of pacman -Syu 2025-08-27 15:29:48 +02:00
David Heinemeier Hansson
5fec87d324 Get rid of -Sy and -Syy (#1175)
* Get rid of -Sy and -Syy

* Get rid of all naked -Sy usage

* Don't need a full system update for this

* Combine

* Does not need a full system update

* Need to refresh even just for Omarchy repository

* Does not warrant a full system update

* No longer need the sudoless pacman runs

* We have already added the Omarchy repo before getting to here

So fine to just do a straight install
2025-08-27 15:24:18 +02:00
David Heinemeier Hansson
e5927fc1b2 Fix ghostty compatibility here too 2025-08-27 14:38:14 +02:00
David Heinemeier Hansson
175066ecba Fix migration not to add working-directory if already there
And make command line compatible with Ghostty too
2025-08-27 14:38:00 +02:00
David Heinemeier Hansson
cf4e1c0eb7 Better resilience for fetching the tags 2025-08-27 14:26:30 +02:00
David Heinemeier Hansson
b264c6540a Use floating terminal 2025-08-27 14:19:07 +02:00
David Heinemeier Hansson
90cdbd5504 Run the omarchy-update in a terminal process not owned by waybar so it'll survive being restarted 2025-08-27 14:14:03 +02:00
David Heinemeier Hansson
147242cbba Same permissions as everything 2025-08-27 14:13:23 +02:00
David Heinemeier Hansson
c09ac13f90 Add refresh fastfetch config 2025-08-27 12:59:31 +02:00
David Heinemeier Hansson
ec85068c67 Use omarchy-version 2025-08-27 12:59:21 +02:00
Michiel Ryvers
613f4a473d Don't hardcode snapper configs, read the config list first 2025-08-27 11:08:16 +02:00
Barend van der Walt
648832dcc6 Add alacritty save_to_clipboard config for not copying to the PRIMARY clipboard 2025-08-22 17:09:27 +02:00
761 changed files with 9087 additions and 3196 deletions

9
.editorconfig Normal file
View File

@@ -0,0 +1,9 @@
root = true
[*]
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
charset = utf-8

24
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: Bug
description: Report a validated bug -- NOT FOR SUPPORT REQUESTS
labels: [bug]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: input
id: system-details
attributes:
label: System details
placeholder: e.g. AMD 9950X, NVIDIA 5090, Omarchy 2.1.0
validations:
required: true
- type: textarea
id: steps
attributes:
label: What's wrong?
description: Describe the issue, include steps to recreate it if possible, and attach the output of `omarchy-debug` if possible
validations:
required: true

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Suggestion
url: https://github.com/basecamp/omarchy/discussions/categories/suggestions
about: Suggest a new feature, change to existing feature, or other ideas in Discussions.
- name: Support
url: https://omarchy.org/discord
about: Need help? Join our Discord community for support with any issues. GitHub issues should be used for verified bugs only.

View File

@@ -1,10 +1,9 @@
# Omarchy # Omarchy
Turn a fresh Arch installation into a fully-configured, beautiful, and modern web development system based on Hyprland by running a single command. That's the one-line pitch for Omarchy (like it was for Omakub). No need to write bespoke configs for every essential tool just to get started or to be up on all the latest command-line tools. Omarchy is an opinionated take on what Linux can be at its best. Omarchy is a beautiful, modern & opinionated Linux distribution by DHH.
Read more at [omarchy.org](https://omarchy.org). Read more at [omarchy.org](https://omarchy.org).
## License ## License
Omarchy is released under the [MIT License](https://opensource.org/licenses/MIT). Omarchy is released under the [MIT License](https://opensource.org/licenses/MIT).

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
applications/icons/HEY.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
applications/icons/X.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
applications/icons/Zoom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -1,12 +0,0 @@
[Desktop Entry]
Name=Neovim
GenericName=Text Editor
Comment=Edit text files
Exec=alacritty --class=nvim --title=nvim -e nvim -- %F
Terminal=false
Type=Application
Keywords=Text;editor;
Icon=nvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

View File

@@ -4,27 +4,20 @@
BATTERY_THRESHOLD=10 BATTERY_THRESHOLD=10
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified" NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
BATTERY_LEVEL=$(omarchy-battery-remaining)
get_battery_percentage() { BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{print $2}')
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() { send_notification() {
notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
} }
BATTERY_LEVEL=$(get_battery_percentage) if [[ -n "$BATTERY_LEVEL" && "$BATTERY_LEVEL" =~ ^[0-9]+$ ]]; then
BATTERY_STATE=$(get_battery_state) if [[ $BATTERY_STATE == "discharging" && $BATTERY_LEVEL -le $BATTERY_THRESHOLD ]]; then
if [[ ! -f $NOTIFICATION_FLAG ]]; then
if [[ "$BATTERY_STATE" == "discharging" && "$BATTERY_LEVEL" -le "$BATTERY_THRESHOLD" ]]; then send_notification $BATTERY_LEVEL
if [[ ! -f "$NOTIFICATION_FLAG" ]]; then touch $NOTIFICATION_FLAG
send_notification "$BATTERY_LEVEL" fi
touch "$NOTIFICATION_FLAG" else
rm -f $NOTIFICATION_FLAG
fi fi
else
rm -f "$NOTIFICATION_FLAG"
fi fi

12
bin/omarchy-battery-remaining Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Returns the battery percentage remaining as an integer.
# Used by the battery monitor and the Ctrl + Shift + Super + B hotkey.
upower -i $(upower -e | grep BAT) \
| awk -F: '/percentage/ {
gsub(/[%[:space:]]/, "", $2);
val=$2;
printf("%d\n", (val+0.5))
exit
}'

16
bin/omarchy-branch-set Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
# Set the branch for Omarchy's git repository.
if (($# == 0)); then
echo "Usage: omarchy-branch-set [master|dev]"
exit 1
else
branch="$1"
fi
case "$branch" in
"master") git -C $OMARCHY_PATH switch master ;;
"dev") git -C $OMARCHY_PATH switch dev ;;
*) echo "Unknown branch: $branch"; exit 1; ;;
esac

30
bin/omarchy-channel-set Executable file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
# Set the Omarchy channel, which dictates what git branch and package repository is used.
#
# Stable uses the master branch, which only sees updates on official releases, and
# the stable package repository, which typically lags the edge by a month to ensure
# better compatibility.
#
# Edge tracks the latest package repository, but still relies on the master branch,
# so new packages which require config changes may cause conflicts or errors.
#
# Dev tracks the active development dev branch, which may include partial or broken updates,
# as well as the latest package repository. This should only be used by Omarchy developers
# and people with a lot of experience managing Linux systems.
if (($# == 0)); then
echo "Usage: omarchy-channel-set [stable|edge|dev]"
exit 1
else
channel="$1"
fi
case "$channel" in
"stable") omarchy-branch-set "master" && omarchy-refresh-pacman "stable" && sudo pacman -Suu --noconfirm ;;
"edge") omarchy-branch-set "master" && omarchy-refresh-pacman "edge" ;;
"dev") omarchy-branch-set "dev" && omarchy-refresh-pacman "edge" ;;
*) echo "Unknown channel: $channel"; exit 1; ;;
esac
omarchy-update -y

View File

@@ -1,7 +1,16 @@
#!/bin/bash #!/bin/bash
# Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
if [[ $# -eq 0 ]]; then if [[ $# -eq 0 ]]; then
echo "Adjust Apple Display Brightness by passing +5000 or -5000 (or any range from 0-60000)" echo "Adjust Apple Display Brightness by passing +5000 or -5000 (or any range from 0-60000)"
else else
sudo asdcontrol $(sudo asdcontrol --detect /dev/usb/hiddev* | grep ^/dev/usb/hiddev | cut -d: -f1) -- "$1" DEVICE="$(sudo asdcontrol --detect /dev/usb/hiddev* | grep ^/dev/usb/hiddev | cut -d: -f1)"
sudo asdcontrol "$DEVICE" -- "$1" >/dev/null
VALUE="$(sudo asdcontrol "$DEVICE" | awk -F= '/BRIGHTNESS=/{print $2+0}')"
swayosd-client \
--monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \
--custom-icon display-brightness \
--custom-progress "$(awk -v v="$VALUE" 'BEGIN{printf "%.2f", v/60000}')" \
--custom-progress-text "$(( VALUE * 100 / 60000 ))%"
fi fi

View File

@@ -1,19 +1,58 @@
#!/bin/bash #!/bin/bash
# Find all the audio sinks but exit if there are none # Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
sinks=($(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep -E '^\s*│\s+\*?\s*[0-9]+\.' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/'))
[ ${#sinks[@]} -eq 0 ] && exit 1
# Find current audio sink focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
current=$(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep '^\s*│\s*\*' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/')
# Find the next sink (looping around in the list) sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
for i in "${!sinks[@]}"; do sinks_count=$(echo "$sinks" | jq '. | length')
[ "${sinks[$i]}" = "$current" ] && next=${sinks[$(((i + 1) % ${#sinks[@]}))]}
done
next=${next:-${sinks[0]}}
# Set the next sink and ensure it's not muted if [ "$sinks_count" -eq 0 ]; then
wpctl set-default "$next" swayosd-client \
wpctl set-mute "$next" 0 --monitor "$focused_monitor" \
--custom-message "No audio devices found"
exit 1
fi
current_sink_name=$(pactl get-default-sink)
current_sink_index=$(echo "$sinks" | jq -r --arg name "$current_sink_name" 'map(.name) | index($name)')
if [ "$current_sink_index" != "null" ]; then
next_sink_index=$(((current_sink_index + 1) % sinks_count))
else
next_sink_index=0
fi
next_sink=$(echo "$sinks" | jq -r ".[$next_sink_index]")
next_sink_name=$(echo "$next_sink" | jq -r '.name')
next_sink_description=$(echo "$next_sink" | jq -r '.description')
if [ "$next_sink_description" = "(null)" ] || [ "$next_sink_description" = "null" ] || [ -z "$next_sink_description" ]; then
sink_id=$(echo "$next_sink" | jq -r '.properties."object.id"')
next_sink_description=$(wpctl status | grep -E "\s+\*?\s+${sink_id}\." | sed -E 's/^.*[0-9]+\.\s+//' | sed -E 's/\s+\[.*$//')
fi
next_sink_volume=$(echo "$next_sink" | jq -r \
'.volume | to_entries[0].value.value_percent | sub("%"; "")')
next_sink_is_muted=$(echo "$next_sink" | jq -r '.mute')
if [ "$next_sink_is_muted" = "true" ] || [ "$next_sink_volume" -eq 0 ]; then
icon_state="muted"
elif [ "$next_sink_volume" -le 33 ]; then
icon_state="low"
elif [ "$next_sink_volume" -le 66 ]; then
icon_state="medium"
else
icon_state="high"
fi
next_sink_volume_icon="sink-volume-${icon_state}-symbolic"
if [ "$next_sink_name" != "$current_sink_name" ]; then
pactl set-default-sink "$next_sink_name"
fi
swayosd-client \
--monitor "$focused_monitor" \
--custom-message "$next_sink_description" \
--custom-icon "$next_sink_volume_icon"

View File

@@ -1,12 +1,22 @@
#!/bin/bash #!/bin/bash
# Finish the installation of Omarchy with items that can only be done after logging in.
set -e set -e
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
if [[ -f "$FIRST_RUN_MODE" ]]; then if [[ -f "$FIRST_RUN_MODE" ]]; then
rm -f "$FIRST_RUN_MODE" rm -f "$FIRST_RUN_MODE"
$OMARCHY_PATH/install/first-run/battery-monitor.sh
$OMARCHY_PATH/install/first-run/firewall.sh bash "$OMARCHY_PATH/install/first-run/battery-monitor.sh"
bash "$OMARCHY_PATH/install/first-run/cleanup-reboot-sudoers.sh"
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
sudo rm -f /etc/sudoers.d/first-run sudo rm -f /etc/sudoers.d/first-run
bash "$OMARCHY_PATH/install/first-run/welcome.sh"
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
fi fi

11
bin/omarchy-cmd-missing Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# Returns true if any of the commands passed in as arguments are missing on the system.
for cmd in "$@"; do
if ! command -v "$cmd" &>/dev/null; then
exit 0
fi
done
exit 1

9
bin/omarchy-cmd-present Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Returns true if all the commands passed in as arguments exit on the system.
for cmd in "$@"; do
command -v "$cmd" &>/dev/null || exit 1
done
exit 0

13
bin/omarchy-cmd-reboot Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
# Reboot command that first closes all application windows (thus giving them a chance to save state).
# This is particularly helpful for applications like Chromium that otherwise won't shutdown cleanly.
omarchy-state clear re*-required
# Schedule the reboot to happen after closing windows (detached from terminal)
nohup bash -c "sleep 2 && systemctl reboot --no-wall" >/dev/null 2>&1 &
# Now close all windows
omarchy-hyprland-window-close-all
sleep 1 # Allow apps like Chrome to shutdown correctly

View File

@@ -1,5 +1,8 @@
#!/bin/bash #!/bin/bash
# Start and stop a screenrecording, which will be saved to ~/Videos by default.
# Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs.
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
@@ -8,25 +11,113 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1 exit 1
fi fi
screenrecording() { DESKTOP_AUDIO="false"
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" MICROPHONE_AUDIO="false"
notify-send "Screen recording starting..." -t 1000 WEBCAM="false"
sleep 1 STOP_RECORDING="false"
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then for arg in "$@"; do
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" case "$arg" in
else --with-desktop-audio) DESKTOP_AUDIO="true" ;;
wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" --with-microphone-audio) MICROPHONE_AUDIO="true" ;;
fi --with-webcam) WEBCAM="true" ;;
--stop-recording) STOP_RECORDING="true"
esac
done
cleanup_webcam() {
pkill -f "WebcamOverlay" 2>/dev/null
} }
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then start_webcam_overlay() {
pkill -x wl-screenrec cleanup_webcam
pkill -x wf-recorder
# Get monitor scale
local scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
# Target width (base 360px, scaled to monitor)
local target_width=$(awk "BEGIN {printf \"%.0f\", 360 * $scale}")
# Try preferred 16:9 resolutions in order, use first available
local preferred_resolutions=("640x360" "1280x720" "1920x1080")
local video_size_arg=""
local available_formats=$(v4l2-ctl --list-formats-ext -d /dev/video0 2>/dev/null)
for resolution in "${preferred_resolutions[@]}"; do
if echo "$available_formats" | grep -q "$resolution"; then
video_size_arg="-video_size $resolution"
break
fi
done
ffplay -f v4l2 $video_size_arg -framerate 30 /dev/video0 \
-vf "scale=${target_width}:-1" \
-window_title "WebcamOverlay" \
-noborder \
-fflags nobuffer -flags low_delay \
-probesize 32 -analyzeduration 0 \
-loglevel quiet &
sleep 1
}
start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
local audio_devices=""
local audio_args=""
[[ "$DESKTOP_AUDIO" == "true" ]] && audio_devices+="default_output"
if [[ "$MICROPHONE_AUDIO" == "true" ]]; then
# Merge audio tracks into one - separate tracks only play one at a time in most players
[[ -n "$audio_devices" ]] && audio_devices+="|"
audio_devices+="default_input"
fi
[[ -n "$audio_devices" ]] && audio_args+="-a $audio_devices"
gpu-screen-recorder -w portal -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac &
toggle_screenrecording_indicator
}
stop_screenrecording() {
pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly
# Wait a maximum of 5 seconds to finish before hard killing
local count=0
while pgrep -f "^gpu-screen-recorder" >/dev/null && [ $count -lt 50 ]; do
sleep 0.1
count=$((count + 1))
done
if pgrep -f "^gpu-screen-recorder" >/dev/null; then
pkill -9 -f "^gpu-screen-recorder"
cleanup_webcam
notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000
else
cleanup_webcam
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
elif [[ "$1" == "output" ]]; then fi
screenrecording toggle_screenrecording_indicator
}
toggle_screenrecording_indicator() {
pkill -RTMIN+8 waybar
}
screenrecording_active() {
pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
}
if screenrecording_active; then
if pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "^gpu-screen-recorder" >/dev/null; then
cleanup_webcam
else
stop_screenrecording
fi
elif [[ "$STOP_RECORDING" == "false" ]]; then
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
start_screenrecording || cleanup_webcam
else else
region=$(slurp) || exit 1 exit 1
screenrecording -g "$region"
fi fi

View File

@@ -1,7 +0,0 @@
#!/bin/bash
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording stopped" -t 2000
fi

View File

@@ -1,16 +1,36 @@
#!/bin/bash #!/bin/bash
while true; do # Run the Omarchy screensaver using random effects from TTE.
effect=$(tte 2>&1 | grep -oP '{\K[^}]+' | tr ',' ' ' | tr ' ' '\n' | sed -n '/^beams$/,$p' | sort -u | shuf -n1)
tte -i ~/.config/omarchy/branding/screensaver.txt \
--frame-rate 240 --canvas-width 0 --canvas-height $(($(tput lines) - 2)) --anchor-canvas c --anchor-text c \
"$effect" &
while pgrep -x tte >/dev/null; do screensaver_in_focus() {
if read -n 1 -t 0.01; then hyprctl activewindow -j | jq -e '.class == "org.omarchy.screensaver"' >/dev/null 2>&1
}
exit_screensaver() {
hyprctl keyword cursor:invisible false &>/dev/null || true
pkill -x tte 2>/dev/null pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null pkill -f org.omarchy.screensaver 2>/dev/null
exit 0 exit 0
}
# Exit the screensaver on signals and input from keyboard and mouse
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
printf '\033]11;rgb:00/00/00\007' # Set background color to black
hyprctl keyword cursor:invisible true &>/dev/null
tty=$(tty 2>/dev/null)
while true; do
tte -i ~/.config/omarchy/branding/screensaver.txt \
--frame-rate 120 --canvas-width 0 --canvas-height 0 --reuse-canvas --anchor-canvas c --anchor-text c\
--random-effect --exclude-effects dev_worm \
--no-eol --no-restore-cursor &
while pgrep -t "${tty#/dev/}" -x tte >/dev/null; do
if read -n1 -t 1 || ! screensaver_in_focus; then
exit_screensaver
fi fi
done done
done done

View File

@@ -1,5 +1,8 @@
#!/bin/bash #!/bin/bash
# Take a screenshot of the whole screen, a specific window, or a user-drawn region.
# Saves to ~/Pictures by default, but that can be changed via OMARCHY_SCREENSHOT_DIR or XDG_PICTURES_DIR ENVs.
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}" OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
@@ -8,10 +11,76 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1 exit 1
fi fi
pkill slurp || hyprshot -m ${1:-region} --raw | pkill slurp && exit 0
MODE="${1:-smart}"
PROCESSING="${2:-slurp}"
get_rectangles() {
local active_workspace=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .activeWorkspace.id')
hyprctl monitors -j | jq -r --arg ws "$active_workspace" '.[] | select(.activeWorkspace.id == ($ws | tonumber)) | "\(.x),\(.y) \((.width / .scale) | floor)x\((.height / .scale) | floor)"'
hyprctl clients -j | jq -r --arg ws "$active_workspace" '.[] | select(.workspace.id == ($ws | tonumber)) | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
}
# Select based on mode
case "$MODE" in
region)
wayfreeze & PID=$!
sleep .1
SELECTION=$(slurp 2>/dev/null)
kill $PID 2>/dev/null
;;
windows)
wayfreeze & PID=$!
sleep .1
SELECTION=$(get_rectangles | slurp -r 2>/dev/null)
kill $PID 2>/dev/null
;;
fullscreen)
SELECTION=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.x),\(.y) \((.width / .scale) | floor)x\((.height / .scale) | floor)"')
;;
smart|*)
RECTS=$(get_rectangles)
wayfreeze & PID=$!
sleep .1
SELECTION=$(echo "$RECTS" | slurp 2>/dev/null)
kill $PID 2>/dev/null
# If the selction area is L * W < 20, we'll assume you were trying to select whichever
# window or output it was inside of to prevent accidental 2px snapshots
if [[ "$SELECTION" =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+)$ ]]; then
if (( ${BASH_REMATCH[3]} * ${BASH_REMATCH[4]} < 20 )); then
click_x="${BASH_REMATCH[1]}"
click_y="${BASH_REMATCH[2]}"
while IFS= read -r rect; do
if [[ "$rect" =~ ^([0-9]+),([0-9]+)[[:space:]]([0-9]+)x([0-9]+) ]]; then
rect_x="${BASH_REMATCH[1]}"
rect_y="${BASH_REMATCH[2]}"
rect_width="${BASH_REMATCH[3]}"
rect_height="${BASH_REMATCH[4]}"
if (( click_x >= rect_x && click_x < rect_x+rect_width && click_y >= rect_y && click_y < rect_y+rect_height )); then
SELECTION="${rect_x},${rect_y} ${rect_width}x${rect_height}"
break
fi
fi
done <<< "$RECTS"
fi
fi
;;
esac
[ -z "$SELECTION" ] && exit 0
if [[ $PROCESSING == "slurp" ]]; then
grim -g "$SELECTION" - |
satty --filename - \ satty --filename - \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \ --output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \ --early-exit \
--actions-on-enter save-to-clipboard \ --actions-on-enter save-to-clipboard \
--save-after-copy \ --save-after-copy \
--copy-command 'wl-copy' --copy-command 'wl-copy'
else
grim -g "$SELECTION" - | wl-copy
fi

46
bin/omarchy-cmd-share Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
# Share clipboard, file, or folder using LocalSend. Bound to Super + Ctrl + S by default.
if (($# == 0)); then
echo "Usage: omarchy-cmd-share [clipboard|file|folder]"
exit 1
fi
MODE="$1"
shift
if [[ $MODE == "clipboard" ]]; then
TEMP_FILE=$(mktemp --suffix=.txt)
wl-paste >"$TEMP_FILE"
FILES="$TEMP_FILE"
else
if (($# > 0)); then
FILES="$*"
else
if [[ $MODE == "folder" ]]; then
# Pick a single folder from home directory
FILES=$(find "$HOME" -type d 2>/dev/null | fzf)
else
# Pick one or more files from home directory
FILES=$(find "$HOME" -type f 2>/dev/null | fzf --multi)
fi
[ -z "$FILES" ] && exit 0
fi
fi
# Run LocalSend in its own systemd service (detached from terminal)
# Convert newline-separated files to space-separated arguments
if [[ $MODE != "clipboard" ]] && echo "$FILES" | grep -q $'\n'; then
# Multiple files selected - convert newlines to array
readarray -t FILE_ARRAY <<<"$FILES"
systemd-run --user --quiet --collect localsend --headless send "${FILE_ARRAY[@]}"
else
# Single file or clipboard mode
systemd-run --user --quiet --collect localsend --headless send "$FILES"
fi
# Note: Temporary file will remain until system cleanup for clipboard mode
# This ensures the file content is available for the LocalSend GUI
exit 0

13
bin/omarchy-cmd-shutdown Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
# Shutdown command that first closes all application windows (thus giving them a chance to save state).
# This is particularly helpful for applications like Chromium that otherwise won't shutdown cleanly.
omarchy-state clear re*-required
# Schedule the shutdown to happen after closing windows (detached from terminal)
nohup bash -c "sleep 2 && systemctl poweroff --no-wall" >/dev/null 2>&1 &
# Now close all windows
omarchy-hyprland-window-close-all
sleep 1 # Allow apps like Chrome to shutdown correctly

View File

@@ -1,11 +1,22 @@
#!/bin/bash #!/bin/bash
# Returns the current working directory of the active terminal window,
# so a new terminal window can be started in the same directory.
# Go from current active terminal to its child shell process and run cwd there # Go from current active terminal to its child shell process and run cwd there
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}') terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
shell_pid=$(pgrep -P "$terminal_pid" | head -n1) shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
if [[ -n $shell_pid ]]; then if [[ -n $shell_pid ]]; then
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null)
shell=$(readlink -f "/proc/$shell_pid/exe" 2>/dev/null)
# Check if $shell is a valid shell and $cwd is a directory.
if grep -qs "$shell" /etc/shells && [[ -d $cwd ]]; then
echo "$cwd"
else
echo "$HOME"
fi
else else
echo "$HOME" echo "$HOME"
fi fi

View File

@@ -1,7 +0,0 @@
#!/bin/bash
sudo systemctl restart systemd-timesyncd
sudo tzupdate
new_timezone=$(timedatectl show -p Timezone --value)
omarchy-restart-waybar
notify-send "Time synced and timezone set to $new_timezone"

95
bin/omarchy-debug Executable file
View File

@@ -0,0 +1,95 @@
#!/bin/bash
# Return exhaustive debugging information about the system to help diagnose problems.
NO_SUDO=false
PRINT_ONLY=false
while [[ $# -gt 0 ]]; do
case "$1" in
--no-sudo)
NO_SUDO=true
shift
;;
--print)
PRINT_ONLY=true
shift
;;
*)
echo "Unknown option: $1"
echo "Usage: omarchy-debug [--no-sudo] [--print]"
exit 1
;;
esac
done
LOG_FILE="/tmp/omarchy-debug.log"
if [ "$NO_SUDO" = true ]; then
DMESG_OUTPUT="(skipped - --no-sudo flag used)"
else
DMESG_OUTPUT="$(sudo dmesg)"
fi
cat > "$LOG_FILE" <<EOF
Date: $(date)
Hostname: $(hostname)
Omarchy Branch: $(git -C "$OMARCHY_PATH" branch --show-current 2>/dev/null || echo "unknown")
=========================================
SYSTEM INFORMATION
=========================================
$(inxi -Farz)
=========================================
DMESG
=========================================
$DMESG_OUTPUT
=========================================
JOURNALCTL (CURRENT BOOT, ERRORS ONLY)
=========================================
$(journalctl -b -p 4..1)
=========================================
INSTALLED PACKAGES
=========================================
$({ expac -S '%n %v (%r)' $(pacman -Qqe) 2>/dev/null; comm -13 <(pacman -Sql | sort) <(pacman -Qqe | sort) | xargs -r expac -Q '%n %v (AUR)'; } | sort)
EOF
if [ "$PRINT_ONLY" = true ]; then
cat "$LOG_FILE"
exit 0
fi
OPTIONS=("View log" "Save in current directory")
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
OPTIONS=("Upload log" "${OPTIONS[@]}")
fi
ACTION=$(gum choose "${OPTIONS[@]}")
case "$ACTION" in
"Upload log")
echo "Uploading debug log to 0x0.st..."
URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st)
if [ $? -eq 0 ] && [ -n "$URL" ]; then
echo "✓ Log uploaded successfully!"
echo "Share this URL:"
echo ""
echo " $URL"
echo ""
echo "This link will expire in 24 hours."
else
echo "Error: Failed to upload log file"
exit 1
fi
;;
"View log")
less "$LOG_FILE"
;;
"Save in current directory")
cp "$LOG_FILE" "./omarchy-debug.log"
echo "✓ Log saved to $(pwd)/omarchy-debug.log"
;;
esac

View File

@@ -1,6 +1,14 @@
#!/bin/bash #!/bin/bash
# Creates a new Omarchy migration named after the unix timestamp of the last commit.
# Only intended for Omarchy developers.
cd ~/.local/share/omarchy cd ~/.local/share/omarchy
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh" migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
touch $migration_file touch $migration_file
nvim $migration_file
if [[ "$1" != "--no-edit" ]]; then
nvim $migration_file
fi
echo $migration_file

29
bin/omarchy-drive-info Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Returns drive information about a given volumne, like /dev/nvme0, which is used by omarchy-drive-select.
if (($# == 0)); then
echo "Usage: omarchy-drive-info [/dev/drive]"
exit 1
else
drive="$1"
fi
# Find the root drive in case we are looking at partitions
root_drive=$(lsblk -no PKNAME "$drive" 2>/dev/null | tail -n1)
if [[ -n "$root_drive" ]]; then
root_drive="/dev/$root_drive"
else
root_drive="$drive"
fi
# Get basic disk information
size=$(lsblk -dno SIZE "$drive" 2>/dev/null)
model=$(lsblk -dno MODEL "$root_drive" 2>/dev/null)
# Format display string
display="$drive"
[[ -n "$size" ]] && display="$display ($size)"
[[ -n "$model" ]] && display="$display - $model"
echo "$display"

18
bin/omarchy-drive-select Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Select a drive from a list with info that includes space and brand. Used by omarchy-drive-set-password.
if (($# == 0)); then
drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)')
else
drives="$@"
fi
drives_with_info=""
while IFS= read -r drive; do
[[ -n "$drive" ]] || continue
drives_with_info+="$(omarchy-drive-info "$drive")"$'\n'
done <<<"$drives"
selected_drive="$(printf "%s" "$drives_with_info" | gum choose --header "Select drive")" || exit 1
printf "%s\n" "$selected_drive" | awk '{print $1}'

23
bin/omarchy-drive-set-password Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/bash
# Set a new encryption password for a drive selected.
encrypted_drives=$(blkid -t TYPE=crypto_LUKS -o device)
if [[ -n $encrypted_drives ]]; then
if [[ $(wc -l <<<"$encrypted_drives") -eq 1 ]]; then
drive_to_change="$encrypted_drives"
else
drive_to_change="$(omarchy-drive-select "$encrypted_drives")"
fi
if [[ -n $drive_to_change ]]; then
echo "Changing full-disk encryption password for $drive_to_change"
sudo cryptsetup luksChangeKey --pbkdf argon2id --iter-time 2000 "$drive_to_change"
else
echo "No drive selected."
fi
else
echo "No encrypted drives available."
exit 1
fi

View File

@@ -1,3 +1,6 @@
#!/bin/bash #!/bin/bash
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1 # Returns the name of the current monospace font being used by extracting it from the Waybar stylesheet.
# This can be changed using omarchy-font-set.
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1

View File

@@ -1,3 +1,5 @@
#!/bin/bash #!/bin/bash
# Returns a list of all the monospace fonts available on the system that can be set using omarchy-font-set.
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omarchy' | sort -u fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omarchy' | sort -u

View File

@@ -1,10 +1,27 @@
#!/bin/bash #!/bin/bash
# Set the system-wide monospace font that should be used by the terminal, hyprlock, waybar, swayosd, etc.
# The font name must be one of the ones returned by omarchy-font-list.
font_name="$1" font_name="$1"
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then if [[ -n "$font_name" ]]; then
if fc-list | grep -iq "$font_name"; then if fc-list | grep -iq "$font_name"; then
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
fi
if [[ -f ~/.config/kitty/kitty.conf ]]; then
sed -i "s/^font_family .*/font_family $font_name/g" ~/.config/kitty/kitty.conf
pkill -USR1 kitty
fi
if [[ -f ~/.config/ghostty/config ]]; then
sed -i "s/font-family = \".*\"/font-family = \"$font_name\"/g" ~/.config/ghostty/config
pkill -SIGUSR2 ghostty
fi
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
xmlstarlet ed -L \ xmlstarlet ed -L \
@@ -14,7 +31,12 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
omarchy-restart-waybar omarchy-restart-waybar
omarchy-restart-swayosd omarchy-restart-swayosd
omarchy-restart-walker
if pgrep -x ghostty; then
notify-send " You must restart Ghostty to see font change"
fi
omarchy-hook font-set "$font_name"
else else
echo "Font '$font_name' not found." echo "Font '$font_name' not found."
exit 1 exit 1

View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Check if hibernation is supported
if [[ ! -f /sys/power/image_size ]]; then
exit 1
fi
# Sum all swap sizes (excluding zram)
SWAPSIZE_KB=$(awk '!/Filename|zram/ {sum += $3} END {print sum+0}' /proc/swaps)
SWAPSIZE=$(( 1024 * ${SWAPSIZE_KB:-0} ))
HIBERNATION_IMAGE_SIZE=$(cat /sys/power/image_size)
if [[ "$SWAPSIZE" -gt "$HIBERNATION_IMAGE_SIZE" ]] && [[ -f /etc/mkinitcpio.conf.d/omarchy_resume.conf ]]; then
exit 0
else
exit 1
fi

59
bin/omarchy-hibernation-remove Executable file
View File

@@ -0,0 +1,59 @@
#!/bin/bash
# Removes hibernation setup: disables swap, removes swapfile, removes fstab entry,
# removes resume hook, and removes suspend-then-hibernate configuration.
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
# Check if hibernation is configured
if [ ! -f "$MKINITCPIO_CONF" ] || ! grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
echo "Hibernation is not set up"
exit 0
fi
if ! gum confirm "Remove hibernation setup?"; then
exit 0
fi
SWAP_SUBVOLUME="/swap"
SWAP_FILE="$SWAP_SUBVOLUME/swapfile"
# Disable swap if active
if swapon --show | grep -q "$SWAP_FILE"; then
echo "Disabling swap on $SWAP_FILE"
sudo swapoff "$SWAP_FILE"
fi
# Remove swapfile
if [ -f "$SWAP_FILE" ]; then
echo "Removing swapfile"
sudo rm "$SWAP_FILE"
fi
# Remove swap subvolume
if sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
echo "Removing Btrfs subvolume $SWAP_SUBVOLUME"
sudo btrfs subvolume delete "$SWAP_SUBVOLUME"
fi
# Remove fstab entry
if grep -Fq "$SWAP_FILE" /etc/fstab; then
echo "Removing swapfile from /etc/fstab"
sudo cp -a /etc/fstab "/etc/fstab.$(date +%Y%m%d%H%M%S).back"
sudo sed -i "\|$SWAP_FILE|d" /etc/fstab
sudo sed -i '/^# Btrfs swapfile for system hibernation$/d' /etc/fstab
fi
# Remove suspend-then-hibernate configuration
echo "Removing suspend-then-hibernate configuration"
sudo rm -f /etc/systemd/logind.conf.d/lid.conf
sudo rm -f /etc/systemd/sleep.conf.d/hibernate.conf
# Remove mkinitcpio resume hook
echo "Removing resume hook"
sudo rm "$MKINITCPIO_CONF"
echo "Regenerating initramfs..."
sudo limine-mkinitcpio
echo "Hibernation removed"

70
bin/omarchy-hibernation-setup Executable file
View File

@@ -0,0 +1,70 @@
#!/bin/bash
# Creates a swap file in the btrfs subvolume, adds the swap file to /etc/fstab,
# adds a resume hook to mkinitcpio, and configures suspend-then-hibernate.
if [[ ! -f /sys/power/image_size ]]; then
echo -e "\033[31mError: Hibernation is not supported on your system\033[0m" >&2
exit 1
fi
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
# Check if hibernation is already configured
if [ -f "$MKINITCPIO_CONF" ] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
echo "Hibernation is already set up"
exit 0
fi
MEM_TOTAL_HUMAN=$(free --human | awk '/Mem/ {print $2}')
if ! gum confirm "Use $MEM_TOTAL_HUMAN on boot drive to make hibernation available?"; then
exit 0
fi
SWAP_SUBVOLUME="/swap"
SWAP_FILE="$SWAP_SUBVOLUME/swapfile"
# Create btrfs subvolume for swap
if ! sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
echo "Creating Btrfs subvolume"
sudo btrfs subvolume create "$SWAP_SUBVOLUME"
sudo chattr +C "$SWAP_SUBVOLUME"
fi
# Create swapfile
if ! sudo swaplabel "$SWAP_FILE" &>/dev/null; then
echo "Creating swapfile in Btrfs subvolume"
MEM_TOTAL_KB="$(awk '/MemTotal/ {print $2}' /proc/meminfo)k"
sudo btrfs filesystem mkswapfile -s "$MEM_TOTAL_KB" "$SWAP_FILE"
fi
# Add swapfile to fstab
if ! grep -Fq "$SWAP_FILE" /etc/fstab; then
echo "Adding swapfile to /etc/fstab"
sudo cp -a /etc/fstab "/etc/fstab.$(date +%Y%m%d%H%M%S).back"
printf "\n# Btrfs swapfile for system hibernation\n%s none swap defaults,pri=0 0 0\n" "$SWAP_FILE" | sudo tee -a /etc/fstab >/dev/null
fi
# Enable swap
if ! swapon --show | grep -q "$SWAP_FILE"; then
echo "Enabling swap on $SWAP_FILE"
sudo swapon -p 0 "$SWAP_FILE"
fi
# Add resume hook to mkinitcpio
sudo mkdir -p /etc/mkinitcpio.conf.d
echo "Adding resume hook to $MKINITCPIO_CONF"
echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null
# Configure suspend-then-hibernate
echo "Configuring suspend-then-hibernate"
sudo mkdir -p /etc/systemd/logind.conf.d /etc/systemd/sleep.conf.d
sudo cp "$OMARCHY_PATH/default/systemd/lid.conf" /etc/systemd/logind.conf.d/
sudo cp "$OMARCHY_PATH/default/systemd/hibernate.conf" /etc/systemd/sleep.conf.d/
# Regenerate initramfs
echo "Regenerating initramfs..."
sudo limine-mkinitcpio
echo "Hibernation enabled"

18
bin/omarchy-hook Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
# Run a named hook, like post-update (available in ~/.config/omarchy/hooks/post-update).
set -e
if [[ $# -lt 1 ]]; then
echo "Usage: omarchy-hook [name] [args...]"
exit 1
fi
HOOK=$1
HOOK_PATH="$HOME/.config/omarchy/hooks/$1"
shift
if [[ -f $HOOK_PATH ]]; then
bash "$HOOK_PATH" "$@"
fi

46
bin/omarchy-hyprland-window-pop Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
# Toggle to pop-out a tile to stay fixed on a display basis.
# Usage:
# omarchy-hyprland-window-pop [width height [x y]]
#
# Arguments:
# width Optional. Width of the floating window. Default: 1300
# height Optional. Height of the floating window. Default: 900
# x Optional. X position of the window. Must provide both X and Y to take effect.
# y Optional. Y position of the window. Must provide both X and Y to take effect.
#
# Behavior:
# - If the window is already pinned, it will be unpinned and removed from the pop layer.
# - If the window is not pinned, it will be floated, resized, moved/centered, pinned, brought to top, and popped.
width=${1:-1300}
height=${2:-900}
x=${3:-}
y=${4:-}
active=$(hyprctl activewindow -j)
pinned=$(echo "$active" | jq ".pinned")
addr=$(echo "$active" | jq -r ".address")
if [[ $pinned == "true" ]]; then
hyprctl -q --batch \
"dispatch pin address:$addr;" \
"dispatch togglefloating address:$addr;" \
"dispatch tagwindow -pop address:$addr;"
elif [[ -n $addr ]]; then
hyprctl dispatch togglefloating address:$addr
hyprctl dispatch resizeactive exact $width $height address:$addr
if [[ -n $x && -n $y ]]; then
hyprctl dispatch moveactive $x $y address:$addr
else
hyprctl dispatch centerwindow address:$addr
fi
hyprctl -q --batch \
"dispatch pin address:$addr;" \
"dispatch alterzorder top address:$addr;" \
"dispatch tagwindow +pop address:$addr;"
fi

View File

@@ -0,0 +1,12 @@
#!/bin/bash
# Toggles the window gaps on the active workspace between no gaps and the default 10/5/2.
workspace_id=$(hyprctl activeworkspace -j | jq -r .id)
gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0")
if [[ $gaps == "0" ]]; then
hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, bordersize:2"
else \
hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, bordersize:0"
fi

View File

@@ -0,0 +1,16 @@
#!/bin/bash
# Allow Chromium to sign in to Google accounts by adding the correct
# oauth client id and secret to ~/.config/chromium-flags.conf.
if [[ -f ~/.config/chromium-flags.conf ]]; then
CONF=~/.config/chromium-flags.conf
grep -qxF -- "--oauth2-client-id=77185425430.apps.googleusercontent.com" "$CONF" ||
echo "--oauth2-client-id=77185425430.apps.googleusercontent.com" >>"$CONF"
grep -qxF -- "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" "$CONF" ||
echo "--oauth2-client-secret=OTJgUOQcT7lO7GsGZq2G4IlT" >>"$CONF"
echo "Now you can login to your Google Account in Chromium."
fi

View File

@@ -1,12 +1,14 @@
#!/bin/bash #!/bin/bash
# Install one of the supported development environments. Usually called via Install > Development > * in the Omarchy Menu.
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Usage: omarchy-install-dev-env <ruby|node|bun|go|laravel|symfony|php|python|elixir|phoenix|rust|java|ocaml|dotnet>" >&2 echo "Usage: omarchy-install-dev-env <ruby|node|bun|go|laravel|symfony|php|python|elixir|phoenix|rust|java|ocaml|dotnet|clojure>" >&2
exit 1 exit 1
fi fi
install_php() { install_php() {
sudo pacman -Sy php composer php-sqlite --noconfirm sudo pacman -S php composer php-sqlite xdebug --noconfirm
# Install Path for Composer # Install Path for Composer
if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then
@@ -28,22 +30,34 @@ install_php() {
"pdo_mysql" "pdo_mysql"
) )
# Enable Xdebug
sudo sed -i \
-e 's/^;zend_extension=xdebug.so/zend_extension=xdebug.so/' \
-e 's/^;xdebug.mode=debug/xdebug.mode=debug/' \
/etc/php/conf.d/xdebug.ini
for ext in "${extensions_to_enable[@]}"; do for ext in "${extensions_to_enable[@]}"; do
sudo sed -i "s/^;extension=${ext}/extension=${ext}/" "$php_ini_path" sudo sed -i "s/^;extension=${ext}/extension=${ext}/" "$php_ini_path"
done done
} }
install_node() {
echo -e "Installing Node.js...\n"
mise use --global node
}
case "$1" in case "$1" in
ruby) ruby)
echo -e "Installing Ruby on Rails...\n" echo -e "Installing Ruby on Rails...\n"
omarchy-pkg-add libyaml
mise use --global ruby@latest mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby mise settings add idiomatic_version_file_enable_tools ruby
echo "gem: --no-document" > ~/.gemrc
mise x ruby -- gem install rails --no-document mise x ruby -- gem install rails --no-document
echo -e "\nYou can now run: rails new myproject" echo -e "\nYou can now run: rails new myproject"
;; ;;
node) node)
echo -e "Installing Node.js...\n" install_node
mise use --global node@lts
;; ;;
bun) bun)
echo -e "Installing Bun...\n" echo -e "Installing Bun...\n"
@@ -64,13 +78,14 @@ php)
laravel) laravel)
echo -e "Installing PHP and Laravel...\n" echo -e "Installing PHP and Laravel...\n"
install_php install_php
install_node
composer global require laravel/installer composer global require laravel/installer
echo -e "\nYou can now run: laravel new myproject" echo -e "\nYou can now run: laravel new myproject"
;; ;;
symfony) symfony)
echo -e "Installing PHP and Symfony...\n" echo -e "Installing PHP and Symfony...\n"
install_php install_php
yay -S symfony-cli --noconfirm omarchy-pkg-add symfony-cli
echo -e "\nYou can now run: symfony new --webapp myproject" echo -e "\nYou can now run: symfony new --webapp myproject"
;; ;;
python) python)
@@ -108,6 +123,7 @@ java)
zig) zig)
echo -e "Installing Zig...\n" echo -e "Installing Zig...\n"
mise use --global zig@latest mise use --global zig@latest
mise use -g zls@latest
;; ;;
ocaml) ocaml)
echo -e "Installing OCaml...\n" echo -e "Installing OCaml...\n"
@@ -120,4 +136,9 @@ dotnet)
echo -e "Installing .NET...\n" echo -e "Installing .NET...\n"
mise use --global dotnet@latest mise use --global dotnet@latest
;; ;;
clojure)
echo -e "Installing Clojure...\n"
omarchy-pkg-add rlwrap
mise use --global clojure@latest
;;
esac esac

View File

@@ -1,16 +1,27 @@
#!/bin/bash #!/bin/bash
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB") # Install one of the supported databases in a Docker container with the suitable development options.
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu # Usually called via Install > Development > Docker DB from the Omarchy Menu.
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB" "MSSQL")
if [[ "$#" -eq 0 ]]; then
choices=$(printf "%s\n" "${options[@]}" | gum choose --header "Select database (return to install, esc to cancel)") || main_menu
else
choices="$@"
fi
if [[ -n "$choices" ]]; then if [[ -n "$choices" ]]; then
for db in $choices; do for db in $choices; do
case $db in case $db in
MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;; MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;;
PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 ;; PostgreSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres18 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:18 ;;
MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;; MariaDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mariadb11 -e MARIADB_ROOT_PASSWORD= -e MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=true mariadb:11.8 ;;
Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;; Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;;
MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;; MongoDB) sudo docker run -d --restart unless-stopped -p "127.0.0.1:27017:27017" --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo:noble ;;
MSSQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:1433:1433" --name mssql -e MSSQL_PID=Developer -e ACCEPT_EULA=Y -e "MSSQL_SA_PASSWORD=@dmin123" mcr.microsoft.com/mssql/server:2022-CU12-ubuntu-22.04 ;;
esac esac
done done
else
echo "No databases selected for installation."
fi fi

View File

@@ -1,10 +1,10 @@
#!/bin/bash #!/bin/bash
# FIXME: Should not use AUR dependencies when we can avoid it # Install and start the Dropbox service. Must then be authenticated via the web.
echo "Installing all dependencies [from AUR]..."
yay -S --noconfirm --needed \ echo "Installing all dependencies..."
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
echo "Starting Dropbox..." echo "Starting Dropbox..."
uwsm app -- dropbox-cli start &>/dev/null & uwsm-app -- dropbox-cli start &>/dev/null &
echo "See Dropbox icon behind hover tray in top right and right-click for setup." echo "See Dropbox icon behind hover tray in top right and right-click for setup."

View File

@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
echo "Adding multilib repository for 32-bit compatibility" # Install and launch Steam after first letting the user pick the correct grahics card drivers.
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy set -e
echo "Now pick dependencies matching your graphics card" echo "Now pick dependencies matching your graphics card"
sudo pacman -S steam sudo pacman -S steam

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
# Install the Tailscale mesh VPN service, the tsui TUI management app, and a web app for the Tailscale Admin Console.
curl -fsSL https://tailscale.com/install.sh | sh curl -fsSL https://tailscale.com/install.sh | sh
curl -fsSL https://neuralink.com/tsui/install.sh | bash curl -fsSL https://neuralink.com/tsui/install.sh | bash

61
bin/omarchy-install-terminal Executable file
View File

@@ -0,0 +1,61 @@
#!/bin/bash
# Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
if (($# == 0)); then
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
exit 1
fi
package="$1"
# Map package name to desktop entry ID
case "$package" in
alacritty) desktop_id="Alacritty.desktop" ;;
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
kitty) desktop_id="kitty.desktop" ;;
*)
echo "Unknown terminal: $package"
exit 1
;;
esac
# Install package
if omarchy-pkg-add $package; then
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
if [[ $package == "alacritty" ]]; then
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/Alacritty.desktop << EOF
[Desktop Entry]
Type=Application
TryExec=alacritty
Exec=alacritty
Icon=Alacritty
Terminal=false
Categories=System;TerminalEmulator;
Name=Alacritty
GenericName=Terminal
Comment=A fast, cross-platform, OpenGL terminal emulator
StartupNotify=true
StartupWMClass=Alacritty
Actions=New;
X-TerminalArgExec=-e
X-TerminalArgAppId=--class=
X-TerminalArgTitle=--title=
X-TerminalArgDir=--working-directory=
[Desktop Action New]
Name=New Terminal
Exec=alacritty
EOF
fi
# Update xdg-terminals.list to prioritize the proper terminal
cat > ~/.config/xdg-terminals.list << EOF
# Terminal emulator preference order for xdg-terminal-exec
# The first found and valid terminal will be used
$desktop_id
EOF
else
echo "Failed to install $package"
fi

29
bin/omarchy-install-vscode Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Install VSCode and configure it to use the gnome-libsecret password store, not to update automatically, and to use the current Omarchy theme.
echo "Installing VSCode..."
omarchy-pkg-add visual-studio-code-bin
mkdir -p ~/.vscode ~/.config/Code/User
cat > ~/.vscode/argv.json << 'EOF'
// This configuration file allows you to pass permanent command line arguments to VS Code.
// Only a subset of arguments is currently supported to reduce the likelihood of breaking
// the installation.
//
// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT
//
// NOTE: Changing this file requires a restart of VS Code.
{
"password-store":"gnome-libsecret"
}
EOF
# Ensure VSC's own auto-update feature is turned off
printf '{\n "update.mode": "none"\n}\n' > ~/.config/Code/User/settings.json
# Apply Omarchy theme to VSCode
omarchy-theme-set-vscode
setsid gtk-launch code

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# Install support for using Xbox controllers with Steam/RetroArch/etc.
set -e
# Install xpadneo to ensure controllers work out of the box
sudo pacman -S --noconfirm --needed linux-headers
yay -S --noconfirm xpadneo-dkms
# Prevent xpad/xpadneo driver conflict
echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null
echo hid_xpadneo | sudo tee /etc/modules-load.d/xpadneo.conf >/dev/null
# Give user access to game controllers
sudo usermod -a -G input $USER
# Modules need to be loaded
gum confirm "Install requires reboot. Ready?" && sudo reboot now

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

@@ -0,0 +1,5 @@
#!/bin/bash
# Launch the fastfetch TUI that gives information about the current system.
exec omarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'"

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

@@ -0,0 +1,5 @@
#!/bin/bash
# Launch the Omarchy audio controls TUI (provided by wiremix).
omarchy-launch-or-focus-tui wiremix

7
bin/omarchy-launch-bluetooth Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Launch the Omarchy bluetooth controls TUI (provided by bluetui).
# Also attempts to unblock bluetooth service if rfkill had blocked it.
rfkill unblock bluetooth
exec omarchy-launch-or-focus-tui bluetui

View File

@@ -1,3 +1,17 @@
#!/bin/bash #!/bin/bash
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@ # Launch the default browser as determined by xdg-settings.
# Automatically converts --private into the correct flag for the given browser.
default_browser=$(xdg-settings get default-web-browser)
browser_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$default_browser 2>/dev/null | head -1)
if [[ $browser_exec =~ (firefox|zen|librewolf|mullvad) ]]; then
private_flag="--private-window"
elif [[ $browser_exec =~ edge ]]; then
private_flag="--inprivate"
else
private_flag="--incognito"
fi
exec setsid uwsm-app -- "$browser_exec" "${@/--private/$private_flag}"

15
bin/omarchy-launch-editor Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
# Launch the default editor as determined by $EDITOR (set via ~/.config/uwsm/default) (or nvim if missing).
# Starts suitable editors in a terminal window and otherwise as a regular application.
omarchy-cmd-present "$EDITOR" || EDITOR=nvim
case "$EDITOR" in
nvim | vim | nano | micro | hx | helix | fresh)
exec omarchy-launch-tui "$EDITOR" "$@"
;;
*)
exec setsid uwsm-app -- "$EDITOR" "$@"
;;
esac

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Launch a floating terminal with the Omarchy logo presentation, then execute the command passed in, and finally end with the omarchy-show-done presentation.
# Used by actions such as Update System.
cmd="$*"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; if [ \$? -ne 130 ]; then omarchy-show-done; fi"

19
bin/omarchy-launch-or-focus Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
# Launch or focus on a given command identified by the passed in window-pattern.
# Use by some default bindings, like the one for Spotify, to ensure there is only one instance of the application open.
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]"
exit 1
fi
WINDOW_PATTERN="$1"
LAUNCH_COMMAND="${2:-"uwsm-app -- $WINDOW_PATTERN"}"
WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1)
if [[ -n $WINDOW_ADDRESS ]]; then
hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
else
eval exec setsid $LAUNCH_COMMAND
fi

View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Launch or focus on a given TUI identified by the passed in as the command.
# Use by commands like omarchy-launch-wifi to ensure there is only one wifi configuration screen open.
APP_ID="org.omarchy.$(basename "$1")"
LAUNCH_COMMAND="omarchy-launch-tui $@"
exec omarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND"

View File

@@ -0,0 +1,15 @@
#!/bin/bash
# Launch or focus on a given web app identified by the window-pattern.
# Use by some default bindings, like the one for WhatsApp, to ensure there is only one instance of the application open.
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]"
exit 1
fi
WINDOW_PATTERN="$1"
shift
LAUNCH_COMMAND="omarchy-launch-webapp $@"
exec omarchy-launch-or-focus "$WINDOW_PATTERN" "$LAUNCH_COMMAND"

View File

@@ -1,26 +1,54 @@
#!/bin/bash #!/bin/bash
# Launch the Omarchy screensaver in the default terminal on the system with the correct font configuration.
# Exit early if we don't have the tte show # Exit early if we don't have the tte show
if ! command -v tte &>/dev/null; then if ! command -v tte &>/dev/null; then
exit 1 exit 1
fi fi
# Exit early if screensave is already running # Exit early if screensave is already running
pgrep -f "alacritty --class Screensaver" && exit 0 pgrep -f org.omarchy.screensaver && exit 0
# Allow screensaver to be turned off but also force started # Allow screensaver to be turned off but also force started
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
exit 1 exit 1
fi fi
# Silently quit Walker on overlay
walker -q
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
terminal=$(xdg-terminal-exec --print-id)
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m hyprctl dispatch focusmonitor $m
case $terminal in
*Alacritty*)
hyprctl dispatch exec -- \ hyprctl dispatch exec -- \
alacritty --class Screensaver \ alacritty --class=org.omarchy.screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \ --config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver -e omarchy-cmd-screensaver
;;
*ghostty*)
hyprctl dispatch exec -- \
ghostty --class=org.omarchy.screensaver \
--config-file=~/.local/share/omarchy/default/ghostty/screensaver \
--font-size=18 \
-e omarchy-cmd-screensaver
;;
*kitty*)
hyprctl dispatch exec -- \
kitty --class=org.omarchy.screensaver \
--override font_size=18 \
--override window_padding_width=0 \
-e omarchy-cmd-screensaver
;;
*)
notify-send "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
;;
esac
done done
hyprctl dispatch focusmonitor $focused hyprctl dispatch focusmonitor $focused

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

@@ -0,0 +1,5 @@
#!/bin/bash
# Launch the TUI command passed in as an argument in the default terminal with an org.omarchy.COMMAND app id for styling.
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.$(basename $1) -e "$1" "${@:2}"

15
bin/omarchy-launch-walker Executable file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
# Launch the Walker application launcher while ensuring that it's data provider (called elephant) is runnig first.
# Ensure elephant is running before launching walker
if ! pgrep -x elephant > /dev/null; then
setsid uwsm-app -- elephant &
fi
# Ensure walker service is running
if ! pgrep -f "walker --gapplication-service" > /dev/null; then
setsid uwsm-app -- walker --gapplication-service &
fi
exec walker --width 644 --maxheight 300 --minheight 300 "$@"

View File

@@ -1,10 +1,12 @@
#!/bin/bash #!/bin/bash
# Launch the passed in URL as a web app in the default browser (or chromium if the default doesn't support --app).
browser=$(xdg-settings get default-web-browser) browser=$(xdg-settings get default-web-browser)
case $browser in case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;; google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
*) browser="chromium.desktop" ;; *) browser="chromium.desktop" ;;
esac esac
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}" exec setsid uwsm-app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$browser 2>/dev/null | head -1) --app="$1" "${@:2}"

7
bin/omarchy-launch-wifi Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
# Launch the Omarchy wifi controls (provided by the Impala TUI).
# Attempts to unblock the wifi service first in case it should be been blocked.
rfkill unblock wifi
omarchy-launch-or-focus-tui impala

View File

@@ -1,12 +1,17 @@
#!/bin/bash #!/bin/bash
# Locks the system using hyprlock, but not before ensuring 1password has also been locked, and the screensaver stopped.
# Lock the screen # Lock the screen
pidof hyprlock || hyprlock & pidof hyprlock || hyprlock &
# Set keyboard layout to default (first layout)
hyprctl switchxkblayout all 0 > /dev/null 2>&1
# Ensure 1password is locked # Ensure 1password is locked
if pgrep -x "1password" >/dev/null; then if pgrep -x "1password" >/dev/null; then
1password --lock & 1password --lock &
fi fi
# Avoid running screensaver when locked # Avoid running screensaver when locked
pkill -f "alacritty --class Screensaver" pkill -f org.omarchy.screensaver

View File

@@ -1,7 +1,24 @@
#!/bin/bash #!/bin/bash
# Launch the Omarchy Menu or takes a parameter to jump straight to a submenu.
export PATH="$HOME/.local/share/omarchy/bin:$PATH" export PATH="$HOME/.local/share/omarchy/bin:$PATH"
# Set to true when going directly to a submenu, so we can exit directly
BACK_TO_EXIT=false
back_to() {
local parent_menu="$1"
if [[ "$BACK_TO_EXIT" == "true" ]]; then
exit 0
elif [[ -n "$parent_menu" ]]; then
"$parent_menu"
else
show_main_menu
fi
}
menu() { menu() {
local prompt="$1" local prompt="$1"
local options="$2" local options="$2"
@@ -14,44 +31,48 @@ menu() {
local index local index
index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1) index=$(echo -e "$options" | grep -nxF "$preselect" | cut -d: -f1)
if [[ -n "$index" ]]; then if [[ -n "$index" ]]; then
args+=("-a" "$index") args+=("-c" "$index")
fi fi
fi fi
echo -e "$options" | walker --dmenu --theme dmenu_250 -p "$prompt…" "${args[@]}" echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null
} }
terminal() { terminal() {
alacritty --class Omarchy -e "$@" xdg-terminal-exec --app-id=org.omarchy.terminal "$@"
} }
present_terminal() { present_terminal() {
alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;" omarchy-launch-floating-terminal-with-presentation $1
} }
edit_in_nvim() { open_in_editor() {
notify-send "Editing config file" "$1" notify-send "Editing config file" "$1"
alacritty -e nvim "$1" omarchy-launch-editor "$1"
} }
install() { install() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2" present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2"
} }
install_and_launch() { install_and_launch() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm $2 && setsid gtk-launch $3" present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2 && setsid gtk-launch $3"
} }
install_font() { install_font() {
present_terminal "echo 'Installing $1...'; sudo pacman -Sy --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'" present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm --needed $2 && sleep 2 && omarchy-font-set '$3'"
}
install_terminal() {
present_terminal "omarchy-install-terminal $1"
} }
aur_install() { aur_install() {
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2" present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
} }
aur_install_and_launch() { aur_install_and_launch() {
present_terminal "echo 'Installing $1 from AUR...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3" present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2 && setsid gtk-launch $3"
} }
show_learn_menu() { show_learn_menu() {
@@ -66,58 +87,49 @@ show_learn_menu() {
esac esac
} }
show_style_menu() { show_trigger_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n󱄄 Screensaver\n About") in case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle") in
*Theme*) show_theme_menu ;; *Capture*) show_capture_menu ;;
*Font*) show_font_menu ;; *Share*) show_share_menu ;;
*Background*) omarchy-theme-bg-next ;; *Toggle*) show_toggle_menu ;;
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;;
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
omarchy-theme-set "$theme"
fi
}
show_font_menu() {
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
else
omarchy-font-set "$theme"
fi
}
show_capture_menu() { show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) show_screenshot_menu ;; *Screenshot*) show_screenshot_menu ;;
*Screenrecord*) show_screenrecord_menu ;; *Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;; *Color*) pkill hyprpicker || hyprpicker -a ;;
*) show_main_menu ;; *) show_trigger_menu ;;
esac esac
} }
show_screenshot_menu() { show_screenshot_menu() {
case $(menu "Screenshot" " Region\n Window\n Display") in case $(menu "Screenshot" " Snap with Editing\n Straight to Clipboard") in
*Region*) omarchy-cmd-screenshot ;; *Editing*) omarchy-cmd-screenshot smart ;;
*Window*) omarchy-cmd-screenshot window ;; *Clipboard*) omarchy-cmd-screenshot smart clipboard ;;
*Display*) omarchy-cmd-screenshot output ;;
*) show_capture_menu ;; *) show_capture_menu ;;
esac esac
} }
show_screenrecord_menu() { show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Display") in omarchy-cmd-screenrecord --stop-recording && exit 0
*Region*) omarchy-cmd-screenrecord ;;
*Display*) omarchy-cmd-screenrecord output ;; case $(menu "Screenrecord" " With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
*) show_capture_menu ;; *"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
*"With desktop + microphone audio + webcam") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam ;;
*) back_to show_capture_menu ;;
esac
}
show_share_menu() {
case $(menu "Share" " Clipboard\n File \n Folder") in
*Clipboard*) omarchy-cmd-share clipboard ;;
*File*) terminal bash -c "omarchy-cmd-share file" ;;
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
*) back_to show_trigger_menu ;;
esac esac
} }
@@ -127,34 +139,53 @@ show_toggle_menu() {
*Nightlight*) omarchy-toggle-nightlight ;; *Nightlight*) omarchy-toggle-nightlight ;;
*Idle*) omarchy-toggle-idle ;; *Idle*) omarchy-toggle-idle ;;
*Bar*) omarchy-toggle-waybar ;; *Bar*) omarchy-toggle-waybar ;;
*) show_trigger_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
*Font*) show_font_menu ;;
*Background*) omarchy-theme-bg-next ;;
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_theme_menu() {
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
}
show_font_menu() {
theme=$(menu "Font" "$(omarchy-font-list)" "--width 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
back_to show_style_menu
else
omarchy-font-set "$theme"
fi
}
show_setup_menu() { show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors" local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n System Sleep\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings" [ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input" [ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2" options="$options\n󰱔 DNS\n Security\n Config"
case $(menu "Setup" "$options") in case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;; *Audio*) omarchy-launch-audio ;;
*Wifi*) *Wifi*) omarchy-launch-wifi ;;
rfkill unblock wifi *Bluetooth*) omarchy-launch-bluetooth ;;
alacritty --class=Impala -e impala
;;
*Bluetooth*)
rfkill unblock bluetooth
blueberry
;;
*Power*) show_setup_power_menu ;; *Power*) show_setup_power_menu ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;; *System*) show_setup_system_menu ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;; *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;; *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
*DNS*) present_terminal omarchy-setup-dns ;; *DNS*) present_terminal omarchy-setup-dns ;;
*Security*) show_setup_security_menu ;;
*Config*) show_setup_config_menu ;; *Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
@@ -163,28 +194,60 @@ show_setup_power_menu() {
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)") profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
show_main_menu back_to show_setup_menu
else else
powerprofilesctl set "$profile" powerprofilesctl set "$profile"
fi fi
} }
show_setup_security_menu() {
case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_setup_menu ;;
esac
}
show_setup_config_menu() { show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in case $(menu "Setup" " Defaults\n Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;; *Defaults*) open_in_editor ~/.config/uwsm/default ;;
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;; *Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;; *Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;; *Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;; *Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;; *Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;; *Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;; *Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*) show_main_menu ;; *XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
*) show_setup_menu ;;
esac
}
show_setup_system_menu() {
local options=""
if [ -f ~/.local/state/omarchy/toggles/suspend-on ]; then
options="$options󰒲 Disable Suspend"
else
options="$options󰒲 Enable Suspend"
fi
if omarchy-hibernation-available; then
options="$options\n󰤁 Disable Hibernate"
else
options="$options\n󰤁 Enable Hibernate"
fi
case $(menu "System" "$options") in
*Suspend*) omarchy-toggle-suspend ;;
*"Enable Hibernate"*) present_terminal omarchy-hibernation-setup ;;
*"Disable Hibernate"*) present_terminal omarchy-hibernation-remove ;;
*) show_setup_menu ;;
esac esac
} }
show_install_menu() { show_install_menu() {
case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n Terminal\n󱚤 AI\n󰍲 Windows\n Gaming") in
*Package*) terminal omarchy-pkg-install ;; *Package*) terminal omarchy-pkg-install ;;
*AUR*) terminal omarchy-pkg-aur-install ;; *AUR*) terminal omarchy-pkg-aur-install ;;
*Web*) present_terminal omarchy-webapp-install ;; *Web*) present_terminal omarchy-webapp-install ;;
@@ -193,48 +256,72 @@ show_install_menu() {
*Style*) show_install_style_menu ;; *Style*) show_install_style_menu ;;
*Development*) show_install_development_menu ;; *Development*) show_install_development_menu ;;
*Editor*) show_install_editor_menu ;; *Editor*) show_install_editor_menu ;;
*Terminal*) show_install_terminal_menu ;;
*AI*) show_install_ai_menu ;; *AI*) show_install_ai_menu ;;
*Windows*) present_terminal "omarchy-windows-vm install" ;;
*Gaming*) show_install_gaming_menu ;; *Gaming*) show_install_gaming_menu ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_install_service_menu() { show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale") in case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden\n Chromium Account") in
*Dropbox*) present_terminal omarchy-install-dropbox ;; *Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;; *Tailscale*) present_terminal omarchy-install-tailscale ;;
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_install_editor_menu() { show_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor [AUR]\n Zed\n Sublime Text\n Helix") in case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;; *VSCode*) present_terminal omarchy-install-vscode ;;
*Cursor*) aur_install_and_launch "Cursor" "cursor-bin" "cursor" ;; *Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;; *Zed*) present_terminal "echo 'Installing Zed...'; sudo pacman -S zed && setsid gtk-launch dev.zed.Zed" ;;
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;; *Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Helix*) install "Helix" "helix" ;; *Helix*) install "Helix" "helix" ;;
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
*) show_install_menu ;;
esac
}
show_install_terminal_menu() {
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
*Alacritty*) install_terminal "alacritty" ;;
*Ghostty*) install_terminal "ghostty" ;;
*Kitty*) install_terminal "kitty" ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_install_ai_menu() { show_install_ai_menu() {
case $(menu "Install" "󱚤 Claude Code [AUR]\n󱚤 Gemini\n󱚤 LM Studio [AUR]\n󱚤 Ollama\n󱚤 Crush [AUR]\n󱚤 opencode [AUR]") in ollama_pkg=$(
*Claude*) aur_install "Claude Code" "claude-code" ;; (command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
(command -v rocminfo &>/dev/null && echo ollama-rocm) ||
echo ollama
)
case $(menu "Install" " Dictation\n󱚤 Claude Code\n󱚤 Copilot CLI\n󱚤 Cursor CLI\n󱚤 Gemini\n󱚤 OpenAI Codex\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush") in
*Dictation*) present_terminal omarchy-voxtype-install ;;
*Claude*) install "Claude Code" "claude-code" ;;
*Copilot*) install "Copilot CLI" "github-copilot-cli" ;;
*Cursor*) install "Cursor CLI" "cursor-cli" ;;
*Gemini*) install "Gemini" "gemini-cli" ;; *Gemini*) install "Gemini" "gemini-cli" ;;
*Studio*) aur_install "LM Studio" "lmstudio" ;; *OpenAI*) install "OpenAI Codex" "openai-codex" ;;
*Ollama*) install "Ollama" "ollama" ;; *Studio*) install "LM Studio" "lmstudio" ;;
*Crush*) aur_install "Crush" "crush-bin" ;; *Ollama*) install "Ollama" $ollama_pkg ;;
*opencode*) aur_install "opencode" "opencode-bin" ;; *Crush*) install "Crush" "crush-bin" ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_install_gaming_menu() { show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
*Steam*) present_terminal omarchy-install-steam ;; *Steam*) present_terminal omarchy-install-steam ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;; *RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;; *Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*Xbox*) present_terminal omarchy-install-xbox-controllers ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
@@ -242,24 +329,25 @@ show_install_gaming_menu() {
show_install_style_menu() { show_install_style_menu() {
case $(menu "Install" "󰸌 Theme\n Background\n Font") in case $(menu "Install" "󰸌 Theme\n Background\n Font") in
*Theme*) present_terminal omarchy-theme-install ;; *Theme*) present_terminal omarchy-theme-install ;;
*Background*) nautilus ~/.config/omarchy/current/theme/backgrounds ;; *Background*) omarchy-theme-bg-install ;;
*Font*) show_install_font_menu ;; *Font*) show_install_font_menu ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_install_font_menu() { show_install_font_menu() {
case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono" "-w 350") in case $(menu "Install" " Meslo LG Mono\n Fira Code\n Victor Code\n Bistream Vera Mono\n Iosevka" "--width 350") in
*Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;; *Meslo*) install_font "Meslo LG Mono" "ttf-meslo-nerd" "MesloLGL Nerd Font" ;;
*Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;; *Fira*) install_font "Fira Code" "ttf-firacode-nerd" "FiraCode Nerd Font" ;;
*Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;; *Victor*) install_font "Victor Code" "ttf-victor-mono-nerd" "VictorMono Nerd Font" ;;
*Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;; *Bistream*) install_font "Bistream Vera Code" "ttf-bitstream-vera-mono-nerd" "BitstromWera Nerd Font" ;;
*Iosevka*) install_font "Iosevka" "ttf-iosevka-nerd" "Iosevka Nerd Font Mono" ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
show_install_development_menu() { show_install_development_menu() {
case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml") in case $(menu "Install" "󰫏 Ruby on Rails\n Docker DB\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
*Rails*) present_terminal "omarchy-install-dev-env ruby" ;; *Rails*) present_terminal "omarchy-install-dev-env ruby" ;;
*Docker*) present_terminal omarchy-install-docker-dbs ;; *Docker*) present_terminal omarchy-install-docker-dbs ;;
*JavaScript*) show_install_javascript_menu ;; *JavaScript*) show_install_javascript_menu ;;
@@ -272,6 +360,7 @@ show_install_development_menu() {
*Java*) present_terminal "omarchy-install-dev-env java" ;; *Java*) present_terminal "omarchy-install-dev-env java" ;;
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;; *NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;; *OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
*Clojure*) present_terminal "omarchy-install-dev-env clojure" ;;
*) show_install_menu ;; *) show_install_menu ;;
esac esac
} }
@@ -303,28 +392,88 @@ show_install_elixir_menu() {
} }
show_remove_menu() { show_remove_menu() {
case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰸌 Theme\n󰈷 Fingerprint\n Fido2") in case $(menu "Remove" "󰣇 Package\n Web App\n TUI\n󰵮 Development\n Dictation\n󰸌 Theme\n󰍲 Windows\n󰈷 Fingerprint\n Fido2") in
*Package*) terminal omarchy-pkg-remove ;; *Package*) terminal omarchy-pkg-remove ;;
*Web*) present_terminal omarchy-webapp-remove ;; *Web*) present_terminal omarchy-webapp-remove ;;
*TUI*) present_terminal omarchy-tui-remove ;; *TUI*) present_terminal omarchy-tui-remove ;;
*Development*) show_remove_development_menu ;;
*Dictation*) present_terminal omarchy-voxtype-remove ;;
*Theme*) present_terminal omarchy-theme-remove ;; *Theme*) present_terminal omarchy-theme-remove ;;
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;; *Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;; *Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_remove_development_menu() {
case $(menu "Remove" "󰫏 Ruby on Rails\n JavaScript\n Go\n PHP\n Python\n Elixir\n Zig\n Rust\n Java\n .NET\n OCaml\n Clojure") in
*Rails*) present_terminal "omarchy-remove-dev-env ruby" ;;
*JavaScript*) show_remove_javascript_menu ;;
*Go*) present_terminal "omarchy-remove-dev-env go" ;;
*PHP*) show_remove_php_menu ;;
*Python*) present_terminal "omarchy-remove-dev-env python" ;;
*Elixir*) show_remove_elixir_menu ;;
*Zig*) present_terminal "omarchy-remove-dev-env zig" ;;
*Rust*) present_terminal "omarchy-remove-dev-env rust" ;;
*Java*) present_terminal "omarchy-remove-dev-env java" ;;
*NET*) present_terminal "omarchy-remove-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-remove-dev-env ocaml" ;;
*Clojure*) present_terminal "omarchy-remove-dev-env clojure" ;;
*) show_remove_menu ;;
esac
}
show_remove_javascript_menu() {
case $(menu "Remove" " Node.js\n Bun\n Deno") in
*Node*) present_terminal "omarchy-remove-dev-env node" ;;
*Bun*) present_terminal "omarchy-remove-dev-env bun" ;;
*Deno*) present_terminal "omarchy-remove-dev-env deno" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_php_menu() {
case $(menu "Remove" " PHP\n Laravel\n Symfony") in
*PHP*) present_terminal "omarchy-remove-dev-env php" ;;
*Laravel*) present_terminal "omarchy-remove-dev-env laravel" ;;
*Symfony*) present_terminal "omarchy-remove-dev-env symfony" ;;
*) show_remove_development_menu ;;
esac
}
show_remove_elixir_menu() {
case $(menu "Remove" " Elixir\n Phoenix") in
*Elixir*) present_terminal "omarchy-remove-dev-env elixir" ;;
*Phoenix*) present_terminal "omarchy-remove-dev-env phoenix" ;;
*) show_remove_development_menu ;;
esac
}
show_update_menu() { show_update_menu() {
case $(menu "Update" " Omarchy\n Config\n󰸌 Themes\n Process\n Timezone") in case $(menu "Update" " Omarchy\n󰔫 Channel\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Firmware\n Password\n Timezone\n Time") in
*Omarchy*) present_terminal omarchy-update ;; *Omarchy*) present_terminal omarchy-update ;;
*Channel*) show_update_channel_menu ;;
*Config*) show_update_config_menu ;; *Config*) show_update_config_menu ;;
*Themes*) present_terminal omarchy-theme-update ;; *Themes*) present_terminal omarchy-theme-update ;;
*Process*) show_update_process_menu ;; *Process*) show_update_process_menu ;;
*Timezone*) omarchy-cmd-tzupdate ;; *Hardware*) show_update_hardware_menu ;;
*Firmware*) present_terminal omarchy-update-firmware ;;
*Timezone*) present_terminal omarchy-tz-select ;;
*Time*) present_terminal omarchy-update-time ;;
*Password*) show_update_password_menu ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_update_channel_menu() {
case $(menu "Update channel" "🟢 Stable\n🟡 Edge\n🔴 Dev") in
*Stable*) present_terminal "omarchy-channel-set stable" ;;
*Edge*) present_terminal "omarchy-channel-set edge" ;;
*Dev*) present_terminal "omarchy-channel-set dev" ;;
*) show_update_menu ;;
esac
}
show_update_process_menu() { show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) omarchy-restart-hypridle ;; *Hypridle*) omarchy-restart-hypridle ;;
@@ -332,7 +481,7 @@ show_update_process_menu() {
*Swayosd*) omarchy-restart-swayosd ;; *Swayosd*) omarchy-restart-swayosd ;;
*Walker*) omarchy-restart-walker ;; *Walker*) omarchy-restart-walker ;;
*Waybar*) omarchy-restart-waybar ;; *Waybar*) omarchy-restart-waybar ;;
*) show_main_menu ;; *) show_update_menu ;;
esac esac
} }
@@ -346,46 +495,74 @@ show_update_config_menu() {
*Swayosd*) present_terminal omarchy-refresh-swayosd ;; *Swayosd*) present_terminal omarchy-refresh-swayosd ;;
*Walker*) present_terminal omarchy-refresh-walker ;; *Walker*) present_terminal omarchy-refresh-walker ;;
*Waybar*) present_terminal omarchy-refresh-waybar ;; *Waybar*) present_terminal omarchy-refresh-waybar ;;
*) show_main_menu ;; *) show_update_menu ;;
esac
}
show_update_hardware_menu() {
case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth") in
*Audio*) present_terminal omarchy-restart-pipewire ;;
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
*) show_update_menu ;;
esac
}
show_update_password_menu() {
case $(menu "Update Password" " Drive Encryption\n User") in
*Drive*) present_terminal omarchy-drive-set-password ;;
*User*) present_terminal passwd ;;
*) show_update_menu ;;
esac esac
} }
show_system_menu() { show_system_menu() {
case $(menu "System" " Lock\n󱄄 Screensaver\n󰤄 Suspend\n Relaunch\n󰜉 Restart\n󰐥 Shutdown") in local options=" Lock\n󱄄 Screensaver"
[ -f ~/.local/state/omarchy/toggles/suspend-on ] && options="$options\n󰒲 Suspend"
omarchy-hibernation-available && options="$options\n󰤁 Hibernate"
options="$options\n󰜉 Restart\n󰐥 Shutdown"
case $(menu "System" "$options") in
*Lock*) omarchy-lock-screen ;; *Lock*) omarchy-lock-screen ;;
*Screensaver*) omarchy-launch-screensaver force ;; *Screensaver*) omarchy-launch-screensaver force ;;
*Suspend*) systemctl suspend ;; *Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;; *Hibernate*) systemctl hibernate ;;
*Restart*) systemctl reboot ;; *Restart*) omarchy-cmd-reboot ;;
*Shutdown*) systemctl poweroff ;; *Shutdown*) omarchy-cmd-shutdown ;;
*) show_main_menu ;; *) back_to show_main_menu ;;
esac esac
} }
show_main_menu() { show_main_menu() {
go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n Capture\n󰔎 Toggle\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")" go_to_menu "$(menu "Go" "󰀻 Apps\n󰧑 Learn\n󱓞 Trigger\n Style\n Setup\n󰉉 Install\n󰭌 Remove\n Update\n About\n System")"
} }
go_to_menu() { go_to_menu() {
case "${1,,}" in case "${1,,}" in
*apps*) walker -p "Launch…" ;; *apps*) walker -p "Launch…" ;;
*learn*) show_learn_menu ;; *learn*) show_learn_menu ;;
*trigger*) show_trigger_menu ;;
*share*) show_share_menu ;;
*style*) show_style_menu ;; *style*) show_style_menu ;;
*theme*) show_theme_menu ;; *theme*) show_theme_menu ;;
*capture*) show_capture_menu ;;
*screenshot*) show_screenshot_menu ;; *screenshot*) show_screenshot_menu ;;
*screenrecord*) show_screenrecord_menu ;; *screenrecord*) show_screenrecord_menu ;;
*toggle*) show_toggle_menu ;;
*setup*) show_setup_menu ;; *setup*) show_setup_menu ;;
*power*) show_setup_power_menu ;;
*install*) show_install_menu ;; *install*) show_install_menu ;;
*remove*) show_remove_menu ;; *remove*) show_remove_menu ;;
*update*) show_update_menu ;; *update*) show_update_menu ;;
*about*) omarchy-launch-about ;;
*system*) show_system_menu ;; *system*) show_system_menu ;;
*about*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;;
esac esac
} }
# Allow user extensions and overrides
USER_EXTENSIONS="$HOME/.config/omarchy/extensions/menu.sh"
[[ -f $USER_EXTENSIONS ]] && source "$USER_EXTENSIONS"
if [[ -n "$1" ]]; then if [[ -n "$1" ]]; then
BACK_TO_EXIT=true
go_to_menu "$1" go_to_menu "$1"
else else
show_main_menu show_main_menu

View File

@@ -1,7 +1,80 @@
#!/bin/bash #!/bin/bash
# A script to display Hyprland keybindings defined in your configuration # Display Hyprland keybindings defined in your configuration using walker for an interactive search menu.
# using walker for an interactive search menu.
declare -A KEYCODE_SYM_MAP
build_keymap_cache() {
local keymap
keymap="$(xkbcli compile-keymap)" || {
echo "Failed to compile keymap" >&2
return 1
}
while IFS=, read -r code sym; do
[[ -z "$code" || -z "$sym" ]] && continue
KEYCODE_SYM_MAP["$code"]="$sym"
done < <(
awk '
BEGIN { sec = "" }
/xkb_keycodes/ { sec = "codes"; next }
/xkb_symbols/ { sec = "syms"; next }
sec == "codes" {
if (match($0, /<([A-Za-z0-9_]+)>\s*=\s*([0-9]+)\s*;/, m)) code_by_name[m[1]] = m[2]
}
sec == "syms" {
if (match($0, /key\s*<([A-Za-z0-9_]+)>\s*\{\s*\[\s*([^, \]]+)/, m)) sym_by_name[m[1]] = m[2]
}
END {
for (k in code_by_name) {
c = code_by_name[k]
s = sym_by_name[k]
if (c != "" && s != "" && s != "NoSymbol") print c "," s
}
}
' <<<"$keymap"
)
}
lookup_keycode_cached() {
printf '%s\n' "${KEYCODE_SYM_MAP[$1]}"
}
parse_keycodes() {
local start end elapsed
[[ "${DEBUG:-0}" == "1" ]] && start=$(date +%s.%N)
while IFS= read -r line; do
if [[ "$line" =~ code:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
echo "${line/code:${code}/$symbol}"
elif [[ "$line" =~ mouse:([0-9]+) ]]; then
code="${BASH_REMATCH[1]}"
case "$code" in
272) symbol="LEFT MOUSE BUTTON" ;;
273) symbol="RIGHT MOUSE BUTTON" ;;
274) symbol="MIDDLE MOUSE BUTTON" ;;
*) symbol="mouse:${code}" ;;
esac
echo "${line/mouse:${code}/$symbol}"
else
echo "$line"
fi
done
if [[ "$DEBUG" == "1" ]]; then
end=$(date +%s.%N)
# fall back to awk if bc is missing
if command -v bc >/dev/null 2>&1; then
elapsed=$(echo "$end - $start" | bc)
else
elapsed=$(awk -v s="$start" -v e="$end" 'BEGIN{printf "%.6f", (e - s)}')
fi
echo "[DEBUG] parse_keycodes elapsed: ${elapsed}s" >&2
fi
}
# Fetch dynamic keybindings from Hyprland # Fetch dynamic keybindings from Hyprland
# #
@@ -11,12 +84,13 @@
# - Map numeric modifier key mask to a textual rendition # - Map numeric modifier key mask to a textual rendition
# - Output comma-separated values that the parser can understand # - Output comma-separated values that the parser can understand
dynamic_bindings() { dynamic_bindings() {
hyprctl -j binds | \ hyprctl -j binds |
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \ jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' |
sed -r \ sed -r \
-e 's/null//' \ -e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \ -e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \ -e 's,uwsm app -- ,,' \
-e 's,uwsm-app -- ,,' \
-e 's/@0//' \ -e 's/@0//' \
-e 's/,@/,code:/' \ -e 's/,@/,code:/' \
-e 's/^0,/,/' \ -e 's/^0,/,/' \
@@ -37,6 +111,11 @@ dynamic_bindings() {
-e 's/^77,/SUPER SHIFT CTRL ALT,/' -e 's/^77,/SUPER SHIFT CTRL ALT,/'
} }
# Hardcoded bindings, like the copy-url extension and such
static_bindings() {
echo "SHIFT ALT,L,Copy URL from Web App,extension,copy-url"
}
# Parse and format keybindings # Parse and format keybindings
# #
# `awk` does the heavy lifting: # `awk` does the heavy lifting:
@@ -83,7 +162,84 @@ parse_bindings() {
}' }'
} }
dynamic_bindings | \ prioritize_entries() {
sort -u | \ awk '
parse_bindings | \ {
walker --dmenu --theme keybindings -p 'Keybindings' line = $0
prio = 50
if (match(line, /Terminal/)) prio = 0
if (match(line, /Browser/) && !match(line, /Browser[[:space:]]*\(/)) prio = 1
if (match(line, /File manager/)) prio = 2
if (match(line, /Launch apps/)) prio = 3
if (match(line, /Omarchy menu/)) prio = 4
if (match(line, /System menu/)) prio = 5
if (match(line, /Theme menu/)) prio = 6
if (match(line, /Full screen/)) prio = 7
if (match(line, /Full width/)) prio = 8
if (match(line, /Close window/)) prio = 9
if (match(line, /Close all windows/)) prio = 10
if (match(line, /Lock system/)) prio = 11
if (match(line, /Toggle window floating/)) prio = 12
if (match(line, /Toggle window split/)) prio = 13
if (match(line, /Pop window/)) prio = 14
if (match(line, /Universal/)) prio = 15
if (match(line, /Clipboard/)) prio = 16
if (match(line, /Audio controls/)) prio = 17
if (match(line, /Bluetooth controls/)) prio = 18
if (match(line, /Wifi controls/)) prio = 19
if (match(line, /Emoji picker/)) prio = 20
if (match(line, /Color picker/)) prio = 21
if (match(line, /Screenshot/)) prio = 22
if (match(line, /Screenrecording/)) prio = 23
if (match(line, /(Switch|Next|Former|Previous).*workspace/)) prio = 24
if (match(line, /Move window to workspace/)) prio = 25
if (match(line, /Move window silently to workspace/)) prio = 26
if (match(line, /Swap window/)) prio = 27
if (match(line, /Move window focus/)) prio = 28
if (match(line, /Move window$/)) prio = 29
if (match(line, /Resize window/)) prio = 30
if (match(line, /Expand window/)) prio = 31
if (match(line, /Shrink window/)) prio = 32
if (match(line, /scratchpad/)) prio = 33
if (match(line, /notification/)) prio = 34
if (match(line, /Toggle window transparency/)) prio = 35
if (match(line, /Toggle workspace gaps/)) prio = 36
if (match(line, /Toggle nightlight/)) prio = 37
if (match(line, /Toggle locking/)) prio = 38
if (match(line, /group/)) prio = 94
if (match(line, /Scroll active workspace/)) prio = 95
if (match(line, /Cycle to/)) prio = 96
if (match(line, /Reveal active/)) prio = 97
if (match(line, /Apple Display/)) prio = 98
if (match(line, /XF86/)) prio = 99
# print "priority<TAB>line"
printf "%d\t%s\n", prio, line
}' |
sort -k1,1n -k2,2 |
cut -f2-
}
output_keybindings() {
build_keymap_cache
{
dynamic_bindings
static_bindings
} |
sort -u |
parse_keycodes |
parse_bindings |
prioritize_entries
}
if [[ "$1" == "--print" || "$1" == "-p" ]]; then
output_keybindings
else
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
output_keybindings |
walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height"
fi

View File

@@ -1,18 +1,29 @@
#!/bin/bash #!/bin/bash
set -e # Run all pending migrations to bring the system in line with the installed version.
# Where we store an empty file for each migration that has already been performed. # Where we store an empty file for each migration that has already been performed.
STATE_DIR="$HOME/.local/state/omarchy/migrations" STATE_DIR="$HOME/.local/state/omarchy/migrations"
mkdir -p "$STATE_DIR" mkdir -p "$STATE_DIR"
# Skipped migrations are tracked separately
mkdir -p "$STATE_DIR/skipped"
# Run any pending migrations # Run any pending migrations
for file in ~/.local/share/omarchy/migrations/*.sh; do for file in ~/.local/share/omarchy/migrations/*.sh; do
filename=$(basename "$file") filename=$(basename "$file")
if [[ ! -f "$STATE_DIR/$filename" ]]; then if [[ ! -f "$STATE_DIR/$filename" && ! -f "$STATE_DIR/skipped/$filename" ]]; then
echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"
source $file
if bash $file; then
touch "$STATE_DIR/$filename" touch "$STATE_DIR/$filename"
else
if gum confirm "Migration ${filename%.sh} failed. Skip and continue?"; then
touch "$STATE_DIR/skipped/$filename"
else
exit 1
fi
fi
fi fi
done done

View File

@@ -0,0 +1,15 @@
#!/bin/bash
# Dismiss a mako notification on the basis of its summary. Used by the first-run notifications to dismiss them after clicking for action.
if (($# == 0)); then
echo "Usage: omarchy-notification-dismiss <summary>"
exit 1
fi
# Find the first notification whose 'summary' matches the regex in $1
notification_id=$(makoctl list | grep -F "$1" | head -n1 | sed -E 's/^Notification ([0-9]+):.*/\1/')
if [[ -n $notification_id ]]; then
makoctl dismiss -n $notification_id
fi

17
bin/omarchy-pkg-add Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Add the named packages to the system if they're missing. Returns false if it couldn't be done.
if omarchy-pkg-missing "$@"; then
sudo pacman -S --noconfirm --needed "$@" || exit 1
fi
for pkg in "$@"; do
# Secondary check to handle states where pacman doesn't actually register an error
if ! pacman -Q "$pkg" &>/dev/null; then
echo -e "\033[31mError: Package '$pkg' did not install\033[0m" >&2
exit 1
fi
done
exit 0

View File

@@ -1,4 +1,7 @@
#!/bin/bash #!/bin/bash
# Returns true if the AUR is up and available.
# Used by omarchy-update-system-pkgs to ensure the AUR is available before updating packages from it.
curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "omarchy-update" \ curl -sf --connect-timeout 30 --retry 3 --retry-delay 3 -A "omarchy-update" \
"https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null "https://aur.archlinux.org/rpc/?v=5&type=info&arg=base" >/dev/null

17
bin/omarchy-pkg-aur-add Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Add the named packages to the system from the AUR if they're missing. Returns false if it couldn't be done.
if omarchy-pkg-missing "$@"; then
yay -S --noconfirm --needed "$@" || exit 1
fi
for pkg in "$@"; do
# Secondary check to handle states where pacman doesn't actually register an error
if ! pacman -Q "$pkg" &>/dev/null; then
echo -e "\033[31mError: Package '$pkg' did not install\033[0m" >&2
exit 1
fi
done
exit 0

View File

@@ -1,16 +1,18 @@
#!/bin/bash #!/bin/bash
set -e # Show a fuzzy-finder TUI for picking new AUR packages to install.
fzf_args=( fzf_args=(
--multi --multi
--preview 'yay -Sii {1}' --preview 'yay -Siia {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' --preview-label='alt-p: toggle description, alt-b/B: toggle PKGBUILD, alt-j/k: scroll, tab: multi-select'
--preview-label-pos='bottom' --preview-label-pos='bottom'
--preview-window 'down:65%:wrap' --preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview' --bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up' --bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--bind 'alt-k:preview-up,alt-j:preview-down' --bind 'alt-k:preview-up,alt-j:preview-down'
--bind 'alt-b:change-preview:yay -Gpa {1} | tail -n +5'
--bind 'alt-B:change-preview:yay -Siia {1}'
--color 'pointer:green,marker:green' --color 'pointer:green,marker:green'
) )
@@ -18,7 +20,7 @@ pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay # Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm echo "$pkg_names" | tr '\n' ' ' | xargs yay -S --noconfirm
sudo updatedb sudo updatedb
omarchy-show-done omarchy-show-done
fi fi

9
bin/omarchy-pkg-drop Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Remove all the named packages from the system if they're installed (otherwise ignore).
for pkg in "$@"; do
if pacman -Q "$pkg" &>/dev/null; then
sudo pacman -Rns --noconfirm "$pkg"
fi
done

View File

@@ -1,7 +0,0 @@
#!/bin/bash
IGNORED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.ignored"
if [[ -f $IGNORED_PACKAGES_FILE ]]; then
tr '\r\n' ',' <"$IGNORED_PACKAGES_FILE" | sed 's/,$//'
fi

View File

@@ -1,11 +1,11 @@
#!/bin/bash #!/bin/bash
set -e # Show a fuzzy-finder TUI for picking new Arch and OPR packages to install.
fzf_args=( fzf_args=(
--multi --multi
--preview 'pacman -Sii {1}' --preview 'pacman -Sii {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize' --preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select'
--preview-label-pos='bottom' --preview-label-pos='bottom'
--preview-window 'down:65%:wrap' --preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview' --bind 'alt-p:toggle-preview'
@@ -14,12 +14,10 @@ fzf_args=(
--color 'pointer:green,marker:green' --color 'pointer:green,marker:green'
) )
sudo pacman -Sy
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}") pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay # Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Sy --noconfirm echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
sudo updatedb
omarchy-show-done omarchy-show-done
fi fi

11
bin/omarchy-pkg-missing Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
# Returns true if any of the named packages are missing from the system (or false if they're all there).
for pkg in "$@"; do
if ! pacman -Q "$pkg" &>/dev/null; then
exit 0
fi
done
exit 1

View File

@@ -1,7 +0,0 @@
#!/bin/bash
PINNED_PACKAGES_FILE="$OMARCHY_PATH/install/packages.pinned"
if [[ -f $PINNED_PACKAGES_FILE ]]; then
tr '\r\n' ',' <"$PINNED_PACKAGES_FILE" | sed 's/,$//'
fi

9
bin/omarchy-pkg-present Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Returns true if all of the named packages are installed on the system (or false if any of them are missing).
for pkg in "$@"; do
pacman -Q "$pkg" &>/dev/null || exit 1
done
exit 0

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