Compare commits

..

160 Commits

Author SHA1 Message Date
David Heinemeier Hansson
04d2f10840 Merge pull request #3295 from basecamp/dev
Omarchy 3.2.0
2025-11-21 14:34:01 -05:00
David Heinemeier Hansson
45e3272e25 No confirm 2025-11-21 20:21:55 +01:00
David Heinemeier Hansson
934b22d4c2 Do the full pacman reset and then update 2025-11-21 20:19:27 +01:00
David Heinemeier Hansson
ba7ffc39ad Ensure upgrades are sorted for later versions too 2025-11-21 20:05:23 +01:00
Ryan Hughes
cb8d42ba26 Adjust screensaver for tte v13 2025-11-21 13:46:51 -05:00
dec05eba
d725058d33 Make the screenrecord hotkey and menu stop recording if already recording 2025-11-21 13:46:51 -05:00
dec05eba
128a6125a9 Redesign screen capture option
Use desktop portal capture option which allows capturing monitors
connected to external gpus (common on laptops with dedicated gpus)
and supports capturing properly when hdr is enabled.

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

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

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

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

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

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

* Update waybar config.jsonc

* Update tray spacing in waybar config

* Modify margins in style.css

Adjusted margins for various elements.

* Update waybar css for even spacing

* Update Waybar config tray spacing

* Change expand-icon format character

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

* added sample comment

* Style

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

---------

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

* Update to follow the Omarchy hot reload

* Add aether to all themes

* Add a vscode theme

* Revert "Add aether to all themes"

This reverts commit 421f467e21.

* Format the kitty file

* Make available to all via migration

* Fix

* Add hot reload

* Change the background image to something of higher quality

This looks a lot better on a 6K monitor

* Highlight border color should be brighter than inactive color

* Add preview.png for new visual theme selector

* Add the ethereal nvim variant of aehter

---------

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

* Update to follow the Omarchy hot reload

* Add high res wallpapers

* Add an initial vscode color scheme

* Excess CR

* Set the colorscheme name to aether

* Change the nvim plugin name back to aether

* Add hot reload

* Use a variant of aether

* Swap the starting background

* Add migration

* Add preview.png

---------

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

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

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

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

---------

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

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

* Install xpadneo controller driver by default

* Add idempotency checks and relaunch state

* Remove Steam launch since relaunch required

* Extract xbox controller installer into separate step

* Bring back launch

* Force reinstall

---------

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

* align btop app id

* add migration to uniquely identify btop

* also add unique app ids to lazydocker and terminal editor

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

* align all the tuis and behaviour in waybar

* update migration accordingly

* fixes

* separate terminal from tui

* fix: double setsid uswm-app --

* Standardize namespace on org.omarchy and lowercase

---------

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

* remove icons from the themes menu

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

* Migrate to using a link for the new menu generator

* Retain consistent width

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

* Update all previews to 2K resolution and same dimensions

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

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

* Consistent formatting/indenting

* Prevent height jump

* Revert padding change and remove background color

---------

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

* Match existing style

---------

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

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

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

* Enable the XDPH config on existing installations

---------

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

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

This reverts commit 03cbbd2f7f.

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

* Update imv config and migration script

* Simplify this

---------

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

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

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

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

* Use existing formatting conventions

* More tweaks

---------

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

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

* Match names with folders

* Correct here too

* Don't need to keep this around

* Fix these up for what's needed only

---------

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

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

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

