Compare commits

...

662 Commits

Author SHA1 Message Date
Ryan Hughes
267a9e1765 Fix 2025-10-08 20:16:55 -04:00
Ryan Hughes
0e1f585166 Add sudoers to fix polkit error 2025-10-08 20:02:21 -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
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
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
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
David Heinemeier Hansson
8cbd6be687 Merge pull request #1166 from basecamp/dev
Omarchy v2.0.2
2025-08-27 12:50:36 +02:00
David Heinemeier Hansson
aef9a3dc0f Merge branch 'master' into dev 2025-08-27 12:49:31 +02:00
David Heinemeier Hansson
2294393d71 Just force it for now 2025-08-27 12:39:36 +02:00
David Heinemeier Hansson
2b0d2e4751 Should be exe 2025-08-27 12:35:48 +02:00
David Heinemeier Hansson
0f8a94aa50 Pin at the end 2025-08-27 12:26:03 +02:00
David Heinemeier Hansson
4eb2fab33d Ignore for yay too 2025-08-27 12:21:25 +02:00
David Heinemeier Hansson
a43edcde7d Quote it 2025-08-27 12:14:03 +02:00
David Heinemeier Hansson
742e601baf Pinning packages when one goes bad (#1162)
* Don't update system packages to prevent issues from something too new at the wrong time

* Add system to pin and ignore bad packages

To deal with the abseil-cpp issue
2025-08-27 12:06:08 +02:00
Michiel Ryvers
613f4a473d Don't hardcode snapper configs, read the config list first 2025-08-27 11:08:16 +02:00
David Heinemeier Hansson
710bb023cd Don't update system packages to prevent issues from something too new at the wrong time 2025-08-27 10:54:23 +02:00
David Heinemeier Hansson
a7df6c0941 Move updatedb into its own config file with better explanation 2025-08-27 10:53:47 +02:00
David Heinemeier Hansson
2d12085eb1 Merge pull request #1119 from tahayvr/fastfetch-config
Update Fastfetch config
2025-08-26 15:51:54 +02:00
Taha
9a2cdc2bc4 Update fastfetch info 2025-08-26 06:28:25 -07:00
David Heinemeier Hansson
66818266ff Force font size 9 for the about screen
We had this but lost it
2025-08-26 12:46:19 +02:00
David Heinemeier Hansson
3affd55a90 Merge pull request #1113 from basecamp/dev
Omarchy 2.0.1
2025-08-26 12:31:45 +02:00
David Heinemeier Hansson
a7322fe7ae Remove apps we don't use any more 2025-08-26 12:27:35 +02:00
David Heinemeier Hansson
5e3d8e5f22 Treat all the major browsers the same 2025-08-26 12:16:23 +02:00
Josh LeBlanc
128e090165 include more chromium browsers in chromium rules (#1090)
* include more chromium browsers in chromium rules

* Use tag to avoid declaring the match twice

* Fix the match to actual browser class names as reported by hyprctl clients

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-26 12:10:24 +02:00
John Schmidt
13f2cd9641 fix multiple word app names (#1087)
* fix multiple word app names

* fix multiple words string handling

* upstream selector and tui-remove multi-select

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-26 11:57:39 +02:00
David Heinemeier Hansson
334aa214ba Merge branch 'master' into dev 2025-08-26 11:53:04 +02:00
Ryan Hughes
27c4b74e90 Don't add EFI entry for AMI until we figure out their bug (#1109) 2025-08-26 11:52:50 +02:00
Adi Yeroslav
44c9be7958 Fix emoji picker description (#1091) 2025-08-26 09:19:34 +02:00
Oleg Luganskiy
23c9229fdd fix(hypr): convert TAB workspace bindings from bind to bindd (#1098) 2025-08-26 09:17:09 +02:00
William Tio
f22755df4f Remove Omarchy from the list of selectable fonts (#1101) 2025-08-26 09:15:46 +02:00
David Heinemeier Hansson
ee9ae96414 Merge branch 'master' into dev 2025-08-26 09:15:13 +02:00
David Heinemeier Hansson
d5a340f6b7 Merge pull request #1103 from meerzulee/master
fix: typo at waybar/config.jsonc
2025-08-26 09:14:42 +02:00
David Heinemeier Hansson
0e88962e4f Bring multi-select and custom X remover to TUI 2025-08-26 09:14:14 +02:00
David Heinemeier Hansson
7e2d266a9a Don't think the selector looks quite right, but the remover does 2025-08-26 09:13:22 +02:00
David Heinemeier Hansson
7bf65360f9 Merge pull request #1104 from hipsterusername/remove-selection-ux
UX: Change webapp removal selection icons
2025-08-26 09:12:23 +02:00
David Heinemeier Hansson
1c486a037b Merge pull request #1106 from tahayvr/icon-in-menu
Update Omarchy icon in unified menu
2025-08-26 09:11:39 +02:00
Taha
ea21d0a7b7 Update omarchy icon in unified menu 2025-08-25 23:56:50 -07:00
Kent Keirsey
51830d5ce1 Change removal selection icons 2025-08-26 00:08:10 -04:00
Meerzulee
f0a12463a6 fixing typo at config.jsonc
Fixing `nospacing` to `spacing`. 

There is no such a config as `nospacing` in Waybar source code.
2025-08-26 10:01:24 +06:00
David Heinemeier Hansson
a8965dd271 Merge pull request #1076 from manofcolombia/omarchy-launch-nix
Check for apps.desktop in ~/.nix-profile - omarchy-launch-*
2025-08-25 20:16:29 +02:00
Zak Lantz
c2fee1b7fa check for desktop apps in ~/.nix-profile 2025-08-25 12:17:16 -04:00
David Heinemeier Hansson
acc1e2f757 Merge pull request #1064 from basecamp/dev
Omarchy 2.0
2025-08-25 16:10:15 +02:00
David Heinemeier Hansson
51f877ca1f Left over styles from status indicators 2025-08-25 15:26:35 +02:00
David Heinemeier Hansson
8167633824 Left-over from the status indicators removal 2025-08-25 15:25:29 +02:00
David Heinemeier Hansson
922acfd706 Claude is only on AUR 2025-08-25 14:11:43 +02:00
David Heinemeier Hansson
b136cc5653 Remember remember 2025-08-25 14:04:49 +02:00
David Heinemeier Hansson
52d1ac215d No sudo with yay 2025-08-25 14:03:31 +02:00
David Heinemeier Hansson
838d0ca27b Dropbox elements are on AUR
Let's fix that
2025-08-25 14:02:53 +02:00
David Heinemeier Hansson
f4ea58bdd0 Doesn't work with yay 2025-08-25 13:55:01 +02:00
David Heinemeier Hansson
6c656766f8 Fix migration too 2025-08-25 13:53:33 +02:00
David Heinemeier Hansson
06e3cb4e71 Also allow yay updates without sudo 2025-08-25 13:52:53 +02:00
David Heinemeier Hansson
1506b98fe1 Fix path 2025-08-25 13:51:24 +02:00
David Heinemeier Hansson
2a8155cc68 Revert "Tweak colors"
This reverts commit 0eda27a3bc.
2025-08-25 13:49:33 +02:00
David Heinemeier Hansson
35b7f44c7e Revert "Another color tweak"
This reverts commit 4b70705252.
2025-08-25 13:49:07 +02:00
David Heinemeier Hansson
4b70705252 Another color tweak 2025-08-25 13:46:41 +02:00
David Heinemeier Hansson
0eda27a3bc Tweak colors 2025-08-25 13:44:27 +02:00
David Heinemeier Hansson
c48f370924 Allow multi select to remove webapps
Closes #1052
2025-08-25 13:33:39 +02:00
David Heinemeier Hansson
dcfbd7a2e5 Suddenly the status indicators were busted on new installations (#1061)
Don't have time to debug this now, so will have to wait until next
release
2025-08-25 13:28:54 +02:00
Luca Pattocchio
dde702a4c3 Use Omarchy as head of new block in FastFetch (#1056) 2025-08-25 13:02:23 +02:00
David Heinemeier Hansson
9e0c638b84 Flipped abort message
Co-authored-by: @nbw
Closes #1058
2025-08-25 13:00:50 +02:00
David Heinemeier Hansson
4e389007f1 Ensure time is updated before we sync this for the first time 2025-08-25 12:37:58 +02:00
David Heinemeier Hansson
258b151935 Refresh them here 2025-08-25 12:31:15 +02:00
David Heinemeier Hansson
b80e4ce908 Combine these 2025-08-25 12:26:28 +02:00
David Heinemeier Hansson
31dbf49a1f Didn't need that here 2025-08-25 12:24:51 +02:00
David Heinemeier Hansson
185807b771 Just the flakiness part now 2025-08-25 12:18:33 +02:00
David Heinemeier Hansson
d8ddc5046f Not using the service for now 2025-08-25 12:17:37 +02:00
David Heinemeier Hansson
5c6c880b0b Fix path here too 2025-08-25 12:17:03 +02:00
David Heinemeier Hansson
122bdd7837 Fix path (again!) 2025-08-25 12:16:21 +02:00
David Heinemeier Hansson
59088800ad Fix path and dependencies 2025-08-25 12:15:37 +02:00
David Heinemeier Hansson
561ffcfb56 Fix path 2025-08-25 12:13:46 +02:00
David Heinemeier Hansson
b44661a0ad Wording 2025-08-25 12:10:41 +02:00
David Heinemeier Hansson
a50041721c Just sync time together with timezone 2025-08-25 12:09:49 +02:00
David Heinemeier Hansson
88303d81fd New kernel detection is flaky, yank 2025-08-25 12:07:08 +02:00
David Heinemeier Hansson
e99bab272f Manually remove yay-bin-debug too 2025-08-25 12:05:37 +02:00
David Heinemeier Hansson
b5ced14972 In case one package doesn't want to go, do it yourself 2025-08-25 12:02:38 +02:00
David Heinemeier Hansson
e3bda8a970 Ensure time has been synced before updating so we don't get SSL errors 2025-08-25 11:58:19 +02:00
David Heinemeier Hansson
d031237b42 Sync clock before doing an update 2025-08-25 11:57:01 +02:00
David Heinemeier Hansson
0b48f08674 Replace AUR yay with OPR yay 2025-08-25 11:54:58 +02:00
David Heinemeier Hansson
63081e141a Replace buggy Zoom native app with webapp 2025-08-25 11:54:10 +02:00
David Heinemeier Hansson
249612bf67 Take it down to add the rule 2025-08-25 11:49:24 +02:00
David Heinemeier Hansson
468a84b5cc Ensure directory is there 2025-08-25 11:45:30 +02:00
David Heinemeier Hansson
42ee87ad65 Correct path 2025-08-25 11:44:41 +02:00
David Heinemeier Hansson
f2844964c4 Sync the db too 2025-08-25 11:42:14 +02:00
David Heinemeier Hansson
b38e864f08 Fix path 2025-08-25 11:41:36 +02:00
David Heinemeier Hansson
b4f6bbda4d No longer used 2025-08-25 11:40:25 +02:00
David Heinemeier Hansson
e806080c4d Start in dark mode 2025-08-25 11:28:12 +02:00
David Heinemeier Hansson
fe2dd66f91 Separate packages that need AUR and call those out 2025-08-25 11:22:27 +02:00
David Heinemeier Hansson
062c6b3dce Tweaks 2025-08-25 11:11:08 +02:00
David Heinemeier Hansson
68a51c18a8 Start splitting up the big config folder 2025-08-25 11:09:15 +02:00
David Heinemeier Hansson
5a98771e5b Will switch to Walker 1.0 before this is back 2025-08-25 11:06:02 +02:00
David Heinemeier Hansson
77863a4c12 Try again 2025-08-25 11:05:35 +02:00
David Heinemeier Hansson
5b59aee51e Reduce number of concepts 2025-08-25 11:04:28 +02:00
David Heinemeier Hansson
fdaa126aee Fix sudo access permission 2025-08-25 10:57:29 +02:00
David Heinemeier Hansson
4f0dfcc865 Fix hanging 2025-08-25 10:52:42 +02:00
David Heinemeier Hansson
2635534778 Correct autostart command 2025-08-25 10:24:42 +02:00
David Heinemeier Hansson
5bb7b66dee Bring back tte celebration at the end 2025-08-25 09:49:45 +02:00
David Heinemeier Hansson
b8f4a10056 Time of install critical here 2025-08-25 09:45:05 +02:00
David Heinemeier Hansson
86b03357d0 yay is no longer special 2025-08-25 09:43:16 +02:00
David Heinemeier Hansson
186912ca1d Last yays 2025-08-25 09:39:24 +02:00
David Heinemeier Hansson
c7d9581d7b Correct setting of server 2025-08-25 09:39:20 +02:00
David Heinemeier Hansson
03503364cc Doesn't belong here 2025-08-25 09:33:09 +02:00
David Heinemeier Hansson
44529a7a25 No yay 2025-08-25 09:33:05 +02:00
David Heinemeier Hansson
705b6858dc Order 2025-08-25 09:31:07 +02:00
David Heinemeier Hansson
b9758a9c8c Part of repository setup 2025-08-25 09:30:36 +02:00
David Heinemeier Hansson
0a0843c7ec Follow convention 2025-08-25 09:30:28 +02:00
David Heinemeier Hansson
ec0af90c98 Not needed for build 2025-08-25 09:24:56 +02:00
David Heinemeier Hansson
37f0c18b78 All packages in one place 2025-08-25 09:22:55 +02:00
David Heinemeier Hansson
1ec6ba61dc Fix paths for first-run permissions removal 2025-08-25 09:20:04 +02:00
David Heinemeier Hansson
066ec7ffff Fix file path 2025-08-25 09:11:32 +02:00
David Heinemeier Hansson
c73c1c90bf Extra all packages into a single master manifest 2025-08-25 09:04:13 +02:00
David Heinemeier Hansson
256a49ee53 Fix conditional 2025-08-25 08:47:27 +02:00
David Heinemeier Hansson
39e0cf3a37 Fix path 2025-08-25 08:38:07 +02:00
David Heinemeier Hansson
e8f932b0f6 Make sure we don't get stuck in a loop 2025-08-25 08:36:37 +02:00
David Heinemeier Hansson
55daa135a7 Allow pacman -Sy without sudo to easier installs 2025-08-25 08:34:41 +02:00
David Heinemeier Hansson
a428208077 Wrong exit code 2025-08-25 08:26:08 +02:00
David Heinemeier Hansson
2d848338e6 More restrictive sudoless setup for first-run 2025-08-25 07:49:16 +02:00
David Heinemeier Hansson
925a2906e5 Explain purposes 2025-08-25 07:43:07 +02:00
David Heinemeier Hansson
f98899e4e2 Setup real first-run install 2025-08-25 07:37:46 +02:00
David Heinemeier Hansson
e565768bed Make all the install files executable 2025-08-25 07:37:34 +02:00
David Heinemeier Hansson
661eed2640 Prepare for firewall to be setup on first run 2025-08-25 07:28:59 +02:00
David Heinemeier Hansson
28ba0bff7a Prepare for battery monitor to be installed on first run 2025-08-25 07:26:25 +02:00
David Heinemeier Hansson
bdfc0fad5d Explain purpose 2025-08-25 07:26:12 +02:00
David Heinemeier Hansson
ec17b3f012 We should always have the firewall commands available 2025-08-25 07:20:07 +02:00
David Heinemeier Hansson
9cd70e9aff No need to maintain this separately 2025-08-25 07:17:12 +02:00
David Heinemeier Hansson
51f5bed286 Tighten up 2025-08-25 07:15:49 +02:00
David Heinemeier Hansson
9a98782342 Run first so app directory is there 2025-08-25 07:15:45 +02:00
David Heinemeier Hansson
c0a091e293 Move over to where it belongs 2025-08-25 07:14:20 +02:00
David Heinemeier Hansson
d7fa8181fa Reinstall all the old AUR packages from OPR 2025-08-25 07:09:51 +02:00
David Heinemeier Hansson
dfda4f895a Rip out the last remnants of AUR 2025-08-25 07:04:43 +02:00
David Heinemeier Hansson
a67fc717c1 One fewer package we don't need to get from AUR 2025-08-24 22:36:43 +02:00
David Heinemeier Hansson
599b58f9a1 Prepare for tte's imminent return! 2025-08-24 22:24:42 +02:00
David Heinemeier Hansson
f14810e80d We will have tte back in a iffy so let's not bother with this 2025-08-24 22:23:12 +02:00
David Heinemeier Hansson
3bf51d30ff 1password has moved to the OPR 2025-08-24 22:22:11 +02:00
David Heinemeier Hansson
39dccccb1a Bare mode is dead in 2.0
Uninstall whatever you want yourself now that we have multi-tab
uninstalls
2025-08-24 22:21:25 +02:00
David Heinemeier Hansson
46f8b522f1 Can't set that this early 2025-08-24 21:53:25 +02:00
David Heinemeier Hansson
1576c4e5c6 Update Hypridle to prevent flash of unlocked screen after sleep 2025-08-24 21:14:29 +02:00
Mathias Remshardt
f39dc9a269 fix: delay supsend until screen is locked (#1041) 2025-08-24 21:13:28 +02:00
David Heinemeier Hansson
ff6802830c Correct the path 2025-08-24 21:04:52 +02:00
David Heinemeier Hansson
af9ab9069f Only remove orphans if there are any 2025-08-24 20:53:24 +02:00
David Heinemeier Hansson
3363fe0544 Just remove orphans 2025-08-24 20:50:53 +02:00
David Heinemeier Hansson
1577620344 Migrate AUR packages to new OPR or Arch official repos 2025-08-24 20:50:30 +02:00
David Heinemeier Hansson
d183daff1a Wrong flip! 2025-08-24 20:36:51 +02:00
David Heinemeier Hansson
5ed08ef5b9 Attempt to set chromium theme before first launch 2025-08-24 20:34:53 +02:00
David Heinemeier Hansson
ae8c76f582 Refresh chaotic-AUR 2025-08-24 20:24:52 +02:00
Jarek
93ef034a5c Use Quad9 as fallback DNS for better privacy (#1046)
Replace Google DNS fallback with Quad9 (9.9.9.9, 149.112.112.112)
for better privacy consistency. Users choosing Cloudflare likely
value privacy, so Quad9 is a more appropriate fallback than Google.

As discussed in #752 and approved by @dhh in #1043.
2025-08-24 20:22:54 +02:00
David Heinemeier Hansson
fc43706190 Add chaotic aur despite getting yay from OPR 2025-08-24 20:19:26 +02:00
David Heinemeier Hansson
fc853ffe96 Combine repository setups 2025-08-24 20:10:43 +02:00
David Heinemeier Hansson
a8c3d1a2bd Right now we are just built for online installer 2025-08-24 20:10:03 +02:00
David Heinemeier Hansson
b09c625ac0 Make it green! 2025-08-24 20:09:18 +02:00
David Heinemeier Hansson
4d28721682 omarchy-chromium is now on the OPR 2025-08-24 20:05:13 +02:00
David Heinemeier Hansson
5ad441e539 Refresh indexes before taking a look at what's there 2025-08-24 20:03:37 +02:00
David Heinemeier Hansson
78e81d7534 Don't need to show anything 2025-08-24 19:39:53 +02:00
David Heinemeier Hansson
00ce49a4ac Don't use yay here 2025-08-24 19:35:36 +02:00
David Heinemeier Hansson
78719b0552 Now coming from OPR 2025-08-24 19:34:57 +02:00
David Heinemeier Hansson
8a5bca3807 No longer needed from AUR 2025-08-24 19:33:52 +02:00
David Heinemeier Hansson
78aeb91e5f Use OPR walker 2025-08-24 19:32:31 +02:00
David Heinemeier Hansson
83b67d0d6b Now we have walker-bin in OPR 2025-08-24 19:32:26 +02:00
David Heinemeier Hansson
ed9edab8ed Add OPR as early as possible 2025-08-24 19:32:19 +02:00
David Heinemeier Hansson
115e9c5af8 Add Omarchy repository first 2025-08-24 19:28:02 +02:00
David Heinemeier Hansson
00cc8315a6 Separate installing packages from AUR 2025-08-24 19:15:12 +02:00
David Heinemeier Hansson
1d915c6583 Use consistent naming scheme for backgrounds 2025-08-24 19:05:29 +02:00
David Heinemeier Hansson
dd493b0cdf Also apply light/dark via new chromium flags 2025-08-24 19:03:07 +02:00
Guilherme Nandi Tiscoski
1f4723ae33 Add more backgrounds to rose-pine (#1023)
* Add more backgrounds to rose-pine

* Reduce sizes

* Reduce sizes to be < 2mb
2025-08-24 18:58:01 +02:00
David Heinemeier Hansson
478b166ae7 Can't use tte at the moment here 2025-08-24 18:37:54 +02:00
Jarek
c0770fc7a3 Ensure network interfaces respect DNS configuration (#1043)
Implements DHH's requirement to ensure wlan0 and ethernet interfaces
respect the DNS configuration while excluding docker/loop interfaces.

When using Cloudflare or Custom DNS:
- Sets UseDNS=no in DHCPv4 sections
- Sets UseDNS=no in IPv6AcceptRA sections
- Only configures primary interfaces (en*, eth*, wl*)
- Restarts both systemd-networkd and systemd-resolved

When using DHCP:
- Removes UseDNS=no to allow DHCP provided DNS
- Restores default behavior for all interfaces

Script size increased from 58 to 89 lines to properly handle all
network interfaces as requested.
2025-08-24 18:33:32 +02:00
David Heinemeier Hansson
846b2e2595 Need walker-bin here for a moment until we self-host 2025-08-24 18:30:50 +02:00
David Heinemeier Hansson
d8a4640010 jq test failing 2025-08-24 18:11:59 +02:00
David Heinemeier Hansson
ee5f4eb925 I think these are the last spots 2025-08-24 18:08:17 +02:00
David Heinemeier Hansson
cb22afdb93 Another quarantine 2025-08-24 18:03:18 +02:00
David Heinemeier Hansson
d2bd1b47b6 This doesn't need yay 2025-08-24 18:02:09 +02:00
David Heinemeier Hansson
02134df8ee Quarantine AUR installs 2025-08-24 18:01:39 +02:00
David Heinemeier Hansson
cd39a145e8 More pacman 2025-08-24 18:00:28 +02:00
David Heinemeier Hansson
a0c3a435fc Protect from AUR outage 2025-08-24 18:00:23 +02:00
David Heinemeier Hansson
f0a77e65cd More pacman swaps 2025-08-24 17:53:42 +02:00
David Heinemeier Hansson
4de9f5fda3 Extra resilience for on-demand installation 2025-08-24 17:53:33 +02:00
David Heinemeier Hansson
1efe4a819f More pacman 2025-08-24 17:49:31 +02:00
David Heinemeier Hansson
a29237e070 More resilience here too 2025-08-24 17:49:26 +02:00
David Heinemeier Hansson
9834a40796 Fix bad replace 2025-08-24 17:46:48 +02:00
David Heinemeier Hansson
edf0bb3128 Give it a few tries 2025-08-24 17:46:01 +02:00
David Heinemeier Hansson
960cbbd591 We have those from the pacman runner 2025-08-24 17:44:01 +02:00
David Heinemeier Hansson
c974c3dbc4 Language 2025-08-24 17:42:41 +02:00
David Heinemeier Hansson
f1af28f10d Simplify guard against an unavailable AUR 2025-08-24 17:41:41 +02:00
David Heinemeier Hansson
673cea1644 Also on removes 2025-08-24 17:36:02 +02:00
David Heinemeier Hansson
9d739faf2b Switch to pacman to make it clear when we are not depending on AUR 2025-08-24 17:35:24 +02:00
David Heinemeier Hansson
69afedf380 Separate out AUR installs with yay 2025-08-24 17:28:22 +02:00
David Heinemeier Hansson
57e14afca3 No yay 2025-08-24 17:28:12 +02:00
David Heinemeier Hansson
38d9961622 Install AUR packages if its available 2025-08-24 17:25:45 +02:00
David Heinemeier Hansson
57b1180c67 Remove orphan system packages after omarchy-update
Co-authored-by: @abenz1267
2025-08-24 17:22:45 +02:00
David Heinemeier Hansson
664fb7c51a Separate pacman setup from aur and make aur optional 2025-08-24 17:20:13 +02:00
David Heinemeier Hansson
09a90e3cf2 Keep AUR separate 2025-08-24 17:15:37 +02:00
David Heinemeier Hansson
6dd95e71bf No AUR stuff allowed in xtras 2025-08-24 17:15:29 +02:00
David Heinemeier Hansson
22769caa8c Will install chromium by default and then bring our fork in through other means 2025-08-24 17:15:14 +02:00
David Heinemeier Hansson
448be1317f Move tte to AUR quarantine install 2025-08-24 17:15:00 +02:00
David Heinemeier Hansson
7bd1d56399 Remove AUR font 2025-08-24 17:14:13 +02:00
David Heinemeier Hansson
b094557a97 Poor man's screensaver without tte 2025-08-24 17:13:55 +02:00
David Heinemeier Hansson
3f895969c7 Allow screensaver to display logo if tte is not there 2025-08-24 17:07:28 +02:00
David Heinemeier Hansson
da7222f510 Move it inside where it is used 2025-08-24 16:57:41 +02:00
David Heinemeier Hansson
9d355091b5 No AUR dependency for wl-screenrec 2025-08-24 16:52:21 +02:00
David Heinemeier Hansson
a391b64e61 Install wl-screenrec as a just-in-time dependence 2025-08-24 16:51:20 +02:00
David Heinemeier Hansson
028c07d016 Install tzupdate on demand 2025-08-24 16:36:10 +02:00
David Heinemeier Hansson
4fd6a110ea Use non-AUR versions 2025-08-24 16:35:59 +02:00
David Heinemeier Hansson
92a491fd47 Need to install jq for the pkg-repos-accessible to work 2025-08-24 16:00:22 +02:00
Andreas Nigg
8b192c30e1 Fix installation command for ufw-docker (#1035) 2025-08-24 15:58:02 +02:00
David Heinemeier Hansson
6826cad95b Simplify it 2025-08-24 15:55:18 +02:00
David Heinemeier Hansson
1e46882fd8 Fix repo accessible check 2025-08-24 15:53:54 +02:00
Ryan Hughes
b0acd0b5e8 Update efibootmgr regex to match nvme + sata + vdisk 2025-08-24 15:50:50 +02:00
David Heinemeier Hansson
24682aea8c Add progressive backoffs to the repo retrying 2025-08-24 14:02:43 +02:00
Ryan Hughes
bb43d719e6 Fix fido2 and fprint auth flow (#635)
* Restructure fido2 / fprint to add to sudo and polkit

* Add migration

* Fix migration
2025-08-24 13:41:11 +02:00
Jarek
c4b32c047a Add omarchy-setup-cloudflare-dns script (#752)
* Add omarchy-setup-cloudflare-dns script

Addresses issue #745 by providing user choice for DNS configuration.

Features:
- Makes Cloudflare DNS opt-in instead of forced default
- Preserves local development environments with DHCP option
- Includes custom DNS configuration support
- Provides backup/restore functionality
- Follows Omarchy naming conventions

Fixes #745

* Address DHH feedback on DNS configuration script

Changes based on maintainer review:
- Rename script to omarchy-setup-dns (more generic name)
- Remove /usr/local/bin installation (use PATH instead)
- Add migration to reset automatic Cloudflare DNS to DHCP
- Force DNS on physical interfaces only using systemd-networkd
- Exclude docker/virtual interfaces from forced DNS

Fixes local development environment issues while making Cloudflare DNS opt-in.

* Use timestamped backups and remove restore function

Follow Omarchy backup standards by using timestamped backup files
instead of fixed names. Remove restore function since backups now
have unpredictable names - users can manually restore if needed.

This matches the pattern used in omarchy-refresh-config.

* Add DNS over TLS support for enhanced security

Enable opportunistic DNS over TLS when using Cloudflare DNS. This
encrypts DNS queries when possible while falling back to regular DNS
if TLS isn't available, providing security without breaking compatibility.

Thanks to the suggestion in #696 for highlighting this improvement.

* Add certificate validation for DNS over TLS

The DNS servers now include their proper hostnames for certificate
validation (cloudflare-dns.com and dns.google). This ensures we're
actually talking to the real DNS servers when using encrypted DNS,
not some imposter.

Completes the implementation suggested in #696.

* Prevent backup file accumulation

Clean up old backup files before creating new ones to prevent the
accumulation of .bak.* files over time. Keeps only the most recent
backup while maintaining the timestamped naming pattern.

This ensures the system doesn't get cluttered with countless backup
files from repeated script runs.

* Simplify DNS setup script per review feedback

Reduced script complexity from 227 to 58 lines while maintaining core functionality.
Removed unnecessary backup system and systemd-networkd configuration.
Kept essential features: Cloudflare DNS with TLS, DHCP mode, and custom DNS option.
Script now follows established Omarchy conventions for simplicity and size.

* Allow setup from omarchy-menu

* Integrate into Omarchy Menu

* Align parameter

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-24 13:34:04 +02:00
David Heinemeier Hansson
f4ef8eca65 If it's going to be a while 2025-08-24 13:02:48 +02:00
Manuel
1d6d21e7b7 Changed Keybindings for resize active window to code syntax (#1029) 2025-08-24 12:52:24 +02:00
David Heinemeier Hansson
04fff555b8 Fixup the firewall install 2025-08-24 12:41:13 +02:00
David Heinemeier Hansson
aa32b147ad Ensure package repositories are available before installing or doing updates 2025-08-24 12:10:07 +02:00
David Heinemeier Hansson
6b3b93ded1 Add both arch mirror and AUR guard 2025-08-24 12:00:26 +02:00
David Heinemeier Hansson
9dbef029f6 Stronger AUR available guard 2025-08-24 11:57:23 +02:00
David Heinemeier Hansson
aaefc4f208 Add an availability shield for AUR 2025-08-24 11:54:19 +02:00
David Heinemeier Hansson
ccf13e5902 Don't need this update 2025-08-24 11:49:49 +02:00
David Heinemeier Hansson
9ed755b445 This will have to wait 2025-08-24 11:23:44 +02:00
David Heinemeier Hansson
42432ae462 Ensure we always unblock wifi/bluetooth when going to setup 2025-08-24 11:13:49 +02:00
David Heinemeier Hansson
438156e36f More protections 2025-08-24 11:10:06 +02:00
David Heinemeier Hansson
574d213c34 Ensure better trap behavior 2025-08-24 11:05:11 +02:00
David Heinemeier Hansson
7d61c19f69 Remove output for existing setups 2025-08-24 11:03:43 +02:00
David Heinemeier Hansson
69fe4ae997 Remove screen recording status until it is stable (#1032) 2025-08-24 11:00:30 +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
481 changed files with 5157 additions and 1936 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

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

@@ -0,0 +1,23 @@
name: Bug
description: Report a problem
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?
validations:
required: true

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

@@ -0,0 +1 @@
blank_issues_enabled: false

View File

@@ -0,0 +1,15 @@
name: Documentation
description: New pages or changes to existing
labels: [documentation]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What correction or addition do we need?
validations:
required: true

15
.github/ISSUE_TEMPLATE/enhancement.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: Enhancement
description: Feature or change
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Remember: Omarchy is an open source gift, not a product you bought from a vendor
- type: textarea
id: steps
attributes:
label: What do you need?
validations:
required: 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: 34 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: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 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: 26 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

View File

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

View File

@@ -6,7 +6,13 @@ BATTERY_THRESHOLD=10
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
get_battery_percentage() {
upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | grep -o '[0-9]\+%' | sed 's/%//'
upower -i "$(upower -e | grep 'BAT')" \
| awk -F: '/percentage/ {
gsub(/[%[:space:]]/, "", $2);
val=$2;
printf("%d\n", (val+0.5))
exit
}'
}
get_battery_state() {

View File

@@ -1,19 +1,50 @@
#!/bin/bash
# Find all the audio sinks but exit if there are none
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
focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
# Find current audio sink
current=$(wpctl status | sed -n '/Sinks:/,/Sources:/p' | grep '^\s*│\s*\*' | sed -E 's/^[^0-9]*([0-9]+)\..*/\1/')
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
sinks_count=$(echo "$sinks" | jq '. | length')
# Find the next sink (looping around in the list)
for i in "${!sinks[@]}"; do
[ "${sinks[$i]}" = "$current" ] && next=${sinks[$(((i + 1) % ${#sinks[@]}))]}
done
next=${next:-${sinks[0]}}
if [ "$sinks_count" -eq 0 ]; then
swayosd-client \
--monitor "$focused_monitor" \
--custom-message "No audio devices found"
exit 1
fi
# Set the next sink and ensure it's not muted
wpctl set-default "$next"
wpctl set-mute "$next" 0
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')
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"

19
bin/omarchy-cmd-first-run Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
set -e
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
if [[ -f "$FIRST_RUN_MODE" ]]; then
rm -f "$FIRST_RUN_MODE"
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"
sudo rm -f /etc/sudoers.d/first-run
bash "$OMARCHY_PATH/install/first-run/wifi.sh"
bash "$OMARCHY_PATH/install/first-run/welcome.sh"
fi

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

@@ -0,0 +1,9 @@
#!/bin/bash
for cmd in "$@"; do
if ! command -v "$cmd" &>/dev/null; then
exit 0
fi
done
exit 1

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

@@ -0,0 +1,7 @@
#!/bin/bash
for cmd in "$@"; do
command -v "$cmd" &>/dev/null || exit 1
done
exit 0

View File

@@ -8,25 +8,48 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1
fi
screenrecording() {
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
notify-send "Screen recording starting..." -t 1000
sleep 1
# Selects region or output
SCOPE="$1"
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@"
# Selects audio inclusion or not
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
if lspci | grep -qi 'nvidia'; then
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
else
wl-screenrec -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@"
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
fi
toggle_screenrecording_indicator
}
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
stop_screenrecording() {
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
elif [[ "$1" == "output" ]]; then
screenrecording
sleep 0.2 # ensures the process is actually dead before we check
toggle_screenrecording_indicator
}
toggle_screenrecording_indicator() {
pkill -RTMIN+8 waybar
}
screenrecording_active() {
pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null
}
if screenrecording_active; then
stop_screenrecording
elif [[ "$SCOPE" == "output" ]]; then
output=$(slurp -o) || exit 1
start_screenrecording -g "$output"
else
region=$(slurp) || exit 1
screenrecording -g "$region"
start_screenrecording -g "$region"
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,20 +1,29 @@
#!/bin/bash
if command -v tte &>/dev/null; then
while true; do
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" &
screensaver_in_focus() {
hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1
}
while pgrep -x tte >/dev/null; do
if read -n 1 -t 0.01; then
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
exit 0
fi
done
exit_screensaver() {
hyprctl keyword cursor:invisible false
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
exit 0
}
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
hyprctl keyword cursor:invisible true
while true; do
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) - 1)) --anchor-canvas c --anchor-text c \
"$effect" &
while pgrep -x tte >/dev/null; do
if read -n 1 -t 3 || ! screensaver_in_focus; then
exit_screensaver
fi
done
else
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
fi
done

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

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

View File

@@ -5,7 +5,13 @@ terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
shell_pid=$(pgrep -P "$terminal_pid" | head -n1)
if [[ -n $shell_pid ]]; then
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null
cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null)
if [[ -d $cwd ]]; then
echo "$cwd"
else
echo "$HOME"
fi
else
echo "$HOME"
fi

View File

@@ -1,6 +1,8 @@
#!/bin/bash
notify-send " Updating time and timezone..."
sudo systemctl restart systemd-timesyncd
sudo tzupdate
new_timezone=$(timedatectl show -p Timezone --value)
omarchy-restart-waybar
notify-send "Timezone has been set to $new_timezone"
notify-send " Time updated and timezone set to $new_timezone"

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

@@ -0,0 +1,28 @@
#!/bin/bash
# Drive, like /dev/nvme0, to display information about
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
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}'

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

@@ -0,0 +1,21 @@
#!/bin/bash
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,5 +0,0 @@
#!/bin/bash
if ! curl -s --connect-timeout 10 --head -A "omarchy-update" -o /dev/null "https://aur.archlinux.org/"; then
gum spin --spinner "globe" --title "The AUR package repository is currently unavailable, please try again later" -- sleep 2 && exit 1
fi

View File

@@ -1,3 +1,3 @@
#!/bin/bash
grep -oP 'family\s*=\s*"\K[^"]+' ~/.config/alacritty/alacritty.toml | head -n1
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1

View File

@@ -1,3 +1,3 @@
#!/bin/bash
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting' | sort -u
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omarchy' | sort -u

View File

@@ -4,7 +4,20 @@ font_name="$1"
if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
if fc-list | grep -iq "$font_name"; then
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
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/waybar/style.css
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
xmlstarlet ed -L \

View File

@@ -0,0 +1,13 @@
#!/bin/bash
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,12 @@
#!/bin/bash
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
fi
install_php() {
yay -Sy php composer php-sqlite --noconfirm
sudo pacman -S php composer php-sqlite xdebug --noconfirm
# Install Path for Composer
if [[ ":$PATH:" != *":$HOME/.config/composer/vendor/bin:"* ]]; then
@@ -28,22 +28,33 @@ install_php() {
"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
sudo sed -i "s/^;extension=${ext}/extension=${ext}/" "$php_ini_path"
done
}
install_node() {
echo -e "Installing Node.js...\n"
mise use --global node@lts
}
case "$1" in
ruby)
echo -e "Installing Ruby on Rails...\n"
omarchy-pkg-add libyaml
mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby
mise x ruby -- gem install rails --no-document
echo -e "\nYou can now run: rails new myproject"
;;
node)
echo -e "Installing Node.js...\n"
mise use --global node@lts
install_node
;;
bun)
echo -e "Installing Bun...\n"
@@ -64,13 +75,14 @@ php)
laravel)
echo -e "Installing PHP and Laravel...\n"
install_php
install_node
composer global require laravel/installer
echo -e "\nYou can now run: laravel new myproject"
;;
symfony)
echo -e "Installing PHP and Symfony...\n"
install_php
yay -S symfony-cli --noconfirm
omarchy-pkg-add symfony-cli
echo -e "\nYou can now run: symfony new --webapp myproject"
;;
python)
@@ -108,6 +120,7 @@ java)
zig)
echo -e "Installing Zig...\n"
mise use --global zig@latest
mise use -g zls@latest
;;
ocaml)
echo -e "Installing OCaml...\n"
@@ -120,4 +133,9 @@ dotnet)
echo -e "Installing .NET...\n"
mise use --global dotnet@latest
;;
clojure)
echo -e "Installing Clojure...\n"
omarchy-pkg-add rlwrap
mise use --global clojure@latest
;;
esac

View File

@@ -1,16 +1,23 @@
#!/bin/bash
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
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
for db in $choices; do
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 ;;
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=postgres17 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:17 ;;
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 ;;
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 ;;
esac
done
else
echo "No databases selected for installation."
fi

View File

@@ -1,9 +1,8 @@
#!/bin/bash
echo "Installing all dependencies..."
yay -S --noconfirm --needed \
dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-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."

View File

@@ -1,9 +1,5 @@
#!/bin/bash
echo "Adding multilib repository for 32-bit compatibility"
sudo sed -i '/^\s*#\[multilib\]/,/^$/{s/^\s*#//}' /etc/pacman.conf
sudo pacman -Sy
echo "Now pick dependencies matching your graphics card"
yay -S steam
sudo pacman -Syu --noconfirm steam
setsid gtk-launch steam >/dev/null 2>&1 &

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

@@ -0,0 +1,19 @@
#!/bin/bash
if (($# == 0)); then
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
exit 1
fi
package="$1"
# Install package
omarchy-pkg-add $package
# Set as default terminal
echo "Setting $package as new default terminal..."
sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default
# Relaunch is needed for new default to take effect
echo
gum confirm "Relaunch Hyprland to use new terminal?" && uwsm stop

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

@@ -0,0 +1,21 @@
#!/bin/bash
echo "Installing VSCode..."
omarchy-pkg-add visual-studio-code-bin
mkdir -p ~/.vscode
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
setsid gtk-launch code

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

@@ -0,0 +1,3 @@
#!/bin/bash
exec setsid uwsm-app -- alacritty --class=Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s'

View File

@@ -1,3 +1,12 @@
#!/bin/bash
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@
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) ]]; then
private_flag="--private-window"
else
private_flag="--incognito"
fi
exec setsid uwsm-app -- "$browser_exec" "${@/--private/$private_flag}"

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

@@ -0,0 +1,10 @@
#!/bin/bash
case "${EDITOR:-nvim}" in
nvim | vim | nano | micro | hx | helix)
exec setsid uwsm-app -- "$TERMINAL" -e "$EDITOR" "$@"
;;
*)
exec setsid uwsm-app -- "$EDITOR" "$@"
;;
esac

View File

@@ -0,0 +1,4 @@
#!/bin/bash
cmd="$*"
exec setsid uwsm-app -- alacritty -o font.size=9 --class=Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"

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

@@ -0,0 +1,16 @@
#!/bin/bash
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 $LAUNCH_COMMAND
fi

View File

@@ -0,0 +1,12 @@
#!/bin/bash
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,5 +1,10 @@
#!/bin/bash
# Exit early if we don't have the tte show
if ! command -v tte &>/dev/null; then
exit 1
fi
# Exit early if screensave is already running
pgrep -f "alacritty --class Screensaver" && exit 0
@@ -12,6 +17,8 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m
# FIXME: Find a way to make this generic where we it can work for kitty + ghostty
hyprctl dispatch exec -- \
alacritty --class Screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \

View File

@@ -3,8 +3,8 @@
browser=$(xdg-settings get default-web-browser)
case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-browser*) ;;
*) browser="chromium.desktop" ;;
esac
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,/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}"

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

