Compare commits

...
108 Commits
Author SHA1 Message Date
David Heinemeier Hansson b0ab9782d6 Completion should not include --help 2026-05-01 18:03:12 +02:00
David Heinemeier Hansson f02305ecd8 This was actually correct using an alias 2026-05-01 18:01:41 +02:00
David Heinemeier Hansson 4a12b41893 Hide individual omarchy-* binaries from initial-word command completion
The unified `omarchy` dispatcher is the user-facing entry point
2026-05-01 17:59:17 +02:00
David Heinemeier Hansson c9ff10b4fd Update to use the new single command cli 2026-05-01 17:47:10 +02:00
David Heinemeier Hansson 0f8eb3a6e6 Fix tests 2026-05-01 17:39:59 +02:00
David Heinemeier Hansson f2c1339641 Correct to what's now right 2026-05-01 17:38:20 +02:00
David Heinemeier Hansson a2e83a784e Add missing docs 2026-05-01 17:33:36 +02:00
David Heinemeier Hansson 0d4a076a10 Add omarchy command documentation 2026-05-01 17:31:25 +02:00
David Heinemeier Hansson ee6fbda428 Add bash completions for command 2026-05-01 17:25:23 +02:00
David Heinemeier Hansson d84d2fe11d Remove outdated or internal 2026-05-01 17:23:58 +02:00
David Heinemeier Hansson bc512b437f Merge remote-tracking branch 'origin/dev' into omarchy-cli
# Conflicts:
#	bin/omarchy-hyprland-monitor-watch
#	bin/omarchy-plymouth-reset
#	bin/omarchy-sudo-passwordless
2026-05-01 17:07:09 +02:00
cdb9694360 Add a toggle for touchscreen on supported devices (#5510)
* Add minimum brightness cap to prevent OLED displays turning off

* Revert "Add minimum brightness cap to prevent OLED displays turning off"

This reverts commit fe855ecf9aeacfa1b9ffcff3d43adb10908435e5.

* Add touchscreen toggle support

* Use finger glyph

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-05-01 16:47:11 +02:00
c078d7ad05 Implement non-uniform brightness step adjustments (#5525)
* Implement non-uniform brightness step adjustments

Add logic for non-uniform step size adjustments based on current brightness level.

* Ensure percentages are moved in a consistent manner so we don't get rounding errors

* Ensure we don't go below 1%

To prevent screen from turning off entirely on some models

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-05-01 16:43:32 +02:00
69ddcfdf2e Updated interface color configuration to RRGGBB format (#5471)
Migrated branding and help text color definitions to the new hexadecimal RRGGBB format in accordance with the latest Limine specifications. This update also introduces the interface_help_colour_bright parameter to ensure consistent visual aesthetics during the auto-boot sequence.

For the time being, a green palette has been implemented to maintain the traditional visual identity of Omarchy.

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-05-01 16:37:34 +02:00
Nicolas DorierandGitHub 61848c1910 Fix hibernation on new NVidia drivers (#5519)
New drivers don't seem to expose the necessary suspend interface to use `NVreg_PreserveVideoMemoryAllocations`.

I explained the issues I experienced on:
https://github.com/basecamp/omarchy/discussions/5500

While https://github.com/omacom-io/omarchy-pkgs/pull/84 fixed part of
the issue, the default value of `NVreg_PreserveVideoMemoryAllocations`
is `2`, which doesn't work.
2026-05-01 16:32:09 +02:00
Tushar ChauhanandGitHub 21f712c325 Fix: read files from symlink directory in background selector menu (#5524)
* Fix: read files from symlink directory in background selector menu

* safely parse the path to avoid option injection

* Simply use -L flag with find to resolve symlinks
2026-05-01 16:31:02 +02:00
Nicolas DorierandGitHub bb0adde652 Restore jetbrains no_follow_mouse (#5239)
This reverts partially commit e5783569489818724d221f4400cb952f300d29ad.
2026-05-01 16:12:40 +02:00
David Heinemeier Hansson 26741bf4e3 Correct spelling 2026-05-01 14:15:03 +02:00
David Heinemeier Hansson bf9be2ea1b Fix casing 2026-05-01 11:27:15 +02:00
David Heinemeier Hansson 18275dcaca Preinstall cliamp 2026-05-01 09:45:25 +02:00
David Heinemeier Hansson 3c780c19ce Ensure Brave Origin is supported for live themeing just like regular Brave 2026-05-01 09:26:19 +02:00
David Heinemeier Hansson 317eb44fb2 Add ghui is a lazy-installed TUI 2026-05-01 08:47:26 +02:00
David Heinemeier Hansson c06bbe40bb Allow for lazy-install of bun runtime 2026-05-01 08:46:12 +02:00
David Heinemeier Hansson 0555c34416 Allow for bun to be the executor and bring back the spinner 2026-05-01 08:31:38 +02:00
David Heinemeier Hansson ec69817e74 Fix spelling 2026-04-30 22:23:43 +02:00
cfultonandGitHub 6fac70d1a1 Replace deprecated sainnhe.everforest VSCode extension with reesew.everforest-theme (#5498) 2026-04-30 21:19:52 +02:00
guidovicinoandGitHub c6e55ca4ba Move Obsidian launch flags to user config (#5488)
* Move Obsidian flags to user config

* Preserve Obsidian flags during migration

* Keep existing Obsidian launch flags

* Copy default Obsidian flags in migration
2026-04-30 21:17:53 +02:00
David Heinemeier Hansson d5aa4b7b4b Only XPS now needs the custom ptl kernel 2026-04-30 21:09:22 +02:00
Andrii FurmanetsandGitHub 0b1607786d Restart Walker after removing web apps (#5513) 2026-04-30 20:14:29 +02:00
Danila DanilinandGitHub 710356e900 fix: to check encrypted drives amount (#5515) 2026-04-30 20:14:01 +02:00
David Heinemeier Hansson 6ab4196985 Quiet this during install 2026-04-30 20:09:01 +02:00
David Heinemeier Hansson 24b32da1a1 Ensure policy directories are available before we try writing to them 2026-04-30 20:07:43 +02:00
David Heinemeier Hansson a43df3963a Correct the order to prevent error message during install 2026-04-30 20:04:54 +02:00
David Heinemeier Hansson 91608ea3d3 Update interface_branding_color for limine 12 2026-04-30 19:38:04 +02:00
David Heinemeier Hansson 6fc7f90e43 Revert "Try debugging F13P issue by not turning on fred there"
This reverts commit f15094c9ef.
2026-04-30 19:30:06 +02:00
David Heinemeier Hansson f15094c9ef Try debugging F13P issue by not turning on fred there 2026-04-30 18:42:37 +02:00
David Heinemeier Hansson 25b114fa7a Also not used 2026-04-30 18:40:58 +02:00
David Heinemeier Hansson 6b8c2a0a04 Not installed any more either 2026-04-30 18:34:26 +02:00
David Heinemeier Hansson 340c8ceeef We already have this listed on base 2026-04-30 18:30:10 +02:00
David Heinemeier Hansson c86ebe0cc3 Nothing is actually using dart 2026-04-30 18:18:13 +02:00
AlexandreandGitHub 5683b1bdbd Fix internal monitor disable for non-eDP-1 systems (#5511)
Detect the internal monitor name dynamically at runtime instead of
hardcoding eDP-1 in a static toggle conf file. Uses the same pattern
as omarchy-hyprland-monitor-internal-mirror.

Fixes #5443
2026-04-30 17:51:29 +02:00
David Heinemeier Hansson cbefe54238 Refresh the configs 2026-04-30 17:31:32 +02:00
David Heinemeier Hansson 36026d78ed Reapply "Simplify the migration"
This reverts commit 0a57fae591.
2026-04-30 17:30:44 +02:00
David Heinemeier Hansson 6ef510cc54 Reapply "Ensure we don't lose walker and elephant when we swap around"
This reverts commit e5536f3c4d.
2026-04-30 17:30:42 +02:00
David Heinemeier Hansson eca926b5a4 Reapply "Replace coterie of individual Elephant packages with the single elephant-all package"
This reverts commit 8ff1208bdd.
2026-04-30 17:30:40 +02:00
David Heinemeier Hansson 175a22a048 Reapply "Just use the direct packages now that there's a single bundle for elephant-all"
This reverts commit 14f155eecb.
2026-04-30 17:30:38 +02:00
David Heinemeier Hansson 14f155eecb Revert "Just use the direct packages now that there's a single bundle for elephant-all"
This reverts commit b8a4d0b2ef.
2026-04-30 17:28:44 +02:00
David Heinemeier Hansson 8ff1208bdd Revert "Replace coterie of individual Elephant packages with the single elephant-all package"
This reverts commit c5784432e0.
2026-04-30 17:28:31 +02:00
David Heinemeier Hansson e5536f3c4d Revert "Ensure we don't lose walker and elephant when we swap around"
This reverts commit 6ce6f94647.
2026-04-30 17:28:20 +02:00
David Heinemeier Hansson 0a57fae591 Revert "Simplify the migration"
This reverts commit 37b60e5505.
2026-04-30 17:28:15 +02:00
David Heinemeier Hansson 91af40fd7c Enable fred=on on intel ptl machines 2026-04-30 17:26:14 +02:00
David Heinemeier Hansson 37b60e5505 Simplify the migration 2026-04-30 17:23:02 +02:00
David Heinemeier Hansson 6ce6f94647 Ensure we don't lose walker and elephant when we swap around 2026-04-30 17:20:45 +02:00
David Heinemeier Hansson c5784432e0 Replace coterie of individual Elephant packages with the single elephant-all package
Closes https://github.com/omacom-io/omarchy-pkgs/issues/12
2026-04-30 12:51:40 +02:00
David Heinemeier Hansson b8a4d0b2ef Just use the direct packages now that there's a single bundle for elephant-all 2026-04-30 11:47:18 +02:00
David Heinemeier Hansson 0aafd647e7 Better ordering 2026-04-30 10:25:45 +02:00
Michał BorejszoandGitHub d8a0deb400 Color man pages with bat (#5491) 2026-04-30 10:25:28 +02:00
Ben SmithandGitHub 768eabaaba Refactor ThinkPad mic mute to use omarchy-swayosd-client (#5493) 2026-04-30 10:24:05 +02:00
17ac8453b2 Fix refresh-config when target directory is missing (#5497)
* Don't use the names here since they break the all-themes setup in omarchy-nvim

* Fix refresh-config when target directory is missing

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-30 10:22:48 +02:00
David Heinemeier Hansson a677d6b7a3 We don't need to set PATH here any more
Closes #5472
2026-04-30 10:04:17 +02:00
David Heinemeier Hansson 7f9e1628d9 Ensure we cleanup stale snapshots 2026-04-30 09:40:08 +02:00
35789cc102 Add laptop display mirror toggle + hotkey (#5462)
* Add check for active external monitors before disabling internal display

Co-authored-by: Copilot <copilot@github.com>

* Revert "Add check for active external monitors before disabling internal display"

This reverts commit e20b3da87e3df0f084c0bca232a61ba58fab4cdc.

* feat(hyprland): add toggle for internal monitor mirroring

- Implement `omarchy-hyprland-monitor-internal-mirror` to dynamically mirror the internal eDP display to external monitor.
- Update `omarchy-hyprland-monitor-internal` to prevent disabling the laptop screen if mirroring is currently active.
- Add "Mirror Display" toggle to omarchy hardware Menu

* Ensure there is also a laptop monitor available to mirror before we do it

* Fix toggle use

* Recover from mirror mode gracefully

* Add hotkey to mirroring

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-29 20:19:32 +02:00
2f257e167c alacritty.toml fallback for legacy themes without colors.toml (#5404)
* add generation of colors.toml via alacritty.toml

* Shorter command name

* Fix perms

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-29 15:46:18 +02:00
N1R4andGitHub 66da3644fc feat: add dosfstools for /boot recovery (#5448)
Adds dosfstools to default installs and migrates existing systems so fsck.fat and mkfs.fat are available for Omarchy’s FAT32 /boot partition. This also helps with recovery from dirty or corrupt FAT filesystems after unclean shutdowns or power loss.
2026-04-29 15:32:08 +02:00
David Heinemeier Hansson ac40c0dbad Audio has input and output, easier to understand this way 2026-04-29 15:17:53 +02:00
David Heinemeier Hansson ed62fa81ec Move omarchy-cmd-share to omarchy-menu-share 2026-04-29 15:15:39 +02:00
David Heinemeier Hansson 4cc4144074 Move omarchy-cmd-first-run out of the cmd namespace too 2026-04-29 15:14:18 +02:00
David Heinemeier Hansson 39a289412d Move omarchy-cmd-screensaver to just omarchy-screensaver
We should just have omarchy-cmd-* for cmd checks
2026-04-29 15:11:37 +02:00
David Heinemeier Hansson 74a3797cf0 Move omarchy-lock-screen to omarchy-system-lock to fit with the others 2026-04-29 15:08:20 +02:00
David Heinemeier Hansson a7593ade7a Move audio commands under the same namespace 2026-04-29 15:00:59 +02:00
David Heinemeier Hansson c647edbc04 Allow passwordless sudo to be toggled from the toggle menu 2026-04-29 14:58:34 +02:00
David Heinemeier Hansson 12d8e001ab Simpler command structure 2026-04-29 14:54:03 +02:00
David Heinemeier Hansson e76d7544d3 Move omarchy-cmd-screen* to omarchy-capture-screen*
Will match upcoming cli grouping too
2026-04-29 14:50:15 +02:00
David ZuckerandGitHub 858916783f Allow Docker DNS from 192.168 networks (#5465)
* Allow Docker DNS from 192.168 networks

* Only add Docker DNS rule when UFW is active
2026-04-29 14:10:02 +02:00
bontalorandGitHub 4cc6ea3d9f Fix: Use accel_profile=flat instead of force_no_accel for proper pointer behavior (#5479)
* Replace force_no_accel with accel_profile

* Correct comment
2026-04-29 13:55:52 +02:00
David Heinemeier Hansson 114633f0e8 Hide needless noisy on startup and shutdown 2026-04-29 10:41:00 +02:00
David Heinemeier Hansson 6e04ff776b Add additional Tokyo Night backgrounds 2026-04-29 10:21:09 +02:00
David Heinemeier Hansson 008bdf0ff7 Revert "Retain the splash"
This reverts commit 951d6dfc49.
2026-04-29 08:54:40 +02:00
David Heinemeier Hansson 951d6dfc49 Retain the splash 2026-04-29 08:51:14 +02:00
David Heinemeier Hansson ca9cefe718 Speedup login sequence by about 3s 2026-04-29 08:09:10 +02:00
David Heinemeier Hansson 4e341fea3e Add omarchy bg option to all themes 2026-04-28 19:17:46 +02:00
David Heinemeier Hansson 93141bd578 Set SDDM login screen to the same theme as boot unlock 2026-04-28 18:08:34 +02:00
Ryan Hughes 4375782b7a Add omarchy CLI 2026-04-28 12:03:46 -04:00
David Heinemeier Hansson eb3da87992 We are going for another minor 2026-04-28 17:56:22 +02:00
David Heinemeier HanssonandGitHub 2716a3207c Provide unlock themeing (#5476) 2026-04-28 17:55:59 +02:00
David Heinemeier Hansson 8e30b2442c Add subtle highlight for better readability
Closes #5402
Co-authored-by: @pipetogrep
2026-04-28 15:58:35 +02:00
David Heinemeier Hansson 069f0c35c7 Add oma.png alternative plymouth logo 2026-04-28 11:51:47 +02:00
David Heinemeier Hansson 72ac23610f Try with split out i aliases 2026-04-28 11:51:47 +02:00
11e549a8ba Isolate npx wrapper runtime from project PATH (#5341)
* Don't use the names here since they break the all-themes setup in omarchy-nvim

* Pin Omarchy npx wrappers to matching node+npx binaries

* Fix npx wrappers when mise node is missing

* Pin npx wrappers to matching mise node runtime

* Isolate npx wrapper runtime from project PATH

* Clarify npx wrapper bin resolution

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-27 16:06:55 +02:00
David Heinemeier Hansson 7b79360ea1 Bump version 2026-04-27 15:56:03 +02:00
Justin BiardandGitHub 985a8010e6 chore: update hyprland wiki links (#5466) 2026-04-27 14:59:16 +02:00
a6bb239919 omarchy-setup-fingerprint: pre-remove libfprint to avoid noninteractive abort (#5463)
libfprint-git provides+conflicts libfprint, so pacman -S --noconfirm
defaults the conflict prompt to N and the install aborts. Pre-remove
libfprint with -Rdd; libfprint-git's provides=libfprint re-satisfies
fprintd's dep immediately after install.

replaces=(libfprint) on the OPR PKGBUILD was considered and rejected:
it does not affect direct -S installs (only -Syu repo scans), and on a
published package it would silently swap libfprint for libfprint-git
on every -Syu including machines with no FocalTech sensor.

Verified on B9406CAA non-interactively; fprintd-list and fprintd-verify
continue to work against existing enrollments.

Follow-up to #5454.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:58:27 +02:00
542ae346a0 Add ASUS ExpertBook B9406 fingerprint reader (FocalTech FT9349) support (#5454)
The B9406CAA ships with a Focal Tech FT9349 ESS sensor on USB 2808:a97a.
Mainline libfprint at 1.94.x lacks the open-source focaltech_moc driver
entirely; the driver is in libfprint master under LGPL but no upstream
release has shipped with PID 0xa97a in id_table[]. OPR carries
libfprint-git with both the driver and the PID patch.

Inline detection in omarchy-setup-fingerprint via /sys/bus/usb so we
don't introduce a one-off hardware-match script just for this case.
The check is cheap and runs only when the user opts into fingerprint
setup (lazy install pattern). Once upstream libfprint catches up, the
extra branch becomes harmless because libfprint-git provides=libfprint.

Tested end-to-end on B9406CAA: fprintd-enroll completes, fprintd-verify
matches enrolled fingers and rejects others, survives suspend/resume.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 11:39:31 +02:00
David Heinemeier Hansson 09411c4581 Make the "your kernel has been updated" check more resilient 2026-04-27 11:00:06 +02:00
Mathias EekandGitHub 88da163768 Fix jumping cursor / disable-while-typing on ASUS ROG Flow Z13 detachable keyboard (#5452)
* Fix disable-while-typing on ASUS ROG Flow Z13 detachable keyboard

* Replace lsusb with DMI detection for Z13 keyboard

* Use omarchy-hw-match instead of custom z13_present function
2026-04-27 08:49:48 +02:00
David Heinemeier Hansson 44d8d9b00f Use helper for this test 2026-04-27 08:42:44 +02:00
David Heinemeier Hansson 99f4cfbb1e Configure user directories with just modern relevancy 2026-04-27 08:38:54 +02:00
b164549b51 Add ASUS ExpertBook B9406 display and touchpad fixes for Panther Lake (#5435)
* Add ASUS ExpertBook B9406 display and touchpad fixes for Panther Lake

* Drop B9406 migration

Per DHH's review: the migration's audience is essentially nobody.
Anyone running Omarchy on B9406 today is doing so via nomodeset
manually at every boot, not via a working unmodified install. Fresh
installs after this PR ships will pick up the fixes through the
hardware-match install hook; no migration needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 18:31:43 +02:00
David Heinemeier Hansson 5f184e5099 Make it clearer 2026-04-26 08:45:52 +02:00
David Heinemeier Hansson 89162a4be1 Add way to customize the plymouth theme more easily 2026-04-26 08:45:02 +02:00
David Heinemeier Hansson 4b7fe16029 Offer direct boot as a toggle option 2026-04-25 21:33:46 +02:00
David Heinemeier Hansson e01741afab Hide useless lstopo.desktop 2026-04-25 21:17:18 +02:00
Ryan Hughes 2b4d89a9ea Keep hyprpicker alive until capture is complete to prevent mid-transition screenshots 2026-04-24 19:23:07 -04:00
David Heinemeier Hansson 0041950d46 Only reencode if we detect garbage frames 2026-04-24 10:47:04 +02:00
David Heinemeier Hansson 1d4c859c71 Proper fix for using device dark mode in Chrome 2026-04-24 10:39:40 +02:00
David Heinemeier Hansson 0be4648773 Better guard against scrambled frames in screenrecording on slower systems 2026-04-24 10:39:31 +02:00
David Heinemeier Hansson 1cf28a9fda Show detailed battery notification on right-click on Waybar battery icon 2026-04-24 10:00:41 +02:00
David Heinemeier Hansson 40f41a5299 Fix hw check for hybrid gpu 2026-04-24 09:56:08 +02:00
377 changed files with 3341 additions and 491 deletions
+1
View File
@@ -12,6 +12,7 @@
All commands start with `omarchy-`. Prefixes indicate purpose:
- `cmd-` - check if commands exist, misc utility commands
- `capture-` - screenshots, screen recordings, and other capture tools
- `pkg-` - package management helpers
- `hw-` - hardware detection (return exit codes for use in conditionals)
- `refresh-` - copy default config to user's `~/.config/`
+2
View File
@@ -0,0 +1,2 @@
[Desktop Entry]
Hidden=true
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Executable
+1032
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Returns true if AC power is connected.
# omarchy:summary=Returns true if AC power is connected.
for ac in /sys/class/power_supply/AC* /sys/class/power_supply/ADP*; do
[[ -r $ac/online && $(cat "$ac/online") == "1" ]] && exit 0
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
# omarchy:summary=Toggle microphone mute. Dell XPS and ThinkPad systems get special handling for the hardware LED.
if omarchy-hw-match "XPS"; then
omarchy-audio-input-mute-xps
elif omarchy-hw-match "ThinkPad"; then
omarchy-audio-input-mute-thinkpad
else
omarchy-swayosd-client --input-volume mute-toggle
fi
@@ -1,7 +1,6 @@
#!/bin/bash
# Toggle microphone mute on ThinkPad systems. Uses wpctl for reliable toggling
# and syncs the platform::micmute LED via brightnessctl.
# omarchy:summary=Toggle microphone mute on ThinkPad systems. Uses wpctl for reliable toggling
wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle >/dev/null
@@ -17,7 +16,6 @@ fi
brightnessctl --device="platform::micmute" set "$led_value" >/dev/null 2>&1 || true
swayosd-client \
--monitor "$(omarchy-hyprland-monitor-focused)" \
omarchy-swayosd-client \
--custom-message "$osd_message" \
--custom-icon "$osd_icon"
@@ -1,7 +1,6 @@
#!/bin/bash
# Toggle microphone mute on Dell XPS systems. Uses wpctl for reliable toggling
# and syncs the ALSA capture switch so the hardware mic mute LED follows state.
# omarchy:summary=Toggle microphone mute on Dell XPS systems. Uses wpctl for reliable toggling
wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle >/dev/null
@@ -1,6 +1,6 @@
#!/bin/bash
# Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
# omarchy:summary=Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
sinks_count=$(echo "$sinks" | jq '. | length')
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Returns the battery full capacity in Wh (rounded to whole number).
# Used by omarchy-battery-status for displaying battery capacity.
# omarchy:summary=Returns the battery full capacity in Wh (rounded to whole number).
battery_info=$(upower -i $(upower -e | grep BAT))
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Designed to be run by systemd timer every 30 seconds and alerts if battery is low
# omarchy:summary=Designed to be run by systemd timer every 30 seconds and alerts if battery is low
BATTERY_THRESHOLD=10
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Returns true if a battery is present on the system.
# Used by the battery monitor and other battery-related checks.
# omarchy:summary=Returns true if a battery is present on the system.
for bat in /sys/class/power_supply/BAT*; do
[[ -r $bat/present ]] &&
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Returns the battery percentage remaining as an integer.
# Used by the battery monitor and the Ctrl + Shift + Super + B hotkey.
# omarchy:summary=Returns the battery percentage remaining as an integer.
upower -i $(upower -e | grep BAT) | awk '/percentage/ {
print int($2)
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Returns the battery time remaining (to empty or full) in a compact format.
# omarchy:summary=Returns the battery time remaining (to empty or full) in a compact format.
battery_info=$(upower -i $(upower -e | grep BAT))
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Returns a formatted battery status string with percentage and power draw/charge.
# Used by the battery notification hotkey (Ctrl + Shift + Super + B).
# omarchy:summary=Returns a formatted battery status string with percentage and power draw/charge.
battery_info=$(upower -i $(upower -e | grep BAT))
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Set the branch for Omarchy's git repository.
# omarchy:summary=Set the branch for Omarchy's git repository.
# omarchy:args=<master|rc|dev>
if (($# == 0)); then
echo "Usage: omarchy-branch-set [master|rc|dev]"
+27 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Adjust brightness on the most likely display device.
# Usage: omarchy-brightness-display <step>
# omarchy:summary=Adjust brightness on the most likely display device.
# omarchy:args=<step>
step="${1:-+5%}"
@@ -14,6 +14,31 @@ for candidate in amdgpu_bl* intel_backlight acpi_video*; do
fi
done
# Current brightness percentage
current=$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')
# Apply non-uniform step size: 1% steps if at or below 5%, otherwise set an
# absolute target percentage to avoid raw backlight rounding causing uneven OSD steps.
if [[ $step == "+5%" ]]; then
if (( current < 5 )); then
(( target = current + 1 ))
else
(( target = current + 5 ))
fi
(( target > 100 )) && target=100
step="$target%"
elif [[ $step == "5%-" ]]; then
if (( current <= 5 )); then
(( target = current - 1 ))
else
(( target = current - 5 ))
fi
(( target < 1 )) && target=1
step="$target%"
fi
# Set the actual brightness of the display device.
brightnessctl -d "$device" set "$step" >/dev/null
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
# omarchy:summary=Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
# omarchy:requires-sudo=true
if (( $# == 0 )); then
echo "Adjust Apple Display Brightness by passing +5000 or -5000 (or any range from 0-60000)"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Adjust keyboard backlight brightness using available steps.
# Usage: omarchy-brightness-keyboard <up|down|cycle>
# omarchy:summary=Adjust keyboard backlight brightness using available steps.
# omarchy:args=<up|down|cycle>
direction="${1:-up}"
@@ -1,9 +1,10 @@
#!/bin/bash
# Start and stop a screenrecording, which will be saved to ~/Videos by default.
# Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs.
# Resolution is capped to 4K for monitors above 4K, native otherwise.
# Override via --resolution= (e.g. --resolution=1920x1080, --resolution=0x0 for native).
# omarchy:summary=Start or stop screen recording
# omarchy:group=capture
# omarchy:args=[--with-desktop-audio] [--with-microphone-audio] [--with-webcam] [--webcam-device=<device>] [--resolution=<size>] [--stop-recording]
# omarchy:examples=omarchy screenrecord | omarchy capture screenrecord --with-desktop-audio
# omarchy:aliases=omarchy screenrecord
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
@@ -164,12 +165,17 @@ finalize_recording() {
latest=$(cat "$RECORDING_FILE" 2>/dev/null)
[[ -f $latest ]] || return
# Re-encode only when the first GOP contains discardable warmup packets — stream copy can't
# trim those (it rewinds to the keyframe). Clean recordings stay on the fast stream-copy path.
local video_codec=(-c:v copy)
if ffprobe -v error -select_streams v:0 -read_intervals %+0.2 -show_entries packet=flags -of csv=p=0 "$latest" 2>/dev/null | grep -q D; then
video_codec=(-c:v libx264 -preset veryfast -crf 20)
fi
# Trim the first frame, and normalize audio to -14 LUFS if present, in a single pass
local args=(-y -ss 0.1 -i "$latest")
local args=(-y -ss 0.1 -i "$latest" "${video_codec[@]}")
if ffprobe -v error -select_streams a -show_entries stream=codec_type -of csv=p=0 "$latest" 2>/dev/null | grep -q audio; then
args+=(-af loudnorm=I=-14:TP=-1.5:LRA=11 -c:v copy)
else
args+=(-c copy)
args+=(-af loudnorm=I=-14:TP=-1.5:LRA=11)
fi
local processed="${latest%.mp4}-processed.mp4"
@@ -1,8 +1,10 @@
#!/bin/bash
# Take a screenshot of the whole screen, a specific window, or a user-drawn region.
# Saves to ~/Pictures by default, but that can be changed via OMARCHY_SCREENSHOT_DIR or XDG_PICTURES_DIR ENVs.
# Editor defaults to Satty but can be changed via --editor=<name> or OMARCHY_SCREENSHOT_EDITOR env
# omarchy:summary=Take a screenshot
# omarchy:group=capture
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy] [--editor=<name>]
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
# omarchy:aliases=omarchy screenshot
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
@@ -63,6 +65,13 @@ get_rectangles() {
hyprctl clients -j | jq -r --arg ws "$active_workspace" '.[] | select(.workspace.id == ($ws | tonumber)) | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
}
# Keep hyprpicker alive until after grim captures so the screenshot sees the
# frozen overlay rather than live content shifting during teardown.
cleanup_freeze() {
[[ -n $PID ]] && kill $PID 2>/dev/null
}
trap cleanup_freeze EXIT
# Select based on mode
case "$MODE" in
region)
@@ -70,14 +79,12 @@ region)
PID=$!
sleep .1
SELECTION=$(slurp 2>/dev/null)
kill $PID 2>/dev/null
;;
windows)
hyprpicker -r -z >/dev/null 2>&1 &
PID=$!
sleep .1
SELECTION=$(get_rectangles | slurp -r 2>/dev/null)
kill $PID 2>/dev/null
;;
fullscreen)
SELECTION=$(hyprctl monitors -j | jq -r "${JQ_MONITOR_GEO} .[] | select(.focused == true) | format_geo")
@@ -88,7 +95,6 @@ smart | *)
PID=$!
sleep .1
SELECTION=$(echo "$RECTS" | slurp 2>/dev/null)
kill $PID 2>/dev/null
# If the selection area is L * W < 20, we'll assume you were trying to select whichever
# window or output it was inside of to prevent accidental 2px snapshots
+3 -12
View File
@@ -1,17 +1,8 @@
#!/bin/bash
# Set the Omarchy channel, which dictates what git branch and package repository is used.
#
# Stable uses the master branch, which only sees updates on official releases, and
# the stable package repository, which typically lags the edge by a month to ensure
# better compatibility.
#
# Edge tracks the latest package repository, but still relies on the master branch,
# so new packages which require config changes may cause conflicts or errors.
#
# Dev tracks the active development dev branch, which may include partial or broken updates,
# as well as the latest package repository. This should only be used by Omarchy developers
# and people with a lot of experience managing Linux systems.
# omarchy:summary=Set the Omarchy channel, which dictates what git branch and package repository is used.
# omarchy:args=<stable|rc|edge|dev>
# omarchy:requires-sudo=true
if (($# == 0)); then
echo "Usage: omarchy-channel-set [stable|rc|edge|dev]"
-11
View File
@@ -1,11 +0,0 @@
#!/bin/bash
# Toggle microphone mute. Dell XPS and ThinkPad systems get special handling for the hardware LED.
if omarchy-hw-match "XPS"; then
omarchy-cmd-mic-mute-xps
elif omarchy-hw-match "ThinkPad"; then
omarchy-cmd-mic-mute-thinkpad
else
omarchy-swayosd-client --input-volume mute-toggle
fi
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Returns true if any of the commands passed in as arguments are missing on the system.
# omarchy:summary=Check whether any required commands are missing
for cmd in "$@"; do
if ! command -v "$cmd" &>/dev/null; then
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Returns true if all the commands passed in as arguments exit on the system.
# omarchy:summary=Check whether all required commands are available
for cmd in "$@"; do
command -v "$cmd" &>/dev/null || exit 1
+1 -3
View File
@@ -1,9 +1,7 @@
#!/bin/bash
# Returns the current working directory of the active terminal window,
# so a new terminal window can be started in the same directory.
# omarchy:summary=Print the current working directory of the active terminal window
# Go from current active terminal to its child shell process and run cwd there
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
+33 -20
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Add an EFI boot entry for the Omarchy UKI, allowing the system to boot directly
# without a bootloader like Limine. Requires UEFI firmware and a built UKI.
# omarchy:summary=Add or remove an EFI boot entry for the Omarchy UKI, allowing the system to boot directly
# omarchy:requires-sudo=true
if [[ ! -d /sys/firmware/efi ]]; then
echo "Error: System is not booted in UEFI mode" >&2
@@ -23,23 +23,36 @@ if cat /sys/class/dmi/id/bios_vendor 2>/dev/null | grep -qi "Apple"; then
exit 1
fi
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
existing_entry=$(efibootmgr | grep -E "^Boot[0-9A-Fa-f]+\*? Omarchy([[:space:]]|$)" | head -1)
if [[ -z $uki_file ]]; then
echo "Error: No Omarchy UKI found in /boot/EFI/Linux/" >&2
exit 1
fi
boot_source=$(findmnt -n -o SOURCE /boot)
disk=$(echo "$boot_source" | sed 's/p\?[0-9]*$//')
part=$(echo "$boot_source" | grep -o 'p\?[0-9]*$' | sed 's/^p//')
if gum confirm "Setup direct boot (so snapshot booting must be done via bios)?"; then
echo "Creating EFI boot entry for $uki_file"
sudo efibootmgr --create \
--disk "$disk" \
--part "$part" \
--label "Omarchy" \
--loader "\\EFI\\Linux\\$uki_file"
if [[ -n $existing_entry ]]; then
boot_num=$(echo "$existing_entry" | sed -n 's/^Boot\([0-9A-Fa-f]\+\).*/\1/p')
if gum confirm "Disable direct boot (remove Omarchy EFI entry)?"; then
echo "Removing EFI boot entry $boot_num"
sudo efibootmgr --bootnum "$boot_num" --delete-bootnum >/dev/null
fi
exit 0
else
uki_file=$(find /boot/EFI/Linux/ -name "omarchy*.efi" -printf "%f\n" 2>/dev/null | head -1)
if [[ -z $uki_file ]]; then
echo "Error: No Omarchy UKI found in /boot/EFI/Linux/" >&2
exit 1
fi
boot_source=$(findmnt -n -o SOURCE /boot)
disk=$(echo "$boot_source" | sed 's/p\?[0-9]*$//')
part=$(echo "$boot_source" | grep -o 'p\?[0-9]*$' | sed 's/^p//')
if gum confirm "Setup direct boot (so snapshot booting must be done via bios)?"; then
echo "Creating EFI boot entry for $uki_file"
sudo efibootmgr --create \
--disk "$disk" \
--part "$part" \
--label "Omarchy" \
--loader "\\EFI\\Linux\\$uki_file"
fi
fi
+4 -1
View File
@@ -1,6 +1,9 @@
#!/bin/bash
# Return exhaustive debugging information about the system to help diagnose problems.
# omarchy:summary=Print debugging information
# omarchy:args=[--no-sudo] [--print]
# omarchy:examples=omarchy debug --print --no-sudo
# omarchy:requires-sudo=true
NO_SUDO=false
PRINT_ONLY=false
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Creates a new Omarchy migration named after the unix timestamp of the last commit.
# Only intended for Omarchy developers.
# omarchy:summary=Creates a new Omarchy migration named after the unix timestamp of the last commit.
cd ~/.local/share/omarchy
migration_file="$HOME/.local/share/omarchy/migrations/$(git log -1 --format=%cd --date=unix).sh"
+111
View File
@@ -0,0 +1,111 @@
#!/bin/bash
# omarchy:summary=Measure Omarchy CLI response times
# omarchy:args=[--repeat=<count>]
# omarchy:examples=omarchy dev benchmark | omarchy dev benchmark --repeat=10
set -euo pipefail
OMARCHY_BIN_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
CLI="$OMARCHY_BIN_DIR/omarchy"
REPEAT=5
show_help() {
cat <<'EOF'
Usage:
omarchy dev benchmark [--repeat=<count>]
Measure response times for common Omarchy CLI surfaces.
Options:
--repeat=<count> Number of times to run each case (default: 5)
EOF
}
now_us() {
local now="${EPOCHREALTIME/./}"
printf '%s' "$now"
}
format_ms() {
local us="$1"
printf '%d.%03d' "$(( us / 1000 ))" "$(( us % 1000 ))"
}
run_case() {
local label="$1"
shift
local total_us=0
local min_us=0
local max_us=0
local elapsed_us=0
local start_us=0
local end_us=0
local status=0
for (( i = 1; i <= REPEAT; i++ )); do
start_us=$(now_us)
if "$@" >/dev/null; then
status=0
else
status=$?
fi
end_us=$(now_us)
if (( status != 0 )); then
printf '%-34s failed (exit %d)\n' "$label" "$status"
return "$status"
fi
elapsed_us=$(( end_us - start_us ))
total_us=$(( total_us + elapsed_us ))
if (( i == 1 || elapsed_us < min_us )); then
min_us=$elapsed_us
fi
if (( elapsed_us > max_us )); then
max_us=$elapsed_us
fi
done
printf '%-34s avg %8s ms min %8s ms max %8s ms\n' \
"$label" \
"$(format_ms "$(( total_us / REPEAT ))")" \
"$(format_ms "$min_us")" \
"$(format_ms "$max_us")"
}
while (( $# > 0 )); do
case "$1" in
--repeat=*)
REPEAT="${1#*=}"
;;
--help | -h)
show_help
exit 0
;;
*)
echo "Unknown option: $1" >&2
show_help >&2
exit 2
;;
esac
shift
done
if [[ ! $REPEAT =~ ^[0-9]+$ ]] || (( REPEAT < 1 )); then
echo "--repeat must be a positive integer" >&2
exit 2
fi
printf 'Omarchy CLI benchmark (%d runs each)\n\n' "$REPEAT"
run_case "omarchy" "$CLI"
run_case "omarchy --help" "$CLI" --help
run_case "omarchy commands" "$CLI" commands
run_case "omarchy commands --json" "$CLI" commands --json
run_case "omarchy commands --all --json" "$CLI" commands --all --json
run_case "omarchy theme set --help" "$CLI" theme set --help
run_case "omarchy screenshot --help" "$CLI" screenshot --help
run_case "omarchy restart --help" "$CLI" restart --help
run_case "omarchy theme current" "$CLI" theme current
+86
View File
@@ -0,0 +1,86 @@
#!/bin/bash
# omarchy:summary=Show Omarchy bin metadata fields and defaults
# omarchy:args=[--json]
set -euo pipefail
show_json() {
jq -n '{
ok: true,
defaults: {
group: "first filename segment after omarchy-",
name: "remaining filename segments with dashes converted to spaces",
route: "omarchy <group> <name>",
binary: "filename",
requires_sudo: false
},
fields: [
{name: "summary", required: true, type: "string", note: "One-line human and agent-facing description."},
{name: "group", required: false, type: "string", note: "Only set when the route group should differ from the filename-derived group."},
{name: "name", required: false, type: "string", note: "Only set when the route name should differ from the filename-derived name. May be empty for root commands."},
{name: "args", required: false, type: "string", note: "Only set when the command accepts arguments."},
{name: "examples", required: false, type: "string", note: "Pipe-separated examples."},
{name: "aliases", required: false, type: "string", note: "Pipe-separated alternate routes, e.g. omarchy screenshot."},
{name: "requires-sudo", required: false, type: "true", default: false, note: "Only include when true."}
]
}'
}
show_help() {
cat <<'EOF'
Omarchy bin metadata
Metadata lives in the top comment block of each executable bin/omarchy-* file.
Keep it slim: define only fields that are required or override defaults.
Required:
# omarchy:summary=<one-line description>
Inferred defaults:
group first filename segment after omarchy-
name remaining filename segments, with dashes converted to spaces
route omarchy <group> <name>
binary filename
requires-sudo false
Optional fields:
# omarchy:group=<group> route override only
# omarchy:name=<name> route override only; may be empty
# omarchy:args=<args> only if the command accepts args
# omarchy:examples=<cmd> | <cmd> pipe-separated examples
# omarchy:aliases=<route> | <route> pipe-separated alternate routes
# omarchy:requires-sudo=true only when true
Do not define:
binary inferred from filename
usage derived from route + args
false flags or empty args
Examples:
# omarchy:summary=Restart Walker and related user services
# omarchy:summary=Take a screenshot
# omarchy:group=capture
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy] [--editor=<name>]
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
# omarchy:aliases=omarchy screenshot
EOF
}
case "${1:-}" in
--json)
show_json
;;
--help | -h)
show_help
;;
"")
show_help
;;
*)
echo "Unknown option: $1" >&2
show_help >&2
exit 2
;;
esac
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Returns drive information about a given volumne, like /dev/nvme0, which is used by omarchy-drive-select.
# omarchy:summary=Print drive information such as size, model, and mount details
# omarchy:args=<drive>
if (($# == 0)); then
echo "Usage: omarchy-drive-info [/dev/drive]"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Select a drive from a list with info that includes space and brand. Used by omarchy-drive-set-password.
# omarchy:summary=Select a drive from a list with info that includes space and brand. Used by omarchy-drive-set-password.
if (($# == 0)); then
drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)')
+3 -2
View File
@@ -1,11 +1,12 @@
#!/bin/bash
# Set a new encryption password for a drive selected.
# omarchy:summary=Set a new encryption password for a drive selected.
# omarchy:requires-sudo=true
encrypted_drives=$(blkid -t TYPE=crypto_LUKS -o device)
if [[ -n $encrypted_drives ]]; then
if (( $(wc -l <<<encrypted_drives) == 1 )); then
if (( $(wc -l <<<"$encrypted_drives") == 1 )); then
drive_to_change="$encrypted_drives"
else
drive_to_change="$(omarchy-drive-select "$encrypted_drives")"
@@ -1,6 +1,7 @@
#!/bin/bash
# Finish the installation of Omarchy with items that can only be done after logging in.
# omarchy:summary=Finish the installation of Omarchy with items that can only be done after logging in.
# omarchy:requires-sudo=true
set -e
+2 -2
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Returns the name of the current monospace font being used by extracting it from the Waybar stylesheet.
# This can be changed using omarchy-font-set.
# omarchy:summary=Show current monospace font
# omarchy:examples=omarchy font current
grep -oP 'font-family:\s*["'\'']?\K[^;"'\'']+' ~/.config/waybar/style.css | head -n1
+2 -1
View File
@@ -1,5 +1,6 @@
#!/bin/bash
# Returns a list of all the monospace fonts available on the system that can be set using omarchy-font-set.
# omarchy:summary=List available monospace fonts
# omarchy:examples=omarchy font list | omarchy font set "CaskaydiaMono Nerd Font"
fc-list :spacing=100 -f "%{family[0]}\n" | grep -v -i -E 'emoji|signwriting|omarchy' | sort -u
+3 -2
View File
@@ -1,7 +1,8 @@
#!/bin/bash
# Set the system-wide monospace font that should be used by the terminal, hyprlock, waybar, swayosd, etc.
# The font name must be one of the ones returned by omarchy-font-list.
# omarchy:summary=Set the system monospace font
# omarchy:args=<font-name>
# omarchy:examples=omarchy font list | omarchy font set "CaskaydiaMono Nerd Font"
font_name="$1"
+2
View File
@@ -1,5 +1,7 @@
#!/usr/bin/env python3
# omarchy:summary=Run the Synaptics touchpad haptic feedback daemon
"""Haptic feedback daemon for Synaptics touchpads with Manual Trigger.
Monitors touchpad button press events and sends haptic pulses via HID
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Check if hibernation is supported
# omarchy:summary=Check if hibernation is supported
if [[ ! -f /sys/power/image_size ]]; then
exit 1
fi
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Removes hibernation setup: disables swap, removes swapfile, removes fstab entry,
# removes resume hook, and removes suspend-then-hibernate configuration.
# omarchy:summary=Remove hibernation setup including swap and boot resume settings
# omarchy:requires-sudo=true
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Creates a swap file in the btrfs subvolume, adds the swap file to /etc/fstab,
# adds a resume hook to mkinitcpio, and configures suspend-then-hibernate.
# omarchy:summary=Set up hibernation with swap and boot resume configuration
# omarchy:requires-sudo=true
if [[ ! -f /sys/power/image_size ]]; then
echo -e "Hibernation is not supported on your system" >&2
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Run a named hook, like post-update (available in ~/.config/omarchy/hooks/post-update).
# omarchy:summary=Run a named hook, like post-update (available in ~/.config/omarchy/hooks/post-update).
# omarchy:args=[name] [args...]
set -e
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# omarchy:summary=Detect ASUS ExpertBook B9406 series laptops on Intel Panther Lake.
omarchy-hw-match "B9406" && omarchy-hw-intel-ptl
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Detect whether the computer is an Asus ROG machine.
# omarchy:summary=Detect whether the computer is an Asus ROG machine.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "ASUSTeK COMPUTER INC." ]] &&
grep -q "ROG" /sys/class/dmi/id/product_family 2>/dev/null
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Match Dell XPS systems with LG OLED panel on Intel Panther Lake (Xe3) GPU.
# omarchy:summary=Match Dell XPS systems with LG OLED panel on Intel Panther Lake (Xe3) GPU.
omarchy-hw-match "XPS" \
&& omarchy-hw-intel-ptl \
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Returns true when an external monitor is physically connected.
# Uses kernel DRM state so the result is independent of Hyprland's startup timing.
# omarchy:summary=Returns true when an external monitor is physically connected.
for status in /sys/class/drm/card*-*/status; do
[[ "$status" == *-eDP-*/status ]] && continue
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Detect whether the computer is a Framework Laptop 16.
# omarchy:summary=Detect whether the computer is a Framework Laptop 16.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Framework" ]] &&
omarchy-hw-match "Laptop 16"
+7 -1
View File
@@ -1,3 +1,9 @@
#!/bin/bash
(($(lspci | grep -cE 'VGA|3D|Display') >= 2))
# omarchy:summary=Detect whether the system has an active hybrid GPU configuration
if command -v supergfxctl &>/dev/null; then
supergfxctl -s 2>/dev/null | grep -qw Hybrid
else
(($(lspci | grep -cE 'VGA|3D|Display') >= 2))
fi
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Detect whether the computer has an Intel CPU.
# omarchy:summary=Detect whether the computer has an Intel CPU.
[[ $(grep -m1 "vendor_id" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ') == "GenuineIntel" ]]
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Detect whether the computer has an Intel Panther Lake GPU.
# omarchy:summary=Detect whether the computer has an Intel Panther Lake GPU.
lspci | grep -iE 'vga|3d|display' | grep -qi 'panther lake'
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Match against the computer's DMI product name or product family (case-insensitive).
# Usage: omarchy-hw-match "XPS" or omarchy-hw-match "ThinkPad"
# omarchy:summary=Match against the computer's DMI product name or product family (case-insensitive).
# omarchy:args=<pattern>
grep -qi "$1" /sys/class/dmi/id/product_name 2>/dev/null ||
grep -qi "$1" /sys/class/dmi/id/product_family 2>/dev/null
+1 -3
View File
@@ -1,8 +1,6 @@
#!/bin/bash
# Clear the internal-monitor-disable toggle if no external display is connected.
# Runs before the graphical session so Hyprland doesn't block on having no output
# to render to when the user rebooted with the external unplugged.
# omarchy:summary=Clear the internal-monitor-disable toggle if no external display is connected.
TOGGLE="$HOME/.local/state/omarchy/toggles/hypr/internal-monitor-disable.conf"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Detect whether the computer is a Microsoft Surface device.
# omarchy:summary=Detect whether the computer is a Microsoft Surface device.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Microsoft Corporation" ]] &&
omarchy-hw-match "Surface"
+2
View File
@@ -1,4 +1,6 @@
#!/bin/bash
# omarchy:summary=Print the detected Hyprland touchpad or trackpad device name
device=$(hyprctl devices -j | jq -r '[.mice[] | .name | select(test("touchpad|trackpad"; "i"))] | first // empty')
[[ -n $device ]] && echo "$device"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# omarchy:summary=Print the detected Hyprland touchscreen or tablet device name
device=$(hyprctl devices -j | jq -r '[.touch[]?.name, .tablets[]?.name] | first // empty')
[[ -n $device ]] && echo "$device"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Detect whether Vulkan is available.
# omarchy:summary=Detect whether Vulkan is available.
[[ -d /usr/share/vulkan/icd.d ]] &&
find /usr/share/vulkan/icd.d -maxdepth 1 -name "*.json" -print -quit | grep -q .
@@ -1,5 +1,5 @@
#!/bin/bash
# Toggles transparency for the currently focused window.
# omarchy:summary=Toggles transparency for the currently focused window.
hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Print the name of the currently focused Hyprland monitor.
# omarchy:summary=Print the name of the currently focused Hyprland monitor.
hyprctl monitors -j | jq -r '.[] | select(.focused == true).name'
+14 -5
View File
@@ -1,6 +1,14 @@
#!/bin/bash
# omarchy:summary=Enable, disable, toggle, or recover the internal laptop display
# omarchy:args=<on|off|toggle|recover>
TOGGLE="internal-monitor-disable"
TOGGLE_FLAG="$HOME/.local/state/omarchy/toggles/hypr/$TOGGLE.conf"
MIRROR_TOGGLE="internal-monitor-mirror"
# Get internal monitor name dynamically
INTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP")).name' | head -n 1)
enable() {
if omarchy-hyprland-toggle-enabled "$TOGGLE"; then
@@ -9,14 +17,15 @@ enable() {
}
disable() {
if omarchy-hw-external-monitors; then
if omarchy-hyprland-toggle-disabled "$TOGGLE"; then
omarchy-hyprland-toggle --enabled-notification "󰍹 Laptop display disabled" "$TOGGLE"
fi
else
if ! omarchy-hw-external-monitors; then
notify-send -u low "󰍹 Can't disable the only active display"
exit 1
fi
if omarchy-hyprland-toggle-disabled "$TOGGLE" && omarchy-hyprland-toggle-disabled "$MIRROR_TOGGLE"; then
echo "monitor=$INTERNAL,disable" >"$TOGGLE_FLAG"
notify-send -u low "󰍹 Laptop display disabled"
hyprctl reload
fi
}
recover() {
+58
View File
@@ -0,0 +1,58 @@
#!/bin/bash
# omarchy:summary=Enable, disable, toggle, or recover mirroring the internal display to an external monitor
# omarchy:args=<on|off|toggle|recover>
TOGGLE="internal-monitor-mirror"
TOGGLE_FLAG="$HOME/.local/state/omarchy/toggles/hypr/$TOGGLE.conf"
DISABLE_TOGGLE="internal-monitor-disable"
# Get names dynamically
INTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP")).name' | head -n 1)
# Get the first available external monitor
EXTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP") | not).name' | head -n 1)
enable() {
if [[ -z "$EXTERNAL" ]]; then
notify-send -u low "󰍹 No external monitors found for mirror"
exit 1
fi
if [[ -z "$INTERNAL" ]]; then
notify-send -u low "󰍹 No laptop monitor found to mirror"
exit 1
fi
if omarchy-hyprland-toggle-enabled "$DISABLE_TOGGLE"; then
omarchy-hyprland-toggle "$DISABLE_TOGGLE"
fi
if omarchy-hyprland-toggle-disabled "$TOGGLE"; then
echo "monitor=$EXTERNAL, preferred, auto, 1, mirror, $INTERNAL" > "$TOGGLE_FLAG"
notify-send -u low "󰍹 Mirroring enabled ($EXTERNAL)"
hyprctl reload
fi
}
disable() {
if omarchy-hyprland-toggle-enabled "$TOGGLE"; then
omarchy-hyprland-toggle --disabled-notification "󰍹 Extended mode restored" "$TOGGLE"
fi
}
recover() {
if ! omarchy-hw-external-monitors && omarchy-hyprland-toggle-enabled "$TOGGLE"; then
omarchy-hyprland-toggle "$TOGGLE"
fi
}
case "$1" in
on) enable ;;
off) disable ;;
toggle) if omarchy-hyprland-toggle-enabled "$TOGGLE"; then disable; else enable; fi ;;
recover) recover ;;
*)
echo "Usage: $(basename "$0") {on|off|toggle|recover}" >&2
exit 1
;;
esac
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Get the active monitor (the one with the cursor)
# omarchy:summary=Cycle scaling for the focused Hyprland monitor
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
CURRENT_SCALE=$(echo "$MONITOR_INFO" | jq -r '.scale')
+2 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Listen on Hyprland's event socket and recover the internal display whenever
# a monitor is removed.
# omarchy:summary=Watch Hyprland monitor events and recover monitor toggles when a monitor is removed
SOCKET="$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"
@@ -9,6 +8,7 @@ socat -U - "UNIX-CONNECT:$SOCKET" | while read -r event; do
case "$event" in
monitorremoved\>\>*|monitorremovedv2\>\>*)
omarchy-hyprland-monitor-internal recover
omarchy-hyprland-monitor-internal-mirror recover
;;
esac
done
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Toggle permanent Hyprland flags by copying them into a directory that's sourced entirely.
# omarchy:summary=Toggle permanent Hyprland flags by copying them into a directory that's sourced entirely.
# omarchy:args=[--enabled-notification <text>] [--disabled-notification <text>] <flag-name>
ENABLED_NOTIFICATION=""
DISABLED_NOTIFICATION=""
+2 -1
View File
@@ -1,5 +1,6 @@
#!/bin/bash
# Check if a Hyprland toggle is currently disabled (missing).
# omarchy:summary=Check if a Hyprland toggle is currently disabled (missing).
# omarchy:args=<flag-name>
[[ ! -f "$HOME/.local/state/omarchy/toggles/hypr/$1.conf" ]]
+2 -1
View File
@@ -1,5 +1,6 @@
#!/bin/bash
# Check if a Hyprland toggle is currently enabled.
# omarchy:summary=Check if a Hyprland toggle is currently enabled.
# omarchy:args=<flag-name>
[[ -f "$HOME/.local/state/omarchy/toggles/hypr/$1.conf" ]]
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Close all open windows
# omarchy:summary=Close all open windows
hyprctl clients -j | \
jq -r ".[].address" | \
xargs -I{} hyprctl dispatch closewindow address:{}
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Toggles the window gaps globally between no gaps and the default.
# omarchy:summary=Toggles the window gaps globally between no gaps and the default.
omarchy-hyprland-toggle window-no-gaps
+2 -14
View File
@@ -1,19 +1,7 @@
#!/bin/bash
# Toggle to pop-out a tile to stay fixed on a display basis.
# Usage:
# omarchy-hyprland-window-pop [width height [x y]]
#
# Arguments:
# width Optional. Width of the floating window. Default: 1300
# height Optional. Height of the floating window. Default: 900
# x Optional. X position of the window. Must provide both X and Y to take effect.
# y Optional. Y position of the window. Must provide both X and Y to take effect.
#
# Behavior:
# - If the window is already pinned, it will be unpinned and removed from the pop layer.
# - If the window is not pinned, it will be floated, resized, moved/centered, pinned, brought to top, and popped.
# omarchy:summary=Toggle to pop-out a tile to stay fixed on a display basis.
# omarchy:args=[width height x y]
width=${1:-1300}
height=${2:-900}
@@ -1,6 +1,6 @@
#!/bin/bash
# Toggle single-window square aspect ratio.
# omarchy:summary=Toggle single-window square aspect ratio.
omarchy-hyprland-toggle \
--enabled-notification " Enable single-window square aspect ratio" \
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Toggle the layout on the current active workspace between dwindle and scrolling
# omarchy:summary=Toggle the layout on the current active workspace between dwindle and scrolling
ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.id')
CURRENT_LAYOUT=$(hyprctl activeworkspace -j | jq -r '.tiledLayout')
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Allow Chromium to sign in to Google accounts by adding the correct
# oauth client id and secret to ~/.config/chromium-flags.conf.
# omarchy:summary=Allow Chromium to sign in to Google accounts by adding the required OAuth credentials
if [[ -f ~/.config/chromium-flags.conf ]]; then
CONF=~/.config/chromium-flags.conf
+5 -1
View File
@@ -1,6 +1,10 @@
#!/bin/bash
# Install one of the supported development environments. Usually called via Install > Development > * in the Omarchy Menu.
# omarchy:summary=Install a supported development environment
# omarchy:name=dev-env
# omarchy:args=<ruby|node|bun|deno|go|laravel|symfony|php|python|elixir|phoenix|rust|java|zig|ocaml|dotnet|clojure|scala>
# omarchy:examples=omarchy install dev-env ruby | omarchy install dev-env node
# omarchy:requires-sudo=true
if [[ -z $1 ]]; then
echo "Usage: omarchy-install-dev-env <ruby|node|bun|deno|go|laravel|symfony|php|python|elixir|phoenix|rust|java|zig|ocaml|dotnet|clojure|scala>" >&2
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Install one of the supported databases in a Docker container with the suitable development options.
# Usually called via Install > Development > Docker DB from the Omarchy Menu.
# omarchy:summary=Install one of the supported databases in a Docker container with the suitable development options.
# omarchy:requires-sudo=true
options=("MySQL" "PostgreSQL" "Redis" "MongoDB" "MariaDB" "MSSQL")
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Install and start the Dropbox service. Must then be authenticated via the web.
# omarchy:summary=Install and start the Dropbox service. Must then be authenticated via the web.
echo "Installing all dependencies..."
omarchy-pkg-add dropbox dropbox-cli libappindicator-gtk3 python-gpgme nautilus-dropbox
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Install and launch Geforce Now.
# omarchy:summary=Install and launch Geforce Now.
set -e
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Install the NordVPN service with optional GUI.
# omarchy:summary=Install the NordVPN service with optional GUI.
# omarchy:requires-sudo=true
echo "Installing NordVPN..."
omarchy-pkg-aur-add nordvpn-bin
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Install the ONCE service, enable its background service, and launch the TUI.
# omarchy:summary=Install the ONCE service, enable its background service, and launch the TUI.
# omarchy:requires-sudo=true
echo "Installing ONCE..."
omarchy-pkg-add once-bin
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Install and launch Steam after first letting the user pick the correct grahics card drivers.
# omarchy:summary=Install Steam and graphics drivers selected for this system
# omarchy:requires-sudo=true
set -e
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Install the Tailscale mesh VPN service and a web app for the Tailscale Admin Console.
# omarchy:summary=Install the Tailscale mesh VPN service and a web app for the Tailscale Admin Console.
# omarchy:requires-sudo=true
echo -e "\nInstalling Tailscale..."
omarchy-pkg-add tailscale
+3 -1
View File
@@ -1,6 +1,8 @@
#!/bin/bash
# Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
# omarchy:summary=Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
# omarchy:args=<alacritty|ghostty|kitty>
# omarchy:requires-sudo=true
if (($# == 0)); then
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Install VSCode and configure it to use the gnome-libsecret password store, not to update automatically, and to use the current Omarchy theme.
# omarchy:summary=Install VS Code and configure Omarchy defaults for secrets, updates, and theme
echo "Installing VSCode..."
omarchy-pkg-add visual-studio-code-bin
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Install support for using Xbox controllers with Steam/RetroArch/etc.
# omarchy:summary=Install support for using Xbox controllers with Steam/RetroArch/etc.
# omarchy:requires-sudo=true
set -e
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Launch the fastfetch TUI that gives information about the current system.
# omarchy:summary=Launch the fastfetch TUI that gives information about the current system.
exec omarchy-launch-or-focus-tui "bash -c 'fastfetch; read -n 1 -s'"
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# Launch the Omarchy audio controls TUI (provided by wiremix).
# omarchy:summary=Launch the Omarchy audio controls TUI (provided by wiremix).
omarchy-launch-or-focus-tui wiremix
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Launch the Omarchy bluetooth controls TUI (provided by bluetui).
# Also attempts to unblock bluetooth service if rfkill had blocked it.
# omarchy:summary=Launch the Omarchy bluetooth controls TUI (provided by bluetui).
rfkill unblock bluetooth
exec omarchy-launch-or-focus-tui bluetui
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch the default browser as determined by xdg-settings.
# Automatically converts --private into the correct flag for the given browser.
# omarchy:summary=Launch the default browser as determined by xdg-settings.
# omarchy:args=[url]
default_browser=$(xdg-settings get default-web-browser)
browser_exec=$(sed -n 's/^Exec=\([^ ]*\).*/\1/p' {~/.local,~/.nix-profile,/usr}/share/applications/$default_browser 2>/dev/null | head -1)
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch the default editor as determined by $EDITOR (set via ~/.config/uwsm/default) (or nvim if missing).
# Starts suitable editors in a terminal window and otherwise as a regular application.
# omarchy:summary=Launch the default editor as determined by $EDITOR (set via ~/.config/uwsm/default) (or nvim if missing).
# omarchy:args=<path>
omarchy-cmd-present "$EDITOR" || EDITOR=nvim
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch a floating terminal with the Omarchy logo presentation, then execute the command passed in, and finally end with the omarchy-show-done presentation.
# Used by actions such as Update System.
# omarchy:summary=Launch a floating terminal with the Omarchy presentation wrapper
# omarchy:args=<command>
cmd="$*"
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.terminal --title=Omarchy -e bash -c "omarchy-show-logo; $cmd; if (( \$? != 130 )); then omarchy-show-done; fi"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch or focus on a given command identified by the passed in window-pattern.
# Use by some default bindings, like the one for Spotify, to ensure there is only one instance of the application open.
# omarchy:summary=Launch an app or focus an existing window matching a pattern
# omarchy:args=<window-pattern> <launch-command>
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus [window-pattern] [launch-command]"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch or focus on a given TUI identified by the passed in as the command.
# Use by commands like omarchy-launch-wifi to ensure there is only one wifi configuration screen open.
# omarchy:summary=Launch a TUI or focus an existing terminal window for it
# omarchy:args=<command> [args...]
APP_ID="org.omarchy.$(basename "$1")"
LAUNCH_COMMAND="omarchy-launch-tui $@"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/bash
# Launch or focus on a given web app identified by the window-pattern.
# Use by some default bindings, like the one for WhatsApp, to ensure there is only one instance of the application open.
# omarchy:summary=Launch or focus on a given web app identified by the window-pattern.
# omarchy:args=<window-pattern> <url-and-flags...>
if (($# == 0)); then
echo "Usage: omarchy-launch-or-focus-webapp [window-pattern] [url-and-flags...]"
+4 -5
View File
@@ -1,8 +1,7 @@
#!/bin/bash
# Launch the Omarchy screensaver in the default terminal on the system with the correct font configuration.
# omarchy:summary=Launch the Omarchy screensaver in the default terminal on the system with the correct font configuration.
# Exit early if we don't have the tte show
if ! command -v tte &>/dev/null; then
exit 1
fi
@@ -29,21 +28,21 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch exec -- \
alacritty --class=org.omarchy.screensaver \
--config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \
-e omarchy-cmd-screensaver
-e omarchy-screensaver
;;
*ghostty*)
hyprctl dispatch exec -- \
ghostty --class=org.omarchy.screensaver \
--config-file=~/.local/share/omarchy/default/ghostty/screensaver \
--font-size=18 \
-e omarchy-cmd-screensaver
-e omarchy-screensaver
;;
*kitty*)
hyprctl dispatch exec -- \
kitty --class=org.omarchy.screensaver \
--override font_size=18 \
--override window_padding_width=0 \
-e omarchy-cmd-screensaver
-e omarchy-screensaver
;;
*)
notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
+2 -1
View File
@@ -1,5 +1,6 @@
#!/bin/bash
# Launch the TUI command passed in as an argument in the default terminal with an org.omarchy.COMMAND app id for styling.
# omarchy:summary=Launch a TUI command in the default terminal with Omarchy styling
# omarchy:args=<command> [args...]
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.omarchy.$(basename $1) -e "$1" "${@:2}"
+1 -2
View File
@@ -1,8 +1,7 @@
#!/bin/bash
# Launch the Walker application launcher while ensuring that it's data provider (called elephant) is running first.
# omarchy:summary=Launch Walker and ensure its Elephant data provider is running
# Ensure elephant is running before launching walker
if ! pgrep -x elephant > /dev/null; then
setsid uwsm-app -- elephant &
fi
+2 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash
# Launch the passed in URL as a web app in the default browser (or chromium if the default doesn't support --app).
# omarchy:summary=Launch a URL as a web app in the default supported browser
# omarchy:args=<url>
browser=$(xdg-settings get default-web-browser)
+1 -2
View File
@@ -1,7 +1,6 @@
#!/bin/bash
# Launch the Omarchy wifi controls (provided by the Impala TUI).
# Attempts to unblock the wifi service first in case it should be been blocked.
# omarchy:summary=Launch the Omarchy wifi controls (provided by the Impala TUI).
rfkill unblock wifi
omarchy-launch-or-focus-tui impala
+25 -18
View File
@@ -1,8 +1,6 @@
#!/bin/bash
# Launch the Omarchy Menu or takes a parameter to jump straight to a submenu.
export PATH="$HOME/.local/share/omarchy/bin:$PATH"
# omarchy:summary=Launch the Omarchy Menu or takes a parameter to jump straight to a submenu.
# Set to true when going directly to a submenu, so we can exit directly
BACK_TO_EXIT=false
@@ -106,7 +104,7 @@ show_trigger_menu() {
show_capture_menu() {
case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in
*Screenshot*) omarchy-cmd-screenshot ;;
*Screenshot*) omarchy-capture-screenshot ;;
*Screenrecord*) show_screenrecord_menu ;;
*Color*) pkill hyprpicker || hyprpicker -a ;;
*) back_to show_trigger_menu ;;
@@ -141,18 +139,18 @@ show_webcam_select_menu() {
}
show_screenrecord_menu() {
omarchy-cmd-screenrecord --stop-recording && exit 0
omarchy-capture-screenrecording --stop-recording && exit 0
case $(menu "Screenrecord" " With no audio\n With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in
*"With no audio") omarchy-cmd-screenrecord ;;
*"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;;
*"With no audio") omarchy-capture-screenrecording ;;
*"With desktop audio") omarchy-capture-screenrecording --with-desktop-audio ;;
*"With desktop + microphone audio") omarchy-capture-screenrecording --with-desktop-audio --with-microphone-audio ;;
*"With desktop + microphone audio + webcam")
local device=$(show_webcam_select_menu) || {
back_to show_capture_menu
return
}
omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device"
omarchy-capture-screenrecording --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device"
;;
*) back_to show_capture_menu ;;
esac
@@ -160,15 +158,15 @@ show_screenrecord_menu() {
show_share_menu() {
case $(menu "Share" " Clipboard\n File \n Folder") in
*Clipboard*) omarchy-cmd-share clipboard ;;
*File*) terminal bash -c "omarchy-cmd-share file" ;;
*Folder*) terminal bash -c "omarchy-cmd-share folder" ;;
*Clipboard*) omarchy-menu-share clipboard ;;
*File*) terminal bash -c "omarchy-menu-share file" ;;
*Folder*) terminal bash -c "omarchy-menu-share folder" ;;
*) back_to show_trigger_menu ;;
esac
}
show_toggle_menu() {
local options="󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n"
local options="󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n Direct Boot\n󰟵 Passwordless Sudo"
case $(menu "Toggle" "$options") in
*Screensaver*) omarchy-toggle-screensaver ;;
@@ -179,12 +177,14 @@ show_toggle_menu() {
*Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;;
*Gaps*) omarchy-hyprland-window-gaps-toggle ;;
*Scaling*) omarchy-hyprland-monitor-scaling-cycle ;;
*"Direct Boot"*) present_terminal omarchy-config-direct-boot ;;
*"Passwordless Sudo"*) present_terminal omarchy-sudo-passwordless ;;
*) back_to show_trigger_menu ;;
esac
}
show_hardware_menu() {
local options="󰛧 Laptop Display"
local options="󰛧 Laptop Display\n 󰍹 Mirror Display"
if omarchy-hw-hybrid-gpu; then
options="$options\n Hybrid GPU"
@@ -194,17 +194,24 @@ show_hardware_menu() {
options="$options\n󰟸 Touchpad"
fi
if omarchy-hw-touchscreen; then
options="$options\n󰆽 Touchscreen"
fi
case $(menu "Toggle" "$options") in
*Laptop*) omarchy-hyprland-monitor-internal toggle ;;
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle;;
*Touchpad*) omarchy-toggle-touchpad ;;
*Touchscreen*) omarchy-toggle-touchscreen ;;
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
*) back_to show_trigger_menu ;;
esac
}
show_style_menu() {
case $(menu "Style" "󰸌 Theme\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in
case $(menu "Style" "󰸌 Theme\n󰟵 Unlock\n Font\n Background\n Hyprland\n󱄄 Screensaver\n About") in
*Theme*) show_theme_menu ;;
*Unlock*) omarchy-launch-walker -m menus:omarchyunlocks --width 800 --minheight 400 ;;
*Font*) show_font_menu ;;
*Background*) show_background_menu ;;
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
@@ -362,8 +369,8 @@ show_install_terminal_menu() {
show_install_ai_menu() {
ollama_pkg=$(
(command -v nvidia-smi &>/dev/null && echo ollama-cuda) ||
(command -v rocminfo &>/dev/null && echo ollama-rocm) ||
(omarchy-cmd-present nvidia-smi && echo ollama-cuda) ||
(omarchy-cmd-present rocminfo && echo ollama-rocm) ||
echo ollama
)
@@ -597,7 +604,7 @@ show_system_menu() {
case $(menu "System" "$options") in
*Screensaver*) omarchy-launch-screensaver force ;;
*Lock*) omarchy-lock-screen ;;
*Lock*) omarchy-system-lock ;;
*Suspend*) systemctl suspend ;;
*Hibernate*) systemctl hibernate ;;
*Logout*) omarchy-system-logout ;;
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
# Display Hyprland keybindings defined in your configuration using walker for an interactive search menu.
# omarchy:summary=Display Hyprland keybindings defined in your configuration using walker for an interactive search menu.
declare -A KEYCODE_SYM_MAP
@@ -1,9 +1,13 @@
#!/bin/bash
# Share clipboard, file, or folder using LocalSend. Bound to Super + Ctrl + S by default.
# omarchy:summary=Share clipboard, files, or folders with LocalSend
# omarchy:group=share
# omarchy:name=
# omarchy:args=<clipboard|file|folder> [path...]
# omarchy:examples=omarchy share clipboard | omarchy share file ~/Downloads/example.txt
if (($# == 0)); then
echo "Usage: omarchy-cmd-share [clipboard|file|folder]"
echo "Usage: omarchy-menu-share [clipboard|file|folder]"
exit 1
fi

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