Compare commits

..

453 Commits

Author SHA1 Message Date
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
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
Richard Macklin
c3af4b9469 Default OMARCHY_REF to master in boot.sh (#1030)
This will allow us to change GitHub's default branch to `dev`, so that
PRs will target the correct branch by default, but new installations
will still default to using the stable `master` branch.
2025-08-24 10:40:47 +02:00
David Heinemeier Hansson
ffe8997fad Pinta install seems to work fine now 2025-08-24 09:31:42 +02:00
David Heinemeier Hansson
e2611d9bc4 Rearrange options 2025-08-24 09:28:08 +02:00
David Heinemeier Hansson
266767df5f Show dust disk usage in reverse 2025-08-24 09:26:06 +02:00
David Heinemeier Hansson
eb4172a486 We now have audio settings in the setup menu 2025-08-24 09:24:00 +02:00
David Heinemeier Hansson
ca115b9061 Can't install firewall in chroot, so move it into its own service for now 2025-08-24 09:12:51 +02:00
David Heinemeier Hansson
ab09446971 Can't use chroot trap 2025-08-24 09:06:24 +02:00
David Heinemeier Hansson
af0f459a1a Try skipping this efibootmgr munging for a second 2025-08-24 08:46:34 +02:00
David Heinemeier Hansson
fbf9a19574 Show installation env for debugging 2025-08-24 07:40:16 +02:00
David Heinemeier Hansson
95139164a3 Skip all of powerprofilectl setup during CHROOT 2025-08-24 07:26:24 +02:00
David Heinemeier Hansson
2ae973108d Extract error trapping to its own file 2025-08-24 07:21:49 +02:00
David Heinemeier Hansson
aa0b44b7f4 Missing shebang 2025-08-24 07:20:45 +02:00
David Heinemeier Hansson
d9424b2bff Document what's missing 2025-08-24 07:09:45 +02:00
David Heinemeier Hansson
36a30dd01d Skip the battery monitor during chroot install for now 2025-08-24 07:09:08 +02:00
Ryan Hughes
82467892a3 Merge pull request #1020 from ryanrhughes/limine-fixes
Minor Limine / Snapper Tweaks and Fixes
2025-08-24 01:09:02 +02:00
Ryan Hughes
e138f7e8eb Set config files first 2025-08-24 00:18:10 +02:00
Ryan Hughes
0a75644f2d Less aggressive check 2025-08-24 00:01:36 +02:00
Ryan Hughes
3725f2d3b6 Everyone can have UKI 2025-08-24 00:01:23 +02:00
Ryan Hughes
0ebd62a32e Define boot path 2025-08-23 23:25:33 +02:00
Taha
31d97335fc Add Omarchy icon to waybar (#1017)
* Add Omarchy icon to waybar

* Add step to fonts.sh to install omarchy icon font

* Style and fixup

* Fixup installation of the omarchy font

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-08-23 23:22:50 +02:00
David Heinemeier Hansson
41a1fe6b21 Switch Zoom from shitty native app to better webapp
Have to compromise on 1080p but seems better than dealing with that
trash app.
2025-08-23 23:03:54 +02:00
David Heinemeier Hansson
91e686f1b2 Can't have nice things during arch-chroot for some reason! 2025-08-23 22:57:47 +02:00
David Heinemeier Hansson
75ac6910d4 Add back fastfetch which we lost when removing logging 2025-08-23 22:40:36 +02:00
David Heinemeier Hansson
b4b8788c14 Use something safe in the arch-chroot 2025-08-23 22:36:38 +02:00
David Heinemeier Hansson
76c94e2604 Breakup the omnibus config install 2025-08-23 22:31:42 +02:00
David Heinemeier Hansson
e59a98fb0b Don't fail if there 2025-08-23 22:21:56 +02:00
David Heinemeier Hansson
dee7e3e4a7 Ensure .config is there
Strange that this should be necessary for arch-chroot, but let's give it
a try
2025-08-23 22:21:28 +02:00
David Heinemeier Hansson
5a7b9292c8 Shorter 2025-08-23 21:41:15 +02:00
David Heinemeier Hansson
31ce6f689e Merge branch 'master' into dev 2025-08-23 21:29:49 +02:00
David Heinemeier Hansson
210481d758 Style 2025-08-23 21:21:00 +02:00
David Heinemeier Hansson
3bac37b21b Use the same state directory for status as everthing else 2025-08-23 21:21:00 +02:00
Ryan Hughes
1edbe89191 Merge pull request #1012 from ryanrhughes/limine-bios-support
Add Limine support for BIOS environments
2025-08-23 20:32:02 +02:00
Ryan Hughes
617e96234b Merge pull request #1010 from ryanrhughes/update-omarchy-snapshot
Make omarchy-snapshot exit if you don't have Snapper but continue update
2025-08-23 20:31:51 +02:00
Ryan Hughes
5873980703 Add efi checks 2025-08-23 20:25:46 +02:00
Ryan Hughes
b8cc8d8bc3 Move update up in case something goes wrong 2025-08-23 20:25:04 +02:00
David Heinemeier Hansson
455fe890ec Just rely on the ISO autostart to set it instead of detecting it 2025-08-23 20:23:08 +02:00
David Heinemeier Hansson
ccc8aa87d0 Improve presentation of failed command 2025-08-23 19:42:31 +02:00
Ryan Hughes
193797393f Exit if you don't have snapper but continue update 2025-08-23 19:16:47 +02:00
David Heinemeier Hansson
7056a3903a No longer need gum or tte as preflights
No more identification up front, no toast during initial install
2025-08-23 19:04:20 +02:00
David Heinemeier Hansson
3880c49469 Logging is having issues, so let's skip until sorted (#1009) 2025-08-23 18:50:32 +02:00
Shawn Yeager
cc80782160 Add two new background images to theme catppuccin (#1008)
* add two new backgrounds with background color #181824

* replace 3rd background image
2025-08-23 16:50:49 +02:00
284 changed files with 1900 additions and 1340 deletions

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

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

View File

@@ -1,12 +0,0 @@
[Desktop Entry]
Name=Zoom
Comment=Zoom Video Conference
Exec=env QT_SCALE_FACTOR=2 /usr/bin/zoom %U
Icon=Zoom
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
StartupWMClass=zoom
MimeType=x-scheme-handler/zoommtg;x-scheme-handler/zoomus;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/zoomphonecall;x-scheme-handler/zoomphonesms;x-scheme-handler/zoomcontactcentercall;application/x-zoom
X-KDE-Protocols=zoommtg;zoomus;tel;callto;zoomphonecall;zoomphonesms;zoomcontactcentercall;

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

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

@@ -0,0 +1,12 @@
#!/bin/bash
set -e
FIRST_RUN_MODE=~/.local/state/omarchy/first-run.mode
if [[ -f "$FIRST_RUN_MODE" ]]; then
rm -f "$FIRST_RUN_MODE"
$OMARCHY_PATH/install/first-run/battery-monitor.sh
$OMARCHY_PATH/install/first-run/firewall.sh
sudo rm -f /etc/sudoers.d/first-run
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,15 +8,21 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1
fi
if [[ $2 == "audio" ]]; then
AUDIO="--audio"
else
AUDIO=""
fi
screenrecording() {
filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
notify-send "Screen recording starting..." -t 1000
sleep 1
if lspci | grep -Eqi 'nvidia|intel.*graphics'; then
wf-recorder -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@"
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
}

View File

@@ -1,20 +1,22 @@
#!/bin/bash
if command -v tte &>/dev/null; then
while true; do
function exit_screensaver {
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
exit 0
}
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
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" &
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
if read -n 1 -t 3; then
exit_screensaver
fi
done
done
else
gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2
fi
done

View File

@@ -8,7 +8,7 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1
fi
pkill slurp || hyprshot -m ${1:-region} --raw |
pkill slurp || hyprshot -m ${1:-region} --raw --freeze |
satty --filename - \
--output-filename "$OUTPUT_DIR/screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png" \
--early-exit \

View File

@@ -5,7 +5,7 @@ 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
readlink -f "/proc/$shell_pid/cwd" 2>/dev/null || echo "$HOME"
else
echo "$HOME"
fi

View File

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

@@ -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,11 +28,22 @@ 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"
@@ -42,8 +53,7 @@ ruby)
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 +74,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)
@@ -120,4 +131,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=("MariaDB" "MySQL" "Redis" "PostgreSQL" "MongoDB")
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, return to install, esc to cancel)") || main_menu
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB")
if [[ "$#" -eq 0 ]]; then
choices=$(printf "%s\n" "${options[@]}" | gum choose --no-limit --header "Select databases (space to select, 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,8 +1,7 @@
#!/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 &

View File

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

View File

@@ -1,3 +1,3 @@
#!/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[@]} $@
exec setsid uwsm app -- $(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$(xdg-settings get default-web-browser) 2>/dev/null | head -1) ${args[@]} $@

View File

@@ -0,0 +1,4 @@
#!/bin/bash
cmd="$*"
setsid alacritty --class Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"

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

View File

@@ -7,4 +7,4 @@ google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi*) ;;
*) 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}"

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 [[ "$DIRECT_ACCESS" == "true" ]]; then
exit 0
elif [[ -n "$parent_menu" ]]; then
"$parent_menu"
else
show_main_menu
fi
}
menu() {
local prompt="$1"
local options="$2"
@@ -26,7 +41,7 @@ terminal() {
}
present_terminal() {
alacritty --class Omarchy -e bash -c "omarchy-show-logo; eval \"$1\"; omarchy-show-done;"
omarchy-launch-floating-terminal-with-presentation $1
}
edit_in_nvim() {
@@ -35,15 +50,23 @@ edit_in_nvim() {
}
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'"
}
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() {
@@ -72,7 +95,7 @@ show_style_menu() {
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
back_to show_style_menu
else
omarchy-theme-set "$theme"
fi
@@ -81,7 +104,7 @@ show_theme_menu() {
show_font_menu() {
theme=$(menu "Font" "$(omarchy-font-list)" "-w 350" "$(omarchy-font-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
show_main_menu
back_to show_style_menu
else
omarchy-font-set "$theme"
fi
@@ -106,8 +129,10 @@ 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
@@ -127,16 +152,23 @@ 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󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2"
case $(menu "Setup" "$options") in
*Audio*) alacritty --class=Wiremix -e wiremix ;;
*Wifi*) alacritty --class=Impala -e bash -c "rfkill unblock wifi; impala" ;;
*Bluetooth*) blueberry ;;
*Wifi*)
rfkill unblock wifi
alacritty --class=Impala -e impala
;;
*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 ;;
*DNS*) present_terminal omarchy-setup-dns ;;
*Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
@@ -148,7 +180,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
@@ -169,8 +201,9 @@ show_setup_config_menu() {
}
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󱚤 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 ;;
@@ -184,41 +217,50 @@ show_install_menu() {
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale") in
case $(menu "Install" " Dropbox\n Tailscale\n󰟵 Bitwarden") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
*) show_install_menu ;;
esac
}
show_install_editor_menu() {
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix") in
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
*VSCode*) install_and_launch "VSCode" "visual-studio-code-bin" "code" ;;
*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_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󱚤 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" ;;
*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
}
@@ -243,7 +285,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 ;;
@@ -256,6 +298,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
}
@@ -299,12 +342,14 @@ show_remove_menu() {
}
show_update_menu() {
case $(menu "Update" "󰣇 Omarchy\n Config\n󰸌 Themes\n Process\n Timezone") in
case $(menu "Update" " Omarchy\n Config\n󰸌 Themes\n Process\n󰇅 Hardware\n Password\n Timezone") in
*Omarchy*) present_terminal omarchy-update ;;
*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
}
@@ -316,7 +361,7 @@ show_update_process_menu() {
*Swayosd*) omarchy-restart-swayosd ;;
*Walker*) omarchy-restart-walker ;;
*Waybar*) omarchy-restart-waybar ;;
*) show_main_menu ;;
*) show_update_menu ;;
esac
}
@@ -330,7 +375,23 @@ 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" "󱚾 Wi-Fi\n󰂯 Bluetooth") in
*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
}
@@ -342,7 +403,7 @@ show_system_menu() {
*Relaunch*) uwsm stop ;;
*Restart*) systemctl reboot ;;
*Shutdown*) systemctl poweroff ;;
*) show_main_menu ;;
*) back_to show_main_menu ;;
esac
}
@@ -361,15 +422,17 @@ go_to_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*) alacritty --class Omarchy -o font.size=9 -e bash -c 'fastfetch; read -n 1 -s' ;;
*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