@@ -0,0 +1,3 @@
#!/bin/bash
exec setsid uwsm-app -- "$TERMINAL" --class=Impala -e impala "$@"

View File

@@ -2,6 +2,21 @@
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() {
local prompt="$1"
local options="$2"
@@ -22,28 +37,40 @@ menu() {
}
terminal() {
alacritty --class Omarchy -e "$@"
alacritty --class=Omarchy -e "$@"
}
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"
alacritty -e nvim "$1"
omarchy-launch-editor "$1"
}
install() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2"
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2"
}
install_and_launch() {
present_terminal "echo 'Installing $1...'; yay -Sy --noconfirm $2 && setsid gtk-launch $3"
present_terminal "echo 'Installing $1...'; sudo pacman -S --noconfirm $2 && setsid gtk-launch $3"
}
install_font() {
present_terminal "echo 'Installing $1...'; yay -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() {
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2"
}
aur_install_and_launch() {
present_terminal "echo 'Installing $1 from AUR...'; yay -S --noconfirm $2 && setsid gtk-launch $3"
}
show_learn_menu() {
@@ -58,41 +85,21 @@ show_learn_menu() {
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
*Font*) show_font_menu ;;
*Background*) omarchy-theme-bg-next ;;
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;;
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;;
show_trigger_menu() {
case $(menu "Trigger" " Capture\n Share\n󰔎 Toggle") in
*Capture*) show_capture_menu ;;
*Share*) show_share_menu ;;
*Toggle*) show_toggle_menu ;;
*) show_main_menu ;;
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() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) show_screenshot_menu ;;
*Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) show_main_menu ;;
*) show_trigger_menu ;;
esac
}
@@ -106,40 +113,88 @@ show_screenshot_menu() {
}
show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Display") in
case $(menu "Screenrecord" " Region\n Region + Audio\n Display\n Display + Audio") in
*"Region + Audio"*) omarchy-cmd-screenrecord region audio ;;
*Region*) omarchy-cmd-screenrecord ;;
*"Display + Audio"*) omarchy-cmd-screenrecord output audio ;;
*Display*) omarchy-cmd-screenrecord output ;;
*) show_capture_menu ;;
esac
}
show_share_menu() {
case $(menu "Share" " Clipboard\n File \n Folder") in
*Clipboard*) terminal bash -c "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
}
show_toggle_menu() {
case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in
*Screensaver*) omarchy-toggle-screensaver ;;
*Nightlight*) omarchy-toggle-nightlight ;;
*Idle*) omarchy-toggle-idle ;;
*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 ;;
esac
}
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
back_to show_style_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
back_to show_style_menu
else
omarchy-font-set "$theme"
fi
}
show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n Config\n󰈷 Fingerprint\n Fido2"
options="$options\n Defaults\n󰱔 DNS\n Security\n Config"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
*Wifi*) alacritty --class=Impala -e bash -c "rfkill unblock wifi; impala" ;;
*Bluetooth*) blueberry ;;
*Audio*) $TERMINAL --class=Wiremix -e wiremix ;;
*Wifi*)
rfkill unblock wifi
omarchy-launch-wifi
;;
*Bluetooth*)
rfkill unblock bluetooth
blueberry
;;
*Power*) show_setup_power_menu ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;;
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
*Input*) open_in_editor ~/.config/hypr/input.conf ;;
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
*DNS*) present_terminal omarchy-setup-dns ;;
*Security*) show_setup_security_menu ;;
*Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_main_menu ;;
esac
}
@@ -148,7 +203,7 @@ show_setup_power_menu() {
profile=$(menu "Power Profile" "$(omarchy-powerprofiles-list)" "" "$(powerprofilesctl get)")
if [[ "$profile" == "CNCLD" || -z "$profile" ]]; then
show_main_menu
back_to show_setup_menu
else
powerprofilesctl set "$profile"
fi
@@ -156,27 +211,37 @@ show_setup_power_menu() {
show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;;
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;;
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;;
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;;
*Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
*Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
*Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
*Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
*Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
*Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
*) show_main_menu ;;
esac
}
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_install_menu() {
case $(menu "Install" "󰣇 Package\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 Gaming") in
*Package*) terminal omarchy-pkg-install ;;
*AUR*) terminal omarchy-pkg-aur-install ;;
*Web*) present_terminal omarchy-webapp-install ;;
*TUI*) present_terminal omarchy-tui-install ;;
*Service*) show_install_service_menu ;;
*Style*) show_install_style_menu ;;
*Development*) show_install_development_menu ;;
*Editor*) show_install_editor_menu ;;
*Terminal*) show_install_terminal_menu ;;
*AI*) show_install_ai_menu ;;
*Gaming*) show_install_gaming_menu ;;
*) show_main_menu ;;
@@ -184,42 +249,61 @@ show_install_menu() {
}
show_install_service_menu() {
case $(menu "Install" "󱨑 Firewall\n Dropbox\n Tailscale") in
*Firewall*) present_terminal omarchy-install-firewall ;;
case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden\n Chromium Account") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*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 ;;
esac
}
show_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix") in
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
*VSCode*) present_terminal omarchy-install-vscode ;;
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*Sublime*) aur_install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
*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 ;;
esac
}
show_install_ai_menu() {
case $(menu "Install" "󱚤 Claude Code\n󱚤 Gemini\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in
ollama_pkg=$(
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
(command -v rocminfo &>/dev/null && echo ollama-rocm) ||
echo ollama
)
case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex [AUR]\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in
*Claude*) install "Claude Code" "claude-code" ;;
*Gemini*) install "Gemini" "gemini-cli-bin" ;;
*Cursor*) aur_install "Cursor CLI" "cursor-cli" ;;
*OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;;
*Gemini*) aur_install "Gemini" "gemini-cli" ;;
*Studio*) install "LM Studio" "lmstudio" ;;
*Ollama*) install "Ollama" "ollama" ;;
*Ollama*) install "Ollama" $ollama_pkg ;;
*Crush*) install "Crush" "crush-bin" ;;
*opencode*) install "opencode" "opencode-bin" ;;
*opencode*) install "opencode" "opencode" ;;
*) show_install_menu ;;
esac
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch\n󰍳 Minecraft") in
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in
*Steam*) present_terminal omarchy-install-steam ;;
*RetroArch*) install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) aur_install_and_launch "Minecraft [AUR]" "minecraft-launcher" "minecraft-launcher" ;;
*) show_install_menu ;;
esac
}
@@ -244,7 +328,7 @@ show_install_font_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" ;;
*Docker*) present_terminal omarchy-install-docker-dbs ;;
*JavaScript*) show_install_javascript_menu ;;
@@ -257,6 +341,7 @@ show_install_development_menu() {
*Java*) present_terminal "omarchy-install-dev-env java" ;;
*NET*) present_terminal "omarchy-install-dev-env dotnet" ;;
*OCaml*) present_terminal "omarchy-install-dev-env ocaml" ;;
*Clojure*) present_terminal "omarchy-install-dev-env clojure" ;;
*) show_install_menu ;;
esac
}
@@ -300,16 +385,26 @@ show_remove_menu() {
}
show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Config\n󰸌 Themes\n Process\n Timezone") in
case $(menu "Update" " Omarchy\n Branch\n Config\n󰸌 Extra Themes\n Process\n󰇅 Hardware\n Password\n Timezone") in
*Omarchy*) present_terminal omarchy-update ;;
*Branch*) show_update_branch_menu ;;
*Config*) show_update_config_menu ;;
*Themes*) present_terminal omarchy-theme-update ;;
*Process*) show_update_process_menu ;;
*Hardware*) show_update_hardware_menu ;;
*Timezone*) omarchy-cmd-tzupdate ;;
*Password*) show_update_password_menu ;;
*) show_main_menu ;;
esac
}
show_update_branch_menu() {
case $(menu "Branch" "master\ndev" "" "$(omarchy-version-branch)") in
*master*) present_terminal "omarchy-update-branch master" ;;
*dev*) present_terminal "omarchy-update-branch dev" ;;
*) show_update_menu ;;
esac
}
show_update_process_menu() {
case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in
*Hypridle*) omarchy-restart-hypridle ;;
@@ -317,7 +412,7 @@ show_update_process_menu() {
*Swayosd*) omarchy-restart-swayosd ;;
*Walker*) omarchy-restart-walker ;;
*Waybar*) omarchy-restart-waybar ;;
*) show_main_menu ;;
*) show_update_menu ;;
esac
}
@@ -331,7 +426,24 @@ show_update_config_menu() {
*Swayosd*) present_terminal omarchy-refresh-swayosd ;;
*Walker*) present_terminal omarchy-refresh-walker ;;
*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
}
@@ -340,37 +452,39 @@ show_system_menu() {
*Lock*) omarchy-lock-screen ;;
*Screensaver*) omarchy-launch-screensaver force ;;
*Suspend*) systemctl suspend ;;
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
*) show_main_menu ;;
*Relaunch*) omarchy-state clear relaunch-required && sudo systemctl restart sddm ;;
*Restart*) omarchy-state clear re*-required && systemctl reboot ;;
*Shutdown*) omarchy-state clear re*-required && systemctl poweroff ;;
*) back_to show_main_menu ;;
esac
}
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() {
case "${1,,}" in
*apps*) walker -p "Launch…" ;;
*learn*) show_learn_menu ;;
*trigger*) show_trigger_menu ;;
*share*) show_share_menu ;;
*style*) show_style_menu ;;
*theme*) show_theme_menu ;;
*capture*) show_capture_menu ;;
*screenshot*) show_screenshot_menu ;;
*screenrecord*) show_screenrecord_menu ;;
*toggle*) show_toggle_menu ;;
*setup*) show_setup_menu ;;
*power*) show_setup_power_menu ;;
*install*) show_install_menu ;;
*remove*) show_remove_menu ;;
*update*) show_update_menu ;;
*about*) omarchy-launch-about ;;
*system*) show_system_menu ;;
*about*) terminal bash -c 'fastfetch; read -n 1 -s' ;;
esac
}
if [[ -n "$1" ]]; then
BACK_TO_EXIT=true
go_to_menu "$1"
else
show_main_menu