* Fix browser pattern matching in launch script for helium

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-11-09 08:06:23 +01:00
Adam
26d37ca2e0 Fix: hard-coded binding for changegroupactive (#3233)
Changed default bindings for switching to a window in a group. The original values did not respect different keyboard layouts.
2025-11-09 08:02:35 +01:00
Miguel P
c92362937a Use xdg-terminal-exec in TUI installer for terminal compatibility (#3237)
Replace hardcoded --class flag with xdg-terminal-exec --app-id to properly
support kitty and other terminals. This aligns with the rest of the codebase
and ensures floating window rules work correctly across different terminals.
2025-11-09 08:01:37 +01:00
Dmytro Budnyk
7a0fa07454 Update icon URL placeholder to accept SVG format (#3253)
SVGs work just fine, changing misleading caption
2025-11-09 07:50:36 +01:00
David Heinemeier Hansson
917279bff7 Merge branch 'master' into dev 2025-11-09 07:45:37 +01:00
David Heinemeier Hansson
06fc4db4db Merge branch 'master' into dev 2025-11-07 21:54:13 +01:00
Ryan Hughes
c92a7eab81 Revert "Kill the actual screensaver command"
This reverts commit 33dde26902.
2025-11-06 11:32:19 -05:00
Ryan Hughes
8aa2d295e5 Revert "Make screensaver work with xdg-terminal-exec"
This reverts commit fc8e4c0400.
2025-11-06 11:32:10 -05:00
Ryan Hughes
5fb29c199a Revert "Update screensaver with 2x version"
This reverts commit b1b6e5d2a7.
2025-11-06 11:30:02 -05:00
David Heinemeier Hansson
962aca303d Change order and let it live forever 2025-11-06 09:14:33 +01:00
David Heinemeier Hansson
870356ecc3 Fix max_results to live under [providers]
Re #3175
2025-11-06 08:32:07 +01:00
David Heinemeier Hansson
cb03d7d84b Raise walker max_entries to 256
The default is only 50

Closes #3175
2025-11-05 17:29:10 +01:00
y0no
7a0bdaafa4 Scale with the right monitor (#3174) 2025-11-05 16:08:25 +01:00
David Heinemeier Hansson
638e35fcac Hyprland envs are superseeded by uwsm/env 2025-11-05 15:15:01 +01:00
David Heinemeier Hansson
904d253b4d Restart terminal (reload config) when changing font as well
This doesn't work for Ghostty (yet?) but it does work for Kitty
2025-11-05 11:59:51 +01:00
innerviewer
a40ff463c9 (Hypr) Added 'stayfocused' window rule for DaVinci Resolve dialog windows. (#3064) 2025-11-05 11:44:30 +01:00
Patrick Roza
8e210088c1 Fix class name for Microsoft Edge in browser.conf (#3145) 2025-11-05 11:20:28 +01:00
David Heinemeier Hansson
bf26366be4 Setting PS1 is not necessary when we have starship 2025-11-05 11:13:49 +01:00
David Heinemeier Hansson
4391df6853 Fix declining an update 2025-11-04 08:47:17 +01:00
David Heinemeier Hansson
2498216a4f Merge branch 'master' into dev 2025-11-04 08:35:27 +01:00
Ryan Hughes
33dde26902 Kill the actual screensaver command 2025-11-03 21:37:51 -05:00
Ryan Hughes
b1b6e5d2a7 Update screensaver with 2x version 2025-11-03 21:34:22 -05:00
Ryan Hughes
fc8e4c0400 Make screensaver work with xdg-terminal-exec 2025-11-03 21:34:22 -05:00
Ryan Hughes
f9557177dc Merge pull request #2648 from wolfgangw/patch-1
TTE go fullscreen: --no-eol (tte 0.12.2/0.13.0)
2025-11-03 21:33:06 -05:00
Ryan Hughes
3065ca9f2a Fix --dir 2025-11-03 15:37:46 -05:00
Ryan Hughes
ba5343ca11 Bump version 2025-11-03 15:37:27 -05:00
Wolfgang Woehl
1388a2558a Screensaver go fullscreen: --no-eol (tte 0.12.2/0.13.0) and --canvas-height 0 2025-10-21 02:44:41 +02:00
174 changed files with 1179 additions and 367 deletions

7
autostart/walker.desktop Normal file
View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Name=Walker
Comment=Walker Service
Exec=walker --gapplication-service
StartupNotify=false
Terminal=false
Type=Application

View File

@@ -12,6 +12,7 @@ if [[ -f "$FIRST_RUN_MODE" ]]; then
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
sudo rm -f /etc/sudoers.d/first-run
bash "$OMARCHY_PATH/install/first-run/welcome.sh"

View File

@@ -8,15 +8,17 @@ if [[ ! -d "$OUTPUT_DIR" ]]; then
exit 1
fi
SCOPE=""
AUDIO="false"
DESKTOP_AUDIO="false"
MICROPHONE_AUDIO="false"
WEBCAM="false"
STOP_RECORDING="false"
for arg in "$@"; do
case "$arg" in
--with-audio) AUDIO="true" ;;
--with-desktop-audio) DESKTOP_AUDIO="true" ;;
--with-microphone-audio) MICROPHONE_AUDIO="true" ;;
--with-webcam) WEBCAM="true" ;;
output|region) SCOPE="$arg" ;;
--stop-recording) STOP_RECORDING="true"
esac
done
@@ -57,27 +59,35 @@ start_webcam_overlay() {
start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
local audio_devices=""
local audio_args=""
# Merge audio tracks into one - separate tracks only play one at a time in most players
[[ "$AUDIO" == "true" ]] && audio_args="-a default_output|default_input"
[[ "$DESKTOP_AUDIO" == "true" ]] && audio_devices+="default_output"
gpu-screen-recorder -w "$@" -f 60 -c mp4 -o "$filename" $audio_args &
if [[ "$MICROPHONE_AUDIO" == "true" ]]; then
# Merge audio tracks into one - separate tracks only play one at a time in most players
[[ -n "$audio_devices" ]] && audio_devices+="|"
audio_devices+="default_input"
fi
[[ -n "$audio_devices" ]] && audio_args+="-a $audio_devices"
gpu-screen-recorder -w portal -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac &
toggle_screenrecording_indicator
}
stop_screenrecording() {
pkill -SIGINT -f "gpu-screen-recorder" # SIGINT required to save video properly
pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly
# Wait a maximum of 5 seconds to finish before hard killing
local count=0
while pgrep -f "gpu-screen-recorder" >/dev/null && [ $count -lt 50 ]; do
while pgrep -f "^gpu-screen-recorder" >/dev/null && [ $count -lt 50 ]; do
sleep 0.1
count=$((count + 1))
done
if pgrep -f "gpu-screen-recorder" >/dev/null; then
pkill -9 -f "gpu-screen-recorder"
if pgrep -f "^gpu-screen-recorder" >/dev/null; then
pkill -9 -f "^gpu-screen-recorder"
cleanup_webcam
notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000
else
@@ -92,51 +102,19 @@ toggle_screenrecording_indicator() {
}
screenrecording_active() {
pgrep -f "gpu-screen-recorder" >/dev/null || pgrep -x slurp >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "WebcamOverlay" >/dev/null
}
if screenrecording_active; then
if pgrep -x slurp >/dev/null; then
pkill -x slurp 2>/dev/null
elif pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "gpu-screen-recorder" >/dev/null; then
if pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "^gpu-screen-recorder" >/dev/null; then
cleanup_webcam
else
stop_screenrecording
fi
elif [[ "$SCOPE" == "output" ]]; then
elif [[ "$STOP_RECORDING" == "false" ]]; then
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
if ! output=$(slurp -o -f "%o"); then
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
if [[ -z "$output" ]]; then
notify-send "Error" "Could not detect monitor" -u critical
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
start_screenrecording "$output"
start_screenrecording || cleanup_webcam
else
[[ "$WEBCAM" == "true" ]] && start_webcam_overlay
scale=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .scale')
if ! region=$(slurp -f "%wx%h+%x+%y"); then
[[ "$WEBCAM" == "true" ]] && cleanup_webcam
exit 1
fi
if [[ "$region" =~ ^([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+)$ ]]; then
w=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[1]} * $scale}")
h=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[2]} * $scale}")
x=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[3]} * $scale}")
y=$(awk "BEGIN {printf \"%.0f\", ${BASH_REMATCH[4]} * $scale}")
scaled_region="${w}x${h}+${x}+${y}"
else
scaled_region="$region"
fi
start_screenrecording region -region "$scaled_region"
exit 1
fi

View File

@@ -1,25 +1,26 @@
#!/bin/bash
screensaver_in_focus() {
hyprctl activewindow -j | jq -e '.class == "Screensaver"' >/dev/null 2>&1
hyprctl activewindow -j | jq -e '.class == "org.omarchy.screensaver"' >/dev/null 2>&1
}
exit_screensaver() {
hyprctl keyword cursor:invisible false
pkill -x tte 2>/dev/null
pkill -f "alacritty --class Screensaver" 2>/dev/null
pkill -f org.omarchy.screensaver 2>/dev/null
exit 0
}
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
printf '\033]11;rgb:00/00/00\007' # Set background color to black
hyprctl keyword cursor:invisible true &>/dev/null
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" &
--frame-rate 120 --canvas-width 0 --canvas-height 0 --anchor-canvas c --anchor-text c\
--no-eol --no-restore-cursor random_effect &
while pgrep -x tte >/dev/null; do
if read -n 1 -t 3 || ! screensaver_in_focus; then

View File

@@ -6,8 +6,10 @@ shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
if [[ -n $shell_pid ]]; then
cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null)
shell=$(readlink -f "/proc/$shell_pid/exe" 2>/dev/null)
if [[ -d $cwd ]]; then
# Check if $shell is a valid shell and $cwd is a directory.
if grep -qs "$shell" /etc/shells && [[ -d $cwd ]]; then
echo "$cwd"
else
echo "$HOME"

View File

@@ -18,6 +18,7 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
pkill -SIGUSR2 ghostty
fi
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
xmlstarlet ed -L \
@@ -27,7 +28,10 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then
omarchy-restart-waybar
omarchy-restart-swayosd
omarchy-restart-walker
if pgrep -x ghostty; then
notify-send " You must restart Ghostty to see font change"
fi
omarchy-hook font-set "$font_name"
else

View File

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

View File

@@ -50,6 +50,7 @@ ruby)
omarchy-pkg-add libyaml
mise use --global ruby@latest
mise settings add idiomatic_version_file_enable_tools ruby
echo "gem: --no-document" > ~/.gemrc
mise x ruby -- gem install rails --no-document
echo -e "\nYou can now run: rails new myproject"
;;

View File

@@ -1,5 +1,7 @@
#!/bin/bash
set -e
echo "Now pick dependencies matching your graphics card"
sudo pacman -Syu --noconfirm steam
sudo pacman -S --noconfirm steam
setsid gtk-launch steam >/dev/null 2>&1 &

View File