@@ -83,7 +83,11 @@ parse_bindings() {
}'
}
monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height')
menu_height=$((monitor_height * 40 / 100))
dynamic_bindings | \
sort -u | \
parse_bindings | \
walker --dmenu --theme keybindings -p 'Keybindings'
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
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

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

@@ -0,0 +1,9 @@
#!/bin/bash
for pkg in "$@"; do
if ! pacman -Q "$pkg" &>/dev/null; then
sudo pacman -S --noconfirm "$pkg" || 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

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

@@ -0,0 +1,22 @@
#!/bin/bash
fzf_args=(
--multi
--preview 'yay -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'
--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'
--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,6 @@
#!/bin/bash
if [[ "$1" == "-y" ]] || gum confirm "Refresh Plymouth theme? This will replace your current startup screen with Omarchy defaults."; then
if [[ "$1" == "-y" ]]; then
sudo cp ~/.local/share/omarchy/default/plymouth/* /usr/share/plymouth/themes/omarchy/
sudo plymouth-set-default-theme -R omarchy
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"

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

@@ -0,0 +1,4 @@
#!/bin/bash
rfkill unblock bluetooth
rfkill list bluetooth

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

@@ -0,0 +1,4 @@
#!/bin/bash
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
sudo mv /tmp/fido2 /etc/fido2/fido2
print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
return 1
fi
return 0
}
# Add fido2 auth as an option for sudo
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
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"
# 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
# Configure PAM
setup_pam_config
# 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
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_fingerprint_hardware() {
if ! lsusb | grep -Eiq 'fingerprint|synaptics|goodix|elan|validity'; 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
# 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
# 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
}
# Enroll the first finger
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
sudo fprintd-enroll $USER
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
else
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
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
# 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
print_success "\nPerfect! Fingerprint authentication is now configured."
print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
else
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

@@ -8,13 +8,23 @@ if [[ -z $COMMAND ]]; then
exit 1
fi
if ! command -v snapper &>/dev/null; then
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="/tmp/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

@@ -40,11 +40,19 @@ else
fi
# Change Chromium colors
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]] && command -v chromium &>/dev/null; then
if command -v chromium &>/dev/null; then
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
chromium --no-startup-window --set-color-scheme="light"
else
chromium --no-startup-window --set-color-scheme="dark"
fi
if [[ -f ~/.config/omarchy/current/theme/chromium.theme ]]; then
chromium --no-startup-window --set-theme-color="$(<~/.config/omarchy/current/theme/chromium.theme)"
else
else
# Use a default, neutral grey if theme doesn't have a color
chromium --no-startup-window --set-theme-color="28,32,39"
fi
fi
# Trigger alacritty config reload

View File

@@ -3,8 +3,8 @@
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -ne 1 ]; then
# Find all web apps
if [ "$#" -eq 0 ]; then
# Find all TUIs
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*alacritty.*-e' "$file"; then
TUIS+=("$(basename "${file%.desktop}")")
@@ -14,23 +14,28 @@ if [ "$#" -ne 1 ]; then
if ((${#TUIS[@]})); then
IFS=$'\n' SORTED_TUIS=($(sort <<<"${TUIS[*]}"))
unset IFS
APP_NAME=$(gum choose --header "Select TUI to remove..." "${SORTED_TUIS[@]}")
APP_NAMES_STRING=$(gum choose --no-limit --header "Select TUI to remove..." --selected-prefix="✗ " "${SORTED_TUIS[@]}")
# Convert newline-separated string to array
APP_NAMES=()
while IFS= read -r line; do
[[ -n "$line" ]] && APP_NAMES+=("$line")
done <<< "$APP_NAMES_STRING"
else
echo "No TUIs to remove."
exit 1
fi
else
APP_NAME="$1"
# Use array to preserve spaces in app names
APP_NAMES=("$@")
fi
if [[ -z "$APP_NAME" ]]; then
echo "You must provide TUI name."
if [[ ${#APP_NAMES[@]} -eq 0 ]]; then
echo "You must provide TUI names."
exit 1
fi
rm "$DESKTOP_DIR/$APP_NAME.desktop"
rm "$ICON_DIR/$APP_NAME.png"
if [ "$#" -ne 1 ]; then
echo -e "Removed $APP_NAME\n"
fi
for APP_NAME in "${APP_NAMES[@]}"; do
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
rm -f "$ICON_DIR/$APP_NAME.png"
echo "Removed $APP_NAME"
done

View File

@@ -2,7 +2,7 @@
set -e
omarchy-snapshot create
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-migrate
omarchy-update-system-pkgs

View File

@@ -1,13 +1,18 @@
#!/bin/bash
# Ensure remote is reachable
if ! git -C "$OMARCHY_PATH" ls-remote &>/dev/null; then
echo "Error: Unable to reach remote repository."
# Get remote tag
latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
if [[ -z "$latest_tag" ]]; then
echo "Error: Could not retrieve latest tag."
exit 1
fi
latest_tag=$(git -C "$OMARCHY_PATH" ls-remote --tags origin | grep -v "{}" | awk '{print $2}' | sed 's#refs/tags/##' | sort -V | tail -n 1)
# Get local tag
current_tag=$(git -C "$OMARCHY_PATH" describe --tags $(git -C "$OMARCHY_PATH" rev-list --tags --max-count=1))
if [[ -z "$current_tag" ]]; then
echo "Error: Could not retrieve current tag."
exit 1
fi
if [[ "$current_tag" != "$latest_tag" ]]; then
echo "Omarchy update available ($latest_tag)"

View File

@@ -1,9 +1,6 @@
#!/bin/bash
# Check for kernel package updates since last boot
boot_time=$(date -d "$(uptime -s)" '+%Y-%m-%d %H:%M')
recent_kernel_updates=$(awk -v boot_time="$boot_time" '$0 >="["boot_time' /var/log/pacman.log | grep -E "\[ALPM\] (upgraded|installed) (linux|linux-zen|linux-lts|linux-hardened)\b" || true)
if [ -n "$recent_kernel_updates" ]; then
if [ "$(uname -r | sed 's/-arch/\.arch/')" != "$(pacman -Q linux | awk '{print $2}')" ]; then
gum confirm "Linux kernel has been updated. Reboot?" && omarchy-state clear re*-required && sudo reboot now
elif [ -f "$HOME/.local/state/omarchy/reboot-required" ]; then

View File

@@ -1,5 +1,31 @@
#!/bin/bash
# Used in package emergencies if a bad package has been pushed and we can't revoke.
# Requires manually installing the good package using sudo pacman -U <url>
ignored_packages=$(omarchy-pkg-ignored)
echo -e "\e[32m\nUpdate system packages\e[0m"
yay -Syu --noconfirm
echo
[[ -n $ignored_packages ]] && echo "sudo pacman -Syu --noconfirm --ignore \"$ignored_packages\""
sudo pacman -Syu --noconfirm --ignore "$ignored_packages"
# Update AUR packages if any are installed
if pacman -Qem >/dev/null; then
if omarchy-pkg-aur-accessible; then
echo -e "\e[32m\nUpdate AUR packages\e[0m"
[[ -n $ignored_packages ]] && echo "yay -Sua --noconfirm --ignore \"$ignored_packages\""
yay -Sua --noconfirm --ignore "$ignored_packages"
echo
else
echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m"
echo
fi
fi
orphans=$(pacman -Qtdq)
if [[ -n $orphans ]]; then
echo -e "\e[32m\nRemove orphan system packages\e[0m"
for pkg in $orphans; do
sudo pacman -Rs --noconfirm "$pkg" || true
done
echo
fi

3
bin/omarchy-version-branch Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
echo $(git -C "$OMARCHY_PATH" rev-parse --abbrev-ref HEAD)

View File

@@ -3,7 +3,7 @@
ICON_DIR="$HOME/.local/share/applications/icons"
DESKTOP_DIR="$HOME/.local/share/applications/"
if [ "$#" -ne 1 ]; then
if [ "$#" -eq 0 ]; then
# Find all web apps
while IFS= read -r -d '' file; do
if grep -q '^Exec=.*omarchy-launch-webapp.*' "$file"; then
@@ -14,23 +14,28 @@ if [ "$#" -ne 1 ]; then
if ((${#WEB_APPS[@]})); then
IFS=$'\n' SORTED_WEB_APPS=($(sort <<<"${WEB_APPS[*]}"))
unset IFS
APP_NAME=$(gum choose --header "Select web app to remove..." "${SORTED_WEB_APPS[@]}")
APP_NAMES_STRING=$(gum choose --no-limit --header "Select web app to remove..." --selected-prefix="✗ " "${SORTED_WEB_APPS[@]}")
# Convert newline-separated string to array
APP_NAMES=()
while IFS= read -r line; do
[[ -n "$line" ]] && APP_NAMES+=("$line")
done <<< "$APP_NAMES_STRING"
else
echo "No web apps to remove."
exit 1
fi
else
APP_NAME="$1"
# Use array to preserve spaces in app names
APP_NAMES=("$@")
fi
if [[ -z "$APP_NAME" ]]; then
echo "You must provide web app name."
if [[ ${#APP_NAMES[@]} -eq 0 ]]; then
echo "You must provide web app names."
exit 1
fi
rm "$DESKTOP_DIR/$APP_NAME.desktop"
rm "$ICON_DIR/$APP_NAME.png"
if [ "$#" -ne 1 ]; then
echo -e "Removed $APP_NAME\n"
fi
for APP_NAME in "${APP_NAMES[@]}"; do
rm -f "$DESKTOP_DIR/$APP_NAME.desktop"
rm -f "$ICON_DIR/$APP_NAME.png"
echo "Removed $APP_NAME"
done

View File

@@ -14,7 +14,7 @@ ansi_art=' ▄▄▄
clear
echo -e "\n$ansi_art\n"
sudo pacman -Sy --noconfirm --needed git
sudo pacman -Syu --noconfirm --needed git
# Use custom repo if specified, otherwise default to basecamp/omarchy
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
@@ -23,8 +23,9 @@ echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
rm -rf ~/.local/share/omarchy/
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
# Use custom branch if instructed
if [[ -n "$OMARCHY_REF" ]]; then
# Use custom branch if instructed, otherwise default to master
OMARCHY_REF="${OMARCHY_REF:-master}"
if [[ $OMARCHY_REF != "master" ]]; then
echo -e "\eUsing branch: $OMARCHY_REF"
cd ~/.local/share/omarchy
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"

View File

@@ -13,7 +13,6 @@ size = 9
padding.x = 14
padding.y = 14
decorations = "None"
opacity = 0.98
[keyboard]
bindings = [

View File

@@ -0,0 +1,15 @@
{
"extensions": {
"theme": {
"id": "",
"use_system": false,
"use_custom": false
}
},
"browser": {
"theme": {
"color_scheme": 2,
"user_color": 2
}
}
}

View File

@@ -63,41 +63,20 @@
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
},
{
"type": "os",
"key": "󰣇 OS",
"keyColor": "yellow"
"type": "command",
"key": "\ue900 OS",
"keyColor": "blue",
"text": "version=$(omarchy-version); echo \"Omarchy $version\""
},
{
"type": "command",
"key": "│ ├󰘬",
"keyColor": "blue",
"text": "branch=$(omarchy-version-branch); echo \"$branch\""
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "└ └",
"keyColor": "yellow"
},
"break",
{
"type": "command",
"key": "│ ├Ø",
"keyColor": "blue",
"text": "version=$(git -C ~/.local/share/omarchy describe --tags --abbrev=0 2>/dev/null); echo \"Omarchy $version\""
},
{
"type": "command",
"key": "│ ├󰸌",
"keyColor": "blue",
"text": "theme=$(omarchy-theme-current); echo -e \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\""
},
{
"type": "de",
"key": " DE",
"keyColor": "blue"
},
{
@@ -105,29 +84,35 @@
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "de",
"key": " DE",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue"
"type": "command",
"key": "│ ├󰸌",
"keyColor": "blue",
"text": "theme=$(omarchy-theme-current); echo -e \"$theme \\e[38m●\\e[37m●\\e[36m●\\e[35m●\\e[34m●\\e[33m●\\e[32m●\\e[31m●\""
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue"
},
{
"type": "terminal",
"key": "└ └",
"key": "└ └",
"keyColor": "blue"
},
{
@@ -141,13 +126,13 @@
},
{
"type": "command",
"key": " OS Age ",
"key": "󱦟 OS Age",
"keyColor": "magenta",
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
},
{
"type": "uptime",
"key": " Uptime ",
"key": "󱫐 Uptime",
"keyColor": "magenta"
},
{

View File

@@ -2,7 +2,7 @@
$terminal = uwsm app -- alacritty
$browser = omarchy-launch-browser
bindd = SUPER, return, Terminal, exec, $terminal --working-directory $(omarchy-cmd-terminal-cwd)
bindd = SUPER, return, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER, M, Music, exec, uwsm app -- spotify
@@ -25,5 +25,5 @@ bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/"
bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space
# unbind = SUPER, Space
# unbind = SUPER, SPACE
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu

View File

@@ -2,7 +2,7 @@ general {
lock_cmd = omarchy-lock-screen # lock screen and 1password
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
on_unlock_cmd = omarchy-restart-waybar # prevent stacking of waybar when waking
inhibit_sleep = 3 # wait until screen is locked
}
listener {

View File

@@ -9,6 +9,9 @@ input {
repeat_rate = 40
repeat_delay = 600
# Start with numlock on by default
numlock_by_default = true
# Increase sensitity for mouse/trackpack (default: 0)
# sensitivity = 0.35

BIN
config/omarchy.ttf Normal file

Binary file not shown.

View File

@@ -4,15 +4,8 @@
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": [
"custom/omarchy",
"hyprland/workspaces"
],
"modules-center": [
"group/status-cluster",
"clock",
"custom/update"
],
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
"modules-center": ["clock", "custom/update"],
"modules-right": [
"group/tray-expander",
"bluetooth",
@@ -46,14 +39,14 @@
}
},
"custom/omarchy": {
"format": "",
"format": "<span font='omarchy'>\ue900</span>",
"on-click": "omarchy-menu",
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
},
"custom/update": {
"format": "",
"exec": "omarchy-update-available",
"on-click": "alacritty --class Omarchy --title Omarchy -e omarchy-update",
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update",
"tooltip-format": "Omarchy update available",
"interval": 3600
},
@@ -64,22 +57,22 @@
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"format": "{:L%A %H:%M}",
"format-alt": "{:L%d %B W%V %Y}",
"tooltip": false,
"on-click-right": "omarchy-cmd-tzupdate"
},
"network": {
"format-icons": ["󰤯","󰤟","󰤢","󰤥","󰤨"],
"format" : "{icon}",
"format-wifi" : "{icon}",
"format-ethernet" : "󰀂",
"format-disconnected" : "󰖪",
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"],
"format": "{icon}",
"format-wifi": "{icon}",
"format-ethernet": "󰀂",
"format-disconnected": "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"nospacing": 1,
"spacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
@@ -88,17 +81,14 @@
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": [
"󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"
],
"default": [
"󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"
]
"charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"],
"default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"on-click": "omarchy-menu power",
"states": {
"warning": 20,
"critical": 10
@@ -128,43 +118,7 @@
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": [
"custom/expand-icon",
"tray"
]
},
"group/status-cluster": {
"orientation": "inherit",
"modules": [
"custom/status-dnd",
"custom/status-nightlight",
"custom/status-recording",
"custom/status-idle"
]
},
"custom/status-dnd": {
"exec": "omarchy-status-daemon dnd",
"return-type": "json",
"interval": 1,
"on-click": "makoctl mode -t do-not-disturb"
},
"custom/status-nightlight": {
"exec": "omarchy-status-daemon nightlight",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-toggle-nightlight"
},
"custom/status-recording": {
"exec": "omarchy-status-daemon recording",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-cmd-screenrecord-stop"
},
"custom/status-idle": {
"exec": "omarchy-status-daemon idle",
"return-type": "json",
"interval": 1,
"on-click": "omarchy-toggle-idle"
"modules": ["custom/expand-icon", "tray"]
},
"custom/expand-icon": {
"format": " ",

View File

@@ -58,30 +58,6 @@ tooltip {
margin-left: 8.75px;
}
#group-status-cluster {
margin-right: 8.75px;
}
#custom-status-dnd,
#custom-status-nightlight,
#custom-status-recording,
#custom-status-idle {
min-width: 12px;
margin: 0 2px;
font-size: 10px;
}
#custom-status-dnd.status-dnd,
#custom-status-nightlight.status-nightlight,
#custom-status-idle.status-idle {
opacity: 1;
}
#custom-status-recording.status-recording {
color: #a55555;
opacity: 1;
}
.hidden {
opacity: 0;
}

View File

@@ -24,12 +24,12 @@ alias ...='cd ../..'
alias ....='cd ../../..'
# Tools
alias g='git'
alias d='docker'
alias r='rails'
n() { if [ "$#" -eq 0 ]; then nvim .; else nvim "$@"; fi; }
# Git
alias g='git'
alias gcm='git commit -m'
alias gcam='git commit -a -m'
alias gcad='git commit -a --amend'

View File

@@ -65,4 +65,3 @@ img2png() {
-define png:exclude-chunk=all \
"${1%.*}.png"
}

View File

@@ -1,11 +1,12 @@
# App-specific tweaks
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf
source = ~/.local/share/omarchy/default/hypr/apps/1password.conf
source = ~/.local/share/omarchy/default/hypr/apps/bitwarden.conf
source = ~/.local/share/omarchy/default/hypr/apps/browser.conf
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf
source = ~/.local/share/omarchy/default/hypr/apps/steam.conf
source = ~/.local/share/omarchy/default/hypr/apps/system.conf
source = ~/.local/share/omarchy/default/hypr/apps/walker.conf
source = ~/.local/share/omarchy/default/hypr/apps/1password.conf
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/zoom.conf

View File

@@ -0,0 +1 @@
windowrule = noscreenshare, class:^(Bitwarden)$

View File

@@ -0,0 +1,13 @@
# Browser types
windowrule = tag +chromium-based-browser, class:([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
# Force chromium-based browsers into a tile to deal with --app bug
windowrule = tile, tag:chromium-based-browser
# Only a subtle opacity change, but not for video sites
windowrule = opacity 1 0.97, tag:chromium-based-browser
windowrule = opacity 1 0.97, tag:firefox-based-browser
# Some video sites should never have opacity applied to them
windowrule = opacity 1.0 1.0, initialTitle:((?i)(?:[a-z0-9-]+\.)*youtube\.com_/|app\.zoom\.us_/wc/home)

View File

@@ -1,6 +0,0 @@
# Force chromium into a tile to deal with --app bug
windowrule = tile, class:^(Chromium)$
# Only slight opacity when unfocused
windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable|Brave-browser|brave-browser)$
windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube

View File

@@ -1,10 +1,6 @@
# Fixing popup size issue
windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$,floating:1
# Fix tooltips (always have a title of `win.<id>`)
windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^(win.*)$
windowrule = nofocus, class:^(.*jetbrains.*)$, title:^(win.*)$
# Fix tab dragging (always have a single space character as their title)
windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^\\s$
windowrule = nofocus, class:^(.*jetbrains.*)$, title:^\\s$

View File

@@ -0,0 +1 @@
windowrule = opacity 1 1, class:qemu

View File

@@ -1,3 +1,4 @@
windowrule = fullscreen, class:com.libretro.RetroArch
windowrule = opacity 1 1, class:com.libretro.RetroArch
windowrule = idleinhibit fullscreen, class:com.libretro.RetroArch

View File

@@ -4,3 +4,4 @@ windowrule = center, class:steam, title:Steam
windowrule = opacity 1 1, class:steam
windowrule = size 1100 700, class:steam, title:Steam
windowrule = size 460 800, class:steam, title:Friends List
windowrule = idleinhibit fullscreen, class:steam

View File

@@ -4,7 +4,7 @@ windowrule = center, tag:floating-window
windowrule = size 800 600, tag:floating-window
windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text), title:^(Open.*Files?|Save.*Files?|All Files|Save)
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open Folder|Save.*Files?|Save.*As|Save|All Files)
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver

View File

@@ -1,2 +0,0 @@
windowrule = opacity 1 1, class:Zoom Workplace

View File

@@ -6,7 +6,4 @@ exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill
exec-once = uwsm app -- swayosd-server
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'
# FIXME: Reenable the walker service once the memory leak has been fixed
# See https://github.com/basecamp/omarchy/issues/698
# exec-once = uwsm app -- walker --gapplication-service
exec-once = omarchy-cmd-first-run

View File

@@ -39,8 +39,8 @@ bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
# Tab between workspaces
bind = SUPER, TAB, workspace, e+1
bind = SUPER SHIFT, TAB, workspace, e-1
bindd = SUPER, TAB, Next workspace, workspace, e+1
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
@@ -55,10 +55,10 @@ bindd = ALT, Tab, Reveal active window on top, bringactivetotop
bindd = ALT SHIFT, Tab, Reveal active window on top, bringactivetotop
# Resize active window
bindd = SUPER, minus, Expand window left, resizeactive, -100 0
bindd = SUPER, equal, Shrink window left, resizeactive, 100 0
bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100
bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key
bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
# Scroll through existing workspaces with SUPER + scroll
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1

View File

@@ -1,13 +1,13 @@
# Menus
bindd = SUPER, SPACE, Launch apps, exec, walker -p "Start…"
bindd = SUPER CTRL, E, Show clipboard, exec, walker -m Emojis
bindd = SUPER CTRL, E, Emoji picker, exec, walker -m Emojis
bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system
bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
# Aesthetics
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next
bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme
@@ -33,8 +33,10 @@ bindd = SHIFT, PRINT, Screenshot of window, exec, omarchy-cmd-screenshot window
bindd = CTRL, PRINT, Screenshot of display, exec, omarchy-cmd-screenshot output
# Screen recordings
bindd = ALT, PRINT, Screen record a region, exec, omarchy-cmd-screenrecord
bindd = ALT, PRINT, Screen record a region, exec, omarchy-cmd-screenrecord region
bindd = ALT SHIFT, PRINT, Screen record a region with audio, exec, omarchy-cmd-screenrecord region audio
bindd = CTRL ALT, PRINT, Screen record display, exec, omarchy-cmd-screenrecord output
bindd = CTRL ALT SHIFT, PRINT, Screen record display with audio, exec, omarchy-cmd-screenrecord output audio
# Color picker
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a

View File

@@ -10,6 +10,11 @@ env = SDL_VIDEODRIVER,wayland
env = MOZ_ENABLE_WAYLAND,1
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
env = OZONE_PLATFORM,wayland
env = XDG_SESSION_TYPE,wayland
# Allow better support for screen sharing (Google Meet, Discord, etc)
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland
xwayland {
force_zero_scaling = true

16
default/mako/core.ini Normal file
View File

@@ -0,0 +1,16 @@
anchor=top-right
default-timeout=5000
width=420
height=110
[app-name=Spotify]
invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false
[urgency=critical]
default-timeout=0

View File

@@ -0,0 +1,3 @@
Server = https://mirror.omarchy.org/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch

View File

@@ -0,0 +1,30 @@
# See the pacman.conf(5) manpage for option and repository directives
[options]
Color
ILoveCandy
VerbosePkgLists
HoldPkg = pacman glibc
Architecture = auto
CheckSpace
ParallelDownloads = 5
DownloadUser = alpm
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
# pacman searches repositories in the order defined here
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
# [multilib]
# Include = /etc/pacman.d/mirrorlist
[omarchy]
SigLevel = Optional TrustAll
Server = https://pkgs.omarchy.org/$arch

View File

@@ -1,121 +1,60 @@
#!/bin/bash
# Exit immediately if a command exits with a non-zero status
set -e
set -eE
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
OMARCHY_INSTALL=~/.local/share/omarchy/install
OMARCHY_PATH="$HOME/.local/share/omarchy"
OMARCHY_INSTALL="$OMARCHY_PATH/install"
export PATH="$OMARCHY_PATH/bin:$PATH"
# Give people a chance to retry running the installation
catch_errors() {
echo -e "\n\e[31mOmarchy installation failed!\e[0m"
echo "The failing command was: \`$BASH_COMMAND\` (exit code: $?)"
echo
echo "Get help from the community via QR code or at https://discord.gg/tXFUdasqhY"
echo " "
echo " █▀▀▀▀▀█ ▄ ▄ ▀▄▄▄█ █▀▀▀▀▀█ "
echo " █ ███ █ ▄▄▄▄▀▄▀▄▀ █ ███ █ "
echo " █ ▀▀▀ █ ▄█ ▄█▄▄▀ █ ▀▀▀ █ "
echo " ▀▀▀▀▀▀▀ ▀▄█ █ █ █ ▀▀▀▀▀▀▀ "
echo " ▀▀█▀▀▄▀▀▀▀▄█▀▀█ ▀ █ ▀ █ "
echo " █▄█ ▄▄▀▄▄ ▀ ▄ ▀█▄▄▄▄ ▀ ▀█ "
echo " ▄ ▄▀█ ▀▄▀▀▀▄ ▄█▀▄█▀▄▀▄▀█▀ "
echo " █ ▄▄█▄▀▄█ ▄▄▄ ▀ ▄▀██▀ ▀█ "
echo " ▀ ▀ ▀ █ ▀▄ ▀▀█▀▀▀█▄▀ "
echo " █▀▀▀▀▀█ ▀█ ▄▀▀ █ ▀ █▄▀██ "
echo " █ ███ █ █▀▄▄▀ █▀███▀█▄██▄ "
echo " █ ▀▀▀ █ ██ ▀ █▄█ ▄▄▄█▀ █ "
echo " ▀▀▀▀▀▀▀ ▀ ▀ ▀▀▀ ▀ ▀▀▀▀▀▀ "
echo " "
if [[ -n $OMARCHY_BARE ]]; then
echo "You can retry by running: OMARCHY_BARE=true bash ~/.local/share/omarchy/install.sh"
else
echo "You can retry by running: bash ~/.local/share/omarchy/install.sh"
fi
}
trap catch_errors ERR
show_logo() {
clear
tte -i ~/.local/share/omarchy/logo.txt --frame-rate ${2:-120} ${1:-expand}
echo
}
show_subtext() {
echo "$1" | tte --frame-rate ${3:-640} ${2:-wipe}
echo
}
# Install prerequisites
source $OMARCHY_INSTALL/preflight/chroot.sh
source $OMARCHY_INSTALL/preflight/mirrorlist.sh
source $OMARCHY_INSTALL/preflight/gum.sh
# Preparation
source $OMARCHY_INSTALL/preflight/show-env.sh
source $OMARCHY_INSTALL/preflight/trap-errors.sh
source $OMARCHY_INSTALL/preflight/guard.sh
source $OMARCHY_INSTALL/preflight/aur.sh
source $OMARCHY_INSTALL/preflight/tte.sh
source $OMARCHY_INSTALL/preflight/chroot.sh
source $OMARCHY_INSTALL/preflight/pacman.sh
source $OMARCHY_INSTALL/preflight/migrations.sh
source $OMARCHY_INSTALL/preflight/first-run-mode.sh
# Packaging
source $OMARCHY_INSTALL/packages.sh
source $OMARCHY_INSTALL/packaging/fonts.sh
source $OMARCHY_INSTALL/packaging/lazyvim.sh
source $OMARCHY_INSTALL/packaging/webapps.sh
source $OMARCHY_INSTALL/packaging/tuis.sh
# Configuration
source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/theme.sh
source $OMARCHY_INSTALL/config/branding.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/fix-fkeys.sh
source $OMARCHY_INSTALL/config/network.sh
source $OMARCHY_INSTALL/config/power.sh
source $OMARCHY_INSTALL/config/usb-autosuspend.sh
source $OMARCHY_INSTALL/config/git.sh
source $OMARCHY_INSTALL/config/gpg.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/nvidia.sh
source $OMARCHY_INSTALL/config/increase-sudo-tries.sh
source $OMARCHY_INSTALL/config/ignore-power-button.sh
source $OMARCHY_INSTALL/config/increase-lockout-limit.sh
source $OMARCHY_INSTALL/config/ssh-flakiness.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/xcompose.sh
source $OMARCHY_INSTALL/config/mise-ruby.sh
source $OMARCHY_INSTALL/config/docker.sh
source $OMARCHY_INSTALL/config/mimetypes.sh
source $OMARCHY_INSTALL/config/localdb.sh
source $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
source $OMARCHY_INSTALL/config/hardware/network.sh
source $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
source $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
source $OMARCHY_INSTALL/config/hardware/bluetooth.sh
source $OMARCHY_INSTALL/config/hardware/printer.sh
source $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh
source $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh
source $OMARCHY_INSTALL/config/hardware/nvidia.sh
source $OMARCHY_INSTALL/config/hardware/intel.sh
source $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh
# Login
source $OMARCHY_INSTALL/login/plymouth.sh
source $OMARCHY_INSTALL/login/limine-snapper.sh
source $OMARCHY_INSTALL/login/alt-bootloaders.sh
# Development
source $OMARCHY_INSTALL/development/terminal.sh
source $OMARCHY_INSTALL/development/development.sh
source $OMARCHY_INSTALL/development/nvim.sh
source $OMARCHY_INSTALL/development/ruby.sh
source $OMARCHY_INSTALL/development/docker.sh
source $OMARCHY_INSTALL/development/firewall.sh
# Desktop
source $OMARCHY_INSTALL/desktop/desktop.sh
source $OMARCHY_INSTALL/desktop/hyprlandia.sh
source $OMARCHY_INSTALL/desktop/theme.sh
source $OMARCHY_INSTALL/desktop/bluetooth.sh
source $OMARCHY_INSTALL/desktop/asdcontrol.sh
source $OMARCHY_INSTALL/desktop/fonts.sh
source $OMARCHY_INSTALL/desktop/printer.sh
# Apps
source $OMARCHY_INSTALL/apps/webapps.sh
source $OMARCHY_INSTALL/apps/tuis.sh
source $OMARCHY_INSTALL/apps/xtras.sh
source $OMARCHY_INSTALL/apps/mimetypes.sh
# Updates
sudo updatedb
# Update system packages if we have a network connection
if ping -c5 omarchy.org &>/dev/null; then
yay -Syu --noconfirm
fi
# Reboot
show_logo laseretch 920
show_subtext "You're done! So we're ready to reboot now..."
if sudo test -f /etc/sudoers.d/99-omarchy-installer; then
sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null
echo
read -n 1 -s -r -p "Remove the USB installer then press any key to reboot..."
echo
fi
sleep 2
reboot
# Finishing
source $OMARCHY_INSTALL/reboot.sh

View File

@@ -1,6 +0,0 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
omarchy-tui-install "Disk Usage" "bash -c 'dust; read -n 1 -s'" float https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png
omarchy-tui-install "Docker" "lazydocker" tile https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png
fi

View File

@@ -1,16 +0,0 @@
#!/bin/bash
if [ -z "$OMARCHY_BARE" ]; then
omarchy-webapp-install "HEY" https://app.hey.com https://www.hey.com/assets/images/general/hey.png
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com https://basecamp.com/assets/images/general/basecamp.png
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/whatsapp.png
omarchy-webapp-install "Google Photos" https://photos.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-photos.png
omarchy-webapp-install "Google Contacts" https://contacts.google.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-contacts.png
omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/google-messages.png
omarchy-webapp-install "ChatGPT" https://chatgpt.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
omarchy-webapp-install "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
omarchy-webapp-install "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png
omarchy-webapp-install "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png
omarchy-webapp-install "Figma" https://figma.com/ https://www.veryicon.com/download/png/application/app-icon-7/figma-1?s=256
omarchy-webapp-install "Discord" https://discord.com/channels/@me https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/discord.png
fi

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