Compare commits

..
Author SHA1 Message Date
David Heinemeier HanssonandGitHub 76d09b29b7 Merge pull request #5192 from basecamp/rc
Omarchy 3.5.0
2026-04-03 19:16:29 +02:00
David Heinemeier Hansson f18dfdd101 Merge branch 'dev' into rc 2026-04-03 11:36:14 +02:00
David Heinemeier Hansson 84bee808e7 Conditional and a restart 2026-04-03 11:36:07 +02:00
David Heinemeier Hansson 316ecc85cb Drop the misleading network speed hover tips
Closes #4884
2026-04-03 11:31:01 +02:00
David Heinemeier Hansson 55b0323a94 Only install LPMD for supported Intel CPUs on battery 2026-04-03 11:17:25 +02:00
MárcioandGitHub 05344eb660 Add LocalSend send action in Nautilus (#4946)
* Add LocalSend send action in Nautilus

* Reuse Nautilus install script in migration

* Detect LocalSend via PATH

* Verify Flatpak LocalSend is installed

* Check Flatpak LocalSend with flatpak info
2026-04-03 11:00:09 +02:00
David Heinemeier Hansson ba4b661e1e Remove unnecessary disown 2026-04-03 10:58:59 +02:00
David Heinemeier Hansson e4757abb80 Merge branch 'dev' into rc 2026-04-03 10:57:18 +02:00
David Heinemeier Hansson 6329062f24 Turn on VRR by default
Lowers idle load on a Dell XPS 14 w/ IPS from 5w to 1.1w. And it just
doesn't do anything on monitors that don't support VRR.
2026-04-03 10:57:13 +02:00
David Heinemeier Hansson fc1cb1a751 Merge branch 'dev' into rc 2026-04-02 18:06:32 +02:00
David Heinemeier Hansson a7fb8ba43a Don't use the names here since they break the all-themes setup in omarchy-nvim 2026-04-02 18:05:04 +02:00
David Heinemeier Hansson 50d3579d66 Don't use the names here since they break the all-themes setup in omarchy-nvim 2026-04-02 18:04:55 +02:00
David Heinemeier Hansson b72a831bf5 Merge branch 'dev' into rc 2026-04-02 17:39:10 +02:00
MarcoandGitHub fd7aa3dce1 Fix firmware updates failing with Limine bootloader (#5077)
Install fwupdx64.efi into /boot/EFI/arch/ before running fwupdmgr update
so UEFI capsule updates work on systems using Limine.
2026-04-02 17:38:54 +02:00
David Heinemeier Hansson e2b6b5ed5a Merge branch 'dev' into rc 2026-04-02 17:23:41 +02:00
David Heinemeier Hansson fcf8baea8e Rearrange 2026-04-02 16:41:20 +02:00
Rob ZolkosandGitHub fde637ec21 Preserve package download progress during updates (#5188) 2026-04-02 16:37:51 +02:00
Kevin McConnellandGitHub 585a909401 Add ONCE to Install->Service menu (#5186) 2026-04-02 16:24:02 +02:00
David Heinemeier Hansson e5bcec53d1 Merge branch 'dev' into rc 2026-04-02 16:07:23 +02:00
David Heinemeier Hansson b140a48ec7 Actually create the output dir!
Closes #5189
2026-04-02 16:07:17 +02:00
David Heinemeier Hansson 1b07638732 Merge branch 'dev' into rc 2026-04-02 16:06:29 +02:00
08b317901b Create pictures dir if non existent (#5181)
* Create pictures dir if non existent

* Simplify

Don't need to guard against mkdir failing

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-02 12:32:12 +02:00
Nicolas DorierandGitHub 9896c1e988 Remove jetbrains specific hyprland config (#5183)
IDE based on IntelliJ [2026.1](https://blog.jetbrains.com/platform/2026/02/wayland-by-default-in-2026-1-eap/) are now supporting wayland natively
properly.

I have personally updated Rider while removing the configuration file,
and didn't noticed any issue.
2026-04-02 11:14:35 +02:00
a5dc10960f Add migration for T2 fan curve config (#5176)
* Add migration for tuned fan curve on existing T2 installs

* Make sure it's clear to all what migration is being run (even if it doesn't apply to them)

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-04-02 11:06:57 +02:00
David Heinemeier Hansson 4a3355e767 Merge branch 'dev' into rc 2026-04-01 18:16:31 +02:00
Federico SapuppoandGitHub 031ba01c83 Add tuned fan curve for T2 MacBooks (#5132) 2026-04-01 18:08:30 +02:00
Federico SapuppoandGitHub 729c590236 Use percentage-based step for keyboard backlight brightness (#5135) 2026-04-01 18:04:38 +02:00
Federico SapuppoandGitHub e0fed4a9f7 Fix battery time showing hours instead of minutes (#5137)
When upower reported time in minutes, the value was incorrectly
passed through the hours conversion path, displaying e.g. "25h"
instead of "25m".
2026-04-01 18:00:58 +02:00
Federico SapuppoandGitHub 7c13bd5801 Fix Bluetooth on T2 Macs by loading hci_bcm4377 module (#5145) 2026-04-01 17:58:07 +02:00
David Heinemeier Hansson 54679f647a Reduce power saving feature turn-off to just PSR2 2026-04-01 17:25:10 +02:00
64ef804433 Enable GPU in voxtype if Vulkan is available (#5005)
* Enable GPU support in Voxtype installation if Vulkan is available

* Restart Voxtype and Waybar after enabling GPU support in setup

* fix: revert changing existing migration

* fix: add new migration

* Refactor Vulkan availability check in voxtype installation and migration scripts

* Extract vulkan availability check

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-03-27 21:18:19 +01:00
David Heinemeier Hansson 54bd72f10a Better naming 2026-03-27 21:05:06 +01:00
David Heinemeier Hansson f8a789b885 Extract bin for toggling window transparency 2026-03-27 21:03:59 +01:00
David Heinemeier Hansson f9b52a007e Remove any npx stubs too 2026-03-27 17:06:54 +01:00
David Heinemeier Hansson 54b0517c65 Fix dark/light mode switching 2026-03-27 16:59:41 +01:00
David Heinemeier Hansson 9dde3a9f0c Better datetime display matching battery 2026-03-27 14:32:38 +01:00
David Heinemeier Hansson ae5da6f805 Update all theme previews to consistent size and style 2026-03-27 13:14:14 +01:00
David Heinemeier Hansson 3db5a8e361 Use the same grey/nonexisting theme as vantablack 2026-03-27 12:55:34 +01:00
David Heinemeier Hansson 361cda9fa4 Use miasma theme 2026-03-26 17:23:36 +01:00
David Heinemeier HanssonandGitHub a68f2ae045 Add Retro 82 theme (#5110)
* Add Retro 82 theme

* Start with the groove

* Rename
2026-03-26 16:55:00 +01:00
David Heinemeier Hansson b25d47288a Add another Lumon background 2026-03-26 16:51:13 +01:00
David Heinemeier Hansson ece103319c Add vscode theme for Lumon 2026-03-26 16:35:45 +01:00
David Heinemeier Hansson fdfca055cc Use optimized theme 2026-03-26 16:32:04 +01:00
David Heinemeier Hansson 92e3357f05 Add a trackpad restarter for new hw 2026-03-26 14:30:45 +01:00
David Heiemeier Hansson 15538c4f5a New solution to haptic touchpad 2026-03-26 11:08:44 +01:00
David Heiemeier Hansson e7f8826dea Ignore that there are dependencies on the headers, since we're adding new ones 2026-03-26 10:53:22 +01:00
David Heiemeier Hansson 80e019ff7c Fix check for the LG panel 2026-03-26 10:52:58 +01:00
David Heinemeier Hansson 9642599d15 Fix permissions 2026-03-26 09:46:59 +01:00
David Heinemeier Hansson 35b2330c2d Make the ptl kernel exclusive when it's needed 2026-03-26 09:27:44 +01:00
David Heinemeier Hansson 93fc7fb053 Group related configs together 2026-03-26 09:26:10 +01:00
David Heinemeier Hansson 2b63748c9b Correct references 2026-03-26 09:24:54 +01:00
David Heinemeier Hansson 435613ab32 Use new omarchy-hw-match 2026-03-26 09:24:50 +01:00
David Heinemeier Hansson af724a3843 Only apply this display fix to the dell XPS OLED panel 2026-03-26 09:24:43 +01:00
David Heinemeier Hansson 2a81068d8a Extract omarchy-hw-match 2026-03-26 09:23:59 +01:00
David Heinemeier Hansson 99bba33dfe Next release will be 3.5.0 2026-03-26 08:46:42 +01:00
David Heinemeier Hansson 6c5f417521 Move into intel bundle of fixes 2026-03-26 08:37:31 +01:00
f55c7e9ab5 Add hardware fix for Intel WiFi 7 EHT on Panther Lake (#5106)
Detect Intel BE200/BE211 WiFi cards and disable WiFi 7 (EHT) via
modprobe config. The iwlwifi driver has broken EHT RX adaptation
causing APs to drop to MCS 0, making WiFi unusable.
Falling back to WiFi 6 (HE) restores full performance.

Temporary fix: remove when Intel fixes the firmware/driver.

Signed-off-by: Spencer Bull <Spencer.Bull@Dell.com>
Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-03-26 08:36:41 +01:00
David Heinemeier Hansson 5d4e1032ca Fix runner reference 2026-03-26 08:33:51 +01:00
8c6fcbf2f0 Rename local path variable in ga() to avoid clobbering zsh PATH (#5115)
Co-authored-by: John Allen <git@porcnick.com>
2026-03-26 07:47:49 +01:00
Nicolas DorierandGitHub 22e84776a8 Fix missing limine-mkinitcpio in migration script (#5117)
Follow up to #5114, I forgot to regenerate the `/boot/limine.conf` file during the migration.
2026-03-26 07:47:15 +01:00
Ty SmithandGitHub 176194a76f Add VSCode insiders theme support (#5119)
VSCode Insiders uses a different directory than VScode. This commit adds compatibility.
2026-03-26 07:46:02 +01:00
Milan PetrovićandGitHub 49c7b45572 Fix: typo in migration 1774366575 (#5116)
* Fix typo in migration 1774366575: lmp.sh -> lpmd.sh

* Fix additional lmp.sh -> lpmd.sh reference in all.sh
2026-03-25 20:29:41 +01:00
David Heinemeier Hansson 6c1d9cc92e Fix file path 2026-03-25 20:27:18 +01:00
David Heinemeier Hansson e921ea3cee Additional Gruvbox backgrounds by @OldJobobo 2026-03-25 16:26:25 +01:00
David Heinemeier Hansson 7eabd26d3e Add pi as a install-on-first-use agent
Closes #5091
2026-03-25 14:43:38 +01:00
Nicolas DorierandGitHub f26df5adf5 Fix: Limine drop-in config are overridden by default limine conf (#5114)
Limine drop-in config are overridden by `/etc/default/limine`
2026-03-25 14:41:19 +01:00
David Heinemeier Hansson a91fde6a3b Add 6K too 2026-03-25 14:25:01 +01:00
David Heinemeier Hansson 5726f22471 85 is probably the sweetspot 2026-03-25 14:22:31 +01:00
David Heinemeier Hansson e288092084 Adjust sizes and quality 2026-03-25 14:20:25 +01:00
David Heinemeier Hansson fdc370ec4c Ensure auto-boot still happens when we have two kernels 2026-03-25 13:52:52 +01:00
David Heinemeier Hansson 906ad82627 Bring back claude code as a regular package install
Not sure why, but Claude Code now complains if it's installed via npx!
2026-03-25 13:37:37 +01:00
David Heinemeier Hansson 280ed7c3c8 Switch to the new custom kernel that also has wifi fixes 2026-03-25 13:31:04 +01:00
David Heinemeier Hansson f54623ba56 Correct package name 2026-03-25 13:05:04 +01:00
David Heinemeier Hansson 43de5df392 Framework too 2026-03-24 20:43:56 +01:00
David Heinemeier Hansson a6ea7f50e4 Give asus it's own subdirectory too 2026-03-24 20:42:04 +01:00
David Heinemeier Hansson e8623fbbf6 Move apple fixes into their own subdirectory too 2026-03-24 20:40:43 +01:00
David Heinemeier Hansson c4c55b5c33 Group all intel specifics in subdirectory 2026-03-24 20:39:01 +01:00
David Heinemeier Hansson e2c8bb67cc Group intel hardware tweaks together 2026-03-24 20:35:16 +01:00
David Heinemeier Hansson 4d6221c890 Make custom ptl kernel the default on intel ptl systems
Then we don't need to turn off audio any longer
2026-03-24 20:31:58 +01:00
David Heinemeier Hansson fce6df52aa Ensure intel-lmp is installed on Intel machines for better core prioritization 2026-03-24 16:37:01 +01:00
Patrick BochenekandGitHub 58a16dfebc Set low urgency for immediate-feedback notifications (#5056)
Some users may choose to disable notification timeout for normal-level
notifications to ensure no notifications are missed when the user is
away from the screen. However, there are several Omarchy notifications
that only serve as an immediate feedback for a user action, such as
"Screensaver enabled" or "Editing config file foo.conf", for which
disabling the timeout is not desirable. This commit drops the urgency
level for such notification to low, allowing configuring a different
timeout value for them.

Notifications with an explicitly set timeout are excluded from this
commit.
2026-03-24 14:56:12 +01:00
David Heinemeier Hansson 3b8ab81781 Merge branch 'dev' into rc 2026-03-08 18:29:04 +01:00
David Heinemeier Hansson da0bb37a19 Merge branch 'dev' into rc 2026-03-08 17:54:04 +01:00
126 changed files with 656 additions and 217 deletions
+7 -10
View File
@@ -7,19 +7,16 @@ battery_info=$(upower -i $(upower -e | grep BAT))
echo "$battery_info" | awk '/time to (empty|full)/ {
value = $4
unit = $5
if (unit == "minutes") {
hours = int(value / 60)
minutes = int(value % 60)
if (unit ~ /^minute/) {
printf "%dm", int(value)
} else {
hours = int(value)
minutes = int((value - hours) * 60)
}
if (hours > 0 && minutes > 0) {
printf "%dh %dm", hours, minutes
} else if (hours > 0) {
printf "%dh", hours
} else {
printf "%dm", minutes
if (minutes > 0) {
printf "%dh %dm", hours, minutes
} else {
printf "%dh", hours
}
}
exit
}'
+9 -4
View File
@@ -23,14 +23,19 @@ fi
max_brightness="$(brightnessctl -d "$device" max)"
current_brightness="$(brightnessctl -d "$device" get)"
# Calculate step as one unit (keyboards typically have discrete levels like 0-3).
# Calculate step as 10% of max brightness. Keyboards with many levels (e.g. 512)
# need larger steps; keyboards with few levels (e.g. 3) fall back to step=1.
step=$(( max_brightness / 10 ))
(( step < 1 )) && step=1
if [[ $direction == "cycle" ]]; then
new_brightness=$(( (current_brightness + 1) % (max_brightness + 1) ))
new_brightness=$(( current_brightness + step ))
(( new_brightness > max_brightness )) && new_brightness=0
elif [[ $direction == "up" ]]; then
new_brightness=$((current_brightness + 1))
new_brightness=$(( current_brightness + step ))
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
else
new_brightness=$((current_brightness - 1))
new_brightness=$(( current_brightness - step ))
(( new_brightness < 0 )) && new_brightness=0
fi
+2 -2
View File
@@ -8,8 +8,8 @@
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
if [[ ! -d $OUTPUT_DIR ]]; then
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
mkdir -p "$OUTPUT_DIR"
notify-send "Created screenshot directory: $OUTPUT_DIR" -u normal -t 2000
fi
pkill slurp && exit 0
+1 -1
View File
@@ -33,7 +33,7 @@ if [[ -n $font_name ]]; then
omarchy-restart-swayosd
if pgrep -x ghostty; then
notify-send " You must restart Ghostty to see font change"
notify-send -u low " You must restart Ghostty to see font change"
fi
omarchy-hook font-set "$font_name"
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env python3
"""Haptic feedback daemon for Synaptics touchpads with Manual Trigger.
Monitors touchpad button press events and sends haptic pulses via HID
feature reports. Required because the kernel's HID haptic subsystem only
supports Auto Trigger with waveform enumeration, not the simpler Manual
Trigger protocol used by these Synaptics touchpads.
"""
import fcntl, glob, os, struct, sys
VENDOR = "06CB"
PRODUCT = "D01A"
REPORT_ID = 0x37
INTENSITY = 40 # 0-100
# input_event: struct timeval (16 bytes on 64-bit) + type(H) + code(H) + value(i)
EVENT_FORMAT = "llHHi"
EVENT_SIZE = struct.calcsize(EVENT_FORMAT)
EV_KEY = 0x01
BTN_LEFT = 272
BTN_RIGHT = 273
BTN_MIDDLE = 274
# ioctl: HIDIOCSFEATURE(len) = _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x06, len)
def HIDIOCSFEATURE(length):
return 0xC0000000 | (length << 16) | (ord("H") << 8) | 0x06
def find_hidraw():
for path in sorted(glob.glob("/sys/class/hidraw/hidraw*")):
uevent = os.path.join(path, "device", "uevent")
try:
with open(uevent) as f:
content = f.read().upper()
if f"0000{VENDOR}" in content and f"0000{PRODUCT}" in content:
return os.path.join("/dev", os.path.basename(path))
except OSError:
continue
return None
def find_touchpad_event():
for path in sorted(glob.glob("/sys/class/input/event*/device/name")):
try:
with open(path) as f:
name = f.read().strip().upper()
if VENDOR in name and PRODUCT in name and "TOUCHPAD" in name:
event = path.split("/")[-3]
return os.path.join("/dev/input", event)
except OSError:
continue
return None
def main():
hidraw = find_hidraw()
if not hidraw:
print("No Synaptics haptic touchpad hidraw device found", file=sys.stderr)
sys.exit(1)
event = find_touchpad_event()
if not event:
print("No Synaptics haptic touchpad input device found", file=sys.stderr)
sys.exit(1)
print(f"Haptic touchpad: hidraw={hidraw} input={event} intensity={INTENSITY}", flush=True)
haptic_report = struct.pack("BB", REPORT_ID, INTENSITY)
ioctl_req = HIDIOCSFEATURE(len(haptic_report))
hidraw_fd = os.open(hidraw, os.O_RDWR)
event_fd = os.open(event, os.O_RDONLY)
try:
while True:
data = os.read(event_fd, EVENT_SIZE)
if len(data) < EVENT_SIZE:
continue
_, _, ev_type, code, value = struct.unpack(EVENT_FORMAT, data)
if ev_type == EV_KEY and code in (BTN_LEFT, BTN_RIGHT, BTN_MIDDLE) and value == 1:
try:
fcntl.ioctl(hidraw_fd, ioctl_req, haptic_report)
except OSError:
pass
except KeyboardInterrupt:
pass
finally:
os.close(event_fd)
os.close(hidraw_fd)
if __name__ == "__main__":
main()
+1 -1
View File
@@ -3,4 +3,4 @@
# Detect whether the computer is a Framework Laptop 16.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Framework" ]] &&
grep -q "Laptop 16" /sys/class/dmi/id/product_name 2>/dev/null
omarchy-hw-match "Laptop 16"
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# Detect whether the computer has an Intel Panther Lake GPU.
lspci | grep -iE 'vga|3d|display' | grep -qi 'panther lake'
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# Match against the computer's DMI product name (case-insensitive).
# Usage: omarchy-hw-match "XPS"
grep -qi "$1" /sys/class/dmi/id/product_name 2>/dev/null
+1 -1
View File
@@ -3,4 +3,4 @@
# Detect whether the computer is a Microsoft Surface device.
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Microsoft Corporation" ]] &&
grep -q "Surface" /sys/class/dmi/id/product_name 2>/dev/null
omarchy-hw-match "Surface"
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# 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 .
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# Toggles transparency for the currently focused window.
hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
+1 -1
View File
@@ -21,4 +21,4 @@ esac
hyprctl keyword misc:disable_scale_notification true
hyprctl keyword monitor "$ACTIVE_MONITOR,${WIDTH}x${HEIGHT}@${REFRESH_RATE},auto,$NEW_SCALE"
hyprctl keyword misc:disable_scale_notification false
notify-send "󰍹 Display scaling set to ${NEW_SCALE}x"
notify-send -u low "󰍹 Display scaling set to ${NEW_SCALE}x"
@@ -6,8 +6,8 @@ CURRENT_VALUE=$(hyprctl getoption "layout:single_window_aspect_ratio" 2>/dev/nul
# Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]"
if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then
hyprctl keyword layout:single_window_aspect_ratio "0 0"
notify-send " Disable single-window square aspect ratio"
notify-send -u low " Disable single-window square aspect ratio"
else
hyprctl keyword layout:single_window_aspect_ratio "1 1"
notify-send " Enable single-window square aspect"
notify-send -u low " Enable single-window square aspect"
fi
+1 -1
View File
@@ -11,4 +11,4 @@ case "$CURRENT_LAYOUT" in
esac
hyprctl keyword workspace $ACTIVE_WORKSPACE, layout:$NEW_LAYOUT
notify-send "󱂬 Workspace layout set to $NEW_LAYOUT"
notify-send -u low "󱂬 Workspace layout set to $NEW_LAYOUT"
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Install the ONCE service, enable its background service, and launch the TUI.
echo "Installing ONCE..."
omarchy-pkg-add once-bin
echo "Enabling ONCE background service..."
sudo systemctl enable --now once-background.service
echo -e "\nLaunching ONCE..."
once
+1 -1
View File
@@ -46,7 +46,7 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
-e omarchy-cmd-screensaver
;;
*)
notify-send "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
;;
esac
done
+3 -2
View File
@@ -54,7 +54,7 @@ present_terminal() {
}
open_in_editor() {
notify-send "Editing config file" "$1"
notify-send -u low "Editing config file" "$1"
omarchy-launch-editor "$1"
}
@@ -317,10 +317,11 @@ show_install_menu() {
}
show_install_service_menu() {
case $(menu "Install" " Dropbox\n Tailscale\n󱇱 NordVPN [AUR]\n󰟵 Bitwarden\n Chromium Account") in
case $(menu "Install" " Dropbox\n Tailscale\n󱇱 NordVPN [AUR]\n󰏖 ONCE\n󰟵 Bitwarden\n Chromium Account") in
*Dropbox*) present_terminal omarchy-install-dropbox ;;
*Tailscale*) present_terminal omarchy-install-tailscale ;;
*NordVPN*) present_terminal omarchy-install-nordvpn ;;
*ONCE*) present_terminal omarchy-install-once ;;
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
*) show_install_menu ;;
+4
View File
@@ -13,6 +13,10 @@ if gum confirm "Are you sure you want to remove all preinstalled web apps, TUI w
cp "$OMARCHY_PATH/default/hypr/plain-bindings.conf" ~/.config/hypr/bindings.conf
hyprctl reload
# Remove npx stubs
rm -f ~/.local/bin/codex ~/.local/bin/gemini ~/.local/bin/copilot \
~/.local/bin/opencode ~/.local/bin/playwright-cli ~/.local/bin/pi
omarchy-pkg-drop \
aether \
typora \
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
# Reload the intel_quicki2c driver to fix a dead trackpad.
# The THC (Touch Host Controller) can fail to initialize interrupts
# during boot or after suspend, leaving the trackpad registered but
# not delivering events.
sudo modprobe -r intel_quicki2c && sudo modprobe intel_quicki2c
+2 -2
View File
@@ -13,12 +13,12 @@ if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
fi
if omarchy-cmd-present chromium; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
chromium --refresh-platform-policy --no-startup-window >/dev/null
fi
if omarchy-cmd-present brave; then
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
brave --refresh-platform-policy --no-startup-window >/dev/null
fi
fi
+1
View File
@@ -35,5 +35,6 @@ set_theme() {
}
set_theme "code" "$HOME/.config/Code/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-vscode-theme-changes"
set_theme "code-insiders" "$HOME/.config/Code - Insiders/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-vscode-insiders-theme-changes"
set_theme "codium" "$HOME/.config/VSCodium/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-codium-theme-changes"
set_theme "cursor" "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes"
+2 -2
View File
@@ -2,10 +2,10 @@
if pgrep -x hypridle >/dev/null; then
pkill -x hypridle
notify-send "󱫖 Stop locking computer when idle"
notify-send -u low "󱫖 Stop locking computer when idle"
else
uwsm-app -- hypridle >/dev/null 2>&1 &
notify-send "󱫖 Now locking computer when idle"
notify-send -u low "󱫖 Now locking computer when idle"
fi
pkill -RTMIN+9 waybar
+2 -2
View File
@@ -21,10 +21,10 @@ restart_nightlighted_waybar() {
if [[ $CURRENT_TEMP == $OFF_TEMP ]]; then
hyprctl hyprsunset temperature $ON_TEMP
notify-send " Nightlight screen temperature"
notify-send -u low " Nightlight screen temperature"
restart_nightlighted_waybar
else
hyprctl hyprsunset temperature $OFF_TEMP
notify-send " Daylight screen temperature"
notify-send -u low " Daylight screen temperature"
restart_nightlighted_waybar
fi
+2 -2
View File
@@ -3,9 +3,9 @@
makoctl mode -t do-not-disturb
if makoctl mode | grep -q 'do-not-disturb'; then
notify-send "󰂛 Silenced notifications"
notify-send -u low "󰂛 Silenced notifications"
else
notify-send "󰂚 Enabled notifications"
notify-send -u low "󰂚 Enabled notifications"
fi
pkill -RTMIN+10 waybar
+2 -2
View File
@@ -4,9 +4,9 @@ STATE_FILE=~/.local/state/omarchy/toggles/screensaver-off
if [[ -f $STATE_FILE ]]; then
rm -f $STATE_FILE
notify-send "󱄄 Screensaver enabled"
notify-send -u low "󱄄 Screensaver enabled"
else
mkdir -p "$(dirname $STATE_FILE)"
touch $STATE_FILE
notify-send "󱄄 Screensaver disabled"
notify-send -u low "󱄄 Screensaver disabled"
fi
+2 -2
View File
@@ -4,9 +4,9 @@ STATE_FILE=~/.local/state/omarchy/toggles/suspend-off
if [[ -f $STATE_FILE ]]; then
rm -f $STATE_FILE
notify-send "󰒲 Suspend now available in system menu"
notify-send -u low "󰒲 Suspend now available in system menu"
else
mkdir -p "$(dirname $STATE_FILE)"
touch $STATE_FILE
notify-send "󰒲 Suspend removed from system menu"
notify-send -u low "󰒲 Suspend removed from system menu"
fi
+7
View File
@@ -1,5 +1,8 @@
#!/bin/bash
# Update system firmware using fwupd. Ensures the fwupd EFI binary is installed
# in the ESP so UEFI capsule updates work with the Limine bootloader.
set -e
echo -e "\e[32mUpdate Firmware\e[0m"
@@ -7,5 +10,9 @@ if omarchy-cmd-missing fwupdmgr; then
omarchy-pkg-add fwupd
fi
if [[ -d /sys/firmware/efi ]] && [[ -f /usr/lib/fwupd/efi/fwupdx64.efi ]]; then
sudo install -D /usr/lib/fwupd/efi/fwupdx64.efi /boot/EFI/arch/fwupdx64.efi
fi
fwupdmgr refresh --force
sudo fwupdmgr update
+7 -4
View File
@@ -2,13 +2,16 @@
set -e
# Run the update inside a PTY so pacman/yay keep showing download progress
# while still logging the full session for later analysis.
if [[ -z $OMARCHY_UPDATE_LOGGED ]]; then
script_command=$(printf '%q ' "$0" "$@")
exec env OMARCHY_UPDATE_LOGGED=1 script -qefc "$script_command" "/tmp/omarchy-update.log"
fi
# Ensure screensaver/sleep doesn't set in during updates
hyprctl dispatch tagwindow +noidle &>/dev/null || true
# Capture update logs (CLICOLOR_FORCE keeps gum styled when stdout is piped through tee)
export CLICOLOR_FORCE=1
exec > >(tee "/tmp/omarchy-update.log") 2>&1
# Perform all update steps
omarchy-update-keyring
omarchy-update-available-reset
+3
View File
@@ -11,6 +11,9 @@ if gum confirm "Install Voxtype + AI model (~150MB) to enable dictation?"; then
cp $OMARCHY_PATH/default/voxtype/config.toml ~/.config/voxtype/
voxtype setup --download --no-post-install
if omarchy-hw-vulkan; then
voxtype setup gpu --enable || true
fi
voxtype setup systemd
omarchy-restart-waybar
+1 -1
View File
@@ -4,7 +4,7 @@
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
env = GDK_SCALE,2
monitor=,preferred,auto,auto
monitor=,preferred,auto,auto,vrr,1
# Good compromise for 27" or 32" 4K monitors (but fractional!)
# env = GDK_SCALE,1.75
+1 -1
View File
@@ -4,4 +4,4 @@
# To put it into use, remove .sample from the name.
# Example: Show the name of the theme that was just set.
# notify-send "New font" "Your new font is $1"
# notify-send -u low "New font" "Your new font is $1"
+1 -1
View File
@@ -4,4 +4,4 @@
# To put it into use, remove .sample from the name.
# Example: Show notification after the system has been updated.
# notify-send "Update Performed" "Your system is now up to date"
# notify-send -u low "Update Performed" "Your system is now up to date"
+1 -1
View File
@@ -4,4 +4,4 @@
# To put it into use, remove .sample from the name.
# Example: Show the name of the theme that was just set.
# notify-send "New theme" "Your new theme is $1"
# notify-send -u low "New theme" "Your new theme is $1"
+2 -2
View File
@@ -72,8 +72,8 @@
"format-wifi": "{icon}",
"format-ethernet": "󰀂",
"format-disconnected": "󰤮",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-wifi": "{essid} ({frequency} GHz)",
"tooltip-format-ethernet": "Connected",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"spacing": 1,
+13 -5
View File
@@ -13,23 +13,31 @@ img2jpg() {
img="$1"
shift
magick "$img" "$@" -quality 95 -strip "${img%.*}-converted.jpg"
magick "$img" "$@" -quality 85 -strip "${img%.*}-converted.jpg"
}
# Transcode any image to a small JPG (max 1080px wide) that's great for sharing online
# Transcode any image to a small JPG (max 1080px wide)
img2jpg-small() {
img="$1"
shift
magick "$img" "$@" -resize 1080x\> -quality 95 -strip "${img%.*}-small.jpg"
magick "$img" "$@" -resize 1080x\> -quality 85 -strip "${img%.*}-small.jpg"
}
# Transcode any image to a medium JPG (max 1800px wide) that's great for sharing online
# Transcode any image to a 4K JPG (max 2160px wide)
img2jpg-medium() {
img="$1"
shift
magick "$img" "$@" -resize 1800x\> -quality 95 -strip "${img%.*}-medium.jpg"
magick "$img" "$@" -resize 2160x\> -quality 85 -strip "${img%.*}-medium.jpg"
}
# Transcode any image to a 6K JPG (max 3160px wide)
img2jpg-large() {
img="$1"
shift
magick "$img" "$@" -resize 3160x\> -quality 85 -strip "${img%.*}-large.jpg"
}
# Transcode any image to compressed-but-lossless PNG
+4 -4
View File
@@ -7,11 +7,11 @@ ga() {
local branch="$1"
local base="$(basename "$PWD")"
local path="../${base}--${branch}"
local wt_path="../${base}--${branch}"
git worktree add -b "$branch" "$path"
mise trust "$path"
cd "$path"
git worktree add -b "$branch" "$wt_path"
mise trust "$wt_path"
cd "$wt_path"
}
# Remove worktree and branch from within active worktree directory.
-1
View File
@@ -3,7 +3,6 @@ source = ~/.local/share/omarchy/default/hypr/apps/1password.conf
source = ~/.local/share/omarchy/default/hypr/apps/bitwarden.conf
source = ~/.local/share/omarchy/default/hypr/apps/browser.conf
source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf
source = ~/.local/share/omarchy/default/hypr/apps/jetbrains.conf
source = ~/.local/share/omarchy/default/hypr/apps/localsend.conf
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
-41
View File
@@ -1,41 +0,0 @@
# Fix splash screen showing in weird places and prevent annoying focus takeovers
windowrule {
name = jetbrains-splash
match:class = ^(jetbrains-.*)$
match:title = ^(splash)$
match:float = 1
tag = +jetbrains-splash
center = on
no_focus = on
border_size = 0
}
# Center popups/find windows
windowrule {
name = jetbrains-popup
match:class = ^(jetbrains-.*)
match:title = ^(| )$
match:float = 1
tag = +jetbrains
center = on
# Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.)
stay_focused = on
border_size = 0
min_size = (monitor_w*0.5) (monitor_h*0.5)
}
# Disable window flicker when autocomplete or tooltips appear
windowrule {
name = jetbrains-tooltip
match:class = ^(jetbrains-.*)$
match:title = ^(win.*)$
match:float = 1
no_initial_focus = on
}
# Disable mouse focus
windowrule {
name = jetbrains-focus
no_follow_mouse = on
match:class = ^(jetbrains-.*)$
}
+3 -3
View File
@@ -13,7 +13,7 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, omarchy-hyprland-active-window-transparency-toggle
bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle
bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle
@@ -42,8 +42,8 @@ bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
# Waybar-less information
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send " $(date +"%A %H:%M %d %B W%V %Y")"
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send "$(omarchy-battery-status)"
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send -u low " $(date +"%A %H:%M · %d %B %Y · Week %V")"
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send -u low "$(omarchy-battery-status)"
# Control panels
bindd = SUPER CTRL, A, Audio controls, exec, omarchy-launch-audio
+1 -1
View File
@@ -2,7 +2,7 @@ TARGET_OS_NAME="Omarchy"
ESP_PATH="/boot"
KERNEL_CMDLINE[default]="@@CMDLINE@@"
KERNEL_CMDLINE[default]+="@@CMDLINE@@"
KERNEL_CMDLINE[default]+=" quiet splash"
ENABLE_UKI=yes
@@ -0,0 +1,84 @@
import os
import shutil
from gi import require_version
require_version("Nautilus", "4.1")
from gi.repository import GObject, Gio, Nautilus
class SendViaLocalSendAction(GObject.GObject, Nautilus.MenuProvider):
def _launch_localsend(self, paths):
command = self._resolve_command()
if not command:
return
if command[-1] == "@@":
command = command + paths + ["@@"]
else:
command = command + paths
Gio.Subprocess.new(command, Gio.SubprocessFlags.NONE)
def _resolve_command(self):
localsend = shutil.which("localsend")
if localsend:
return [localsend, "--headless", "send"]
flatpak = shutil.which("flatpak")
if flatpak and self._has_flatpak_app(flatpak, "org.localsend.localsend_app"):
return [
flatpak,
"run",
"--file-forwarding",
"org.localsend.localsend_app",
"@@",
]
return None
def _has_flatpak_app(self, flatpak, app_id):
process = Gio.Subprocess.new(
[flatpak, "info", app_id],
Gio.SubprocessFlags.STDOUT_SILENCE | Gio.SubprocessFlags.STDERR_SILENCE,
)
return process.wait_check()
def _selected_paths(self, files):
paths = []
for file in files:
location = file.get_location()
if not location:
continue
path = location.get_path()
if path and path not in paths:
paths.append(path)
return paths
def _make_item(self, paths):
label = (
"Send via LocalSend" if len(paths) == 1 else "Send selected via LocalSend"
)
item = Nautilus.MenuItem(
name="LocalSendNautilus::send_via_localsend",
label=label,
icon="localsend",
)
item.connect("activate", self._on_activate, paths)
return item
def _on_activate(self, _menu, paths):
self._launch_localsend(paths)
def get_file_items(self, *args):
files = args[0] if len(args) == 1 else args[1]
paths = self._selected_paths(files)
if not paths or not self._resolve_command():
return []
return [self._make_item(paths)]
@@ -29,5 +29,4 @@ if [[ $1 == "post" ]]; then
fi
done
) &
disown
fi
+23 -12
View File
@@ -14,6 +14,7 @@ run_logged $OMARCHY_INSTALL/config/mise-work.sh
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
run_logged $OMARCHY_INSTALL/config/docker.sh
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
run_logged $OMARCHY_INSTALL/config/nautilus-python.sh
run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh
run_logged $OMARCHY_INSTALL/config/localdb.sh
run_logged $OMARCHY_INSTALL/config/walker-elephant.sh
@@ -26,6 +27,7 @@ run_logged $OMARCHY_INSTALL/config/kernel-modules-hook.sh
run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh
run_logged $OMARCHY_INSTALL/config/wifi-powersave-rules.sh
run_logged $OMARCHY_INSTALL/config/plocate-ac-only.sh
run_logged $OMARCHY_INSTALL/config/hardware/network.sh
run_logged $OMARCHY_INSTALL/config/hardware/set-wireless-regdom.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
@@ -34,21 +36,30 @@ run_logged $OMARCHY_INSTALL/config/hardware/printer.sh
run_logged $OMARCHY_INSTALL/config/hardware/usb-autosuspend.sh
run_logged $OMARCHY_INSTALL/config/hardware/ignore-power-button.sh
run_logged $OMARCHY_INSTALL/config/hardware/nvidia.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel-thermald.sh
run_logged $OMARCHY_INSTALL/config/hardware/vulkan.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-intel-panther-lake-display.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-f13-amd-audio-input.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/video-acceleration.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/lpmd.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/thermald.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/ipu7-camera.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/ptl-kernel.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-ptl-display.sh
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-audio-mixer.sh
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-mic.sh
run_logged $OMARCHY_INSTALL/config/hardware/framework/fix-f13-amd-audio-input.sh
run_logged $OMARCHY_INSTALL/config/hardware/framework/qmk-hid.sh
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-spi-keyboard.sh
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-suspend-nvme.sh
run_logged $OMARCHY_INSTALL/config/hardware/apple/fix-t2.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-bcm43xx.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-suspend-nvme.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-surface-keyboard.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-audio-mixer.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-mic.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-yt6801-ethernet-adapter.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-dell-xps-audio.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-synaptic-touchpad.sh
run_logged $OMARCHY_INSTALL/config/hardware/fix-tuxedo-backlight.sh
run_logged $OMARCHY_INSTALL/config/hardware/framework16-qmk-hid.sh
run_logged $OMARCHY_INSTALL/config/hardware/intel-ipu7-camera.sh
@@ -19,6 +19,7 @@ if lspci -nn | grep -q "106b:180[12]"; then
sudo systemctl enable tiny-dfr.service
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
echo "hci_bcm4377" | sudo tee -a /etc/modules-load.d/t2.conf >/dev/null
echo "MODULES+=(apple-bce usbhid hid_apple hid_generic xhci_pci xhci_hcd)" | sudo tee /etc/mkinitcpio.conf.d/apple-t2.conf >/dev/null
@@ -31,5 +32,13 @@ EOF
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
# Generated by Omarchy installer for T2 Mac support
KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pcie_ports=compat"
EOF
cat <<EOF | sudo tee /etc/t2fand.conf >/dev/null
[Fan1]
low_temp=55
high_temp=75
speed_curve=linear
always_full_speed=false
EOF
fi
@@ -0,0 +1,36 @@
# Fix Dell XPS haptic touchpad.
# The Synaptics haptic touchpad (06CB:D01A) uses the HID Manual Trigger
# protocol, but the kernel's HID haptic subsystem only supports Auto Trigger.
# This sets up a lightweight daemon that monitors touchpad button events and
# sends haptic pulses via HID feature reports on the hidraw device.
# Also disables I2C runtime PM to prevent the haptic engine losing state
# across suspend/resume.
if omarchy-hw-match "XPS" \
&& ls /sys/bus/i2c/devices/i2c-VEN_06CB:00 2>/dev/null; then
# Keep I2C controller power on to prevent haptic engine losing state
sudo tee /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules << 'EOF'
ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:19.0", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="i2c_designware.0", ATTR{power/control}="on"
EOF
sudo udevadm control --reload-rules
# Haptic feedback daemon as a systemd service
sudo tee /etc/systemd/system/dell-xps-haptic-touchpad.service << SVC
[Unit]
Description=Dell XPS haptic touchpad feedback
After=systemd-udev-settle.service
[Service]
Type=simple
ExecStart=$OMARCHY_PATH/bin/omarchy-haptic-touchpad
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target
SVC
sudo systemctl daemon-reload
sudo systemctl enable dell-xps-haptic-touchpad.service
fi
@@ -0,0 +1,21 @@
# Fix display issues on Dell XPS 2026+ with LG OLED panel and Intel Panther Lake (Xe3) GPU.
# Power-saving features cause the screen to run at 10hz.
if omarchy-hw-match "XPS" \
&& omarchy-hw-intel-ptl \
&& test "$(od -An -tx1 -j8 -N2 /sys/class/drm/card*-eDP-*/edid 2>/dev/null | tr -d ' \n')" = "30e4"; then
echo "Detected Dell XPS with LG OLED panel on Panther Lake, applying display power-saving fix..."
CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"'
sudo mkdir -p /etc/limine-entry-tool.d
cat <<EOF | sudo tee /etc/limine-entry-tool.d/dell-xps-ptl-display.conf >/dev/null
# Fix Dell XPS OLED display issues by disabling Xe PSR2 power-saving feature
$CMDLINE
EOF
# Also append to /etc/default/limine if it exists, since it overrides drop-in configs
if [ -f /etc/default/limine ] && ! grep -q 'xe.enable_panel_replay' /etc/default/limine; then
echo "$CMDLINE" | sudo tee -a /etc/default/limine >/dev/null
fi
fi
@@ -1,20 +0,0 @@
# Fix audio on Dell XPS 2026 (Panther Lake) by blacklisting SOF audio modules
# that conflict with standard HDA drivers. This turns off audio, but allows boot.
# This is meant to be removed as soon as its fixed upstream.
if lspci | grep -iE 'vga|3d|display' | grep -qi 'panther lake'; then
sudo tee /etc/modprobe.d/blacklist-audio.conf << 'EOF'
blacklist snd_sof_pci_intel_ptl
blacklist snd_sof_pci_intel_lnl
blacklist snd_sof_pci_intel_mtl
blacklist snd_sof_intel_hda_generic
blacklist snd_sof_intel_hda_common
blacklist snd_sof_intel_hda
blacklist snd_sof_pci
blacklist snd_sof
blacklist soundwire_intel
blacklist snd_soc_cs35l56_sdw
blacklist snd_soc_cs35l56
blacklist snd_soc_skl_hda_dsp
EOF
fi
@@ -1,32 +0,0 @@
# Fix Dell XPS haptic touchpad losing haptic feedback after suspend/resume.
# The I2C controller's runtime power management aggressively suspends the touchpad,
# and on resume the haptic engine sometimes fails to reinitialize.
# This udev rule keeps the I2C controller always on to prevent that.
# Applies to any Dell XPS with the Synaptics haptic touchpad (06CB:D01A).
if cat /sys/class/dmi/id/product_name 2>/dev/null | grep -qi "XPS" \
&& ls /sys/bus/i2c/devices/i2c-VEN_06CB:00 2>/dev/null; then
# Disable runtime PM for I2C controller so haptic state isn't lost
sudo tee /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules << 'EOF'
ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:19.0", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="i2c_designware.0", ATTR{power/control}="on"
EOF
sudo udevadm control --reload-rules
# Rebind the I2C HID touchpad on boot and resume to reinitialize haptic engine
sudo tee /etc/systemd/system/dell-xps-haptic-touchpad.service << 'SVC'
[Unit]
Description=Rebind Dell XPS haptic touchpad
After=systemd-udev-settle.service
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'if [[ -d /sys/bus/i2c/devices/i2c-VEN_06CB:00 ]]; then echo "i2c-VEN_06CB:00" | tee /sys/bus/i2c/drivers/i2c_hid_acpi/unbind > /dev/null 2>&1; sleep 1; echo "i2c-VEN_06CB:00" | tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind > /dev/null 2>&1; fi'
[Install]
WantedBy=multi-user.target suspend.target hibernate.target
SVC
sudo systemctl daemon-reload
sudo systemctl enable dell-xps-haptic-touchpad.service
fi
@@ -1,18 +0,0 @@
# Fix display issues on Intel Panther Lake (Xe3) GPUs by disabling power-saving
# features that cause screen to run at 10hz (e.g. Dell XPS 2026).
if lspci | grep -iE 'vga|3d|display' | grep -qi 'panther lake'; then
echo "Detected Intel Panther Lake GPU, applying display fixes..."
PANTHER_LAKE_CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0 xe.enable_fbc=0 xe.enable_dc=0"'
sudo mkdir -p /etc/limine-entry-tool.d
cat <<EOF | sudo tee /etc/limine-entry-tool.d/intel-panther-lake-display.conf >/dev/null
# Fix Panther Lake display issues by disabling Xe power-saving features
$PANTHER_LAKE_CMDLINE
EOF
# Also append to /etc/default/limine if it exists, since it overrides drop-in configs
if [ -f /etc/default/limine ] && ! grep -q 'xe.enable_psr' /etc/default/limine; then
echo "$PANTHER_LAKE_CMDLINE" | sudo tee -a /etc/default/limine >/dev/null
fi
fi
@@ -0,0 +1,15 @@
# Temporary fix for Dell XPS 14/16 on Panther Lake
# Disable WiFi 7 (EHT/802.11be) on Intel BE200/BE211 cards
# The iwlwifi driver has a broken EHT RX data path — APs drop to MCS 0 NSS 1
# when EHT is negotiated, making WiFi unusable. Disabling EHT falls
# back to WiFi 6 (HE/802.11ax) which works at full speed.
# This should be removed when Intel fixes the firmware/driver.
if lspci -nn | grep -qE '\[8086:(e440|272b)\]'; then
sudo tee /etc/modprobe.d/iwlwifi-disable-eht.conf <<'EOF'
# Temporary fix Dell XPS 14/16 on Panther lake
# Disable WiFi 7 (EHT) on Intel BE200/BE211 — broken RX rate adaptation
# Remove this file when fixes land in the iwlwifi EHT data path
options iwlwifi disable_11be=Y
EOF
fi
+10
View File
@@ -0,0 +1,10 @@
# Install Intel Low Power Mode Daemon for supported hybrid Intel CPUs (Alder Lake and newer)
# Supported models: Alder Lake (151/154), Raptor Lake (183/186/191),
# Meteor Lake (170/172), Lunar Lake (189), Panther Lake (204)
if omarchy-hw-intel && omarchy-battery-present; then
cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ')
if [[ "$cpu_model" =~ ^(151|154|170|172|183|186|189|191|204)$ ]]; then
omarchy-pkg-add intel-lpmd
fi
fi
@@ -0,0 +1,15 @@
# Install Panther Lake kernel for Intel Panther Lake systems
# The linux-ptl kernel includes audio driver patches not yet in mainline.
if omarchy-hw-intel-ptl; then
echo "Detected Intel Panther Lake, installing PTL kernel..."
omarchy-pkg-add linux-ptl linux-ptl-headers
sudo pacman -Rdd --noconfirm linux linux-headers 2>/dev/null || true
sudo mkdir -p /etc/limine-entry-tool.d
cat <<EOF | sudo tee /etc/limine-entry-tool.d/intel-panther-lake.conf >/dev/null
# Only show Panther Lake kernel in boot menu
BOOT_ORDER="linux-ptl*, *fallback, Snapshots"
EOF
fi
@@ -1,5 +1,5 @@
# This installs hardware video acceleration for Intel GPUs
# Check if we have an Intel GPU at all
if INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel'); then
# HD Graphics / Iris / Xe / Arc use intel-media-driver
if [[ ${INTEL_GPU,,} =~ (hd\ graphics|uhd\ graphics|xe|iris|arc) ]]; then
+4
View File
@@ -0,0 +1,4 @@
EXTENSIONS_DIR="$HOME/.local/share/nautilus-python/extensions"
mkdir -p "$EXTENSIONS_DIR"
cp "$OMARCHY_PATH/default/nautilus-python/extensions/localsend.py" "$EXTENSIONS_DIR/"
+5 -5
View File
@@ -61,15 +61,15 @@ EOF
fi
fi
# Disable btrfs quotas (they cause performance issues)
sudo btrfs quota disable / 2>/dev/null || true
# Enable quota to allow space-aware algorithms to work
sudo btrfs quota enable /
# Tweak default Snapper configs (number-based pruning only, space-aware limits need quotas)
# Tweak default Snapper configs
sudo sed -i 's/^TIMELINE_CREATE="yes"/TIMELINE_CREATE="no"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^NUMBER_LIMIT="50"/NUMBER_LIMIT="5"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^NUMBER_LIMIT_IMPORTANT="10"/NUMBER_LIMIT_IMPORTANT="5"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^SPACE_LIMIT="0.5"/SPACE_LIMIT="0"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^FREE_LIMIT="0.2"/FREE_LIMIT="0"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^SPACE_LIMIT="0.5"/SPACE_LIMIT="0.3"/' /etc/snapper/configs/{root,home}
sudo sed -i 's/^FREE_LIMIT="0.2"/FREE_LIMIT="0.3"/' /etc/snapper/configs/{root,home}
chrootable_systemctl_enable limine-snapper-sync.service
fi
+1
View File
@@ -16,6 +16,7 @@ brightnessctl
btop
chromium
clang
claude-code
cups
cups-browsed
cups-filters
+3
View File
@@ -20,6 +20,7 @@ jdk-openjdk
libpulse
libsass
intel-ipu7-camera
intel-lpmd
intel-media-driver
libva-intel-driver
libva-nvidia-driver
@@ -29,6 +30,8 @@ limine-snapper-sync
linux
linux-firmware
linux-headers
linux-ptl
linux-ptl-headers
macbook12-spi-driver-dkms
nvidia-580xx-dkms
nvidia-dkms
+1 -1
View File
@@ -1,6 +1,6 @@
omarchy-npx-install @anthropic-ai/claude-code claude
omarchy-npx-install @openai/codex codex
omarchy-npx-install @google/gemini-cli gemini
omarchy-npx-install @github/copilot copilot
omarchy-npx-install opencode-ai opencode
omarchy-npx-install playwright playwright-cli
omarchy-npx-install @mariozechner/pi-coding-agent pi
+1 -1
View File
@@ -1,3 +1,3 @@
echo "Fix audio input on AMD Framework laptops"
source $OMARCHY_PATH/install/config/hardware/fix-f13-amd-audio-input.sh || true
source $OMARCHY_PATH/install/config/hardware/framework/fix-f13-amd-audio-input.sh || true
+1 -1
View File
@@ -1,3 +1,3 @@
echo "Fix NVMe suspend issues on MacBook models"
bash $OMARCHY_PATH/install/config/hardware/fix-apple-suspend-nvme.sh
bash $OMARCHY_PATH/install/config/hardware/apple/fix-suspend-nvme.sh
+2 -2
View File
@@ -1,7 +1,7 @@
echo "Fix microphone gain and audio mixing on Asus ROG laptops"
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-mic.sh"
source "$OMARCHY_PATH/install/config/hardware/fix-asus-rog-audio-mixer.sh"
source "$OMARCHY_PATH/install/config/hardware/asus/fix-mic.sh"
source "$OMARCHY_PATH/install/config/hardware/asus/fix-audio-mixer.sh"
if omarchy-hw-asus-rog; then
omarchy-restart-pipewire
+1 -1
View File
@@ -1,4 +1,4 @@
echo "Install Framework 16 keyboard RGB support"
source $OMARCHY_PATH/install/packaging/framework16.sh
source $OMARCHY_PATH/install/config/hardware/framework16-qmk-hid.sh
source $OMARCHY_PATH/install/config/hardware/framework/qmk-hid.sh
+3
View File
@@ -0,0 +1,3 @@
echo "Add LocalSend entry to Nautilus context menu"
source $OMARCHY_PATH/install/config/nautilus-python.sh
+1 -1
View File
@@ -1,3 +1,3 @@
echo "Enable thermald for Intel Sandy Bridge and newer laptops"
source "$OMARCHY_PATH/install/config/hardware/intel-thermald.sh"
source "$OMARCHY_PATH/install/config/hardware/intel/thermald.sh"
+16
View File
@@ -0,0 +1,16 @@
echo "Enable GPU in voxtype if Vulkan is available"
if omarchy-cmd-present voxtype; then
if omarchy-hw-vulkan; then
echo "Vulkan is available, enabling GPU in voxtype"
voxtype setup gpu --enable || true
fi
# see https://github.com/peteonrails/voxtype/commit/ce6e9919cbe54cb8808dcb3cdd3bcb3260d7b900
# earlier versions of voxtype hard-coded the non-GPU backend in the systemd service file,
# so we need to re-run setup to update it to use /usr/bin/voxtype (the symlink)
voxtype setup systemd
systemctl --user restart voxtype
omarchy-restart-waybar
fi
-12
View File
@@ -1,12 +0,0 @@
echo "Disable btrfs quotas and space-aware snapper limits on existing installs"
if omarchy-cmd-present btrfs; then
if sudo btrfs quota status / 2>/dev/null | grep -q "Quota enabled: yes"; then
sudo btrfs quota disable /
fi
fi
if omarchy-cmd-present snapper; then
sudo sed -i 's/^SPACE_LIMIT="0\.3"/SPACE_LIMIT="0"/' /etc/snapper/configs/{root,home} 2>/dev/null
sudo sed -i 's/^FREE_LIMIT="0\.3"/FREE_LIMIT="0"/' /etc/snapper/configs/{root,home} 2>/dev/null
fi
+3
View File
@@ -0,0 +1,3 @@
echo "Install Intel Low Power Mode for Intel CPUs"
source "$OMARCHY_PATH/install/config/hardware/intel/lpmd.sh"
+6
View File
@@ -0,0 +1,6 @@
echo "Fix KERNEL_CMDLINE merge behavior in /etc/default/limine"
if [[ -f /etc/default/limine ]]; then
sudo sed -i 's/^KERNEL_CMDLINE\[default\]="/KERNEL_CMDLINE[default]+="/' /etc/default/limine
sudo limine-mkinitcpio
fi
+7
View File
@@ -0,0 +1,7 @@
echo "Load Bluetooth driver module on T2 Macs"
if lspci -nn | grep -q "106b:180[12]"; then
if ! grep -q "hci_bcm4377" /etc/modules-load.d/t2.conf 2>/dev/null; then
echo "hci_bcm4377" | sudo tee -a /etc/modules-load.d/t2.conf >/dev/null
fi
fi
+11
View File
@@ -0,0 +1,11 @@
echo "Install tuned fan curve for T2 MacBook"
if lspci -nn | grep -q "106b:180[12]" && [[ ! -f /etc/t2fand.conf ]]; then
cat <<EOF | sudo tee /etc/t2fand.conf >/dev/null
[Fan1]
low_temp=55
high_temp=75
speed_curve=linear
always_full_speed=false
EOF
fi
+7
View File
@@ -0,0 +1,7 @@
echo "Remove misleading waybar network transfer speeds"
if grep -q "bandwidthDownBytes" ~/.config/waybar/config.jsonc; then
sed -i 's/"tooltip-format-wifi": "{essid} ({frequency} GHz)\\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}"/"tooltip-format-wifi": "{essid} ({frequency} GHz)"/' ~/.config/waybar/config.jsonc
sed -i 's/"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}"/"tooltip-format-ethernet": "Connected"/' ~/.config/waybar/config.jsonc
omarchy-restart-waybar
fi
Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 KiB

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 KiB

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 KiB

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Before

Width:  |  Height:  |  Size: 434 KiB

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 KiB

After

Width:  |  Height:  |  Size: 561 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 KiB

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 598 KiB

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

-1
View File
@@ -1,7 +1,6 @@
return {
{
"omacom-io/lumon.nvim",
name = "lumon",
priority = 1000,
},
{
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 278 KiB

+4
View File
@@ -0,0 +1,4 @@
{
"name": "Lumon",
"extension": "oldjobobo.lumon-theme"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 KiB

After

Width:  |  Height:  |  Size: 459 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
return {
{
"xero/miasma.nvim",
"OldJobobo/miasma.nvim",
priority = 1000,
},
{
Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 KiB

After

Width:  |  Height:  |  Size: 319 KiB

+2 -2
View File
@@ -1,4 +1,4 @@
{
"name": "In The Fog Dark",
"extension": "ganevru.in-the-fog-theme"
"name": "Miasma",
"extension": "oldjobobo.miasma-theme"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 KiB

After

Width:  |  Height:  |  Size: 428 KiB

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