@@ -9,31 +9,43 @@ package="$1"
# Map package name to desktop entry ID
case "$package" in
alacritty)
desktop_id="Alacritty.desktop"
;;
ghostty)
desktop_id="com.mitchellh.ghostty.desktop"
;;
kitty)
desktop_id="kitty.desktop"
;;
*)
echo "Unknown terminal: $package"
exit 1
;;
alacritty) desktop_id="Alacritty.desktop" ;;
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
kitty) desktop_id="kitty.desktop" ;;
*)
echo "Unknown terminal: $package"
exit 1
;;
esac
# Install package
if omarchy-pkg-add $package; then
# Set as default terminal
echo "Setting $package as new default terminal..."
sed -i "/export TERMINAL=/ c\export TERMINAL=$package" ~/.config/uwsm/default
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
if [ "$package" = "alacritty" ]; then
if [[ $package == "alacritty" ]]; then
mkdir -p ~/.local/share/applications
cp "$OMARCHY_PATH/applications/Alacritty.desktop" ~/.local/share/applications/
cat > ~/.local/share/applications/Alacritty.desktop << EOF
[Desktop Entry]
Type=Application
TryExec=alacritty
Exec=alacritty
Icon=Alacritty
Terminal=false
Categories=System;TerminalEmulator;
Name=Alacritty
GenericName=Terminal
Comment=A fast, cross-platform, OpenGL terminal emulator
StartupNotify=true
StartupWMClass=Alacritty
Actions=New;
X-TerminalArgExec=-e
X-TerminalArgAppId=--class=
X-TerminalArgTitle=--title=
X-TerminalArgDir=--working-directory=
[Desktop Action New]
Name=New Terminal
Exec=alacritty
EOF
fi
# Update xdg-terminals.list to prioritize the proper terminal

View File

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

View File

@@ -1,3 +1,3 @@
#!/bin/bash
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy -e bash -c 'fastfetch; read -n 1 -s'
exec omarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'"

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

@@ -0,0 +1,4 @@
#!/bin/bash
rfkill unblock bluetooth
exec omarchy-launch-or-focus-tui bluetui

View File

@@ -4,7 +4,7 @@ omarchy-cmd-present "$EDITOR" || EDITOR=nvim
case "$EDITOR" in
nvim | vim | nano | micro | hx | helix)
exec setsid uwsm-app -- xdg-terminal-exec "$EDITOR" "$@"
exec omarchy-launch-tui "$EDITOR" "$@"
;;
*)
exec setsid uwsm-app -- "$EDITOR" "$@"

View File

@@ -1,4 +1,4 @@
#!/bin/bash
cmd="$*"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Omarchy --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; omarchy-show-done"

View File

@@ -12,5 +12,5 @@ WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|selec
if [[ -n $WINDOW_ADDRESS ]]; then
hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS"
else
eval exec $LAUNCH_COMMAND
eval exec setsid $LAUNCH_COMMAND
fi

View File

@@ -0,0 +1,6 @@
#!/bin/bash
APP_ID="org.omarchy.$(basename $1)"
LAUNCH_COMMAND="omarchy-launch-tui $@"
exec omarchy-launch-or-focus "$APP_ID" "$LAUNCH_COMMAND"

View File

@@ -6,7 +6,7 @@ if ! command -v tte &>/dev/null; then
fi
# Exit early if screensave is already running
pgrep -f "alacritty --class Screensaver" && exit 0
pgrep -f org.omarchy.screensaver && exit 0
# Allow screensaver to be turned off but also force started
if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]]; then
@@ -14,15 +14,34 @@ if [[ -f ~/.local/state/omarchy/toggles/screensaver-off ]] && [[ $1 != "force" ]
fi
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
terminal=$(xdg-terminal-exec --print-id)
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor $m
# FIXME: Find a way to make this generic where we it can work for kitty + ghostty
hyprctl dispatch exec -- \
alacritty --class Screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
case $terminal in
*Alacritty*)
hyprctl dispatch exec -- \
alacritty --class=org.omarchy.screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
;;
*ghostty*)
hyprctl dispatch exec -- \
ghostty --class=org.omarchy.screensaver \
--font-size=18 \
-e omarchy-cmd-screensaver
;;
*kitty*)
hyprctl dispatch exec -- \
kitty --class=org.omarchy.screensaver \
--override font_size=18 \
-e omarchy-cmd-screensaver
;;
*)
notify-send "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
;;
esac
done
hyprctl dispatch focusmonitor $focused

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

@@ -0,0 +1,3 @@
#!/bin/bash
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.$(basename $1) -e "$1" "${@:2}"

View File

@@ -3,7 +3,7 @@
browser=$(xdg-settings get default-web-browser)
case $browser in
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium-browser*) ;;
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
*) browser="chromium.desktop" ;;
esac

View File

@@ -1,3 +1,4 @@
#!/bin/bash
exec setsid uwsm-app -- xdg-terminal-exec --app-id=com.omarchy.Impala -e impala "$@"
rfkill unblock wifi
omarchy-launch-or-focus-tui impala

View File

@@ -9,4 +9,4 @@ if pgrep -x "1password" >/dev/null; then
fi
# Avoid running screensaver when locked
pkill -f "alacritty --class Screensaver"
pkill -f org.omarchy.screensaver

View File

@@ -33,11 +33,11 @@ menu() {
fi
fi
echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 600 -p "$prompt…" "${args[@]}" 2>/dev/null
echo -e "$options" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 630 -p "$prompt…" "${args[@]}" 2>/dev/null
}
terminal() {
xdg-terminal-exec --app-id=com.omarchy.Omarchy "$@"
xdg-terminal-exec --app-id=org.omarchy.terminal "$@"
}
present_terminal() {
@@ -112,19 +112,19 @@ show_screenshot_menu() {
}
show_screenrecord_menu() {
case $(menu "Screenrecord" " Region\n Region + Audio\n Display\n Display + Audio\n Display + Webcam") in
*"Region + Audio"*) omarchy-cmd-screenrecord region --with-audio ;;
*Region*) omarchy-cmd-screenrecord ;;
*"Display + Audio"*) omarchy-cmd-screenrecord output --with-audio ;;
*"Display + Webcam"*) omarchy-cmd-screenrecord output --with-audio --with-webcam ;;
*Display*) omarchy-cmd-screenrecord output ;;
omarchy-cmd-screenrecord --stop-recording && exit 0
case $(menu "Screenrecord" " With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
*"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
*"With desktop + microphone audio + webcam") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam ;;
*) back_to show_capture_menu ;;
esac
}
show_share_menu() {
case $(menu "Share" " Clipboard\n File \n Folder") in
*Clipboard*) terminal bash -c "omarchy-cmd-share clipboard" ;;
*Clipboard*) omarchy-cmd-share clipboard ;;
*File*) terminal bash -c "omarchy-cmd-share file" ;;
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
*) back_to show_trigger_menu ;;
@@ -154,12 +154,7 @@ show_style_menu() {
}
show_theme_menu() {
theme=$(menu "Theme" "$(omarchy-theme-list)" "" "$(omarchy-theme-current)")
if [[ "$theme" == "CNCLD" || -z "$theme" ]]; then
back_to show_style_menu
else
omarchy-theme-set "$theme"
fi
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
}
show_font_menu() {
@@ -178,15 +173,9 @@ show_setup_menu() {
options="$options\n Defaults\n󰱔 DNS\n Security\n Config"
case $(menu "Setup" "$options") in
*Audio*) xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix ;;
*Wifi*)
rfkill unblock wifi
omarchy-launch-wifi
;;
*Bluetooth*)
rfkill unblock bluetooth
blueberry
;;
*Audio*) omarchy-launch-or-focus-tui wiremix ;;
*Wifi*) omarchy-launch-wifi ;;
*Bluetooth*) omarchy-launch-bluetooth ;;
*Power*) show_setup_power_menu ;;
*Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
*Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
@@ -301,10 +290,11 @@ show_install_ai_menu() {
}
show_install_gaming_menu() {
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft") in
case $(menu "Install" " Steam\n RetroArch [AUR]\n󰍳 Minecraft\n󰖺 Xbox Controller [AUR]") in
*Steam*) present_terminal omarchy-install-steam ;;
*RetroArch*) aur_install_and_launch "RetroArch" "retroarch retroarch-assets libretro libretro-fbneo" "com.libretro.RetroArch.desktop" ;;
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
*Xbox*) present_terminal omarchy-install-xbox-controllers ;;
*) show_install_menu ;;
esac
}

