diff --git a/bin/omarchy-battery-monitor b/bin/omarchy-battery-monitor index b0da0d9e..6b348b11 100755 --- a/bin/omarchy-battery-monitor +++ b/bin/omarchy-battery-monitor @@ -9,6 +9,7 @@ BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{pr send_notification() { notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 + omarchy-hook battery-low "$1" } if [[ -n $BATTERY_LEVEL && $BATTERY_LEVEL =~ ^[0-9]+$ ]]; then diff --git a/bin/omarchy-battery-remaining-time b/bin/omarchy-battery-remaining-time index 9c2c7019..c4f39593 100755 --- a/bin/omarchy-battery-remaining-time +++ b/bin/omarchy-battery-remaining-time @@ -5,12 +5,18 @@ battery_info=$(upower -i $(upower -e | grep BAT)) echo "$battery_info" | awk '/time to (empty|full)/ { - hours = int($4) - minutes = int(($4 - hours) * 60) - if (minutes > 0) { - printf "%dh %dm", hours, minutes + value = $4 + unit = $5 + if (unit ~ /^minute/) { + printf "%dm", int(value) } else { - printf "%dh", hours + hours = int(value) + minutes = int((value - hours) * 60) + if (minutes > 0) { + printf "%dh %dm", hours, minutes + } else { + printf "%dh", hours + } } exit }' diff --git a/bin/omarchy-brightness-keyboard b/bin/omarchy-brightness-keyboard index 8c35b0ee..7e7e738b 100755 --- a/bin/omarchy-brightness-keyboard +++ b/bin/omarchy-brightness-keyboard @@ -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 diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index 93e143a9..8c730cbb 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -63,7 +63,7 @@ start_webcam_overlay() { done ffplay -f v4l2 $video_size_arg -framerate 30 "$WEBCAM_DEVICE" \ - -vf "scale=${target_width}:-1" \ + -vf "crop=iw/2:ih,scale=${target_width}:-1" \ -window_title "WebcamOverlay" \ -noborder \ -fflags nobuffer -flags low_delay \ diff --git a/bin/omarchy-font-set b/bin/omarchy-font-set index 9c6c369b..6b5bf190 100755 --- a/bin/omarchy-font-set +++ b/bin/omarchy-font-set @@ -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" diff --git a/bin/omarchy-haptic-touchpad b/bin/omarchy-haptic-touchpad new file mode 100755 index 00000000..f800f0d0 --- /dev/null +++ b/bin/omarchy-haptic-touchpad @@ -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() diff --git a/bin/omarchy-hibernation-setup b/bin/omarchy-hibernation-setup index da4629df..0ebca84f 100755 --- a/bin/omarchy-hibernation-setup +++ b/bin/omarchy-hibernation-setup @@ -73,9 +73,10 @@ if [[ ! -f $RESUME_DROP_IN ]]; then echo "Adding resume kernel parameters" sudo swapon -p 0 "$SWAP_FILE" 2>/dev/null RESUME_DEVICE=$(findmnt -no SOURCE -T "$SWAP_FILE" | sed 's/\[.*\]//') - RESUME_OFFSET=$(btrfs inspect-internal map-swapfile -r "$SWAP_FILE") + RESUME_OFFSET=$(sudo btrfs inspect-internal map-swapfile -r "$SWAP_FILE") sudo mkdir -p /etc/limine-entry-tool.d echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null + sudo tee -a /etc/default/limine < "$RESUME_DROP_IN" >/dev/null fi # Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate) @@ -85,6 +86,7 @@ if grep -q "\[s2idle\]" /sys/power/mem_sleep 2>/dev/null; then echo "Enabling ACPI RTC alarm for s2idle suspend" sudo mkdir -p /etc/limine-entry-tool.d echo 'KERNEL_CMDLINE[default]+=" rtc_cmos.use_acpi_alarm=1"' | sudo tee "$LIMINE_DROP_IN" >/dev/null + sudo tee -a /etc/default/limine < "$LIMINE_DROP_IN" >/dev/null fi fi diff --git a/bin/omarchy-hw-framework16 b/bin/omarchy-hw-framework16 index d1e03c1d..cd746bb1 100755 --- a/bin/omarchy-hw-framework16 +++ b/bin/omarchy-hw-framework16 @@ -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" diff --git a/bin/omarchy-hw-intel b/bin/omarchy-hw-intel new file mode 100755 index 00000000..2dc37c08 --- /dev/null +++ b/bin/omarchy-hw-intel @@ -0,0 +1,5 @@ +#!/bin/bash + +# Detect whether the computer has an Intel CPU. + +[[ $(grep -m1 "vendor_id" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ') == "GenuineIntel" ]] diff --git a/bin/omarchy-hw-intel-ptl b/bin/omarchy-hw-intel-ptl new file mode 100755 index 00000000..9750bd3b --- /dev/null +++ b/bin/omarchy-hw-intel-ptl @@ -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' diff --git a/bin/omarchy-hw-match b/bin/omarchy-hw-match new file mode 100755 index 00000000..ae3eb44d --- /dev/null +++ b/bin/omarchy-hw-match @@ -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 diff --git a/bin/omarchy-hw-surface b/bin/omarchy-hw-surface index 653792da..2f642721 100755 --- a/bin/omarchy-hw-surface +++ b/bin/omarchy-hw-surface @@ -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" diff --git a/bin/omarchy-hw-vulkan b/bin/omarchy-hw-vulkan new file mode 100755 index 00000000..8d473a24 --- /dev/null +++ b/bin/omarchy-hw-vulkan @@ -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 . diff --git a/bin/omarchy-hyprland-active-window-transparency-toggle b/bin/omarchy-hyprland-active-window-transparency-toggle new file mode 100755 index 00000000..2412548d --- /dev/null +++ b/bin/omarchy-hyprland-active-window-transparency-toggle @@ -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 diff --git a/bin/omarchy-hyprland-monitor-scaling-cycle b/bin/omarchy-hyprland-monitor-scaling-cycle index c673fe5b..a3b24243 100755 --- a/bin/omarchy-hyprland-monitor-scaling-cycle +++ b/bin/omarchy-hyprland-monitor-scaling-cycle @@ -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" diff --git a/bin/omarchy-hyprland-window-single-square-aspect-toggle b/bin/omarchy-hyprland-window-single-square-aspect-toggle index eb747e78..50ccdac9 100755 --- a/bin/omarchy-hyprland-window-single-square-aspect-toggle +++ b/bin/omarchy-hyprland-window-single-square-aspect-toggle @@ -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 diff --git a/bin/omarchy-hyprland-workspace-layout-toggle b/bin/omarchy-hyprland-workspace-layout-toggle index 96f4f5af..189a4694 100755 --- a/bin/omarchy-hyprland-workspace-layout-toggle +++ b/bin/omarchy-hyprland-workspace-layout-toggle @@ -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" diff --git a/bin/omarchy-install-dev-env b/bin/omarchy-install-dev-env index f1cd31b8..99756a9e 100755 --- a/bin/omarchy-install-dev-env +++ b/bin/omarchy-install-dev-env @@ -50,9 +50,9 @@ case "$1" in ruby) echo -e "Installing Ruby on Rails...\n" omarchy-pkg-add libyaml - mise use --global ruby@latest - mise settings add idiomatic_version_file_enable_tools ruby mise settings add ruby.compile false + mise settings add idiomatic_version_file_enable_tools ruby + mise use --global ruby@latest echo "gem: --no-document" >~/.gemrc mise x ruby -- gem install rails --no-document echo -e "\nYou can now run: rails new myproject" diff --git a/bin/omarchy-install-nordvpn b/bin/omarchy-install-nordvpn index 5811af74..7ed080d8 100755 --- a/bin/omarchy-install-nordvpn +++ b/bin/omarchy-install-nordvpn @@ -14,4 +14,4 @@ sudo usermod -aG nordvpn "$USER" echo -e "\nNordVPN installed! After reboot, run 'nordvpn login' to authenticate." echo -gum confirm "Reboot now to make NordVPN usable?" && sudo reboot now +gum confirm "Reboot now to make NordVPN usable?" && omarchy-system-reboot diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index eac88745..03d1159a 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -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 diff --git a/bin/omarchy-menu b/bin/omarchy-menu index f327b9f4..bbb56fa9 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -20,8 +20,8 @@ back_to() { } toggle_existing_menu() { - if pgrep -f "walker.*--dmenu" > /dev/null; then - walker --close > /dev/null 2>&1 + if pgrep -f "walker.*--dmenu" >/dev/null; then + walker --close >/dev/null 2>&1 exit 0 fi } @@ -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" } @@ -221,6 +221,7 @@ show_font_menu() { show_setup_menu() { local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n System Sleep\n󰍹 Monitors" [[ -f ~/.config/hypr/bindings.conf ]] && options="$options\n Keybindings" + options="$options\n Key Remapping" [[ -f ~/.config/hypr/input.conf ]] && options="$options\n Input" options="$options\n󰱔 DNS\n Security\n Config" @@ -233,6 +234,7 @@ show_setup_menu() { *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;; *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;; *Input*) open_in_editor ~/.config/hypr/input.conf ;; + *Key\ Remapping*) omarchy-setup-makima && open_in_editor "$HOME/.config/makima/AT Translated Set 2 keyboard.toml" && omarchy-restart-makima ;; *DNS*) present_terminal omarchy-setup-dns ;; *Security*) show_setup_security_menu ;; *Config*) show_setup_config_menu ;; @@ -353,13 +355,8 @@ show_install_ai_menu() { echo ollama ) - case $(menu "Install" " Dictation\n󱚤 Claude Code\n󱚤 Codex\n󱚤 Gemini CLI\n󱚤 Copilot CLI\n󱚤 Cursor CLI\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush") in + case $(menu "Install" " Dictation\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush") in *Dictation*) present_terminal omarchy-voxtype-install ;; - *Claude*) install "Claude Code" "claude-code" ;; - *Codex*) install "Codex" "openai-codex" ;; - *Gemini*) install "Gemini CLI" "gemini-cli" ;; - *Copilot*) install "Copilot CLI" "github-copilot-cli" ;; - *Cursor*) install "Cursor CLI" "cursor-cli" ;; *Studio*) install "LM Studio" "lmstudio-bin" ;; *Ollama*) install "Ollama" $ollama_pkg ;; *Crush*) install "Crush" "crush-bin" ;; diff --git a/bin/omarchy-npx-install b/bin/omarchy-npx-install new file mode 100755 index 00000000..3c294c7b --- /dev/null +++ b/bin/omarchy-npx-install @@ -0,0 +1,24 @@ +#!/bin/bash + +# Install an npx wrapper for a given npm package. +# Usage: omarchy-npx-install [command-name] +# +# If command-name is omitted, it defaults to the package name. +# Example: omarchy-npx-install opencode-ai opencode + +if [[ -z $1 ]]; then + echo "Usage: omarchy-npx-install [command-name]" + exit 1 +fi + +package=$1 +command=${2:-$1} + +mkdir -p "$HOME/.local/bin" + +cat > "$HOME/.local/bin/$command" </dev/null +git clone --depth=1 "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null mv $OMARCHY_PATH ~/.local/share/omarchy-old mv ~/.local/share/omarchy-new $OMARCHY_PATH diff --git a/bin/omarchy-remove-preinstalls b/bin/omarchy-remove-preinstalls index d4e9a615..49f6a42b 100755 --- a/bin/omarchy-remove-preinstalls +++ b/bin/omarchy-remove-preinstalls @@ -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 \ diff --git a/bin/omarchy-restart-trackpad b/bin/omarchy-restart-trackpad new file mode 100755 index 00000000..80bdfcfd --- /dev/null +++ b/bin/omarchy-restart-trackpad @@ -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 diff --git a/bin/omarchy-setup-makima b/bin/omarchy-setup-makima new file mode 100755 index 00000000..707465b4 --- /dev/null +++ b/bin/omarchy-setup-makima @@ -0,0 +1,22 @@ +#!/bin/bash + +# Setup makima - key remapping service for remapping Copilot key to Omarchy Menu + +CONFIG_FILE="$HOME/.config/makima/AT Translated Set 2 keyboard.toml" + +if [[ ! -f $CONFIG_FILE ]]; then + omarchy-pkg-add makima-bin + + mkdir -p "$HOME/.config/makima" + cp "$OMARCHY_PATH/default/makima/AT Translated Set 2 keyboard.toml" "$CONFIG_FILE" + + sudo mkdir -p /etc/systemd/system/makima.service.d + sudo tee /etc/systemd/system/makima.service.d/override.conf >/dev/null </dev/null || true +fi diff --git a/bin/omarchy-sudo-keepalive b/bin/omarchy-sudo-keepalive new file mode 100755 index 00000000..c475198b --- /dev/null +++ b/bin/omarchy-sudo-keepalive @@ -0,0 +1,10 @@ +#!/bin/bash + +# Prompt for sudo once and keep the credential alive in the background. +# Source this script so the trap applies to the calling shell: +# source omarchy-sudo-keepalive + +sudo -v +while true; do sudo -n true; sleep 60; done 2>/dev/null & +SUDO_KEEPALIVE_PID=$! +trap "kill $SUDO_KEEPALIVE_PID 2>/dev/null" EXIT diff --git a/bin/omarchy-sudo-passwordless-toggle b/bin/omarchy-sudo-passwordless-toggle new file mode 100755 index 00000000..f2071f62 --- /dev/null +++ b/bin/omarchy-sudo-passwordless-toggle @@ -0,0 +1,43 @@ +#!/bin/bash + +# Toggle passwordless sudo for the current user. +# First run: enables passwordless sudo for 15 minutes (after confirmation). +# Second run: disables it early. + +NOPASSWD_FILE="/etc/sudoers.d/99-omarchy-nopasswd-${USER}" +TIMER_NAME="omarchy-nopasswd-expire-${USER}" + +# Safety: if the file exists but the timer doesn't (e.g. after reboot), clean up +if sudo test -f "$NOPASSWD_FILE" && ! systemctl is-active "${TIMER_NAME}.timer" &>/dev/null; then + sudo rm "$NOPASSWD_FILE" +fi + +# Check for the file directly — sudo -n can stay cached or be granted by other rules +if sudo test -f "$NOPASSWD_FILE"; then + sudo rm "$NOPASSWD_FILE" + sudo systemctl stop "${TIMER_NAME}.timer" 2>/dev/null + echo "Passwordless sudo has been DISABLED. Sudo will require a password again." +else + echo "" + echo "⚠️ WARNING: This will allow ANY process running as your user to" + echo "execute ANY command as root WITHOUT a password for 15 minutes." + echo "" + echo "This is useful for AI agents that need to run sudo commands," + echo "but it significantly weakens the security of your system." + echo "Anyone or anything with access to your user account gets full root." + echo "" + echo "Passwordless sudo will automatically disable after 15 minutes." + echo "Run this command again to disable it early." + echo "" + + if gum confirm "Enable passwordless sudo for 15 minutes? This is a significant security risk!"; then + echo "${USER} ALL=(ALL) NOPASSWD: ALL" | sudo tee "$NOPASSWD_FILE" > /dev/null + sudo chmod 440 "$NOPASSWD_FILE" + sudo systemd-run --on-active=15m --timer-property=AccuracySec=1s --unit="$TIMER_NAME" \ + rm "$NOPASSWD_FILE" + echo "Passwordless sudo has been ENABLED. It will automatically disable in 15 minutes." + echo "Note: if you restart before then, run omarchy-sudo-passwordless-toggle again to disable it." + else + echo "Aborted. No changes made." + fi +fi diff --git a/bin/omarchy-reset-sudo b/bin/omarchy-sudo-reset similarity index 100% rename from bin/omarchy-reset-sudo rename to bin/omarchy-sudo-reset diff --git a/bin/omarchy-theme-set-browser b/bin/omarchy-theme-set-browser index 0ff87091..9278e90d 100755 --- a/bin/omarchy-theme-set-browser +++ b/bin/omarchy-theme-set-browser @@ -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 diff --git a/bin/omarchy-theme-set-vscode b/bin/omarchy-theme-set-vscode index 3980f68d..ee8ad37d 100755 --- a/bin/omarchy-theme-set-vscode +++ b/bin/omarchy-theme-set-vscode @@ -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" diff --git a/bin/omarchy-toggle-idle b/bin/omarchy-toggle-idle index 58f0a85d..a80eec45 100755 --- a/bin/omarchy-toggle-idle +++ b/bin/omarchy-toggle-idle @@ -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 diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight index cb0836ee..e05a1d45 100755 --- a/bin/omarchy-toggle-nightlight +++ b/bin/omarchy-toggle-nightlight @@ -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 diff --git a/bin/omarchy-toggle-notification-silencing b/bin/omarchy-toggle-notification-silencing index c8117059..15ee7b5b 100755 --- a/bin/omarchy-toggle-notification-silencing +++ b/bin/omarchy-toggle-notification-silencing @@ -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 diff --git a/bin/omarchy-toggle-screensaver b/bin/omarchy-toggle-screensaver index 2edd4010..9a36ab5e 100755 --- a/bin/omarchy-toggle-screensaver +++ b/bin/omarchy-toggle-screensaver @@ -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 diff --git a/bin/omarchy-toggle-suspend b/bin/omarchy-toggle-suspend index 3c5b0491..ab7d9e76 100755 --- a/bin/omarchy-toggle-suspend +++ b/bin/omarchy-toggle-suspend @@ -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 diff --git a/bin/omarchy-voxtype-install b/bin/omarchy-voxtype-install index 524ff4c6..6d2e1c42 100755 --- a/bin/omarchy-voxtype-install +++ b/bin/omarchy-voxtype-install @@ -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 diff --git a/config/omarchy/hooks/battery-low.sample b/config/omarchy/hooks/battery-low.sample new file mode 100644 index 00000000..dc3726a9 --- /dev/null +++ b/config/omarchy/hooks/battery-low.sample @@ -0,0 +1,10 @@ +#!/bin/bash + +# This hook is called with the current battery percentage when the low battery +# notification is sent. To put it into use, remove .sample from the name. + +SOUND_FILE="/usr/share/sounds/freedesktop/stereo/dialog-warning.oga" + +if omarchy-cmd-present mpv && [[ -f $SOUND_FILE ]]; then + mpv --no-video "$SOUND_FILE" >/dev/null 2>&1 +fi diff --git a/config/omarchy/hooks/font-set.sample b/config/omarchy/hooks/font-set.sample index 36d8c3ec..3f0109a9 100644 --- a/config/omarchy/hooks/font-set.sample +++ b/config/omarchy/hooks/font-set.sample @@ -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" diff --git a/config/omarchy/hooks/post-update.sample b/config/omarchy/hooks/post-update.sample index 486352e5..f740d5bb 100644 --- a/config/omarchy/hooks/post-update.sample +++ b/config/omarchy/hooks/post-update.sample @@ -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" diff --git a/config/omarchy/hooks/theme-set.sample b/config/omarchy/hooks/theme-set.sample index b2a5fe1d..2d13287f 100644 --- a/config/omarchy/hooks/theme-set.sample +++ b/config/omarchy/hooks/theme-set.sample @@ -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" diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index 05ec10e9..083abb63 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -4,7 +4,7 @@ set -g prefix2 C-b bind C-Space send-prefix # Reload config -bind q source-file ~/.config/tmux/tmux.conf +bind q source-file ~/.config/tmux/tmux.conf \; display "Configuration reloaded" # Vi mode for copy setw -g mode-keys vi @@ -83,7 +83,7 @@ set -gw automatic-rename-format '#{b:pane_current_path}' # Theme set -g status-style "bg=default,fg=default" set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=default] " -set -g status-right "#[fg=blue]#{?client_prefix,PREFIX ,}#{?window_zoomed_flag,ZOOM ,}#[fg=brightblack]#h " +set -g status-right "#[fg=blue]#{?pane_in_mode,COPY ,}#{?client_prefix,PREFIX ,}#{?window_zoomed_flag,ZOOM ,}#[fg=brightblack]#h " set -g window-status-format "#[fg=brightblack] #I:#W " set -g window-status-current-format "#[fg=blue,bold] #I:#W " set -g pane-border-style "fg=brightblack" diff --git a/config/uwsm/env b/config/uwsm/env index ee2b1500..18ff78cb 100644 --- a/config/uwsm/env +++ b/config/uwsm/env @@ -2,7 +2,7 @@ # Ensure Omarchy bins are in the path export OMARCHY_PATH=$HOME/.local/share/omarchy -export PATH=$OMARCHY_PATH/bin:$PATH +export PATH=$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin # Set default terminal and editor source ~/.config/uwsm/default diff --git a/default/bash/aliases b/default/bash/aliases index 667912a8..8e281d02 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -6,8 +6,13 @@ if command -v eza &> /dev/null; then alias lta='lt -a' fi -alias ff="fzf --preview 'bat --style=numbers --color=always {}'" +if [[ "$TERM" == "xterm-kitty" ]]; then + alias ff="fzf --preview 'case \$(file --mime-type -b {}) in image/*) kitty icat --clear --transfer-mode=memory --stdin=no --place=\${FZF_PREVIEW_COLUMNS}x\${FZF_PREVIEW_LINES}@0x0 {} ;; *) bat --style=numbers --color=always {} ;; esac'" +else + alias ff="fzf --preview 'bat --style=numbers --color=always {}'" +fi alias eff='$EDITOR "$(ff)"' +sff() { if [ $# -eq 0 ]; then echo "Usage: sff (e.g. sff host:/tmp/)"; return 1; fi; local file; file=$(find . -type f -printf '%T@\t%p\n' | sort -rn | cut -f2- | ff) && [ -n "$file" ] && scp "$file" "$1"; } if command -v zoxide &> /dev/null; then alias cd="zd" diff --git a/default/bash/fns/transcoding b/default/bash/fns/transcoding index ea33c75b..6f5b6a59 100644 --- a/default/bash/fns/transcoding +++ b/default/bash/fns/transcoding @@ -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 diff --git a/default/bash/fns/worktrees b/default/bash/fns/worktrees index 5fc1063a..a175a647 100644 --- a/default/bash/fns/worktrees +++ b/default/bash/fns/worktrees @@ -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. diff --git a/default/hypr/apps.conf b/default/hypr/apps.conf index f6946ad1..a8e27ac6 100644 --- a/default/hypr/apps.conf +++ b/default/hypr/apps.conf @@ -10,6 +10,7 @@ source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf source = ~/.local/share/omarchy/default/hypr/apps/steam.conf source = ~/.local/share/omarchy/default/hypr/apps/geforce.conf +source = ~/.local/share/omarchy/default/hypr/apps/moonlight.conf source = ~/.local/share/omarchy/default/hypr/apps/system.conf source = ~/.local/share/omarchy/default/hypr/apps/telegram.conf source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf diff --git a/default/hypr/apps/moonlight.conf b/default/hypr/apps/moonlight.conf new file mode 100644 index 00000000..271a11c1 --- /dev/null +++ b/default/hypr/apps/moonlight.conf @@ -0,0 +1,6 @@ +windowrule { + name = moonlight + match:class = com.moonlight_stream.Moonlight + fullscreen = 1 + idle_inhibit = fullscreen +} diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 9e0204b0..55c293dd 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -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 diff --git a/default/limine/default.conf b/default/limine/default.conf index 072b8bf3..ff5ae56d 100644 --- a/default/limine/default.conf +++ b/default/limine/default.conf @@ -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 diff --git a/default/systemd/system-sleep/unmount-fuse b/default/systemd/system-sleep/unmount-fuse new file mode 100644 index 00000000..54a4206d --- /dev/null +++ b/default/systemd/system-sleep/unmount-fuse @@ -0,0 +1,33 @@ +#!/bin/bash + +# Lazy-unmount gvfsd-fuse filesystems before suspend/hibernate to prevent the +# kernel's process freeze from timing out. FUSE daemons (like gvfsd-fuse from +# Nautilus) can block in uninterruptible sleep during freeze, causing suspend +# to silently fail. After wake, restart gvfs so the FUSE mount is restored. + +if [[ $1 == "pre" ]]; then + while IFS=' ' read -r _ mountpoint fstype _; do + if [[ $fstype == fuse.gvfsd-fuse ]]; then + mountpoint=$(printf '%b' "$mountpoint") + fusermount3 -uz "$mountpoint" 2>/dev/null || fusermount -uz "$mountpoint" 2>/dev/null || true + fi + done < /proc/mounts +fi + +if [[ $1 == "post" ]]; then + # Run in background — user.slice is still frozen at this point, so a + # synchronous restart would block the thaw for up to 90 seconds. + ( + sleep 5 + for uid_dir in /run/user/*; do + uid=$(basename "$uid_dir") + if [[ -S $uid_dir/bus ]]; then + sudo -u "#$uid" env \ + DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \ + XDG_RUNTIME_DIR="$uid_dir" \ + systemctl --user restart gvfs-daemon.service 2>/dev/null || true + fi + done + ) & + disown +fi diff --git a/install/config/all.sh b/install/config/all.sh index 14480206..716a1971 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -18,14 +18,15 @@ run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh run_logged $OMARCHY_INSTALL/config/localdb.sh run_logged $OMARCHY_INSTALL/config/walker-elephant.sh run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh +run_logged $OMARCHY_INSTALL/config/unmount-fuse.sh run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh run_logged $OMARCHY_INSTALL/config/input-group.sh -run_logged $OMARCHY_INSTALL/config/makima.sh run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh 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,17 +35,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/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-synaptic-touchpad.sh -run_logged $OMARCHY_INSTALL/config/hardware/framework16-qmk-hid.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-tuxedo-backlight.sh diff --git a/install/config/hardware/fix-apple-spi-keyboard.sh b/install/config/hardware/apple/fix-spi-keyboard.sh similarity index 100% rename from install/config/hardware/fix-apple-spi-keyboard.sh rename to install/config/hardware/apple/fix-spi-keyboard.sh diff --git a/install/config/hardware/fix-apple-suspend-nvme.sh b/install/config/hardware/apple/fix-suspend-nvme.sh similarity index 100% rename from install/config/hardware/fix-apple-suspend-nvme.sh rename to install/config/hardware/apple/fix-suspend-nvme.sh diff --git a/install/config/hardware/fix-apple-t2.sh b/install/config/hardware/apple/fix-t2.sh similarity index 85% rename from install/config/hardware/fix-apple-t2.sh rename to install/config/hardware/apple/fix-t2.sh index 67d1644c..815ed72f 100644 --- a/install/config/hardware/fix-apple-t2.sh +++ b/install/config/hardware/apple/fix-t2.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 </dev/null # Generated by Omarchy installer for T2 Mac support KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pcie_ports=compat" +EOF + + cat </dev/null +[Fan1] +low_temp=55 +high_temp=75 +speed_curve=linear +always_full_speed=false EOF fi diff --git a/install/config/hardware/fix-asus-rog-audio-mixer.sh b/install/config/hardware/asus/fix-audio-mixer.sh similarity index 100% rename from install/config/hardware/fix-asus-rog-audio-mixer.sh rename to install/config/hardware/asus/fix-audio-mixer.sh diff --git a/install/config/hardware/fix-asus-rog-mic.sh b/install/config/hardware/asus/fix-mic.sh similarity index 100% rename from install/config/hardware/fix-asus-rog-mic.sh rename to install/config/hardware/asus/fix-mic.sh diff --git a/install/config/hardware/dell/fix-xps-haptic-touchpad.sh b/install/config/hardware/dell/fix-xps-haptic-touchpad.sh new file mode 100644 index 00000000..427f3783 --- /dev/null +++ b/install/config/hardware/dell/fix-xps-haptic-touchpad.sh @@ -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 diff --git a/install/config/hardware/dell/fix-xps-ptl-display.sh b/install/config/hardware/dell/fix-xps-ptl-display.sh new file mode 100644 index 00000000..6bd18c2e --- /dev/null +++ b/install/config/hardware/dell/fix-xps-ptl-display.sh @@ -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 </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 diff --git a/install/config/hardware/fix-intel-panther-lake-display.sh b/install/config/hardware/fix-intel-panther-lake-display.sh deleted file mode 100644 index 00d0e249..00000000 --- a/install/config/hardware/fix-intel-panther-lake-display.sh +++ /dev/null @@ -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 </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 diff --git a/install/config/hardware/fix-tuxedo-backlight.sh b/install/config/hardware/fix-tuxedo-backlight.sh new file mode 100644 index 00000000..87440873 --- /dev/null +++ b/install/config/hardware/fix-tuxedo-backlight.sh @@ -0,0 +1,15 @@ +# Install Tuxedo drivers for keyboard backlighting on Tuxedo laptops and +# compatible devices like the Slimbook Executive (Clevo/Tuxedo chassis). +if cat /sys/class/dmi/id/sys_vendor 2>/dev/null | grep -qi "TUXEDO\|Slimbook"; then + omarchy-pkg-add linux-headers tuxedo-drivers-nocompatcheck-dkms + + # Blacklist the legacy clevo_xsm_wmi module which conflicts with the tuxedo-drivers + # clevo_wmi module. When clevo_xsm_wmi loads first, it grabs the Clevo WMI GUIDs, + # preventing tuxedo-drivers from initializing the keyboard backlight properly. + echo "blacklist clevo_xsm_wmi" | sudo tee /etc/modprobe.d/blacklist-clevo-xsm-wmi.conf > /dev/null + + # Remove any orphaned clevo_xsm_wmi module files not managed by a package + for f in /lib/modules/*/extra/clevo-xsm-wmi.ko; do + [ -f "$f" ] && sudo rm "$f" + done +fi diff --git a/install/config/hardware/fix-f13-amd-audio-input.sh b/install/config/hardware/framework/fix-f13-amd-audio-input.sh similarity index 100% rename from install/config/hardware/fix-f13-amd-audio-input.sh rename to install/config/hardware/framework/fix-f13-amd-audio-input.sh diff --git a/install/config/hardware/framework16-qmk-hid.sh b/install/config/hardware/framework/qmk-hid.sh similarity index 100% rename from install/config/hardware/framework16-qmk-hid.sh rename to install/config/hardware/framework/qmk-hid.sh diff --git a/install/config/hardware/intel/fix-wifi7-eht.sh b/install/config/hardware/intel/fix-wifi7-eht.sh new file mode 100644 index 00000000..9ca048cb --- /dev/null +++ b/install/config/hardware/intel/fix-wifi7-eht.sh @@ -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 diff --git a/install/config/hardware/intel/ipu7-camera.sh b/install/config/hardware/intel/ipu7-camera.sh new file mode 100644 index 00000000..97e5549b --- /dev/null +++ b/install/config/hardware/intel/ipu7-camera.sh @@ -0,0 +1,5 @@ +# Install MIPI camera support for Intel IPU7 hardware + +if grep -q "OVTI08F4" /sys/bus/acpi/devices/*/hid 2>/dev/null; then + omarchy-pkg-add intel-ipu7-camera +fi diff --git a/install/config/hardware/intel/lpmd.sh b/install/config/hardware/intel/lpmd.sh new file mode 100644 index 00000000..9e857534 --- /dev/null +++ b/install/config/hardware/intel/lpmd.sh @@ -0,0 +1,5 @@ +# Install Intel Low Power Mode package for Intel CPUs + +if omarchy-hw-intel; then + omarchy-pkg-add intel-lpmd +fi diff --git a/install/config/hardware/intel/ptl-kernel.sh b/install/config/hardware/intel/ptl-kernel.sh new file mode 100644 index 00000000..cfc95e36 --- /dev/null +++ b/install/config/hardware/intel/ptl-kernel.sh @@ -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 </dev/null +# Only show Panther Lake kernel in boot menu +BOOT_ORDER="linux-ptl*, *fallback, Snapshots" +EOF +fi diff --git a/install/config/hardware/intel/thermald.sh b/install/config/hardware/intel/thermald.sh new file mode 100644 index 00000000..af771bbc --- /dev/null +++ b/install/config/hardware/intel/thermald.sh @@ -0,0 +1,11 @@ +# Enable thermald for Intel laptops (Sandy Bridge and newer) +# Thermald is useful for Intel Sandy Bridge (2nd gen Core, model 42/45) and newer CPUs. + +if omarchy-hw-intel; then + # Check if Sandy Bridge or newer (model >= 42). Sandy Bridge: model 42 (mobile), 45 (desktop) + cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ') + if ((cpu_model >= 42)) && omarchy-battery-present; then + omarchy-pkg-add thermald + sudo systemctl enable thermald + fi +fi diff --git a/install/config/hardware/intel.sh b/install/config/hardware/intel/video-acceleration.sh similarity index 92% rename from install/config/hardware/intel.sh rename to install/config/hardware/intel/video-acceleration.sh index 41e421a7..b8ce4f80 100644 --- a/install/config/hardware/intel.sh +++ b/install/config/hardware/intel/video-acceleration.sh @@ -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 diff --git a/install/config/makima.sh b/install/config/makima.sh deleted file mode 100644 index bee64136..00000000 --- a/install/config/makima.sh +++ /dev/null @@ -1,14 +0,0 @@ -# Remap Copilot key (Super+Shift+F23) to Super+Alt+Space (Omarchy Menu) using makima -mkdir -p "$HOME/.config/makima" -cp "$OMARCHY_PATH/default/makima/AT Translated Set 2 keyboard.toml" "$HOME/.config/makima/" - -# Create systemd override with correct user and config path -sudo mkdir -p /etc/systemd/system/makima.service.d -sudo tee /etc/systemd/system/makima.service.d/override.conf > /dev/null </dev/null || true diff --git a/install/config/unmount-fuse.sh b/install/config/unmount-fuse.sh new file mode 100644 index 00000000..9c44e17f --- /dev/null +++ b/install/config/unmount-fuse.sh @@ -0,0 +1,2 @@ +sudo mkdir -p /usr/lib/systemd/system-sleep +sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /usr/lib/systemd/system-sleep/ diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages index 2974fbde..d8dd7f55 100644 --- a/install/omarchy-base.packages +++ b/install/omarchy-base.packages @@ -75,7 +75,6 @@ libreoffice-fresh llvm localsend luarocks -makima-bin mako man-db mariadb-libs @@ -93,7 +92,6 @@ obs-studio obsidian omarchy-nvim omarchy-walker -opencode pamixer pinta playerctl diff --git a/install/omarchy-other.packages b/install/omarchy-other.packages index 36ae6c00..b75c3685 100644 --- a/install/omarchy-other.packages +++ b/install/omarchy-other.packages @@ -19,6 +19,8 @@ iwd jdk-openjdk libpulse libsass +intel-ipu7-camera +intel-lpmd intel-media-driver libva-intel-driver libva-nvidia-driver @@ -28,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 @@ -43,9 +47,11 @@ pipewire-pulse qt6-wayland sassc snapper +thermald webp-pixbuf-loader wget yay-debug +tuxedo-drivers-nocompatcheck-dkms yt6801-dkms zram-generator diff --git a/install/packaging/all.sh b/install/packaging/all.sh index 16e6404a..4419e23a 100644 --- a/install/packaging/all.sh +++ b/install/packaging/all.sh @@ -4,6 +4,7 @@ run_logged $OMARCHY_INSTALL/packaging/nvim.sh run_logged $OMARCHY_INSTALL/packaging/icons.sh run_logged $OMARCHY_INSTALL/packaging/webapps.sh run_logged $OMARCHY_INSTALL/packaging/tuis.sh +run_logged $OMARCHY_INSTALL/packaging/npx.sh run_logged $OMARCHY_INSTALL/packaging/asus-rog.sh run_logged $OMARCHY_INSTALL/packaging/framework16.sh run_logged $OMARCHY_INSTALL/packaging/surface.sh diff --git a/install/packaging/npx.sh b/install/packaging/npx.sh new file mode 100644 index 00000000..70487dc6 --- /dev/null +++ b/install/packaging/npx.sh @@ -0,0 +1,6 @@ +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 diff --git a/migrations/1756642681.sh b/migrations/1756642681.sh index d0117d2d..a3d381de 100644 --- a/migrations/1756642681.sh +++ b/migrations/1756642681.sh @@ -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 diff --git a/migrations/1759913695.sh b/migrations/1759913695.sh index 8ce4ad13..9b7ddc1b 100644 --- a/migrations/1759913695.sh +++ b/migrations/1759913695.sh @@ -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 diff --git a/migrations/1768916735.sh b/migrations/1768916735.sh index 0c5c6408..3f788800 100644 --- a/migrations/1768916735.sh +++ b/migrations/1768916735.sh @@ -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 diff --git a/migrations/1770483021.sh b/migrations/1770483021.sh index fb8c7f9e..d4576694 100644 --- a/migrations/1770483021.sh +++ b/migrations/1770483021.sh @@ -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 diff --git a/migrations/1772734610.sh b/migrations/1772734610.sh deleted file mode 100644 index 18c40409..00000000 --- a/migrations/1772734610.sh +++ /dev/null @@ -1,4 +0,0 @@ -echo "Remap Copilot key to Omarchy Menu using makima" - -omarchy-pkg-add makima-bin -source $OMARCHY_PATH/install/config/makima.sh diff --git a/migrations/1772988614.sh b/migrations/1772988614.sh old mode 100755 new mode 100644 diff --git a/migrations/1772990935.sh b/migrations/1772990935.sh new file mode 100644 index 00000000..2f3526c2 --- /dev/null +++ b/migrations/1772990935.sh @@ -0,0 +1,7 @@ +echo "Add sample low battery notification hook" + +mkdir -p ~/.config/omarchy/hooks + +if [[ ! -f ~/.config/omarchy/hooks/battery-low.sample ]]; then + cp "$OMARCHY_PATH/config/omarchy/hooks/battery-low.sample" ~/.config/omarchy/hooks/battery-low.sample +fi diff --git a/migrations/1773012889.sh b/migrations/1773012889.sh new file mode 100644 index 00000000..d8dd1619 --- /dev/null +++ b/migrations/1773012889.sh @@ -0,0 +1,4 @@ +echo "Install system-sleep hook to unmount gvfsd-fuse before suspend/hibernate" + +sudo mkdir -p /usr/lib/systemd/system-sleep +sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /usr/lib/systemd/system-sleep/ diff --git a/migrations/1773505447.sh b/migrations/1773505447.sh new file mode 100644 index 00000000..02c75c67 --- /dev/null +++ b/migrations/1773505447.sh @@ -0,0 +1,3 @@ +echo "Enable thermald for Intel Sandy Bridge and newer laptops" + +source "$OMARCHY_PATH/install/config/hardware/intel/thermald.sh" diff --git a/migrations/1773506226.sh b/migrations/1773506226.sh new file mode 100644 index 00000000..88c84a9f --- /dev/null +++ b/migrations/1773506226.sh @@ -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 diff --git a/migrations/1773598247.sh b/migrations/1773598247.sh new file mode 100644 index 00000000..5a57a07c --- /dev/null +++ b/migrations/1773598247.sh @@ -0,0 +1,3 @@ +echo "Install npx wrappers for AI CLI tools and playwright" + +source "$OMARCHY_PATH/install/packaging/npx.sh" diff --git a/migrations/1773599943.sh b/migrations/1773599943.sh new file mode 100644 index 00000000..cd060bd6 --- /dev/null +++ b/migrations/1773599943.sh @@ -0,0 +1,8 @@ +echo "Add COPY mode indicator to tmux status bar" + +if [[ -f ~/.config/tmux/tmux.conf ]]; then + if ! grep -q "pane_in_mode" ~/.config/tmux/tmux.conf; then + sed -i 's/#{?client_prefix/#{?pane_in_mode,COPY ,}#{?client_prefix/' ~/.config/tmux/tmux.conf + omarchy-restart-tmux + fi +fi diff --git a/migrations/1774366575.sh b/migrations/1774366575.sh new file mode 100644 index 00000000..e3ea5551 --- /dev/null +++ b/migrations/1774366575.sh @@ -0,0 +1,3 @@ +echo "Install Intel Low Power Mode for Intel CPUs" + +source "$OMARCHY_PATH/install/config/hardware/intel/lpmd.sh" diff --git a/migrations/1774401148.sh b/migrations/1774401148.sh new file mode 100644 index 00000000..cda4c3eb --- /dev/null +++ b/migrations/1774401148.sh @@ -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 diff --git a/migrations/1774642699.sh b/migrations/1774642699.sh new file mode 100644 index 00000000..b8fbc834 --- /dev/null +++ b/migrations/1774642699.sh @@ -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 diff --git a/themes/catppuccin-latte/preview.png b/themes/catppuccin-latte/preview.png index 8befd6f4..d3ef70e8 100644 Binary files a/themes/catppuccin-latte/preview.png and b/themes/catppuccin-latte/preview.png differ diff --git a/themes/catppuccin/preview.png b/themes/catppuccin/preview.png index 25c40d51..cf75f139 100644 Binary files a/themes/catppuccin/preview.png and b/themes/catppuccin/preview.png differ diff --git a/themes/ethereal/preview.png b/themes/ethereal/preview.png index 0064a2ab..b9b413cd 100644 Binary files a/themes/ethereal/preview.png and b/themes/ethereal/preview.png differ diff --git a/themes/everforest/preview.png b/themes/everforest/preview.png index 3124f21e..f328fa5b 100644 Binary files a/themes/everforest/preview.png and b/themes/everforest/preview.png differ diff --git a/themes/flexoki-light/preview.png b/themes/flexoki-light/preview.png index dce1c542..3a350a25 100644 Binary files a/themes/flexoki-light/preview.png and b/themes/flexoki-light/preview.png differ diff --git a/themes/gruvbox/backgrounds/2-flower-basket.jpg b/themes/gruvbox/backgrounds/2-flower-basket.jpg new file mode 100644 index 00000000..42af8d1a Binary files /dev/null and b/themes/gruvbox/backgrounds/2-flower-basket.jpg differ diff --git a/themes/gruvbox/backgrounds/3-village-square.jpg b/themes/gruvbox/backgrounds/3-village-square.jpg new file mode 100644 index 00000000..0ff0160b Binary files /dev/null and b/themes/gruvbox/backgrounds/3-village-square.jpg differ diff --git a/themes/gruvbox/backgrounds/4-idyllic-procession.jpg b/themes/gruvbox/backgrounds/4-idyllic-procession.jpg new file mode 100644 index 00000000..3742024a Binary files /dev/null and b/themes/gruvbox/backgrounds/4-idyllic-procession.jpg differ diff --git a/themes/gruvbox/backgrounds/2-leaves.jpg b/themes/gruvbox/backgrounds/5-leaves.jpg similarity index 100% rename from themes/gruvbox/backgrounds/2-leaves.jpg rename to themes/gruvbox/backgrounds/5-leaves.jpg diff --git a/themes/gruvbox/preview.png b/themes/gruvbox/preview.png index f934bafa..1287fa25 100644 Binary files a/themes/gruvbox/preview.png and b/themes/gruvbox/preview.png differ diff --git a/themes/hackerman/preview.png b/themes/hackerman/preview.png index b574b952..2d4c0c34 100644 Binary files a/themes/hackerman/preview.png and b/themes/hackerman/preview.png differ diff --git a/themes/kanagawa/preview.png b/themes/kanagawa/preview.png index db3ab75a..67b1ac15 100644 Binary files a/themes/kanagawa/preview.png and b/themes/kanagawa/preview.png differ diff --git a/themes/lumon/backgrounds/01-united-in-severance.jpg b/themes/lumon/backgrounds/01-united-in-severance.jpg new file mode 100644 index 00000000..d07b6363 Binary files /dev/null and b/themes/lumon/backgrounds/01-united-in-severance.jpg differ diff --git a/themes/lumon/backgrounds/02-opinions-equally.jpg b/themes/lumon/backgrounds/02-opinions-equally.jpg new file mode 100644 index 00000000..4f2a0bf2 Binary files /dev/null and b/themes/lumon/backgrounds/02-opinions-equally.jpg differ diff --git a/themes/lumon/btop.theme b/themes/lumon/btop.theme new file mode 100644 index 00000000..d9d05728 --- /dev/null +++ b/themes/lumon/btop.theme @@ -0,0 +1,64 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="" +theme_background=false + +# Main text color +theme[main_fg]="#c7d2de" + +# Title color for boxes +theme[title]="#9fcfe9" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#b5deef" + +# Background color of selected item in processes box +theme[selected_bg]="#355066" + +# Foreground color of selected item in processes box +theme[selected_fg]="#c7d2de" + +# Color of inactive/disabled text +theme[inactive_fg]="#355066" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#9fcfe9" + +# Box outline and divider line color +theme[cpu_box]="#79abd2" +theme[mem_box]="#79abd2" +theme[net_box]="#79abd2" +theme[proc_box]="#79abd2" +theme[div_line]="#355066" + +# Gradient for all meters and graphs +theme[temp_start]="#b5deef" +theme[temp_mid]="#92c7e7" +theme[temp_end]="#79abd2" + +theme[cpu_start]="#b5deef" +theme[cpu_mid]="#92c7e7" +theme[cpu_end]="#79abd2" + +theme[free_start]="#92c7e7" +theme[free_mid]="#86b6da" +theme[free_end]="#86b6da" + +theme[cached_start]="#86b6da" +theme[cached_mid]="#86b6da" +theme[cached_end]="#86b6da" + +theme[available_start]="#b5deef" +theme[available_mid]="#b5deef" +theme[available_end]="#b5deef" + +theme[used_start]="#79abd2" +theme[used_mid]="#79abd2" +theme[used_end]="#79abd2" + +theme[download_start]="#86b6da" +theme[download_mid]="#b5deef" +theme[download_end]="#92c7e7" + +theme[upload_start]="#86b6da" +theme[upload_mid]="#b5deef" +theme[upload_end]="#92c7e7" diff --git a/themes/lumon/chromium.theme b/themes/lumon/chromium.theme new file mode 100644 index 00000000..fdf694be --- /dev/null +++ b/themes/lumon/chromium.theme @@ -0,0 +1 @@ +14,31,41 diff --git a/themes/lumon/colors.toml b/themes/lumon/colors.toml new file mode 100644 index 00000000..b94e758e --- /dev/null +++ b/themes/lumon/colors.toml @@ -0,0 +1,35 @@ +# Accent and UI colors +accent = "#f2fcff" +active_border_color = "#f2fcff" +active_tab_background = "#6fb8e3" + +# Cursor colors +cursor = "#f2fcff" + +# Primary colors +foreground = "#d6e2ee" +background = "#16242d" + +# Selection colors +selection_foreground = "#1b2d40" +selection_background = "#4d9ed3" + +# Normal colors (ANSI 0-7) +color0 = "#1b2d40" +color1 = "#4d86b0" +color2 = "#5e95bc" +color3 = "#6fa4c9" +color4 = "#6fb8e3" +color5 = "#8bc9eb" +color6 = "#b4e4f6" +color7 = "#d6e2ee" + +# Bright colors (ANSI 8-15) +color8 = "#304860" +color9 = "#73a6cb" +color10 = "#86b7d8" +color11 = "#9dcae5" +color12 = "#f2fcff" +color13 = "#b1d8ee" +color14 = "#d1eef8" +color15 = "#ffffff" diff --git a/themes/lumon/hyprland.conf b/themes/lumon/hyprland.conf new file mode 100644 index 00000000..40d21b4a --- /dev/null +++ b/themes/lumon/hyprland.conf @@ -0,0 +1,26 @@ +$activeBorderColor = rgb(f2fcff) +$activeShadowColor = rgb(6fb8e3) +$inactiveBorderColor = rgba(30486099) +$inactiveShadowColor = rgba(30486077) + +general { + col.active_border = $activeBorderColor + col.inactive_border = $inactiveBorderColor + gaps_in = 8 + gaps_out = 16 +} + +group { + col.border_active = $activeBorderColor + col.border_inactive = $inactiveBorderColor +} + +decoration { + shadow { + enabled = true + range = 16 + render_power = 4 + color = $activeShadowColor + color_inactive = $inactiveShadowColor + } +} diff --git a/themes/lumon/icons.theme b/themes/lumon/icons.theme new file mode 100644 index 00000000..66be38a1 --- /dev/null +++ b/themes/lumon/icons.theme @@ -0,0 +1 @@ +Yaru-blue \ No newline at end of file diff --git a/themes/lumon/neovim.lua b/themes/lumon/neovim.lua new file mode 100644 index 00000000..0c6407c8 --- /dev/null +++ b/themes/lumon/neovim.lua @@ -0,0 +1,13 @@ +return { + { + "omacom-io/lumon.nvim", + name = "lumon", + priority = 1000, + }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "lumon", + }, + }, +} diff --git a/themes/lumon/preview.png b/themes/lumon/preview.png new file mode 100644 index 00000000..9a87f6dd Binary files /dev/null and b/themes/lumon/preview.png differ diff --git a/themes/lumon/swayosd.css b/themes/lumon/swayosd.css new file mode 100644 index 00000000..53c3f054 --- /dev/null +++ b/themes/lumon/swayosd.css @@ -0,0 +1,44 @@ +@define-color background-color #1b2d40; +@define-color border-color #304860; +@define-color label #d6e2ee; +@define-color image #d6e2ee; +@define-color progress #6fb8e3; +@define-color edge-light #f2fcff; + +/* Cancel out Omarchy defaults */ +window:not(:backdrop), +window:backdrop { + border: none; + border-width: 0; + background-color: transparent; + box-shadow: none; + padding: 12px; +} + +/* Draw the Lumon OSD shell */ +window:not(:backdrop) #container, +window:backdrop #container { + border: 2px solid alpha(@border-color, 0.92); + background-color: alpha(@background-color, 0.95); + padding: 12px 16px; + background-clip: padding-box; +} + +image, +label { + color: @label; +} + +progressbar { + min-height: 8px; +} + +progressbar trough { + background: alpha(@border-color, 0.24); + box-shadow: inset 0 1px rgba(242, 252, 255, 0.03); +} + +progressbar progress { + background: linear-gradient(90deg, @progress, @edge-light); + box-shadow: 0 0 10px rgba(111, 184, 227, 0.18); +} diff --git a/themes/lumon/vscode.json b/themes/lumon/vscode.json new file mode 100644 index 00000000..045878d4 --- /dev/null +++ b/themes/lumon/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Lumon", + "extension": "oldjobobo.lumon-theme" +} diff --git a/themes/lumon/waybar.css b/themes/lumon/waybar.css new file mode 100644 index 00000000..11f49054 --- /dev/null +++ b/themes/lumon/waybar.css @@ -0,0 +1,2 @@ +@define-color foreground #d6e2ee; +@define-color background #213442; diff --git a/themes/matte-black/preview.png b/themes/matte-black/preview.png index 3aff6390..ed9c7b47 100644 Binary files a/themes/matte-black/preview.png and b/themes/matte-black/preview.png differ diff --git a/themes/miasma/neovim.lua b/themes/miasma/neovim.lua index f6a31035..a46c690e 100644 --- a/themes/miasma/neovim.lua +++ b/themes/miasma/neovim.lua @@ -1,6 +1,6 @@ return { { - "xero/miasma.nvim", + "OldJobobo/miasma.nvim", priority = 1000, }, { diff --git a/themes/miasma/preview.png b/themes/miasma/preview.png index 690c4364..e080d82a 100644 Binary files a/themes/miasma/preview.png and b/themes/miasma/preview.png differ diff --git a/themes/miasma/vscode.json b/themes/miasma/vscode.json index 9d28bdb1..f133d52d 100644 --- a/themes/miasma/vscode.json +++ b/themes/miasma/vscode.json @@ -1,4 +1,4 @@ { - "name": "In The Fog Dark", - "extension": "ganevru.in-the-fog-theme" + "name": "Miasma", + "extension": "oldjobobo.miasma-theme" } diff --git a/themes/nord/preview.png b/themes/nord/preview.png index 07a1692b..57d50351 100644 Binary files a/themes/nord/preview.png and b/themes/nord/preview.png differ diff --git a/themes/osaka-jade/preview.png b/themes/osaka-jade/preview.png index 4b446055..c1fe99f7 100644 Binary files a/themes/osaka-jade/preview.png and b/themes/osaka-jade/preview.png differ diff --git a/themes/retro-82/backgrounds/1-in-the-groove.jpg b/themes/retro-82/backgrounds/1-in-the-groove.jpg new file mode 100644 index 00000000..c9537a47 Binary files /dev/null and b/themes/retro-82/backgrounds/1-in-the-groove.jpg differ diff --git a/themes/retro-82/backgrounds/2-dusk-guardian.jpg b/themes/retro-82/backgrounds/2-dusk-guardian.jpg new file mode 100644 index 00000000..4f30b56d Binary files /dev/null and b/themes/retro-82/backgrounds/2-dusk-guardian.jpg differ diff --git a/themes/retro-82/backgrounds/3-glassy-lines.jpg b/themes/retro-82/backgrounds/3-glassy-lines.jpg new file mode 100644 index 00000000..c1106dcd Binary files /dev/null and b/themes/retro-82/backgrounds/3-glassy-lines.jpg differ diff --git a/themes/retro-82/backgrounds/4-gateway.jpg b/themes/retro-82/backgrounds/4-gateway.jpg new file mode 100644 index 00000000..067baa4c Binary files /dev/null and b/themes/retro-82/backgrounds/4-gateway.jpg differ diff --git a/themes/retro-82/backgrounds/5-zen-boat.jpg b/themes/retro-82/backgrounds/5-zen-boat.jpg new file mode 100644 index 00000000..4a4821e1 Binary files /dev/null and b/themes/retro-82/backgrounds/5-zen-boat.jpg differ diff --git a/themes/retro-82/backgrounds/6-abstract-pyramids.jpg b/themes/retro-82/backgrounds/6-abstract-pyramids.jpg new file mode 100644 index 00000000..6dd9d0a3 Binary files /dev/null and b/themes/retro-82/backgrounds/6-abstract-pyramids.jpg differ diff --git a/themes/retro-82/backgrounds/7-the-journey.jpg b/themes/retro-82/backgrounds/7-the-journey.jpg new file mode 100644 index 00000000..03fc55c7 Binary files /dev/null and b/themes/retro-82/backgrounds/7-the-journey.jpg differ diff --git a/themes/retro-82/backgrounds/8-glitter-glass.jpg b/themes/retro-82/backgrounds/8-glitter-glass.jpg new file mode 100644 index 00000000..dfa53225 Binary files /dev/null and b/themes/retro-82/backgrounds/8-glitter-glass.jpg differ diff --git a/themes/retro-82/btop.theme b/themes/retro-82/btop.theme new file mode 100644 index 00000000..ded67f15 --- /dev/null +++ b/themes/retro-82/btop.theme @@ -0,0 +1,63 @@ +# Main background, empty for terminal default, need to be empty if you want transparent background +theme[main_bg]="" + +# Main text color +theme[main_fg]="#f6dcac" + +# Title color for boxes +theme[title]="#3f8f8a" + +# Highlight color for keyboard shortcuts +theme[hi_fg]="#8cbfb8" + +# Background color of selected item in processes box +theme[selected_bg]="#134e5a" + +# Foreground color of selected item in processes box +theme[selected_fg]="#f6dcac" + +# Color of inactive/disabled text +theme[inactive_fg]="#134e5a" + +# Misc colors for processes box including mini cpu graphs, details memory graph and details status text +theme[proc_misc]="#3f8f8a" + +# Box outline and divider line color +theme[cpu_box]="#e97b3c" +theme[mem_box]="#e97b3c" +theme[net_box]="#e97b3c" +theme[proc_box]="#e97b3c" +theme[div_line]="#134e5a" + +# Gradient for all meters and graphs +theme[temp_start]="#a7c9c6" +theme[temp_mid]="#8cbfb8" +theme[temp_end]="#028391" + +theme[cpu_start]="#a7c9c6" +theme[cpu_mid]="#e97b3c" +theme[cpu_end]="#f85525" + +theme[free_start]="#faa968" +theme[free_mid]="#e97b3c" +theme[free_end]="#f85525" + +theme[cached_start]="#faa968" +theme[cached_mid]="#e97b3c" +theme[cached_end]="#f85525" + +theme[available_start]="#faa968" +theme[available_mid]="#e97b3c" +theme[available_end]="#f85525" + +theme[used_start]="#faa968" +theme[used_mid]="#e97b3c" +theme[used_end]="#f85525" + +theme[download_start]="#faa968" +theme[download_mid]="#e97b3c" +theme[download_end]="#f85525" + +theme[upload_start]="#faa968" +theme[upload_mid]="#e97b3c" +theme[upload_end]="#f85525" diff --git a/themes/retro-82/chromium.theme b/themes/retro-82/chromium.theme new file mode 100644 index 00000000..efb75ae7 --- /dev/null +++ b/themes/retro-82/chromium.theme @@ -0,0 +1 @@ +0,23,46 diff --git a/themes/retro-82/colors.toml b/themes/retro-82/colors.toml new file mode 100644 index 00000000..21cf8103 --- /dev/null +++ b/themes/retro-82/colors.toml @@ -0,0 +1,35 @@ +# Accent and UI colors +accent = "#faa968" +active_border_color = "#faa968" +active_tab_background = "#faa968" + +# Cursor colors +cursor = "#f6dcac" + +# Primary colors +foreground = "#f6dcac" +background = "#05182e" + +# Selection colors +selection_foreground = "#00172e" +selection_background = "#faa968" + +# Normal colors (ANSI 0-7) +color0 = "#00172e" +color1 = "#f85525" +color2 = "#028391" +color3 = "#e97b3c" +color4 = "#faa968" +color5 = "#3f8f8a" +color6 = "#8cbfb8" +color7 = "#a7c9c6" + +# Bright colors (ANSI 8-15) +color8 = "#134e5a" +color9 = "#f85525" +color10 = "#028391" +color11 = "#e97b3c" +color12 = "#faa968" +color13 = "#3f8f8a" +color14 = "#8cbfb8" +color15 = "#f6dcac" diff --git a/themes/retro-82/hyprland.conf b/themes/retro-82/hyprland.conf new file mode 100644 index 00000000..4d4c6ad5 --- /dev/null +++ b/themes/retro-82/hyprland.conf @@ -0,0 +1,9 @@ +$activeBorderColor = rgb(faa968) + +general { + col.active_border = $activeBorderColor +} + +group { + col.border_active = $activeBorderColor +} diff --git a/themes/retro-82/icons.theme b/themes/retro-82/icons.theme new file mode 100644 index 00000000..3a73239f --- /dev/null +++ b/themes/retro-82/icons.theme @@ -0,0 +1 @@ +Yaru-wartybrown diff --git a/themes/retro-82/neovim.lua b/themes/retro-82/neovim.lua new file mode 100644 index 00000000..871a218b --- /dev/null +++ b/themes/retro-82/neovim.lua @@ -0,0 +1,13 @@ +return { + { + "OldJobobo/retro-82.nvim", + name = "retro-82", + priority = 1000, + }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "retro-82", + }, + }, +} diff --git a/themes/retro-82/preview.png b/themes/retro-82/preview.png new file mode 100644 index 00000000..328ae9f0 Binary files /dev/null and b/themes/retro-82/preview.png differ diff --git a/themes/retro-82/swayosd.css b/themes/retro-82/swayosd.css new file mode 100644 index 00000000..b3e23641 --- /dev/null +++ b/themes/retro-82/swayosd.css @@ -0,0 +1,5 @@ +@define-color background-color #00172e; +@define-color border-color #134e5a; +@define-color label #f6dcac; +@define-color image #f6dcac; +@define-color progress #e97b3c; diff --git a/themes/retro-82/vscode.json b/themes/retro-82/vscode.json new file mode 100644 index 00000000..e2b3bbd0 --- /dev/null +++ b/themes/retro-82/vscode.json @@ -0,0 +1,4 @@ +{ + "name": "Retro '82", + "extension": "oldjobobo.retro-82-theme" +} diff --git a/themes/retro-82/waybar.css b/themes/retro-82/waybar.css new file mode 100644 index 00000000..f5944b10 --- /dev/null +++ b/themes/retro-82/waybar.css @@ -0,0 +1,3 @@ +@define-color bg #00172e; +@define-color foreground #f6dcac; +@define-color background alpha(@bg, 0.8); diff --git a/themes/ristretto/preview.png b/themes/ristretto/preview.png index e138d51e..978b80fb 100644 Binary files a/themes/ristretto/preview.png and b/themes/ristretto/preview.png differ diff --git a/themes/rose-pine/preview.png b/themes/rose-pine/preview.png index 70392181..e5fa45a8 100644 Binary files a/themes/rose-pine/preview.png and b/themes/rose-pine/preview.png differ diff --git a/themes/tokyo-night/preview.png b/themes/tokyo-night/preview.png index 8dab01d4..8f5f7e3b 100644 Binary files a/themes/tokyo-night/preview.png and b/themes/tokyo-night/preview.png differ diff --git a/themes/vantablack/preview.png b/themes/vantablack/preview.png index e25805d0..e6a3a72e 100644 Binary files a/themes/vantablack/preview.png and b/themes/vantablack/preview.png differ diff --git a/themes/white/icons.theme b/themes/white/icons.theme index 6ce2f147..3d157d9c 100644 --- a/themes/white/icons.theme +++ b/themes/white/icons.theme @@ -1 +1 @@ -Yaru-blue +Yaru-grey diff --git a/themes/white/preview.png b/themes/white/preview.png index 3d7dd81c..597b3c41 100644 Binary files a/themes/white/preview.png and b/themes/white/preview.png differ diff --git a/version b/version index 4d9d11cf..1545d966 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.4.2 +3.5.0