View File

@@ -3,6 +3,69 @@
# A script to display Hyprland keybindings defined in your configuration
# 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}"
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
#
# Also do some pre-processing:
@@ -11,30 +74,31 @@
# - Map numeric modifier key mask to a textual rendition
# - Output comma-separated values that the parser can understand
dynamic_bindings() {
hyprctl -j binds | \
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \
hyprctl -j binds |
jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' |
sed -r \
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/' \
-e 's/^73,/SUPER SHIFT ALT,/' \
-e 's/^76,/SUPER CTRL ALT,/' \
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
-e 's/null//' \
-e 's,~/.local/share/omarchy/bin/,,' \
-e 's,uwsm app -- ,,' \
-e 's,uwsm-app -- ,,' \
-e 's/@0//' \
-e 's/,@/,code:/' \
-e 's/^0,/,/' \
-e 's/^1,/SHIFT,/' \
-e 's/^4,/CTRL,/' \
-e 's/^5,/SHIFT CTRL,/' \
-e 's/^8,/ALT,/' \
-e 's/^9,/SHIFT ALT,/' \
-e 's/^12,/CTRL ALT,/' \
-e 's/^13,/SHIFT CTRL ALT,/' \
-e 's/^64,/SUPER,/' \
-e 's/^65,/SUPER SHIFT,/' \
-e 's/^68,/SUPER CTRL,/' \
-e 's/^69,/SUPER SHIFT CTRL,/' \
-e 's/^72,/SUPER ALT,/' \
-e 's/^73,/SUPER SHIFT ALT,/' \
-e 's/^76,/SUPER CTRL ALT,/' \
-e 's/^77,/SUPER SHIFT CTRL ALT,/'
}
# Parse and format keybindings
@@ -83,7 +147,13 @@ parse_bindings() {
}'
}
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings'
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
build_keymap_cache
dynamic_bindings |
sort -u |
parse_keycodes |
parse_bindings |
walker --dmenu --theme keybindings -p 'Keybindings' -w 800 -h "$menu_height"