View File

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

View File

@@ -2,6 +2,6 @@
omarchy-refresh-config hypr/autostart.conf
omarchy-refresh-config hypr/bindings.conf
omarchy-refresh-config hypr/envs.conf
omarchy-refresh-config hypr/input.conf
omarchy-refresh-config hypr/looknfeel.conf
omarchy-refresh-config hypr/hyprland.conf

4
bin/omarchy-refresh-pacman Executable file
View File

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

View File

@@ -1,3 +1,7 @@
#!/bin/bash
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist
if [[ $1 == "edge" ]]; then
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist-edge /etc/pacman.d/mirrorlist
else
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist-stable /etc/pacman.d/mirrorlist
fi

View File

@@ -0,0 +1,7 @@
#!/bin/bash
if [[ $1 == "edge" ]]; then
sudo sed -i 's|https://pkgs.omarchy.org/.*$arch|https://pkgs.omarchy.org/edge/$arch|' /etc/pacman.conf
else
sudo sed -i 's|https://pkgs.omarchy.org/.*$arch|https://pkgs.omarchy.org/stable/$arch|' /etc/pacman.conf
fi

View File

@@ -4,5 +4,10 @@ if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
touch ~/.config/alacritty/alacritty.toml
fi
killall -SIGUSR1 kitty
killall -SIGUSR2 ghostty
if pgrep -x kitty; then
killall -SIGUSR1 kitty
fi
if pgrep -x ghostty; then
killall -SIGUSR2 ghostty
fi

View File

@@ -12,11 +12,10 @@ if [[ $EUID -eq 0 ]]; then
# Restart services as the script owner
systemd-run --uid="$SCRIPT_OWNER" --setenv=XDG_RUNTIME_DIR="/run/user/$USER_UID" \
bash -c "
setsid uwsm-app -- elephant &
setsid uwsm-app -- walker --gapplication-service &
systemctl --user restart elephant.service
setsid walker --gapplication-service &
"
else
setsid uwsm-app -- elephant &
wait 2
setsid uwsm-app -- walker --gapplication-service &
systemctl --user restart elephant.service
setsid walker --gapplication-service &
fi

View File

@@ -51,6 +51,16 @@ EOF
fi
}
add_hyprlock_fingerprint_icon() {
print_info "Adding fingerprint icon to hyprlock placeholder text..."
sed -i 's/placeholder_text = .*/placeholder_text = <span> Enter Password 󰈷 <\/span>/' ~/.config/hypr/hyprlock.conf
}
remove_hyprlock_fingerprint_icon() {
print_info "Removing fingerprint icon from hyprlock placeholder text..."
sed -i 's/placeholder_text = .*/placeholder_text = Enter Password/' ~/.config/hypr/hyprlock.conf
}
remove_pam_config() {
# Remove from sudo
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
@@ -71,6 +81,9 @@ if [[ "--remove" == "$1" ]]; then
# Remove PAM configuration
remove_pam_config
# Remove fingerprint icon from hyprlock placeholder text
remove_hyprlock_fingerprint_icon
# Uninstall packages
print_info "Removing fingerprint packages..."
sudo pacman -Rns --noconfirm fprintd
@@ -90,6 +103,9 @@ else
# Configure PAM
setup_pam_config
# Add fingerprint icon to hyprlock placeholder text
add_hyprlock_fingerprint_icon
# 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"

View File

@@ -28,12 +28,12 @@ if pgrep -x waybar >/dev/null; then
omarchy-restart-waybar
fi
omarchy-restart-swayosd
omarchy-restart-terminal
hyprctl reload
pkill -SIGUSR2 btop
makoctl reload
# Change gnome, browser, vscode, cursor themes
omarchy-theme-set-terminal
omarchy-theme-set-gnome
omarchy-theme-set-browser
omarchy-theme-set-vscode

View File

@@ -23,11 +23,6 @@ if omarchy-cmd-present chromium || omarchy-cmd-present helium-browser || omarchy
fi
fi
if omarchy-cmd-present helium-browser; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
helium-browser --no-startup-window --refresh-platform-policy
fi
if omarchy-cmd-present brave; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
brave --refresh-platform-policy --no-startup-window

View File

@@ -391,7 +391,7 @@ extract_theme_data() {
readarray -t color_slots < <(fill_color_slots "${unique_colors[@]}" | tr ' ' '\n')
# Extract fonts
local monospace_font="CaskaydiaMono Nerd Font"
local monospace_font="JetBrainsMono Nerd Font"
local ui_font="Liberation Sans"
if [ -f "$CURRENT_THEME_DIR/alacritty.toml" ]; then

View File

@@ -5,7 +5,7 @@ if [ "$#" -ne 4 ]; then
APP_NAME=$(gum input --prompt "Name> " --placeholder "My TUI")
APP_EXEC=$(gum input --prompt "Launch Command> " --placeholder "lazydocker or bash -c 'dust; read -n 1 -s'")
WINDOW_STYLE=$(gum choose --header "Window style" float tile)
ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)")
ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG or SVG!)")
else
APP_NAME="$1"
APP_EXEC="$2"
@@ -43,7 +43,7 @@ cat >"$DESKTOP_FILE" <<EOF
Version=1.0
Name=$APP_NAME
Comment=$APP_NAME
Exec=\$TERMINAL --class=$APP_CLASS -e $APP_EXEC
Exec=xdg-terminal-exec --app-id=$APP_CLASS -e $APP_EXEC
Terminal=false
Type=Application
Icon=$ICON_PATH

View File

@@ -4,7 +4,8 @@ set -e
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
omarchy-update-confirm
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-update-perform
if omarchy-update-confirm; then
omarchy-snapshot create || [ $? -eq 127 ]
omarchy-update-git
omarchy-update-perform
fi

View File

@@ -1,7 +1,5 @@
#!/bin/bash
set -e
gum style --border normal --border-foreground 6 --padding "1 2" \
"Ready to update Omarchy?" \
"" \
@@ -10,5 +8,5 @@ gum style --border normal --border-foreground 6 --padding "1 2" \
if ! gum confirm "Continue with update?"; then
echo "Update cancelled"
exit 0
exit 1
fi

View File

@@ -5,6 +5,8 @@ if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571
# This is generally not a good idea, but this is a special case because we're going to be updating
# the full set of packages in omarchy-update-system-pkgs right after this (and it needs latest keyring)!
sudo pacman -Sy
omarchy-pkg-add omarchy-keyring

View File

@@ -2,20 +2,14 @@
set -e
# 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"
[[ -n $ignored_packages ]] && echo "sudo pacman -Syu --noconfirm --ignore \"$ignored_packages\""
sudo pacman -Syu --noconfirm --ignore "$ignored_packages"
sudo pacman -Syu --noconfirm
# 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"
yay -Sua --noconfirm
echo
else
echo -e "\e[31m\nAUR is unavailable (so skipping updates)\e[0m"

View File

