Compare commits
No files matched your search
Executable
+9
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Returns true if AC power is connected.
|
||||||
|
|
||||||
|
for ac in /sys/class/power_supply/AC* /sys/class/power_supply/ADP*; do
|
||||||
|
[[ -r $ac/online && $(cat "$ac/online") == "1" ]] && exit 0
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 1
|
||||||
@@ -9,6 +9,7 @@ BATTERY_STATE=$(upower -i $(upower -e | grep 'BAT') | grep -E "state" | awk '{pr
|
|||||||
|
|
||||||
send_notification() {
|
send_notification() {
|
||||||
notify-send -u critical " Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000
|
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
|
if [[ -n $BATTERY_LEVEL && $BATTERY_LEVEL =~ ^[0-9]+$ ]]; then
|
||||||
|
|||||||
@@ -5,12 +5,18 @@
|
|||||||
battery_info=$(upower -i $(upower -e | grep BAT))
|
battery_info=$(upower -i $(upower -e | grep BAT))
|
||||||
|
|
||||||
echo "$battery_info" | awk '/time to (empty|full)/ {
|
echo "$battery_info" | awk '/time to (empty|full)/ {
|
||||||
hours = int($4)
|
value = $4
|
||||||
minutes = int(($4 - hours) * 60)
|
unit = $5
|
||||||
if (minutes > 0) {
|
if (unit ~ /^minute/) {
|
||||||
printf "%dh %dm", hours, minutes
|
printf "%dm", int(value)
|
||||||
} else {
|
} 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
|
exit
|
||||||
}'
|
}'
|
||||||
@@ -23,14 +23,19 @@ fi
|
|||||||
max_brightness="$(brightnessctl -d "$device" max)"
|
max_brightness="$(brightnessctl -d "$device" max)"
|
||||||
current_brightness="$(brightnessctl -d "$device" get)"
|
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
|
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
|
elif [[ $direction == "up" ]]; then
|
||||||
new_brightness=$((current_brightness + 1))
|
new_brightness=$(( current_brightness + step ))
|
||||||
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
||||||
else
|
else
|
||||||
new_brightness=$((current_brightness - 1))
|
new_brightness=$(( current_brightness - step ))
|
||||||
(( new_brightness < 0 )) && new_brightness=0
|
(( new_brightness < 0 )) && new_brightness=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
|
# Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
|
||||||
|
|
||||||
focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
|
focused_monitor=$(omarchy-hyprland-monitor-focused)
|
||||||
|
|
||||||
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
|
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
|
||||||
sinks_count=$(echo "$sinks" | jq '. | length')
|
sinks_count=$(echo "$sinks" | jq '. | length')
|
||||||
|
|||||||
Executable
+9
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Toggle microphone mute. Dell XPS systems get special handling for the hardware LED.
|
||||||
|
|
||||||
|
if omarchy-hw-match "XPS"; then
|
||||||
|
omarchy-cmd-mic-mute-xps
|
||||||
|
else
|
||||||
|
swayosd-client --monitor "$(omarchy-hyprland-monitor-focused)" --input-volume mute-toggle
|
||||||
|
fi
|
||||||
Executable
+44
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Toggle microphone mute on Dell XPS systems. Uses wpctl for reliable toggling
|
||||||
|
# and syncs the ALSA capture switch so the hardware mic mute LED follows state.
|
||||||
|
|
||||||
|
wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle >/dev/null
|
||||||
|
|
||||||
|
if pactl get-source-mute @DEFAULT_SOURCE@ | rg -q 'yes'; then
|
||||||
|
alsa_value='off,off'
|
||||||
|
osd_message='Microphone muted'
|
||||||
|
osd_icon='microphone-sensitivity-muted-symbolic'
|
||||||
|
else
|
||||||
|
alsa_value='on,on'
|
||||||
|
osd_message='Microphone on'
|
||||||
|
osd_icon='audio-input-microphone-symbolic'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e /sys/class/leds/platform::micmute/brightness ]]; then
|
||||||
|
default_source=$(pactl get-default-source)
|
||||||
|
alsa_card=$(pactl -f json list sources | jq -r --arg source "$default_source" '
|
||||||
|
.[] | select(.name == $source) |
|
||||||
|
.properties["alsa.card"] // .properties["api.alsa.card"] // .properties["api.alsa.pcm.card"] // empty
|
||||||
|
' | head -1)
|
||||||
|
|
||||||
|
if [[ -n $alsa_card ]]; then
|
||||||
|
cards=("$alsa_card")
|
||||||
|
else
|
||||||
|
mapfile -t cards < <(compgen -G '/proc/asound/card*' | rg -o 'card[0-9]+' | sed 's/card//' | sort -u)
|
||||||
|
fi
|
||||||
|
|
||||||
|
for card in "${cards[@]}"; do
|
||||||
|
while IFS= read -r control; do
|
||||||
|
if [[ $control != *"Jack Microphone"* ]]; then
|
||||||
|
amixer -c "$card" cset "$control" "$alsa_value" >/dev/null 2>&1 || true
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done < <(amixer -c "$card" controls 2>/dev/null | rg -o "name='[^']*Microphone Capture Switch'")
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
swayosd-client \
|
||||||
|
--monitor "$(omarchy-hyprland-monitor-focused)" \
|
||||||
|
--custom-message "$osd_message" \
|
||||||
|
--custom-icon "$osd_icon"
|
||||||
@@ -63,7 +63,7 @@ start_webcam_overlay() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
ffplay -f v4l2 $video_size_arg -framerate 30 "$WEBCAM_DEVICE" \
|
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" \
|
-window_title "WebcamOverlay" \
|
||||||
-noborder \
|
-noborder \
|
||||||
-fflags nobuffer -flags low_delay \
|
-fflags nobuffer -flags low_delay \
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
|
OUTPUT_DIR="${OMARCHY_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"
|
||||||
|
|
||||||
if [[ ! -d $OUTPUT_DIR ]]; then
|
if [[ ! -d $OUTPUT_DIR ]]; then
|
||||||
notify-send "Screenshot directory does not exist: $OUTPUT_DIR" -u critical -t 3000
|
mkdir -p "$OUTPUT_DIR"
|
||||||
exit 1
|
notify-send "Created screenshot directory: $OUTPUT_DIR" -u normal -t 2000
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pkill slurp && exit 0
|
pkill slurp && exit 0
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ if [[ -n $font_name ]]; then
|
|||||||
omarchy-restart-swayosd
|
omarchy-restart-swayosd
|
||||||
|
|
||||||
if pgrep -x ghostty; then
|
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
|
fi
|
||||||
|
|
||||||
omarchy-hook font-set "$font_name"
|
omarchy-hook font-set "$font_name"
|
||||||
|
|||||||
Executable
+94
@@ -0,0 +1,94 @@
|
|||||||
|
#!/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"
|
||||||
|
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:
|
||||||
|
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 "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()
|
||||||
@@ -14,9 +14,22 @@ if ! command -v limine-mkinitcpio &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
|
MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf"
|
||||||
|
SWAP_FILE="/swap/swapfile"
|
||||||
|
RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf"
|
||||||
|
|
||||||
# Check if hibernation is already configured
|
# Check if hibernation is already configured
|
||||||
if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
|
if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then
|
||||||
|
# Fix empty resume_offset if btrfs map-swapfile failed during initial setup
|
||||||
|
if [[ -f $RESUME_DROP_IN ]] && grep -q 'resume_offset="$' "$RESUME_DROP_IN" && [[ -f $SWAP_FILE ]]; then
|
||||||
|
RESUME_OFFSET=$(sudo btrfs inspect-internal map-swapfile -r "$SWAP_FILE" 2>/dev/null)
|
||||||
|
if [[ -n $RESUME_OFFSET ]]; then
|
||||||
|
echo "Fixing empty resume_offset ($RESUME_OFFSET)"
|
||||||
|
sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" "$RESUME_DROP_IN"
|
||||||
|
sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" /etc/default/limine
|
||||||
|
sudo limine-mkinitcpio
|
||||||
|
sudo limine-update
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo "Hibernation is already set up"
|
echo "Hibernation is already set up"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@@ -29,7 +42,6 @@ if [[ $1 != "--force" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
SWAP_SUBVOLUME="/swap"
|
SWAP_SUBVOLUME="/swap"
|
||||||
SWAP_FILE="$SWAP_SUBVOLUME/swapfile"
|
|
||||||
|
|
||||||
# Create btrfs subvolume for swap
|
# Create btrfs subvolume for swap
|
||||||
if ! sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
|
if ! sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then
|
||||||
@@ -68,14 +80,18 @@ sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/
|
|||||||
|
|
||||||
# Add resume= kernel parameters so the initramfs resume hook knows where to find the
|
# Add resume= kernel parameters so the initramfs resume hook knows where to find the
|
||||||
# hibernation image. Without these, resume happens late (after GPU drivers load) and fails.
|
# hibernation image. Without these, resume happens late (after GPU drivers load) and fails.
|
||||||
RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf"
|
|
||||||
if [[ ! -f $RESUME_DROP_IN ]]; then
|
if [[ ! -f $RESUME_DROP_IN ]]; then
|
||||||
echo "Adding resume kernel parameters"
|
echo "Adding resume kernel parameters"
|
||||||
sudo swapon -p 0 "$SWAP_FILE" 2>/dev/null
|
sudo swapon -p 0 "$SWAP_FILE" 2>/dev/null
|
||||||
RESUME_DEVICE=$(findmnt -no SOURCE -T "$SWAP_FILE" | sed 's/\[.*\]//')
|
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
|
if [[ -n $RESUME_OFFSET ]]; then
|
||||||
echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null
|
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
|
||||||
|
else
|
||||||
|
echo "Warning: Could not determine resume offset for $SWAP_FILE" >&2
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate)
|
# Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate)
|
||||||
@@ -85,6 +101,7 @@ if grep -q "\[s2idle\]" /sys/power/mem_sleep 2>/dev/null; then
|
|||||||
echo "Enabling ACPI RTC alarm for s2idle suspend"
|
echo "Enabling ACPI RTC alarm for s2idle suspend"
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
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
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Executable
+7
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Match Dell XPS systems with LG OLED panel on Intel Panther Lake (Xe3) GPU.
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -3,4 +3,4 @@
|
|||||||
# Detect whether the computer is a Framework Laptop 16.
|
# Detect whether the computer is a Framework Laptop 16.
|
||||||
|
|
||||||
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Framework" ]] &&
|
[[ $(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"
|
||||||
Executable
+5
@@ -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" ]]
|
||||||
Executable
+5
@@ -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'
|
||||||
Executable
+6
@@ -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
|
||||||
@@ -3,4 +3,4 @@
|
|||||||
# Detect whether the computer is a Microsoft Surface device.
|
# Detect whether the computer is a Microsoft Surface device.
|
||||||
|
|
||||||
[[ $(cat /sys/class/dmi/id/sys_vendor 2>/dev/null) == "Microsoft Corporation" ]] &&
|
[[ $(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"
|
||||||
Executable
+6
@@ -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 .
|
||||||
@@ -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
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Print the name of the currently focused Hyprland monitor.
|
||||||
|
|
||||||
|
hyprctl monitors -j | jq -r '.[] | select(.focused == true).name'
|
||||||
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Toggle the internal laptop display on/off.
|
||||||
|
# Useful when connected to an external monitor and you want to close the lid
|
||||||
|
# or just use the external display only.
|
||||||
|
|
||||||
|
INTERNAL=$(hyprctl monitors all -j | jq -r '.[] | select(.name | startswith("eDP")) | .name')
|
||||||
|
|
||||||
|
if [[ -z $INTERNAL ]]; then
|
||||||
|
notify-send -u low " No internal display found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DISABLED=$(hyprctl monitors all -j | jq -r --arg m "$INTERNAL" '.[] | select(.name == $m) | .disabled')
|
||||||
|
|
||||||
|
if [[ $DISABLED == "true" ]]; then
|
||||||
|
hyprctl keyword monitor "$INTERNAL,preferred,auto,auto"
|
||||||
|
hyprctl dispatch movecursor 0 0
|
||||||
|
notify-send -u low " Internal display on"
|
||||||
|
else
|
||||||
|
ACTIVE_COUNT=$(hyprctl monitors -j | jq 'length')
|
||||||
|
if [[ $ACTIVE_COUNT -le 1 ]]; then
|
||||||
|
notify-send -u low " Can't disable the only active display"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
hyprctl keyword monitor "$INTERNAL,disable"
|
||||||
|
notify-send -u low " Internal display off"
|
||||||
|
fi
|
||||||
@@ -18,7 +18,5 @@ case "$CURRENT_INT" in
|
|||||||
*) NEW_SCALE=1 ;;
|
*) NEW_SCALE=1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
hyprctl keyword misc:disable_scale_notification true
|
|
||||||
hyprctl keyword monitor "$ACTIVE_MONITOR,${WIDTH}x${HEIGHT}@${REFRESH_RATE},auto,$NEW_SCALE"
|
hyprctl keyword monitor "$ACTIVE_MONITOR,${WIDTH}x${HEIGHT}@${REFRESH_RATE},auto,$NEW_SCALE"
|
||||||
hyprctl keyword misc:disable_scale_notification false
|
notify-send -u low " Display scaling set to ${NEW_SCALE}x"
|
||||||
notify-send " 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]"
|
# Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]"
|
||||||
if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then
|
if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then
|
||||||
hyprctl keyword layout:single_window_aspect_ratio "0 0"
|
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
|
else
|
||||||
hyprctl keyword layout:single_window_aspect_ratio "1 1"
|
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
|
fi
|
||||||
@@ -11,4 +11,4 @@ case "$CURRENT_LAYOUT" in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
hyprctl keyword workspace $ACTIVE_WORKSPACE, layout:$NEW_LAYOUT
|
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"
|
||||||
@@ -50,9 +50,9 @@ case "$1" in
|
|||||||
ruby)
|
ruby)
|
||||||
echo -e "Installing Ruby on Rails...\n"
|
echo -e "Installing Ruby on Rails...\n"
|
||||||
omarchy-pkg-add libyaml
|
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 ruby.compile false
|
||||||
|
mise settings add idiomatic_version_file_enable_tools ruby
|
||||||
|
mise use --global ruby@latest
|
||||||
echo "gem: --no-document" >~/.gemrc
|
echo "gem: --no-document" >~/.gemrc
|
||||||
mise x ruby -- gem install rails --no-document
|
mise x ruby -- gem install rails --no-document
|
||||||
echo -e "\nYou can now run: rails new myproject"
|
echo -e "\nYou can now run: rails new myproject"
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ sudo usermod -aG nordvpn "$USER"
|
|||||||
echo -e "\nNordVPN installed! After reboot, run 'nordvpn login' to authenticate."
|
echo -e "\nNordVPN installed! After reboot, run 'nordvpn login' to authenticate."
|
||||||
|
|
||||||
echo
|
echo
|
||||||
gum confirm "Reboot now to make NordVPN usable?" && sudo reboot now
|
gum confirm "Reboot now to make NordVPN usable?" && omarchy-system-reboot
|
||||||
Executable
+12
@@ -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
|
||||||
@@ -18,7 +18,7 @@ fi
|
|||||||
# Silently quit Walker on overlay
|
# Silently quit Walker on overlay
|
||||||
walker -q
|
walker -q
|
||||||
|
|
||||||
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
|
focused=$(omarchy-hyprland-monitor-focused)
|
||||||
terminal=$(xdg-terminal-exec --print-id)
|
terminal=$(xdg-terminal-exec --print-id)
|
||||||
|
|
||||||
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
||||||
@@ -46,7 +46,7 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
-e omarchy-cmd-screensaver
|
-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
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ fi
|
|||||||
|
|
||||||
# Ensure walker service is running
|
# Ensure walker service is running
|
||||||
if ! pgrep -f "walker --gapplication-service" > /dev/null; then
|
if ! pgrep -f "walker --gapplication-service" > /dev/null; then
|
||||||
setsid uwsm-app -- walker --gapplication-service &
|
setsid uwsm-app -- env GSK_RENDERER=cairo walker --gapplication-service &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec walker --width 644 --maxheight 300 --minheight 300 "$@"
|
exec walker --width 644 --maxheight 300 --minheight 300 "$@"
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
browser=$(xdg-settings get default-web-browser)
|
browser=$(xdg-settings get default-web-browser)
|
||||||
|
|
||||||
case $browser in
|
case $browser in
|
||||||
google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
|
google-chrome* | brave* | microsoft-edge* | opera* | vivaldi* | helium*) ;;
|
||||||
*) browser="chromium.desktop" ;;
|
*) browser="chromium.desktop" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|||||||
+10
-12
@@ -20,8 +20,8 @@ back_to() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
toggle_existing_menu() {
|
toggle_existing_menu() {
|
||||||
if pgrep -f "walker.*--dmenu" > /dev/null; then
|
if pgrep -f "walker.*--dmenu" >/dev/null; then
|
||||||
walker --close > /dev/null 2>&1
|
walker --close >/dev/null 2>&1
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ present_terminal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open_in_editor() {
|
open_in_editor() {
|
||||||
notify-send "Editing config file" "$1"
|
notify-send -u low "Editing config file" "$1"
|
||||||
omarchy-launch-editor "$1"
|
omarchy-launch-editor "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ show_share_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_toggle_menu() {
|
show_toggle_menu() {
|
||||||
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Display Scaling") in
|
case $(menu "Toggle" " Screensaver\n Nightlight\n Idle Lock\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Monitor Scaling\n Laptop Display") in
|
||||||
|
|
||||||
*Screensaver*) omarchy-toggle-screensaver ;;
|
*Screensaver*) omarchy-toggle-screensaver ;;
|
||||||
*Nightlight*) omarchy-toggle-nightlight ;;
|
*Nightlight*) omarchy-toggle-nightlight ;;
|
||||||
@@ -178,6 +178,7 @@ show_toggle_menu() {
|
|||||||
*Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;;
|
*Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;;
|
||||||
*Gaps*) omarchy-hyprland-window-gaps-toggle ;;
|
*Gaps*) omarchy-hyprland-window-gaps-toggle ;;
|
||||||
*Scaling*) omarchy-hyprland-monitor-scaling-cycle ;;
|
*Scaling*) omarchy-hyprland-monitor-scaling-cycle ;;
|
||||||
|
*Laptop*) omarchy-hyprland-monitor-internal-toggle ;;
|
||||||
*) back_to show_trigger_menu ;;
|
*) back_to show_trigger_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -315,10 +316,11 @@ show_install_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_service_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 ;;
|
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
||||||
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
*Tailscale*) present_terminal omarchy-install-tailscale ;;
|
||||||
*NordVPN*) present_terminal omarchy-install-nordvpn ;;
|
*NordVPN*) present_terminal omarchy-install-nordvpn ;;
|
||||||
|
*ONCE*) present_terminal omarchy-install-once ;;
|
||||||
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
*Bitwarden*) install_and_launch "Bitwarden" "bitwarden bitwarden-cli" "bitwarden" ;;
|
||||||
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
|
*Chromium*) present_terminal omarchy-install-chromium-google-account ;;
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
@@ -353,13 +355,8 @@ show_install_ai_menu() {
|
|||||||
echo ollama
|
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 ;;
|
*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" ;;
|
*Studio*) install "LM Studio" "lmstudio-bin" ;;
|
||||||
*Ollama*) install "Ollama" $ollama_pkg ;;
|
*Ollama*) install "Ollama" $ollama_pkg ;;
|
||||||
*Crush*) install "Crush" "crush-bin" ;;
|
*Crush*) install "Crush" "crush-bin" ;;
|
||||||
@@ -558,10 +555,11 @@ show_update_config_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_update_hardware_menu() {
|
show_update_hardware_menu() {
|
||||||
case $(menu "Restart" " Audio\n Wi-Fi\n Bluetooth") in
|
case $(menu "Restart" " Audio\n Wi-Fi\n Bluetooth\n Trackpad") in
|
||||||
*Audio*) present_terminal omarchy-restart-pipewire ;;
|
*Audio*) present_terminal omarchy-restart-pipewire ;;
|
||||||
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
*Wi-Fi*) present_terminal omarchy-restart-wifi ;;
|
||||||
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
*Bluetooth*) present_terminal omarchy-restart-bluetooth ;;
|
||||||
|
*Trackpad*) present_terminal omarchy-restart-trackpad ;;
|
||||||
*) show_update_menu ;;
|
*) show_update_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,8 +46,12 @@ parse_keycodes() {
|
|||||||
while IFS= read -r line; do
|
while IFS= read -r line; do
|
||||||
if [[ $line =~ code:([0-9]+) ]]; then
|
if [[ $line =~ code:([0-9]+) ]]; then
|
||||||
code="${BASH_REMATCH[1]}"
|
code="${BASH_REMATCH[1]}"
|
||||||
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
|
if [[ $code == "201" ]]; then
|
||||||
echo "${line/code:${code}/$symbol}"
|
echo "${line/SUPER SHIFT,code:201/,COPILOT KEY}"
|
||||||
|
else
|
||||||
|
symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE")
|
||||||
|
echo "${line/code:${code}/$symbol}"
|
||||||
|
fi
|
||||||
elif [[ $line =~ mouse:([0-9]+) ]]; then
|
elif [[ $line =~ mouse:([0-9]+) ]]; then
|
||||||
code="${BASH_REMATCH[1]}"
|
code="${BASH_REMATCH[1]}"
|
||||||
|
|
||||||
|
|||||||
Executable
+24
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Install an npx wrapper for a given npm package.
|
||||||
|
# Usage: omarchy-npx-install <package> [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 <package> [command-name]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
package=$1
|
||||||
|
command=${2:-$1}
|
||||||
|
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
|
||||||
|
cat > "$HOME/.local/bin/$command" <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
exec mise exec node@latest -- npx --yes $package "\$@"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$HOME/.local/bin/$command"
|
||||||
@@ -20,7 +20,8 @@ pkg_names=$(yay -Slqa | fzf "${fzf_args[@]}")
|
|||||||
|
|
||||||
if [[ -n $pkg_names ]]; then
|
if [[ -n $pkg_names ]]; then
|
||||||
# Add aur/ prefix to each package name and convert to space-separated for yay
|
# Add aur/ prefix to each package name and convert to space-separated for yay
|
||||||
sudo -v
|
source omarchy-sudo-keepalive
|
||||||
|
|
||||||
echo "$pkg_names" | sed 's/^/aur\//' | tr '\n' ' ' | xargs yay -S --noconfirm
|
echo "$pkg_names" | sed 's/^/aur\//' | tr '\n' ' ' | xargs yay -S --noconfirm
|
||||||
sudo updatedb
|
sudo updatedb
|
||||||
omarchy-show-done
|
omarchy-show-done
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ fzf_args=(
|
|||||||
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
|
pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}")
|
||||||
|
|
||||||
if [[ -n $pkg_names ]]; then
|
if [[ -n $pkg_names ]]; then
|
||||||
# Convert newline-separated selections to space-separated for yay
|
source omarchy-sudo-keepalive
|
||||||
|
|
||||||
|
# Convert newline-separated selections to space-separated for pacman
|
||||||
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
|
echo "$pkg_names" | tr '\n' ' ' | xargs sudo pacman -S --noconfirm
|
||||||
omarchy-show-done
|
omarchy-show-done
|
||||||
fi
|
fi
|
||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set the correct power profile on boot based on current AC/battery state.
|
||||||
|
# The udev rules only fire on state *changes*, so without this, booting
|
||||||
|
# on AC leaves you in the default balanced mode.
|
||||||
|
|
||||||
|
if omarchy-battery-present && ! omarchy-ac-present; then
|
||||||
|
omarchy-powerprofiles-set battery
|
||||||
|
else
|
||||||
|
omarchy-powerprofiles-set ac
|
||||||
|
fi
|
||||||
Executable
+22
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set the power profile to the requested level, falling back to balanced
|
||||||
|
# if the requested profile isn't available on this machine.
|
||||||
|
#
|
||||||
|
# Usage: omarchy-powerprofiles-set <ac|battery>
|
||||||
|
|
||||||
|
mapfile -t profiles < <(powerprofilesctl list | awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }')
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
ac)
|
||||||
|
# Prefer performance, fall back to balanced
|
||||||
|
if [[ " ${profiles[*]} " == *" performance "* ]]; then
|
||||||
|
powerprofilesctl set performance
|
||||||
|
else
|
||||||
|
powerprofilesctl set balanced
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
battery)
|
||||||
|
powerprofilesctl set balanced
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -3,6 +3,6 @@ set -e
|
|||||||
|
|
||||||
# Reinstall the Omarchy configuration directory from the git source.
|
# Reinstall the Omarchy configuration directory from the git source.
|
||||||
|
|
||||||
git clone "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/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 $OMARCHY_PATH ~/.local/share/omarchy-old
|
||||||
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
||||||
@@ -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
|
cp "$OMARCHY_PATH/default/hypr/plain-bindings.conf" ~/.config/hypr/bindings.conf
|
||||||
hyprctl reload
|
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 \
|
omarchy-pkg-drop \
|
||||||
aether \
|
aether \
|
||||||
typora \
|
typora \
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Restart makima - key remapping service for remapping Copilot key to Omarchy Menu
|
|
||||||
|
|
||||||
sudo systemctl restart makima
|
|
||||||
Executable
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Reset the trackpad by unbinding and rebinding its driver.
|
||||||
|
# Covers both driver paths:
|
||||||
|
# - i2c_hid_acpi (DesignWare I2C, e.g. XPS 14/16 Synaptics trackpad)
|
||||||
|
# - intel_quicki2c (THC Touch Host Controller)
|
||||||
|
|
||||||
|
# Try i2c_hid_acpi path (DesignWare I2C trackpads)
|
||||||
|
for dev in /sys/bus/i2c/drivers/i2c_hid_acpi/i2c-*; do
|
||||||
|
[ -e "$dev" ] || continue
|
||||||
|
I2C_DEVICE=$(basename "$dev")
|
||||||
|
echo "Resetting $I2C_DEVICE via i2c_hid_acpi unbind/rebind..."
|
||||||
|
echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/unbind > /dev/null
|
||||||
|
sleep 1
|
||||||
|
echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind > /dev/null
|
||||||
|
echo "Done"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Also try THC path
|
||||||
|
if lsmod | grep -q intel_quicki2c; then
|
||||||
|
echo "Reloading intel_quicki2c..."
|
||||||
|
sudo modprobe -r intel_quicki2c && sudo modprobe intel_quicki2c
|
||||||
|
fi
|
||||||
Executable
+10
@@ -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
|
||||||
Executable
+43
@@ -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
|
||||||
File renamed without changes.
@@ -9,7 +9,7 @@ progress="$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')"
|
|||||||
[[ $progress == "0.00" ]] && progress="0.01"
|
[[ $progress == "0.00" ]] && progress="0.01"
|
||||||
|
|
||||||
swayosd-client \
|
swayosd-client \
|
||||||
--monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \
|
--monitor "$(omarchy-hyprland-monitor-focused)" \
|
||||||
--custom-icon display-brightness \
|
--custom-icon display-brightness \
|
||||||
--custom-progress "$progress" \
|
--custom-progress "$progress" \
|
||||||
--custom-progress-text "${percent}%"
|
--custom-progress-text "${percent}%"
|
||||||
@@ -9,7 +9,7 @@ progress="$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')"
|
|||||||
[[ $progress == "0.00" ]] && progress="0.01"
|
[[ $progress == "0.00" ]] && progress="0.01"
|
||||||
|
|
||||||
swayosd-client \
|
swayosd-client \
|
||||||
--monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \
|
--monitor "$(omarchy-hyprland-monitor-focused)" \
|
||||||
--custom-icon keyboard-brightness \
|
--custom-icon keyboard-brightness \
|
||||||
--custom-progress "$progress" \
|
--custom-progress "$progress" \
|
||||||
--custom-progress-text "${percent}%"
|
--custom-progress-text "${percent}%"
|
||||||
@@ -13,12 +13,12 @@ if omarchy-cmd-present chromium || omarchy-cmd-present brave; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if omarchy-cmd-present chromium; then
|
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
|
chromium --refresh-platform-policy --no-startup-window &>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if omarchy-cmd-present brave; then
|
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
|
brave --refresh-platform-policy --no-startup-window &>/dev/null
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -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" "$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 "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"
|
set_theme "cursor" "$HOME/.config/Cursor/User/settings.json" "$HOME/.local/state/omarchy/toggles/skip-cursor-theme-changes"
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
if pgrep -x hypridle >/dev/null; then
|
if pgrep -x hypridle >/dev/null; then
|
||||||
pkill -x hypridle
|
pkill -x hypridle
|
||||||
notify-send " Stop locking computer when idle"
|
notify-send -u low " Stop locking computer when idle"
|
||||||
else
|
else
|
||||||
uwsm-app -- hypridle >/dev/null 2>&1 &
|
uwsm-app -- hypridle >/dev/null 2>&1 &
|
||||||
notify-send " Now locking computer when idle"
|
notify-send -u low " Now locking computer when idle"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pkill -RTMIN+9 waybar
|
pkill -RTMIN+9 waybar
|
||||||
@@ -21,10 +21,10 @@ restart_nightlighted_waybar() {
|
|||||||
|
|
||||||
if [[ $CURRENT_TEMP == $OFF_TEMP ]]; then
|
if [[ $CURRENT_TEMP == $OFF_TEMP ]]; then
|
||||||
hyprctl hyprsunset temperature $ON_TEMP
|
hyprctl hyprsunset temperature $ON_TEMP
|
||||||
notify-send " Nightlight screen temperature"
|
notify-send -u low " Nightlight screen temperature"
|
||||||
restart_nightlighted_waybar
|
restart_nightlighted_waybar
|
||||||
else
|
else
|
||||||
hyprctl hyprsunset temperature $OFF_TEMP
|
hyprctl hyprsunset temperature $OFF_TEMP
|
||||||
notify-send " Daylight screen temperature"
|
notify-send -u low " Daylight screen temperature"
|
||||||
restart_nightlighted_waybar
|
restart_nightlighted_waybar
|
||||||
fi
|
fi
|
||||||
@@ -3,9 +3,9 @@
|
|||||||
makoctl mode -t do-not-disturb
|
makoctl mode -t do-not-disturb
|
||||||
|
|
||||||
if makoctl mode | grep -q 'do-not-disturb'; then
|
if makoctl mode | grep -q 'do-not-disturb'; then
|
||||||
notify-send " Silenced notifications"
|
notify-send -u low " Silenced notifications"
|
||||||
else
|
else
|
||||||
notify-send " Enabled notifications"
|
notify-send -u low " Enabled notifications"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pkill -RTMIN+10 waybar
|
pkill -RTMIN+10 waybar
|
||||||
@@ -4,9 +4,9 @@ STATE_FILE=~/.local/state/omarchy/toggles/screensaver-off
|
|||||||
|
|
||||||
if [[ -f $STATE_FILE ]]; then
|
if [[ -f $STATE_FILE ]]; then
|
||||||
rm -f $STATE_FILE
|
rm -f $STATE_FILE
|
||||||
notify-send " Screensaver enabled"
|
notify-send -u low " Screensaver enabled"
|
||||||
else
|
else
|
||||||
mkdir -p "$(dirname $STATE_FILE)"
|
mkdir -p "$(dirname $STATE_FILE)"
|
||||||
touch $STATE_FILE
|
touch $STATE_FILE
|
||||||
notify-send " Screensaver disabled"
|
notify-send -u low " Screensaver disabled"
|
||||||
fi
|
fi
|
||||||
@@ -4,9 +4,9 @@ STATE_FILE=~/.local/state/omarchy/toggles/suspend-off
|
|||||||
|
|
||||||
if [[ -f $STATE_FILE ]]; then
|
if [[ -f $STATE_FILE ]]; then
|
||||||
rm -f $STATE_FILE
|
rm -f $STATE_FILE
|
||||||
notify-send " Suspend now available in system menu"
|
notify-send -u low " Suspend now available in system menu"
|
||||||
else
|
else
|
||||||
mkdir -p "$(dirname $STATE_FILE)"
|
mkdir -p "$(dirname $STATE_FILE)"
|
||||||
touch $STATE_FILE
|
touch $STATE_FILE
|
||||||
notify-send " Suspend removed from system menu"
|
notify-send -u low " Suspend removed from system menu"
|
||||||
fi
|
fi
|
||||||
@@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
set -e
|
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
|
||||||
|
|
||||||
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR
|
||||||
|
|
||||||
if [[ $1 == "-y" ]] || omarchy-update-confirm; then
|
if [[ $1 == "-y" ]] || omarchy-update-confirm; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/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
|
set -e
|
||||||
echo -e "\e[32mUpdate Firmware\e[0m"
|
echo -e "\e[32mUpdate Firmware\e[0m"
|
||||||
|
|
||||||
@@ -7,5 +10,9 @@ if omarchy-cmd-missing fwupdmgr; then
|
|||||||
omarchy-pkg-add fwupd
|
omarchy-pkg-add fwupd
|
||||||
fi
|
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
|
fwupdmgr refresh --force
|
||||||
sudo fwupdmgr update
|
sudo fwupdmgr update
|
||||||
@@ -6,5 +6,10 @@ echo -e "\e[32mUpdate Omarchy\e[0m"
|
|||||||
|
|
||||||
omarchy-update-time
|
omarchy-update-time
|
||||||
|
|
||||||
|
# Suppress Hyprland config errors while git updates default config files mid-pull
|
||||||
|
hyprctl keyword debug:suppress_errors true &>/dev/null || true
|
||||||
|
|
||||||
git -C $OMARCHY_PATH pull --autostash
|
git -C $OMARCHY_PATH pull --autostash
|
||||||
git -C $OMARCHY_PATH --no-pager diff --check || git -C $OMARCHY_PATH reset --merge
|
git -C $OMARCHY_PATH --no-pager diff --check || git -C $OMARCHY_PATH reset --merge
|
||||||
|
|
||||||
|
hyprctl reload &>/dev/null || true
|
||||||
@@ -5,10 +5,6 @@ set -e
|
|||||||
# Ensure screensaver/sleep doesn't set in during updates
|
# Ensure screensaver/sleep doesn't set in during updates
|
||||||
hyprctl dispatch tagwindow +noidle &>/dev/null || true
|
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
|
# Perform all update steps
|
||||||
omarchy-update-keyring
|
omarchy-update-keyring
|
||||||
omarchy-update-available-reset
|
omarchy-update-available-reset
|
||||||
|
|||||||
@@ -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/
|
cp $OMARCHY_PATH/default/voxtype/config.toml ~/.config/voxtype/
|
||||||
|
|
||||||
voxtype setup --download --no-post-install
|
voxtype setup --download --no-post-install
|
||||||
|
if omarchy-hw-vulkan; then
|
||||||
|
voxtype setup gpu --enable || true
|
||||||
|
fi
|
||||||
voxtype setup systemd
|
voxtype setup systemd
|
||||||
|
|
||||||
omarchy-restart-waybar
|
omarchy-restart-waybar
|
||||||
|
|||||||
@@ -20,5 +20,6 @@ decorations = "None"
|
|||||||
[keyboard]
|
[keyboard]
|
||||||
bindings = [
|
bindings = [
|
||||||
{ key = "Insert", mods = "Shift", action = "Paste" },
|
{ key = "Insert", mods = "Shift", action = "Paste" },
|
||||||
{ key = "Insert", mods = "Control", action = "Copy" }
|
{ key = "Insert", mods = "Control", action = "Copy" },
|
||||||
|
{ key = "Return", mods = "Shift", chars = "\u001B\r" }
|
||||||
]
|
]
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Hidden=true
|
||||||
+73
-47
@@ -1,18 +1,18 @@
|
|||||||
#? Config file for btop
|
#? Config file for btop v.1.4.6
|
||||||
|
|
||||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||||
color_theme = "current"
|
color_theme = "current"
|
||||||
|
|
||||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||||
theme_background = True
|
theme_background = true
|
||||||
|
|
||||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||||
truecolor = True
|
truecolor = true
|
||||||
|
|
||||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||||
force_tty = False
|
force_tty = false
|
||||||
|
|
||||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||||
@@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
|
|||||||
|
|
||||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||||
vim_keys = True
|
vim_keys = true
|
||||||
|
|
||||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||||
rounded_corners = True
|
rounded_corners = true
|
||||||
|
|
||||||
|
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
|
||||||
|
terminal_sync = true
|
||||||
|
|
||||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||||
@@ -60,37 +63,40 @@ update_ms = 2000
|
|||||||
proc_sorting = "cpu lazy"
|
proc_sorting = "cpu lazy"
|
||||||
|
|
||||||
#* Reverse sorting order, True or False.
|
#* Reverse sorting order, True or False.
|
||||||
proc_reversed = False
|
proc_reversed = false
|
||||||
|
|
||||||
#* Show processes as a tree.
|
#* Show processes as a tree.
|
||||||
proc_tree = False
|
proc_tree = false
|
||||||
|
|
||||||
#* Use the cpu graph colors in the process list.
|
#* Use the cpu graph colors in the process list.
|
||||||
proc_colors = True
|
proc_colors = true
|
||||||
|
|
||||||
#* Use a darkening gradient in the process list.
|
#* Use a darkening gradient in the process list.
|
||||||
proc_gradient = True
|
proc_gradient = true
|
||||||
|
|
||||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||||
proc_per_core = False
|
proc_per_core = false
|
||||||
|
|
||||||
#* Show process memory as bytes instead of percent.
|
#* Show process memory as bytes instead of percent.
|
||||||
proc_mem_bytes = True
|
proc_mem_bytes = true
|
||||||
|
|
||||||
#* Show cpu graph for each process.
|
#* Show cpu graph for each process.
|
||||||
proc_cpu_graphs = True
|
proc_cpu_graphs = true
|
||||||
|
|
||||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||||
proc_info_smaps = False
|
proc_info_smaps = false
|
||||||
|
|
||||||
#* Show proc box on left side of screen instead of right.
|
#* Show proc box on left side of screen instead of right.
|
||||||
proc_left = False
|
proc_left = false
|
||||||
|
|
||||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||||
proc_filter_kernel = False
|
proc_filter_kernel = false
|
||||||
|
|
||||||
#* In tree-view, always accumulate child process resources in the parent process.
|
#* In tree-view, always accumulate child process resources in the parent process.
|
||||||
proc_aggregate = False
|
proc_aggregate = false
|
||||||
|
|
||||||
|
#* Should cpu and memory usage display be preserved for dead processes when paused.
|
||||||
|
keep_dead_proc_usage = false
|
||||||
|
|
||||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||||
#* Select from a list of detected attributes from the options menu.
|
#* Select from a list of detected attributes from the options menu.
|
||||||
@@ -104,25 +110,28 @@ cpu_graph_lower = "Auto"
|
|||||||
show_gpu_info = "Auto"
|
show_gpu_info = "Auto"
|
||||||
|
|
||||||
#* Toggles if the lower CPU graph should be inverted.
|
#* Toggles if the lower CPU graph should be inverted.
|
||||||
cpu_invert_lower = True
|
cpu_invert_lower = true
|
||||||
|
|
||||||
#* Set to True to completely disable the lower CPU graph.
|
#* Set to True to completely disable the lower CPU graph.
|
||||||
cpu_single_graph = False
|
cpu_single_graph = false
|
||||||
|
|
||||||
#* Show cpu box at bottom of screen instead of top.
|
#* Show cpu box at bottom of screen instead of top.
|
||||||
cpu_bottom = False
|
cpu_bottom = false
|
||||||
|
|
||||||
#* Shows the system uptime in the CPU box.
|
#* Shows the system uptime in the CPU box.
|
||||||
show_uptime = True
|
show_uptime = true
|
||||||
|
|
||||||
|
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||||
|
show_cpu_watts = true
|
||||||
|
|
||||||
#* Show cpu temperature.
|
#* Show cpu temperature.
|
||||||
check_temp = True
|
check_temp = true
|
||||||
|
|
||||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||||
cpu_sensor = "Auto"
|
cpu_sensor = "Auto"
|
||||||
|
|
||||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||||
show_coretemp = True
|
show_coretemp = true
|
||||||
|
|
||||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||||
@@ -134,63 +143,66 @@ cpu_core_map = ""
|
|||||||
temp_scale = "celsius"
|
temp_scale = "celsius"
|
||||||
|
|
||||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||||
base_10_sizes = False
|
base_10_sizes = false
|
||||||
|
|
||||||
#* Show CPU frequency.
|
#* Show CPU frequency.
|
||||||
show_cpu_freq = True
|
show_cpu_freq = true
|
||||||
|
|
||||||
|
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
|
||||||
|
freq_mode = "first"
|
||||||
|
|
||||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||||
clock_format = "%X"
|
clock_format = "%X"
|
||||||
|
|
||||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||||
background_update = True
|
background_update = true
|
||||||
|
|
||||||
#* Custom cpu model name, empty string to disable.
|
#* Custom cpu model name, empty string to disable.
|
||||||
custom_cpu_name = ""
|
custom_cpu_name = ""
|
||||||
|
|
||||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||||
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||||
disks_filter = ""
|
disks_filter = ""
|
||||||
|
|
||||||
#* Show graphs instead of meters for memory values.
|
#* Show graphs instead of meters for memory values.
|
||||||
mem_graphs = True
|
mem_graphs = true
|
||||||
|
|
||||||
#* Show mem box below net box instead of above.
|
#* Show mem box below net box instead of above.
|
||||||
mem_below_net = False
|
mem_below_net = false
|
||||||
|
|
||||||
#* Count ZFS ARC in cached and available memory.
|
#* Count ZFS ARC in cached and available memory.
|
||||||
zfs_arc_cached = True
|
zfs_arc_cached = true
|
||||||
|
|
||||||
#* If swap memory should be shown in memory box.
|
#* If swap memory should be shown in memory box.
|
||||||
show_swap = True
|
show_swap = true
|
||||||
|
|
||||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||||
swap_disk = True
|
swap_disk = true
|
||||||
|
|
||||||
#* If mem box should be split to also show disks info.
|
#* If mem box should be split to also show disks info.
|
||||||
show_disks = True
|
show_disks = true
|
||||||
|
|
||||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||||
only_physical = True
|
only_physical = true
|
||||||
|
|
||||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||||
use_fstab = True
|
use_fstab = true
|
||||||
|
|
||||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||||
zfs_hide_datasets = False
|
zfs_hide_datasets = false
|
||||||
|
|
||||||
#* Set to true to show available disk space for privileged users.
|
#* Set to true to show available disk space for privileged users.
|
||||||
disk_free_priv = False
|
disk_free_priv = false
|
||||||
|
|
||||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||||
show_io_stat = True
|
show_io_stat = true
|
||||||
|
|
||||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||||
io_mode = False
|
io_mode = false
|
||||||
|
|
||||||
#* Set to True to show combined read/write io graphs in io mode.
|
#* Set to True to show combined read/write io graphs in io mode.
|
||||||
io_graph_combined = False
|
io_graph_combined = false
|
||||||
|
|
||||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||||
@@ -202,29 +214,44 @@ net_download = 100
|
|||||||
net_upload = 100
|
net_upload = 100
|
||||||
|
|
||||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||||
net_auto = True
|
net_auto = true
|
||||||
|
|
||||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||||
net_sync = True
|
net_sync = true
|
||||||
|
|
||||||
#* Starts with the Network Interface specified here.
|
#* Starts with the Network Interface specified here.
|
||||||
net_iface = ""
|
net_iface = ""
|
||||||
|
|
||||||
|
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||||
|
base_10_bitrate = "Auto"
|
||||||
|
|
||||||
#* Show battery stats in top right if battery is present.
|
#* Show battery stats in top right if battery is present.
|
||||||
show_battery = True
|
show_battery = true
|
||||||
|
|
||||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||||
selected_battery = "Auto"
|
selected_battery = "Auto"
|
||||||
|
|
||||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
#* Show power stats of battery next to charge indicator.
|
||||||
|
show_battery_watts = true
|
||||||
|
|
||||||
|
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||||
log_level = "WARNING"
|
log_level = "WARNING"
|
||||||
|
|
||||||
|
#* Automatically save current settings to config file on exit.
|
||||||
|
save_config_on_exit = true
|
||||||
|
|
||||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||||
nvml_measure_pcie_speeds = True
|
nvml_measure_pcie_speeds = true
|
||||||
|
|
||||||
|
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||||
|
rsmi_measure_pcie_speeds = true
|
||||||
|
|
||||||
#* Horizontally mirror the GPU graph.
|
#* Horizontally mirror the GPU graph.
|
||||||
gpu_mirror_graph = True
|
gpu_mirror_graph = true
|
||||||
|
|
||||||
|
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||||
|
shown_gpus = "nvidia amd intel"
|
||||||
|
|
||||||
#* Custom gpu0 model name, empty string to disable.
|
#* Custom gpu0 model name, empty string to disable.
|
||||||
custom_gpu_name0 = ""
|
custom_gpu_name0 = ""
|
||||||
@@ -243,4 +270,3 @@ custom_gpu_name4 = ""
|
|||||||
|
|
||||||
#* Custom gpu5 model name, empty string to disable.
|
#* Custom gpu5 model name, empty string to disable.
|
||||||
custom_gpu_name5 = ""
|
custom_gpu_name5 = ""
|
||||||
|
|
||||||
@@ -32,3 +32,8 @@ bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/c
|
|||||||
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space
|
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space
|
||||||
# unbind = SUPER, SPACE
|
# unbind = SUPER, SPACE
|
||||||
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu
|
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu
|
||||||
|
|
||||||
|
# Logitech MX Keys
|
||||||
|
# bind = SUPER SHIFT, S, exec, omarchy-cmd-screenshot # Print Screen Button
|
||||||
|
# bind = SUPER, H, exec, voxtype record toggle # Dictation Button
|
||||||
|
# bind = SUPER, PERIOD, exec, omarchy-launch-walker -m symbols # Emoji Button
|
||||||
@@ -11,7 +11,7 @@ input {
|
|||||||
|
|
||||||
# Change speed of keyboard repeat
|
# Change speed of keyboard repeat
|
||||||
repeat_rate = 40
|
repeat_rate = 40
|
||||||
repeat_delay = 600
|
repeat_delay = 250
|
||||||
|
|
||||||
# Start with numlock on by default
|
# Start with numlock on by default
|
||||||
numlock_by_default = true
|
numlock_by_default = true
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
||||||
env = GDK_SCALE,2
|
env = GDK_SCALE,2
|
||||||
monitor=,preferred,auto,auto
|
monitor=,preferred,auto,auto,vrr,1
|
||||||
|
|
||||||
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
||||||
# env = GDK_SCALE,1.75
|
# env = GDK_SCALE,1.75
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -4,4 +4,4 @@
|
|||||||
# To put it into use, remove .sample from the name.
|
# To put it into use, remove .sample from the name.
|
||||||
|
|
||||||
# Example: Show the name of the theme that was just set.
|
# 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"
|
||||||
@@ -4,4 +4,4 @@
|
|||||||
# To put it into use, remove .sample from the name.
|
# To put it into use, remove .sample from the name.
|
||||||
|
|
||||||
# Example: Show notification after the system has been updated.
|
# 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"
|
||||||
@@ -4,4 +4,4 @@
|
|||||||
# To put it into use, remove .sample from the name.
|
# To put it into use, remove .sample from the name.
|
||||||
|
|
||||||
# Example: Show the name of the theme that was just set.
|
# 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"
|
||||||
@@ -4,7 +4,7 @@ set -g prefix2 C-b
|
|||||||
bind C-Space send-prefix
|
bind C-Space send-prefix
|
||||||
|
|
||||||
# Reload config
|
# 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
|
# Vi mode for copy
|
||||||
setw -g mode-keys vi
|
setw -g mode-keys vi
|
||||||
@@ -83,7 +83,7 @@ set -gw automatic-rename-format '#{b:pane_current_path}'
|
|||||||
# Theme
|
# Theme
|
||||||
set -g status-style "bg=default,fg=default"
|
set -g status-style "bg=default,fg=default"
|
||||||
set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=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-format "#[fg=brightblack] #I:#W "
|
||||||
set -g window-status-current-format "#[fg=blue,bold] #I:#W "
|
set -g window-status-current-format "#[fg=blue,bold] #I:#W "
|
||||||
set -g pane-border-style "fg=brightblack"
|
set -g pane-border-style "fg=brightblack"
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Ensure Omarchy bins are in the path
|
# Ensure Omarchy bins are in the path
|
||||||
export OMARCHY_PATH=$HOME/.local/share/omarchy
|
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
|
# Set default terminal and editor
|
||||||
source ~/.config/uwsm/default
|
source ~/.config/uwsm/default
|
||||||
|
|||||||
@@ -72,8 +72,8 @@
|
|||||||
"format-wifi": "{icon}",
|
"format-wifi": "{icon}",
|
||||||
"format-ethernet": "",
|
"format-ethernet": "",
|
||||||
"format-disconnected": "",
|
"format-disconnected": "",
|
||||||
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)",
|
||||||
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
"tooltip-format-ethernet": "Connected",
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
"interval": 3,
|
"interval": 3,
|
||||||
"spacing": 1,
|
"spacing": 1,
|
||||||
|
|||||||
@@ -6,8 +6,13 @@ if command -v eza &> /dev/null; then
|
|||||||
alias lta='lt -a'
|
alias lta='lt -a'
|
||||||
fi
|
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)"'
|
alias eff='$EDITOR "$(ff)"'
|
||||||
|
sff() { if [ $# -eq 0 ]; then echo "Usage: sff <destination> (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
|
if command -v zoxide &> /dev/null; then
|
||||||
alias cd="zd"
|
alias cd="zd"
|
||||||
|
|||||||
@@ -13,23 +13,31 @@ img2jpg() {
|
|||||||
img="$1"
|
img="$1"
|
||||||
shift
|
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() {
|
img2jpg-small() {
|
||||||
img="$1"
|
img="$1"
|
||||||
shift
|
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() {
|
img2jpg-medium() {
|
||||||
img="$1"
|
img="$1"
|
||||||
shift
|
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
|
# Transcode any image to compressed-but-lossless PNG
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ ga() {
|
|||||||
|
|
||||||
local branch="$1"
|
local branch="$1"
|
||||||
local base="$(basename "$PWD")"
|
local base="$(basename "$PWD")"
|
||||||
local path="../${base}--${branch}"
|
local wt_path="../${base}--${branch}"
|
||||||
|
|
||||||
git worktree add -b "$branch" "$path"
|
git worktree add -b "$branch" "$wt_path"
|
||||||
mise trust "$path"
|
mise trust "$wt_path"
|
||||||
cd "$path"
|
cd "$wt_path"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove worktree and branch from within active worktree directory.
|
# Remove worktree and branch from within active worktree directory.
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ if command -v mise &> /dev/null; then
|
|||||||
eval "$(mise activate bash)"
|
eval "$(mise activate bash)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v starship &> /dev/null; then
|
if [[ $- == *i* ]] && [[ ${TERM:-} != "dumb" ]] && command -v starship &> /dev/null; then
|
||||||
eval "$(starship init bash)"
|
eval "$(starship init bash)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ 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/bitwarden.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/browser.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/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/localsend.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/pip.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/qemu.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/retroarch.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/steam.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/geforce.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/system.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/telegram.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/telegram.conf
|
||||||
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
source = ~/.local/share/omarchy/default/hypr/apps/terminals.conf
|
||||||
|
|||||||
@@ -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-.*)$
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
windowrule {
|
||||||
|
name = moonlight
|
||||||
|
match:class = com.moonlight_stream.Moonlight
|
||||||
|
fullscreen = 1
|
||||||
|
idle_inhibit = fullscreen
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ exec-once = uwsm-app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
|||||||
exec-once = uwsm-app -- swayosd-server
|
exec-once = uwsm-app -- swayosd-server
|
||||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
exec-once = omarchy-cmd-first-run
|
exec-once = omarchy-cmd-first-run
|
||||||
|
exec-once = omarchy-powerprofiles-init
|
||||||
|
|
||||||
# Slow app launch fix -- set systemd vars
|
# Slow app launch fix -- set systemd vars
|
||||||
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Only display the OSD on the currently focused monitor
|
# Only display the OSD on the currently focused monitor
|
||||||
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
|
$osdclient = swayosd-client --monitor "$(omarchy-hyprland-monitor-focused)"
|
||||||
|
|
||||||
# Laptop multimedia keys for volume and LCD brightness (with OSD)
|
# Laptop multimedia keys for volume and LCD brightness (with OSD)
|
||||||
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
|
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
|
||||||
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
|
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
|
||||||
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
|
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
|
||||||
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
|
bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-cmd-mic-mute
|
||||||
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5%
|
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5%
|
||||||
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%-
|
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%-
|
||||||
bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up
|
bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols
|
|||||||
bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture
|
bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture
|
||||||
bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle
|
bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle
|
||||||
bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
|
bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
|
||||||
|
bindd = SUPER SHIFT, code:201, Omarchy menu, exec, omarchy-menu
|
||||||
bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system
|
bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system
|
||||||
bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
|
bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
|
||||||
bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
|
bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
|
||||||
@@ -13,7 +14,7 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator
|
|||||||
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
||||||
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
||||||
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
|
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 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
|
bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore
|
|||||||
# Toggles
|
# Toggles
|
||||||
bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle
|
bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle
|
||||||
bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight
|
bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight
|
||||||
|
bindd = SUPER CTRL, Delete, Toggle laptop display, exec, omarchy-hyprland-monitor-internal-toggle
|
||||||
|
|
||||||
# Control Apple Display brightness
|
# Control Apple Display brightness
|
||||||
bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000
|
bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000
|
||||||
@@ -42,8 +44,8 @@ bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
|||||||
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
||||||
|
|
||||||
# Waybar-less information
|
# 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, 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 "$(omarchy-battery-status)"
|
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send -u low "$(omarchy-battery-status)"
|
||||||
|
|
||||||
# Control panels
|
# Control panels
|
||||||
bindd = SUPER CTRL, A, Audio controls, exec, omarchy-launch-audio
|
bindd = SUPER CTRL, A, Audio controls, exec, omarchy-launch-audio
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ master {
|
|||||||
misc {
|
misc {
|
||||||
disable_hyprland_logo = true
|
disable_hyprland_logo = true
|
||||||
disable_splash_rendering = true
|
disable_splash_rendering = true
|
||||||
|
disable_scale_notification = true
|
||||||
focus_on_activate = true
|
focus_on_activate = true
|
||||||
anr_missed_pings = 3
|
anr_missed_pings = 3
|
||||||
on_focus_under_fullscreen = 1
|
on_focus_under_fullscreen = 1
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ TARGET_OS_NAME="Omarchy"
|
|||||||
|
|
||||||
ESP_PATH="/boot"
|
ESP_PATH="/boot"
|
||||||
|
|
||||||
KERNEL_CMDLINE[default]="@@CMDLINE@@"
|
KERNEL_CMDLINE[default]+="@@CMDLINE@@"
|
||||||
KERNEL_CMDLINE[default]+=" quiet splash"
|
KERNEL_CMDLINE[default]+=" quiet splash"
|
||||||
|
|
||||||
ENABLE_UKI=yes
|
ENABLE_UKI=yes
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
# Run omarchy-restart-makima after any changes
|
|
||||||
|
|
||||||
[remap]
|
|
||||||
KEY_LEFTMETA-KEY_LEFTSHIFT-KEY_F23 = ["KEY_LEFTMETA", "KEY_LEFTALT", "KEY_SPACE"]
|
|
||||||
|
|
||||||
[settings]
|
|
||||||
GRAB_DEVICE = "true"
|
|
||||||
@@ -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)]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Temporarily switch to performance power profile on resume
|
||||||
|
# to avoid sluggishness while the system catches up, then
|
||||||
|
# restore the previous profile after 10 seconds.
|
||||||
|
|
||||||
|
if [[ $1 == "pre" ]]; then
|
||||||
|
mkdir -p /run/omarchy
|
||||||
|
powerprofilesctl get > /run/omarchy/power-profile-before-sleep
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 == "post" ]]; then
|
||||||
|
previous=$(cat /run/omarchy/power-profile-before-sleep 2>/dev/null || echo "balanced")
|
||||||
|
powerprofilesctl set performance
|
||||||
|
systemd-run --on-active=10 --timer-property=AccuracySec=1 powerprofilesctl set "$previous"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#!/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
|
||||||
|
) &
|
||||||
|
fi
|
||||||
+26
-11
@@ -14,18 +14,19 @@ run_logged $OMARCHY_INSTALL/config/mise-work.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
run_logged $OMARCHY_INSTALL/config/docker.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh
|
run_logged $OMARCHY_INSTALL/config/nautilus-python.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/walker-elephant.sh
|
run_logged $OMARCHY_INSTALL/config/walker-elephant.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/fast-shutdown.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/sudoless-asdcontrol.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/input-group.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/omarchy-ai-skill.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/kernel-modules-hook.sh
|
run_logged $OMARCHY_INSTALL/config/kernel-modules-hook.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh
|
run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/wifi-powersave-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/plocate-ac-only.sh
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/network.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/set-wireless-regdom.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/fix-fkeys.sh
|
||||||
@@ -34,17 +35,31 @@ run_logged $OMARCHY_INSTALL/config/hardware/printer.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/hardware/usb-autosuspend.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/ignore-power-button.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/nvidia.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/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/intel/resume-boost.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-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-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-yt6801-ethernet-adapter.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/fix-synaptic-touchpad.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
|
||||||
File renamed without changes.
File renamed without changes.
@@ -19,6 +19,7 @@ if lspci -nn | grep -q "106b:180[12]"; then
|
|||||||
sudo systemctl enable tiny-dfr.service
|
sudo systemctl enable tiny-dfr.service
|
||||||
|
|
||||||
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
|
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
|
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
|
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
|
||||||
# Generated by Omarchy installer for T2 Mac support
|
# Generated by Omarchy installer for T2 Mac support
|
||||||
KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pcie_ports=compat"
|
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
|
EOF
|
||||||
fi
|
fi
|
||||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,36 @@
|
|||||||
|
# Fix Dell XPS haptic touchpad.
|
||||||
|
# The Synaptics haptic touchpad (vendor 06CB) 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,20 @@
|
|||||||
|
# Fix display issues on Dell XPS Panther Lake (Xe3) systems.
|
||||||
|
# Xe PSR causes freezes and display glitches on both OLED and IPS panels.
|
||||||
|
# LG OLED panels also need Panel Replay disabled.
|
||||||
|
if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl; then
|
||||||
|
echo "Detected Dell XPS on Panther Lake, applying display power-saving fixes..."
|
||||||
|
|
||||||
|
if omarchy-hw-dell-xps-oled; then
|
||||||
|
CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0"'
|
||||||
|
COMMENT='Disable Xe PSR and Panel Replay on Dell XPS Panther Lake OLED systems'
|
||||||
|
else
|
||||||
|
CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0"'
|
||||||
|
COMMENT='Disable Xe PSR on Dell XPS Panther Lake systems'
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo mkdir -p /etc/limine-entry-tool.d
|
||||||
|
cat <<EOF | sudo tee /etc/limine-entry-tool.d/dell-xps-ptl-display.conf >/dev/null
|
||||||
|
# $COMMENT
|
||||||
|
$CMDLINE
|
||||||
|
EOF
|
||||||
|
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 @@
|
|||||||
|
# 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
|
||||||
File renamed without changes.
File renamed without changes.
Loaded 100 of 202 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user