View File

@@ -1,18 +1,27 @@
#!/bin/bash
set -e
# Where we store an empty file for each migration that has already been performed.
STATE_DIR="$HOME/.local/state/omarchy/migrations"
mkdir -p "$STATE_DIR"
# Skipped migrations are tracked separately
mkdir -p "$STATE_DIR/skipped"
# Run any pending migrations
for file in ~/.local/share/omarchy/migrations/*.sh; do
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"
source $file
touch "$STATE_DIR/$filename"
if bash $file; then
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
done

View File

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

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

@@ -0,0 +1,13 @@
#!/bin/bash
sudo pacman -S --noconfirm --needed "$@" || exit 1
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

4
bin/omarchy-pkg-aur-accessible Executable file
View File

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

24
bin/omarchy-pkg-aur-install Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
fzf_args=(
--multi
--preview 'yay -Siia {1}'
--preview-label='alt-p: toggle description, alt-b/B: toggle PKGBUILD, alt-j/k: scroll, tab: multi-select, F11: maximize'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
--bind 'alt-p:toggle-preview'
--bind 'alt-d:preview-half-page-down,alt-u:preview-half-page-up'
--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'
)
pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs yay -S --noconfirm
sudo updatedb
omarchy-show-done
fi

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

@@ -0,0 +1,7 @@
#!/bin/bash
for pkg in "$@"; do
if pacman -Q "$pkg" &>/dev/null; then
sudo pacman -Rns --noconfirm "$pkg"
fi
done

7
bin/omarchy-pkg-ignored Executable file
View File

@@ -0,0 +1,7 @@
#!/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,10 +1,8 @@
#!/bin/bash
set -e
fzf_args=(
--multi
--preview 'yay -Sii {1}'
--preview 'pacman -Sii {1}'
--preview-label='alt-p: toggle description, alt-j/k: scroll, tab: multi-select, F11: maximize'
--preview-label-pos='bottom'
--preview-window 'down:65%:wrap'
@@ -14,11 +12,10 @@ fzf_args=(
--color 'pointer:green,marker:green'
)
pkg_names=$(yay -Slq | fzf "${fzf_args[@]}")
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs yay -Sy --noconfirm
sudo updatedb
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
omarchy-show-done
fi

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

@@ -0,0 +1,9 @@
#!/bin/bash
for pkg in "$@"; do
if ! pacman -Q "$pkg" &>/dev/null; then
exit 0
fi
done
exit 1

7
bin/omarchy-pkg-pinned Executable file
View File

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

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

@@ -0,0 +1,7 @@
#!/bin/bash
for pkg in "$@"; do
pacman -Q "$pkg" &>/dev/null || exit 1
done
exit 0

View File

@@ -16,7 +16,6 @@ pkg_names=$(yay -Qqe | fzf "${fzf_args[@]}")
if [[ -n "$pkg_names" ]]; then
# Convert newline-separated selections to space-separated for yay
echo "$pkg_names" | tr '\n' ' ' | xargs yay -Rns --noconfirm
sudo updatedb
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -Rns --noconfirm
omarchy-show-done
fi

View File

@@ -10,9 +10,4 @@ mkdir -p ~/.local/share/applications
cp ~/.local/share/omarchy/applications/*.desktop ~/.local/share/applications/
cp ~/.local/share/omarchy/applications/hidden/*.desktop ~/.local/share/applications/
# Only copy xtras if user is not in bare mode
if [[ ! -f ~/.local/state/omarchy/bare.mode ]] && [ -z "$OMARCHY_BARE" ]; then
cp ~/.local/share/omarchy/applications/xtras/*.desktop ~/.local/share/applications/
fi
update-desktop-database ~/.local/share/applications

3
bin/omarchy-refresh-fastfetch Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
omarchy-refresh-config fastfetch/config.jsonc

View File

@@ -0,0 +1,3 @@
#!/bin/bash
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist

View File

@@ -1,6 +1,10 @@
#!/bin/bash
if [[ "$1" == "-y" ]] || gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme omarchy
if command -v limine-mkinitcpio &>/dev/null; then
sudo limine-mkinitcpio
else
sudo mkinitcpio -P
fi

View File

@@ -1,4 +1,4 @@
#!/bin/bash
echo "Resetting sudo lockout for user: $USER"
# Resetting sudo lockout for user
su -c "faillock --reset --user $USER"

View File

@@ -1,4 +1,4 @@
#!/bin/bash
pkill -x $1
setsid uwsm app -- $1 >/dev/null 2>&1 &
setsid uwsm-app -- $1 >/dev/null 2>&1 &

5
bin/omarchy-restart-bluetooth Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
echo -e "Unblocking bluetooth...\n"
rfkill unblock bluetooth
rfkill list bluetooth

4
bin/omarchy-restart-pipewire Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
echo -e "Restarting pipewire audio service...\n"
systemctl --user restart pipewire.service

View File

@@ -1,7 +1,7 @@
#!/bin/bash
pkill walker
# FIXME: Reenable the walker service once the memory leak has been fixed
# FIXME: Just deal with the memory leak for now.
# See https://github.com/basecamp/omarchy/issues/698
# setsid uwsm app -- walker --gapplication-service &
setsid uwsm-app -- walker --gapplication-service &
echo # Always end in success so we don't terminate further running

5
bin/omarchy-restart-wifi Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
echo -e "Unblocking wifi...\n"
rfkill unblock wifi
rfkill list wifi

87
bin/omarchy-setup-dns Executable file
View File

@@ -0,0 +1,87 @@
#!/bin/bash
if [[ -z $1 ]]; then
dns=$(gum choose --height 5 --header "Select DNS provider" Cloudflare DHCP Custom)
else
dns=$1
fi
case "$dns" in
Cloudflare)
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com
FallbackDNS=9.9.9.9 149.112.112.112
DNSOverTLS=opportunistic
EOF
# Ensure network interfaces don't override our DNS settings
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
# Add UseDNS=no to DHCPv4 section if not present
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
fi
# Add UseDNS=no to IPv6AcceptRA section if present
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
fi
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
DHCP)
sudo tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve]
DNSOverTLS=no
EOF
# Allow network interfaces to use DHCP DNS
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
sudo sed -i '/^UseDNS=no/d' "$file"
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
Custom)
echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):"
read -r dns_servers
if [[ -z "$dns_servers" ]]; then
echo "Error: No DNS servers provided."
exit 1
fi
sudo tee /etc/systemd/resolved.conf >/dev/null <<EOF
[Resolve]
DNS=$dns_servers
FallbackDNS=9.9.9.9 149.112.112.112
EOF
# Ensure network interfaces don't override our DNS settings
for file in /etc/systemd/network/*.network; do
[[ -f "$file" ]] || continue
if ! grep -q "^\[DHCPv4\]" "$file"; then continue; fi
# Add UseDNS=no to DHCPv4 section if not present
if ! sed -n '/^\[DHCPv4\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[DHCPv4\]/a UseDNS=no' "$file"
fi
# Add UseDNS=no to IPv6AcceptRA section if present
if grep -q "^\[IPv6AcceptRA\]" "$file" && ! sed -n '/^\[IPv6AcceptRA\]/,/^\[/p' "$file" | grep -q "^UseDNS="; then
sudo sed -i '/^\[IPv6AcceptRA\]/a UseDNS=no' "$file"
fi
done
sudo systemctl restart systemd-networkd systemd-resolved
;;
esac

View File

@@ -1,39 +1,127 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your Fido2 device from sudo authentication.\n\e[0m"
yay -Rns --noconfirm libfido2 pam-u2f
sudo rm -rf /etc/fido2
sudo sed -i '\|^auth[[:space:]]\+sufficient[[:space:]]\+pam_u2f\.so[[:space:]]\+cue[[:space:]]\+authfile=/etc/fido2/fido2$|d' /etc/pam.d/sudo
echo -e "\e[32m\nYou've successfully removed the fido2 device setup.\e[0m"
else
echo -e "\e[32mLet's setup your Fido2 device for sudo authentication.\n\e[0m"
yay -S --noconfirm --needed libfido2 pam-u2f
set -e
tokens=$(fido2-token -L)
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${YELLOW}$1${NC}"
}
check_fido2_hardware() {
tokens=$(fido2-token -L 2>/dev/null)
if [ -z "$tokens" ]; then
echo -e "\e[31m\nNo fido2 device detected. Plug it in, you may have to unlock it as well\e[0m"
else
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m"
pamu2fcfg >/tmp/fido2 # This needs to run as the user
if [ $? -ne 0 ]; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
exit 1
fi
print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
return 1
fi
return 0
}
setup_pam_config() {
# Configure sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
print_info "Configuring sudo for FIDO2 authentication..."
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
# Configure polkit
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then
print_info "Configuring polkit for FIDO2 authentication..."
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1
elif [ ! -f /etc/pam.d/polkit-1 ]; then
print_info "Creating polkit configuration with FIDO2 authentication..."
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
}
remove_pam_config() {
# Remove from sudo
if grep -q pam_u2f.so /etc/pam.d/sudo; then
print_info "Removing FIDO2 authentication from sudo..."
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo
fi
# Remove from polkit
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then
print_info "Removing FIDO2 authentication from polkit..."
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
fi
}
if [[ "--remove" == "$1" ]]; then
print_success "Removing FIDO2 device from authentication.\n"
# Remove PAM configuration
remove_pam_config
# Remove FIDO2 configuration
if [ -d /etc/fido2 ]; then
print_info "Removing FIDO2 configuration..."
sudo rm -rf /etc/fido2
fi
# Uninstall packages
print_info "Removing FIDO2 packages..."
sudo pacman -Rns --noconfirm libfido2 pam-u2f
print_success "FIDO2 authentication has been completely removed."
else
print_success "Setting up FIDO2 device for authentication.\n"
# Install required packages
print_info "Installing required packages..."
sudo pacman -S --noconfirm --needed libfido2 pam-u2f
if ! check_fido2_hardware; then
exit 1
fi
# Create the pamu2fcfg file
if [ ! -f /etc/fido2/fido2 ]; then
sudo mkdir -p /etc/fido2
print_success "\nLet's setup your device by confirming on the device now."
print_info "Touch your FIDO2 key when it lights up...\n"
if pamu2fcfg >/tmp/fido2; then
sudo mv /tmp/fido2 /etc/fido2/fido2
print_success "FIDO2 device registered successfully!"
else
print_error "\nFIDO2 registration failed. Please try again."
exit 1
fi
else
print_info "FIDO2 device already registered."
fi
# Add fido2 auth as an option for sudo
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
fi
# Configure PAM
setup_pam_config
if ! sudo echo -e "\e[32m\nPerfect! Now you can use your fido2 device for sudo.\e[0m"; then
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
# Test with sudo
print_info "\nTesting FIDO2 authentication with sudo..."
print_info "Touch your FIDO2 key when prompted.\n"
if sudo echo "FIDO2 authentication test successful"; then
print_success "\nPerfect! FIDO2 authentication is now configured."
print_info "You can use your FIDO2 key for sudo and polkit authentication."
else
print_error "\nVerification failed. You may want to check your configuration."
fi
fi

View File

@@ -1,45 +1,112 @@
#!/bin/bash
if [[ "--remove" == "$1" ]]; then
echo -e "\e[32mLet's remove your fingerprint scanner from authentication.\n\e[0m"
yay -Rns --noconfirm fprintd
sudo rm -rf /etc/pam.d/polkit-1
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
echo -e "\e[32mYou've successfully removed the fingerprint setup.\e[0m"
else
echo -e "\e[32mLet's setup your fingerprint scanner for authentication.\n\e[0m"
yay -S --noconfirm --needed fprintd usbutils
set -e
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan'; then
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
else
# Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_info() {
echo -e "${YELLOW}$1${NC}"
}
check_fingerprint_hardware() {
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity|FPC'; then
print_error "\nNo fingerprint sensor detected."
return 1
fi
return 0
}
setup_pam_config() {
# Configure sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
print_info "Configuring sudo for fingerprint authentication..."
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Configure polkit
if [ -f /etc/pam.d/polkit-1 ] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then
print_info "Configuring polkit for fingerprint authentication..."
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1
elif [ ! -f /etc/pam.d/polkit-1 ]; then
print_info "Creating polkit configuration with fingerprint authentication..."
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth sufficient pam_fprintd.so
auth required pam_unix.so
auth optional pam_fprintd.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
EOF
fi
fi
}
# Enroll the first finger
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
sudo fprintd-enroll $USER
remove_pam_config() {
# Remove from sudo
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
print_info "Removing fingerprint authentication from sudo..."
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
fi
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
# Remove from polkit
if [ -f /etc/pam.d/polkit-1 ] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then
print_info "Removing fingerprint authentication from polkit..."
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
fi
}
if [[ "--remove" == "$1" ]]; then
print_success "Removing fingerprint scanner from authentication.\n"
# Remove PAM configuration
remove_pam_config
# Uninstall packages
print_info "Removing fingerprint packages..."
sudo pacman -Rns --noconfirm fprintd
print_success "Fingerprint authentication has been completely removed."
else
print_success "Setting up fingerprint scanner for authentication.\n"
# Install required packages
print_info "Installing required packages..."
sudo pacman -S --noconfirm --needed fprintd usbutils
if ! check_fingerprint_hardware; then
exit 1
fi
# Configure PAM
setup_pam_config
# Enroll first fingerprint
print_success "\nLet's setup your right index finger as the first fingerprint."
print_info "Keep moving the finger around on sensor until the process completes.\n"
if sudo fprintd-enroll "$USER"; then
print_success "\nFingerprint enrolled successfully!"
# Verify
print_info "\nNow let's verify that it's working correctly.\n"
if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
print_success "\nPerfect! Fingerprint authentication is now configured."
print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
else
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
print_error "\nVerification failed. You may want to try enrolling again."
fi
else
print_error "\nEnrollment failed. Please try again."
exit 1
fi
fi

View File

@@ -9,17 +9,22 @@ if [[ -z $COMMAND ]]; then
fi
if ! command -v snapper &>/dev/null; then
echo "You need Snapper installed to be able to use omarchy-snapshot."
exit 127
exit 127 # omarchy-update can use this to just ignore if snapper is not available
fi
case "$COMMAND" in
create)
DESC="$(omarchy-version)"
for config in root home; do
echo -e "\e[32mCreate system snapshot\e[0m"
# Get existing snapper config names from CSV output
mapfile -t CONFIGS < <(sudo snapper --csvout list-configs | awk -F, 'NR>1 {print $1}')
for config in "${CONFIGS[@]}"; do
sudo snapper -c "$config" create -c number -d "$DESC"
done
echo
;;
restore)
sudo limine-snapper-restore

View File

@@ -1,64 +0,0 @@
#!/bin/bash
# Status indicator daemon for waybar
# Calls individual status scripts and caches results
STATE_DIR=~/.local/state/omarchy/status
DAEMON_PID_FILE="$STATE_DIR/daemon.pid"
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
mkdir -p "$STATE_DIR"
# Update all status files by calling individual scripts
update_all_status_files() {
"$SCRIPT_DIR/omarchy-status-dnd" >"$STATE_DIR/dnd"
"$SCRIPT_DIR/omarchy-status-nightlight" >"$STATE_DIR/nightlight"
"$SCRIPT_DIR/omarchy-status-recording" >"$STATE_DIR/recording"
"$SCRIPT_DIR/omarchy-status-idle" >"$STATE_DIR/idle"
}
# Generate hash for change detection
get_status_hash() {
echo "$(pgrep -c "mako|hyprsunset|wl-screenrec|wf-recorder|obs|hypridle" 2>/dev/null)$(makoctl mode 2>/dev/null | grep -c 'do-not-disturb')$(hyprctl hyprsunset temperature 2>/dev/null)"
}
# Start background monitoring daemon
start_daemon() {
if [ -f "$DAEMON_PID_FILE" ] && kill -0 $(cat "$DAEMON_PID_FILE") 2>/dev/null; then
return 0
fi
{
last_hash=""
while true; do
current_hash=$(get_status_hash)
if [ "$current_hash" != "$last_hash" ]; then
update_all_status_files
last_hash="$current_hash"
fi
sleep 0.5
done
} &
echo $! >"$DAEMON_PID_FILE"
}
# Main execution
MODULE="$1"
if [ -z "$MODULE" ]; then
echo "Usage: $0 [dnd|nightlight|recording|idle]"
exit 1
fi
start_daemon
# Return cached status for requested module
if [ -f "$STATE_DIR/$MODULE" ]; then
cat "$STATE_DIR/$MODULE"
else
update_all_status_files
cat "$STATE_DIR/$MODULE" 2>/dev/null || echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -1,9 +0,0 @@
#!/bin/bash
# DND status indicator
if makoctl mode 2>/dev/null | grep -q 'do-not-disturb'; then
echo '{"text": "󰂛", "tooltip": "Notifications silenced", "class": "status-dnd"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -1,9 +0,0 @@
#!/bin/bash
# Idle lock status indicator
if command -v hypridle >/dev/null 2>&1 && ! pgrep -x hypridle >/dev/null 2>&1; then
echo '{"text": "󱫖", "tooltip": "Idle lock disabled", "class": "status-idle"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -1,14 +0,0 @@
#!/bin/bash
# Nightlight status indicator
if pgrep -x hyprsunset >/dev/null 2>&1; then
temp=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+')
if [ -n "$temp" ] && [ "$temp" -lt 6000 ]; then
echo '{"text": "󰔎", "tooltip": "Night light active", "class": "status-nightlight"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -1,12 +0,0 @@
#!/bin/bash
# Recording status indicator
if pgrep -x wl-screenrec >/dev/null 2>&1 || \
pgrep -x wf-recorder >/dev/null 2>&1 || \
pgrep -x obs >/dev/null 2>&1 || \
pgrep -f "ffmpeg.*(x11grab|gdigrab|avfoundation)" >/dev/null 2>&1; then
echo '{"text": "󰻂", "tooltip": "Screen recording active", "class": "status-recording"}'
else
echo '{"text": "", "tooltip": "", "class": "hidden"}'
fi

View File

@@ -11,7 +11,7 @@ TOTAL=${#BACKGROUNDS[@]}
if [[ $TOTAL -eq 0 ]]; then
notify-send "No background was found for theme" -t 2000
pkill -x swaybg
setsid uwsm app -- swaybg --color '#000000' >/dev/null 2>&1 &
setsid uwsm-app -- swaybg --color '#000000' >/dev/null 2>&1 &
else
# Get current background from symlink
if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then
@@ -44,5 +44,5 @@ else
# Relaunch swaybg
pkill -x swaybg
setsid uwsm app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
fi

View File

@@ -1,10 +1,7 @@
#!/bin/bash
# omarchy-theme-set: Set a theme, specified by its name.
# Usage: omarchy-theme-set <theme-name>
if [[ -z "$1" && "$1" != "CNCLD" ]]; then
echo "Usage: omarchy-theme-set <theme-name>" >&2
if [[ -z $1 && $1 != "CNCLD" ]]; then
echo "Usage: omarchy-theme-set <theme-name>"
exit 1
fi
@@ -16,46 +13,27 @@ THEME_PATH="$THEMES_DIR/$THEME_NAME"
# Check if the theme entered exists
if [[ ! -d "$THEME_PATH" ]]; then
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2
exit 2
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR"
exit 1
fi
# Update theme symlinks
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
# Change gnome modes
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
else
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Change gnome icon theme color
if [[ -f ~/.config/omarchy/current/theme/icons.theme ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<~/.config/omarchy/current/theme/icons.theme)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
# Change Chromium colors
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]] && command -v chromium &>/dev/null; then
chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)"
else
# Use a default, neutral grey if theme doesn't have a color
chromium --no-startup-window --set-theme-color="28,32,39"
fi
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Change background with theme
omarchy-theme-bg-next
# Restart components to apply new theme
pkill -SIGUSR2 btop
omarchy-restart-waybar
omarchy-restart-swayosd
makoctl reload
hyprctl reload
pkill -SIGUSR2 btop
makoctl reload
# Set new background
omarchy-theme-bg-next
# Change gnome, browser, vscode, cursor themes
omarchy-theme-set-terminal
omarchy-theme-set-gnome
omarchy-theme-set-eza
omarchy-theme-set-browser
omarchy-theme-set-vscode
omarchy-theme-set-cursor

24
bin/omarchy-theme-set-browser Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
if [[ -f $CHROMIUM_THEME ]]; then
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${rgb//,/ })
else
# Use a default, neutral grey if theme doesn't have a color
THEME_RGB_COLOR="28,32,39"
THEME_HEX_COLOR="#1c2027"
fi
if omarchy-cmd-present chromium; then
rm -f /etc/chromium/policies/managed/color.json
chromium --no-startup-window --set-theme-color="$THEME_RGB_COLOR"
fi
if omarchy-cmd-present brave; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
brave --refresh-platform-policy --no-startup-window
fi
fi

4
bin/omarchy-theme-set-cursor Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
# Call the VSCode theme setter with Cursor-specific parameters
omarchy-theme-set-vscode cursor "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes" Cursor

7
bin/omarchy-theme-set-eza Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
else
rm -f ~/.config/eza/theme.yml
fi

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