@@ -327,7 +327,7 @@ To stop: omarchy-windows-vm stop"
"$LIFECYCLE"
# Detect display scale from Hyprland
HYPR_SCALE=$(hyprctl monitors -j | jq -r '.[0].scale')
HYPR_SCALE=$(hyprctl monitors -j | jq -r '.[] | select (.focused == true) | .scale')
SCALE_PERCENT=$(echo "$HYPR_SCALE" | awk '{print int($1 * 100)}')
RDP_SCALE=""

View File

@@ -4,9 +4,9 @@ general.import = [ "~/.config/omarchy/current/theme/alacritty.toml" ]
TERM = "xterm-256color"
[font]
normal = { family = "CaskaydiaMono Nerd Font", style = "Regular" }
bold = { family = "CaskaydiaMono Nerd Font", style = "Bold" }
italic = { family = "CaskaydiaMono Nerd Font", style = "Italic" }
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }
bold = { family = "JetBrainsMono Nerd Font", style = "Bold" }
italic = { family = "JetBrainsMono Nerd Font", style = "Italic" }
size = 9
[window]

View File

@@ -24,7 +24,7 @@
<string>monospace</string>
</test>
<edit name="family" mode="assign" binding="strong">
<string>CaskaydiaMono Nerd Font</string>
<string>JetBrainsMono Nerd Font</string>
</edit>
</match>

View File

@@ -2,7 +2,7 @@
config-file = ?"~/.config/omarchy/current/theme/ghostty.conf"
# Font
font-family = "CaskaydiaMono Nerd Font"
font-family = "JetBrainsMono Nerd Font"
font-style = Regular
font-size = 9
@@ -25,3 +25,10 @@ shell-integration-features = no-cursor,ssh-env
# Keyboard bindings
keybind = shift+insert=paste_from_clipboard
keybind = control+insert=copy_to_clipboard
keybind = super+control+shift+alt+arrow_down=resize_split:down,100
keybind = super+control+shift+alt+arrow_up=resize_split:up,100
keybind = super+control+shift+alt+arrow_left=resize_split:left,100
keybind = super+control+shift+alt+arrow_right=resize_split:right,100
# Slowdown mouse scrolling
mouse-scroll-multiplier = 0.95

View File

@@ -1,17 +1,14 @@
# Application bindings
$terminal = uwsm-app -- xdg-terminal-exec
$browser = omarchy-launch-browser
bindd = SUPER, RETURN, Terminal, exec, $terminal --working-directory="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)"
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
bindd = SUPER SHIFT, B, Browser, exec, $browser
bindd = SUPER SHIFT ALT, B, Browser (private), exec, $browser --private
bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser
bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop
bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop"
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
bindd = SUPER SHIFT, T, Activity, exec, omarchy-launch-tui btop
bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password

View File

@@ -1,2 +0,0 @@
# Extra env variables
# env = MY_GLOBAL_ENV,setting

View File

@@ -16,7 +16,6 @@ source = ~/.config/omarchy/current/theme/hyprland.conf
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/input.conf
source = ~/.config/hypr/bindings.conf
source = ~/.config/hypr/envs.conf
source = ~/.config/hypr/looknfeel.conf
source = ~/.config/hypr/autostart.conf

View File

@@ -22,10 +22,10 @@ input-field {
outer_color = $outer_color
outline_thickness = 4
font_family = CaskaydiaMono Nerd Font Propo
font_family = JetBrainsMono Nerd Font
font_color = $font_color
placeholder_text = Enter Password 󰈷
placeholder_text = Enter Password
check_color = $check_color
fail_text = <i>$FAIL ($ATTEMPTS)</i>

View File

@@ -3,7 +3,7 @@
input {
# Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
# kb_layout = us,dk,eu
kb_options = compose:caps # ,grp:shifts_toggle
kb_options = compose:caps # ,grp:alts_toggle
# Change speed of keyboard repeat
repeat_rate = 40

View File

@@ -8,7 +8,7 @@ monitor=,preferred,auto,auto
# Good compromise for 27" or 32" 4K monitors (but fractional!)
# env = GDK_SCALE,1.75
# monitor=,preferred,auto,1.666667
# monitor=,preferred,auto,1.6
# Straight 1x setup for low-resolution displays like 1080p or 1440p
# env = GDK_SCALE,1

3
config/hypr/xdph.conf Normal file
View File

@@ -0,0 +1,3 @@
screencopy {
allow_token_by_default = true
}

View File

@@ -1,2 +1,13 @@
[binds]
<Ctrl+p> = exec lp $imv_current_file
# Print the current image file
<Ctrl+p> = exec lp "$imv_current_file"
# Delete the current image and quit the viewer
<Ctrl+x> = exec rm "$imv_current_file"; quit
# Delete the current image and move to the next one
<Ctrl+Shift+X> = exec rm "$imv_current_file"; close
# Rotate the currently open image by 90 degrees
<Ctrl+r> = exec mogrify -rotate 90 "$imv_current_file"

View File

@@ -1,7 +1,7 @@
include ~/.config/omarchy/current/theme/kitty.conf
# Font
font_family CaskaydiaMono Nerd Font
font_family JetBrainsMono Nerd Font
bold_italic_font auto
font_size 9.0

View File

@@ -9,7 +9,7 @@ window {
}
label {
font-family: 'CaskaydiaMono Nerd Font';
font-family: 'JetBrainsMono Nerd Font';
font-size: 11pt;
color: @label;

View File

@@ -2,6 +2,7 @@ force_keyboard_focus = true # fo
selection_wrap = true # wrap list if at bottom or top
theme = "omarchy-default" # theme to use
additional_theme_location = "~/.local/share/omarchy/default/walker/themes/"
hide_action_hints = true # globally hide the action hints
[placeholders]
"default" = { input = " Search...", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
@@ -10,9 +11,9 @@ additional_theme_location = "~/.local/share/omarchy/default/walker/themes/"
quick_activate = []
[providers]
max_results = 256 # 256 should be enough for everyone
default = [
"desktopapplications",
"menus",
"websearch",
] # providers to be queried by default

View File

@@ -28,6 +28,7 @@
"7": "7",
"8": "8",
"9": "9",
"10": "0",
"active": "󱓻"
},
"persistent-workspaces": {
@@ -56,7 +57,7 @@
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "xdg-terminal-exec btop"
"on-click": "omarchy-launch-or-focus-tui btop"
},
"clock": {
"format": "{:L%A %H:%M}",
@@ -99,13 +100,14 @@
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"format-connected": "󰂱",
"format-no-controller": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "blueberry"
"on-click": "omarchy-launch-bluetooth"
},
"pulseaudio": {
"format": "{icon}",
"on-click": "xdg-terminal-exec --app-id=com.omarchy.Wiremix -e wiremix",
"on-click": "omarchy-launch-or-focus-tui wiremix",
"on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%",
"scroll-step": 5,
@@ -123,7 +125,7 @@
"modules": ["custom/expand-icon", "tray"]
},
"custom/expand-icon": {
"format": "",
"format": "",
"tooltip": false
},
"custom/screenrecording-indicator": {

View File

@@ -7,7 +7,7 @@
border: none;
border-radius: 0;
min-height: 0;
font-family: 'CaskaydiaMono Nerd Font';
font-family: 'JetBrainsMono Nerd Font';
font-size: 12px;
}
@@ -53,7 +53,7 @@
}
#custom-expand-icon {
margin-right: 20px;
margin-right: 18px;
}
tooltip {

View File

@@ -0,0 +1,3 @@
# Terminal emulator preference order for xdg-terminal-exec
# The first found and valid terminal will be used
com.mitchellh.ghostty.desktop

View File

@@ -15,7 +15,7 @@ iso2sd() {
fi
}
# Format an entire drive for a single partition using ext4
# Format an entire drive for a single partition using exFAT
format-drive() {
if [ $# -ne 2 ]; then
echo "Usage: format-drive <device> <name>"
@@ -25,14 +25,20 @@ format-drive() {
else
echo "WARNING: This will completely erase all data on $1 and label it '$2'."
read -rp "Are you sure you want to continue? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
sudo wipefs -a "$1"
sudo dd if=/dev/zero of="$1" bs=1M count=100 status=progress
sudo parted -s "$1" mklabel gpt
sudo parted -s "$1" mkpart primary ext4 1MiB 100%
sudo mkfs.ext4 -L "$2" "$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")"
sudo chmod -R 777 "/run/media/$USER/$2"
echo "Drive $1 formatted and labeled '$2'."
sudo parted -s "$1" mkpart primary 1MiB 100%
partition="$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")"
sudo partprobe "$1" || true
sudo udevadm settle || true
sudo mkfs.exfat -n "$2" "$partition"
echo "Drive $1 formatted as exFAT and labeled '$2'."
fi
fi
}
@@ -49,19 +55,28 @@ transcode-video-4K() {
# Transcode any image to JPG image that's great for shrinking wallpapers
img2jpg() {
magick $1 -quality 95 -strip ${1%.*}.jpg
img="$1"
shift
magick "$img" $@ -quality 95 -strip ${img%.*}-optimized.jpg
}
# Transcode any image to JPG image that's great for sharing online without being too big
img2jpg-small() {
magick $1 -resize 1080x\> -quality 95 -strip ${1%.*}.jpg
img="$1"
shift
magick "$img" $@ -resize 1080x\> -quality 95 -strip ${img%.*}-optimized.jpg
}
# Transcode any image to compressed-but-lossless PNG
img2png() {
magick "$1" -strip -define png:compression-filter=5 \
img="$1"
shift
magick "$img" $@ -strip -define png:compression-filter=5 \
-define png:compression-level=9 \
-define png:compression-strategy=1 \
-define png:exclude-chunk=all \
"${1%.*}.png"
"${img%.*}-optimized.png"
}

View File

@@ -10,6 +10,10 @@ if command -v zoxide &> /dev/null; then
eval "$(zoxide init bash)"
fi
if command -v try &> /dev/null; then
eval "$(try init ~/Work/tries)"
fi
if command -v fzf &> /dev/null; then
if [[ -f /usr/share/fzf/completion.bash ]]; then
source /usr/share/fzf/completion.bash

View File

@@ -1,7 +0,0 @@
# Technicolor dreams
force_color_prompt=yes
color_prompt=yes
# Simple prompt with path in the window/pane title and caret for typing line
PS1=$'\uf0a9 '
PS1="\[\e]0;\w\a\]$PS1"

View File

@@ -1,7 +1,6 @@
source ~/.local/share/omarchy/default/bash/shell
source ~/.local/share/omarchy/default/bash/aliases
source ~/.local/share/omarchy/default/bash/functions
source ~/.local/share/omarchy/default/bash/prompt
source ~/.local/share/omarchy/default/bash/init
source ~/.local/share/omarchy/default/bash/envs
[[ $- == *i* ]] && bind -f ~/.local/share/omarchy/default/bash/inputrc

View File

@@ -0,0 +1,70 @@
--
-- Dynamic Omarchy Theme Menu for Elephant/Walker
--
Name = "omarchythemes"
NamePretty = "Omarchy Themes"
-- The main function elephant will call
function GetEntries()
local entries = {}
local theme_dir = os.getenv("HOME") .. "/.config/omarchy/themes"
-- First, get all theme directories
local find_dirs_cmd = "find -L '" .. theme_dir .. "' -mindepth 1 -maxdepth 1 -type d 2>/dev/null"
local handle = io.popen(find_dirs_cmd)
if not handle then
return entries
end
for theme_path in handle:lines() do
local theme_name = theme_path:match(".*/(.+)$")
if theme_name then
-- find preview image
local find_preview_cmd = "find -L '"
.. theme_path
.. "' -maxdepth 1 -type f \\( -name 'preview.png' -o -name 'preview.jpg' \\) 2>/dev/null | head -n 1"
local preview_handle = io.popen(find_preview_cmd)
local preview_path = nil
if preview_handle then
preview_path = preview_handle:read("*l")
preview_handle:close()
end
-- If no preview found, use first image from backgrounds folder
if not preview_path or preview_path == "" then
local bg_cmd = "find -L '"
.. theme_path
.. "/backgrounds' -maxdepth 1 -type f \\( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' \\) 2>/dev/null | head -n 1"
local bg_handle = io.popen(bg_cmd)
if bg_handle then
preview_path = bg_handle:read("*l")
bg_handle:close()
end
end
if preview_path and preview_path ~= "" then
local display_name = theme_name:gsub("_", " "):gsub("%-", " ")
display_name = display_name:gsub("(%a)([%w_']*)", function(first, rest)
return first:upper() .. rest:lower()
end)
display_name = display_name .. " "
table.insert(entries, {
Text = display_name,
Preview = preview_path,
PreviewType = "file",
Actions = {
activate = "omarchy-theme-set " .. theme_name,
},
})
end
end
end
handle:close()
return entries
end

View File

@@ -1 +1,2 @@
windowrule = noscreenshare, class:^(1Password)$
windowrule = noscreenshare, class:^(1[p|P]assword)$
windowrule = tag +floating-window, class:^(1[p|P]assword)$

View File

@@ -1,5 +1,5 @@
# Browser types
windowrule = tag +chromium-based-browser, class:((google-)?[cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable|helium)
windowrule = tag +chromium-based-browser, class:((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)
windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf)
# Force chromium-based browsers into a tile to deal with --app bug

View File

@@ -0,0 +1,2 @@
# Focus floating DaVinci Resolve dialog windows
windowrule = stayfocused, class:.*[Rr]esolve.*, floating:1

View File

@@ -1,9 +1,22 @@
# JetBrains windows default size
windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$
# Fix splash screen showing in weird places and prevent annoying focus takeovers
windowrule = tag +jetbrains-splash, class:^(jetbrains-.*)$, title:^(splash)$, floating:1
windowrule = center, tag:jetbrains-splash
windowrule = nofocus, tag:jetbrains-splash
windowrule = noborder, tag:jetbrains-splash
# Fix tab dragging (tab titles are just one space)
windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^\\s$
# Center popups/find windows
windowrule = tag +jetbrains, class:^(jetbrains-.*), title:^()$, floating:1
windowrule = center, tag:jetbrains
# Allow dialogs (like "Send usage statistics") to be focusable and clickable
windowrule = unset,nofocus,class:^(.*jetbrains.*)$,title:^$
windowrule = unset,noinitialfocus,class:^(.*jetbrains.*)$,title:^$
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
windowrule = stayfocused, tag:jetbrains
windowrule = noborder, tag:jetbrains
# For some reason tag:jetbrains does not work for size rule
windowrule = size >50% >50%, class:^(jetbrains-.*), title:^()$, floating:1
# Disable window flicker when autocomplete or tooltips appear
windowrule = noinitialfocus, class:^(jetbrains-.*)$, title:^(win.*)$, floating:1
# Disable mouse focus
windowrule = nofollowmouse, class:^(jetbrains-.*)$

View File

@@ -3,12 +3,12 @@ windowrule = float, tag:floating-window
windowrule = center, tag:floating-window
windowrule = size 875 600, tag:floating-window
windowrule = tag +floating-window, class:(blueberry.py|com.omarchy.Impala|com.omarchy.Wiremix|com.omarchy.Omarchy|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
windowrule = tag +floating-window, class:(org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
windowrule = float, class:org.gnome.Calculator
# Fullscreen screensaver
windowrule = fullscreen, class:Screensaver
windowrule = fullscreen, class:org.omarchy.screensaver
# No transparency on media windows
windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$

View File

@@ -6,8 +6,6 @@ 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 = omarchy-cmd-first-run
exec-once = uwsm-app -- elephant
exec-once = uwsm-app -- walker --gapplication-service
# Slow app launch fix -- set systemd vars
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)

View File

@@ -27,6 +27,7 @@ bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
# Move active window to a workspace with SUPER + SHIFT + [1-9]
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
@@ -38,6 +39,7 @@ bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 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
# Control scratchpad
bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad
@@ -48,6 +50,10 @@ bindd = SUPER, TAB, Next workspace, workspace, e+1
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
# Move workspaces to other monitors
bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l
bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r
# 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
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
@@ -88,13 +94,17 @@ bindd = SUPER ALT, DOWN, Move window to group on bottom, moveintogroup, d
bindd = SUPER ALT, TAB, Next window in group, changegroupactive, f
bindd = SUPER ALT SHIFT, TAB, Previous window in group, changegroupactive, b
# Overload lateral window navigation for grouped windows
bindd = SUPER ALT, LEFT, Move grouped window focus left, changegroupactive, b
bindd = SUPER ALT, RIGHT, Move grouped window focus right, changegroupactive, f
# Scroll through a set of grouped windows with SUPER + ALT + scroll
bindd = SUPER ALT, mouse_down, Next window in group, changegroupactive, f
bindd = SUPER ALT, mouse_up, Previous window in group, changegroupactive, b
# Activate window in a group by number
bindd = SUPER ALT, 1, Switch to group window 1, changegroupactive, 1
bindd = SUPER ALT, 2, Switch to group window 2, changegroupactive, 2
bindd = SUPER ALT, 3, Switch to group window 3, changegroupactive, 3
bindd = SUPER ALT, 4, Switch to group window 4, changegroupactive, 4
bindd = SUPER ALT, 5, Switch to group window 5, changegroupactive, 5
bindd = SUPER ALT, code:10, Switch to group window 1, changegroupactive, 1
bindd = SUPER ALT, code:11, Switch to group window 2, changegroupactive, 2
bindd = SUPER ALT, code:12, Switch to group window 3, changegroupactive, 3
bindd = SUPER ALT, code:13, Switch to group window 4, changegroupactive, 4
bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5

View File

@@ -18,6 +18,7 @@ bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-wo
bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all
bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications"
bindd = SUPER ALT, COMMA, Invoke last notification, exec, makoctl invoke
# Toggle idling
bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle

View File

@@ -14,3 +14,8 @@ input {
natural_scroll = false
}
}
misc {
key_press_enables_dpms = true # key press will trigger wake
mouse_move_enables_dpms = true # mouse move will trigger wake
}

View File

@@ -38,8 +38,11 @@ decoration {
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 3
size = 2
passes = 2
special = true
brightness = 0.60
contrast = 0.75
}
}

View File

@@ -1,3 +0,0 @@
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 @@
Server = https://mirror.omarchy.org/$repo/os/$arch

View File

@@ -0,0 +1 @@
Server = https://stable-mirror.omarchy.org/$repo/os/$arch

View File

@@ -27,4 +27,4 @@ Include = /etc/pacman.d/mirrorlist
[omarchy]
SigLevel = Optional TrustAll
Server = https://pkgs.omarchy.org/$arch
Server = https://pkgs.omarchy.org/stable/$arch

View File

@@ -112,13 +112,40 @@
</child>
</object>
</child>
<child>
<object class="GtkBox" id="Keybinds">
<property name="hexpand">true</property>
<property name="margin-top">10</property>
<style>
<class name="keybinds"></class>
</style>
<child>
<object class="GtkBox" id="GlobalKeybinds">
<property name="spacing">10</property>
<style>
<class name="global-keybinds"></class>
</style>
</object>
</child>
<child>
<object class="GtkBox" id="ItemKeybinds">
<property name="hexpand">true</property>
<property name="halign">end</property>
<property name="spacing">10</property>
<style>
<class name="item-keybinds"></class>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="Error">
<style>
<class name="error"></class>
</style>
<property name="xalign">0</property>
<property name="visible">false</property>
<property name="visible">false</property>
</object>
</child>
</object>

View File

@@ -113,5 +113,4 @@ child:selected .item-box * {
}
.preview {
background: @background;
}

View File

@@ -1,6 +1,8 @@
# Add ./bin to path for all items in ~/Work
# Setup default work directory (and tries)
mkdir -p "$HOME/Work"
mkdir -p "$HOME/Work/tries"
# Add ./bin to path for all items in ~/Work
cat >"$HOME/Work/.mise.toml" <<'EOF'
[env]
_.path = "{{ cwd }}/bin"

View File

@@ -15,3 +15,7 @@ Description = Restarting Walker services after system update
When = PostTransaction
Exec = $OMARCHY_PATH/bin/omarchy-restart-walker
EOF
# Link the visual theme menu config
mkdir -p ~/.config/elephant/menus
ln -snf $OMARCHY_PATH/default/elephant/omarchy_themes.lua ~/.config/elephant/menus/omarchy_themes.lua

View File

@@ -0,0 +1,2 @@
elephant service enable
systemctl --user start elephant.service

View File

@@ -1,6 +1,6 @@
if ! ping -c3 -W1 1.1.1.1 >/dev/null 2>&1; then
notify-send "󰖩 Click to Setup Wi-Fi" "Tab to navigate, Space to select, ? for help." -u critical -t 30000
notify-send " Update System" "When you have internet, click to update the system." -u critical
notify-send "󰖩 Click to Setup Wi-Fi" "Tab to navigate, Space to select, ? for help." -u critical
else
notify-send " Update System" "Click to update the system." -u critical
fi

View File

@@ -4,15 +4,13 @@
1password-beta
1password-cli
aether
alacritty
asdcontrol
avahi
bash-completion
bat
blueberry
bluetui
brightnessctl
btop
cargo
clang
cups
cups-browsed
@@ -23,6 +21,7 @@ docker-buildx
docker-compose
dust
evince
exfatprogs
expac
eza
fastfetch
@@ -33,6 +32,7 @@ fd
ffmpegthumbnailer
fontconfig
fzf
ghostty
github-cli
gnome-calculator
gnome-keyring
@@ -64,12 +64,12 @@ less
libsecret
libyaml
libqalculate
libreoffice
libreoffice-fresh
llvm
localsend
luarocks
mako
man
man-db
mariadb-libs
mise
mpv
@@ -99,6 +99,8 @@ python-poetry-core
python-terminaltexteffects
qt5-wayland
ripgrep
ruby
rust
satty
sddm
signal-desktop
@@ -111,6 +113,7 @@ swayosd
system-config-printer
tldr
tree-sitter-cli
tobi-try
ttf-cascadia-mono-nerd
ttf-ia-writer
ttf-jetbrains-mono-nerd
@@ -119,6 +122,7 @@ tzupdate
ufw
ufw-docker
unzip
usage
uwsm
waybar
wayfreeze

View File

@@ -35,7 +35,6 @@ pipewire
pipewire-alsa
pipewire-jack
pipewire-pulse
qt5-remoteobjects
qt6-wayland
sassc
snapper

View File

@@ -1,6 +1,6 @@
# Configure pacman
sudo cp -f ~/.local/share/omarchy/default/pacman/pacman.conf /etc/pacman.conf
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist
sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist-stable /etc/pacman.d/mirrorlist
if lspci -nn | grep -q "106b:180[12]"; then
cat <<EOF | sudo tee -a /etc/pacman.conf >/dev/null

View File

@@ -9,8 +9,19 @@ export OMARCHY_PATH=$HOME/.local/share/omarchy
export PATH=$OMARCHY_PATH/bin/:$PATH
EOF
# Ensure we have the latest repos and are ready to pull
omarchy-refresh-pacman
sudo systemctl restart systemd-timesyncd
sudo pacman -Sy # Normally not advisable, but we'll do a full -Syu before finishing
mkdir -p ~/.local/state/omarchy/migrations
touch ~/.local/state/omarchy/migrations/1751134560.sh
sudo systemctl restart systemd-timesyncd
# Remove old AUR packages to prevent a super lengthy build on old Omarchy installs
omarchy-pkg-drop zoom qt5-remoteobjects wf-recorder wl-screenrec
# Get rid of old AUR packages
bash $OMARCHY_PATH/migrations/1756060611.sh
touch ~/.local/state/omarchy/migrations/1756060611.sh
bash omarchy-update-perform

View File

@@ -1,9 +0,0 @@
echo "Add Omarchy Package Repository"
omarchy-refresh-pacman-mirrorlist
if ! grep -q "omarchy" /etc/pacman.conf; then
sudo sed -i '/^\[core\]/i [omarchy]\nSigLevel = Optional TrustAll\nServer = https:\/\/pkgs.omarchy.org\/$arch\n' /etc/pacman.conf
sudo systemctl restart systemd-timesyncd
sudo pacman -Syu --noconfirm
fi

View File

@@ -1,3 +1,4 @@
echo "Ensure all indexes and packages are up to date"
omarchy-refresh-pacman
sudo pacman -Syu --noconfirm

View File

@@ -1,4 +1,4 @@
# Turn on bluetooth service so blueberry works out the box
# Turn on bluetooth service so blueberry or bluetui works out the box
echo "Let's turn on Bluetooth service so the controls work"
if systemctl is-enabled --quiet bluetooth.service && systemctl is-active --quiet bluetooth.service; then
# Bluetooth is already enabled, nothing to change

View File

@@ -1,4 +0,0 @@
echo "Update and restart Walker to resolve stuck Omarchy menu"
sudo pacman -Syu --noconfirm walker-bin
omarchy-restart-walker

View File

@@ -1,3 +0,0 @@
echo "Update Walker config to add 60s timeout such that it won't conflict with screensaver"
omarchy-refresh-walker

View File

@@ -13,7 +13,6 @@ reinstall_package_opr yay-bin yay
reinstall_package_opr obsidian-bin obsidian
reinstall_package_opr localsend-bin localsend
reinstall_package_opr omarchy-chromium-bin omarchy-chromium
reinstall_package_opr walker-bin
reinstall_package_opr python-terminaltexteffects
reinstall_package_opr tzupdate
reinstall_package_opr typora

View File

@@ -1,7 +1,4 @@
echo "Move Omarchy Package Repository after Arch core/extra/multilib and remove AUR"
sudo cp /etc/pacman.conf /etc/pacman.conf.bak
sudo sed -i '/\[omarchy\]/,+2 d' /etc/pacman.conf
sudo sed -i '/\[chaotic-aur\]/,+2 d' /etc/pacman.conf
sudo bash -c 'echo -e "\n[omarchy]\nSigLevel = Optional TrustAll\nServer = https://pkgs.omarchy.org/\$arch" >> /etc/pacman.conf'
omarchy-refresh-pacman
sudo pacman -Syu --noconfirm

View File

@@ -1,8 +0,0 @@
echo "Add eza themeing"
mkdir -p ~/.config/eza
if [ -f ~/.config/omarchy/current/theme/eza.yml ]; then
ln -snf ~/.config/omarchy/current/theme/eza.yml ~/.config/eza/theme.yml
fi

View File

@@ -17,6 +17,7 @@ PACKAGES=(
"elephant-websearch"
"elephant-todo"
"walker"
"libqalculate"
)
for pkg in "${PACKAGES[@]}"; do
@@ -31,6 +32,10 @@ if [[ "$WALKER_MAJOR" -lt 2 ]]; then
NEEDS_MIGRATION=true
fi
# Ensure basic config is present
mkdir -p ~/.config/walker
cp -r ~/.local/share/omarchy/config/walker/* ~/.config/walker/
if $NEEDS_MIGRATION; then
kill -9 $(pgrep -x walker) 2>/dev/null || true
@@ -41,5 +46,10 @@ if $NEEDS_MIGRATION; then
source $OMARCHY_PATH/install/config/walker-elephant.sh
rm -rf ~/.config/walker/themes
omarchy-refresh-walker
omarchy-refresh-config walker/config.toml
omarchy-refresh-config elephant/calc.toml
omarchy-refresh-config elephant/desktopapplications.toml
fi
echo # Assure final success

View File

@@ -8,9 +8,6 @@ if ! grep -q "map shift+insert paste_from_clipboard" "$KITTY_CONF"; then
sed -i '/map ctrl+insert copy_to_clipboard/a map shift+insert paste_from_clipboard' "$KITTY_CONF"
fi
echo "Update Walker configs"
omarchy-refresh-walker
echo "Copy hooks examples"
cp -r $OMARCHY_PATH/config/omarchy/* $HOME/.config/omarchy/

View File

@@ -4,5 +4,4 @@ WAYBAR_CONFIG="$HOME/.config/waybar/config.jsonc"
if [[ -f "$WAYBAR_CONFIG" ]] && ! grep -A5 '"custom/omarchy"' "$WAYBAR_CONFIG" | grep -q '"on-click-right"'; then
sed -i '/"on-click": "omarchy-menu",/a\ "on-click-right": "omarchy-launch-terminal",' "$WAYBAR_CONFIG"
omarchy-state set restart-waybar-required
fi

View File

@@ -12,15 +12,9 @@ omarchy-pkg-add xdg-terminal-exec
# Set up xdg-terminals.list based on current $TERMINAL
if [ -n "$TERMINAL" ]; then
case "$TERMINAL" in
alacritty)
desktop_id="Alacritty.desktop"
;;
ghostty)
desktop_id="com.mitchellh.ghostty.desktop"
;;
kitty)
desktop_id="kitty.desktop"
;;
alacritty) desktop_id="Alacritty.desktop" ;;
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
kitty) desktop_id="kitty.desktop" ;;
esac
if [ -n "$desktop_id" ]; then

5
migrations/1762352101.sh Normal file
View File

@@ -0,0 +1,5 @@
echo "Increase Walker limit on how many entries can be shown to 256"
if ! grep -q "max_results" ~/.config/walker/config.toml; then
sed -i '/^\[providers\]$/a max_results = 256' ~/.config/walker/config.toml
fi

8
migrations/1762417304.sh Normal file
View File

@@ -0,0 +1,8 @@
echo "Replace bluetooth GUI with TUI"
omarchy-pkg-add bluetui
omarchy-pkg-drop blueberry
if ! grep -q "omarchy-launch-bluetooth" ~/.config/waybar/config.jsonc; then
sed -i 's/blueberry/omarchy-launch-bluetooth/' ~/.config/waybar/config.jsonc
fi

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