Compare commits
@@ -92,6 +92,10 @@ Exceptions are allowed for bootstrap, preflight, migration, and package-helper s
|
||||
- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors
|
||||
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)
|
||||
|
||||
# Visual Changes
|
||||
|
||||
When making visual changes, such as Waybar styles or desktop appearance, always take and analyze a screenshot after applying the change to verify the result. Use `omarchy capture screenshot fullscreen save` for fullscreen screenshots.
|
||||
|
||||
# Refresh Pattern
|
||||
|
||||
To copy a default config to user config with automatic backup:
|
||||
|
||||
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 196 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -29,6 +29,7 @@ declare -A GROUP_DESCRIPTIONS
|
||||
GROUP_DESCRIPTIONS[ac]="AC power detection"
|
||||
GROUP_DESCRIPTIONS[battery]="Battery status helpers"
|
||||
GROUP_DESCRIPTIONS[branch]="Omarchy git branch management"
|
||||
GROUP_DESCRIPTIONS[branding]="About and screensaver branding"
|
||||
GROUP_DESCRIPTIONS[brightness]="Display and keyboard brightness"
|
||||
GROUP_DESCRIPTIONS[capture]="Screenshots and screen recording"
|
||||
GROUP_DESCRIPTIONS[channel]="Omarchy release channel management"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Edit, set, or reset About branding
|
||||
# omarchy:group=branding
|
||||
# omarchy:name=about
|
||||
# omarchy:args=<image|text|reset>
|
||||
# omarchy:examples=omarchy branding about image | omarchy branding about text | omarchy branding about reset
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
case "${1:-}" in
|
||||
image)
|
||||
image=$(omarchy-menu-file "Logo image" "$HOME" "svg png")
|
||||
if [[ -n $image ]] && omarchy-transcode-ascii "$image" ~/.config/omarchy/branding/about.txt --width 54 --height 26 --mode block; then
|
||||
omarchy-launch-about >/dev/null 2>&1
|
||||
fi
|
||||
;;
|
||||
text)
|
||||
omarchy-launch-editor ~/.config/omarchy/branding/about.txt >/dev/null 2>&1 && omarchy-launch-about >/dev/null 2>&1
|
||||
;;
|
||||
reset)
|
||||
cp "$OMARCHY_PATH/icon.txt" ~/.config/omarchy/branding/about.txt && omarchy-launch-about >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-branding-about <image|text|reset>" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Edit, set, or reset screensaver branding
|
||||
# omarchy:group=branding
|
||||
# omarchy:name=screensaver
|
||||
# omarchy:args=<image|text|reset>
|
||||
# omarchy:examples=omarchy branding screensaver image | omarchy branding screensaver text | omarchy branding screensaver reset
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
case "${1:-}" in
|
||||
image)
|
||||
image=$(omarchy-menu-file "Logo image" "$HOME" "svg png")
|
||||
if [[ -n $image ]] && omarchy-transcode-ascii "$image" ~/.config/omarchy/branding/screensaver.txt; then
|
||||
omarchy-launch-screensaver force >/dev/null 2>&1
|
||||
fi
|
||||
;;
|
||||
text)
|
||||
omarchy-launch-editor ~/.config/omarchy/branding/screensaver.txt >/dev/null 2>&1 && omarchy-launch-screensaver force >/dev/null 2>&1
|
||||
;;
|
||||
reset)
|
||||
cp "$OMARCHY_PATH/logo.txt" ~/.config/omarchy/branding/screensaver.txt && omarchy-launch-screensaver force >/dev/null 2>&1
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-branding-screensaver <image|text|reset>" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -233,6 +233,7 @@ stop_screenrecording() {
|
||||
else
|
||||
finalize_recording
|
||||
local filename=$(cat "$RECORDING_FILE" 2>/dev/null)
|
||||
echo "$filename"
|
||||
local preview="${filename%.mp4}-preview.png"
|
||||
|
||||
# Generate a preview thumbnail from the first frame
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# omarchy:summary=Take a screenshot
|
||||
# omarchy:group=capture
|
||||
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy] [--editor=<name>]
|
||||
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy|save] [--editor=<name>]
|
||||
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
|
||||
# omarchy:aliases=omarchy screenshot
|
||||
|
||||
@@ -126,14 +126,22 @@ esac
|
||||
FILENAME="screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
FILEPATH="$OUTPUT_DIR/$FILENAME"
|
||||
|
||||
if [[ $PROCESSING == "slurp" ]]; then
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
wl-copy <"$FILEPATH"
|
||||
case "$PROCESSING" in
|
||||
slurp)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
wl-copy <"$FILEPATH"
|
||||
|
||||
(
|
||||
ACTION=$(notify-send "Screenshot saved to clipboard and file" "Edit with Super + Alt + , (or click this)" -t 10000 -i "$FILEPATH" -A "default=edit")
|
||||
[[ $ACTION == "default" ]] && open_editor "$FILEPATH"
|
||||
) &
|
||||
else
|
||||
grim -g "$SELECTION" - | wl-copy
|
||||
fi
|
||||
(
|
||||
ACTION=$(notify-send "Screenshot saved to clipboard and file" "Edit with Super + Alt + , (or click this)" -t 10000 -i "$FILEPATH" -A "default=edit")
|
||||
[[ $ACTION == "default" ]] && open_editor "$FILEPATH"
|
||||
) >/dev/null 2>&1 &
|
||||
;;
|
||||
copy)
|
||||
grim -g "$SELECTION" - | wl-copy
|
||||
;;
|
||||
save)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -74,15 +74,13 @@ ACTION=$(gum choose "${OPTIONS[@]}")
|
||||
|
||||
case "$ACTION" in
|
||||
"Upload log")
|
||||
echo "Uploading debug log to 0x0.st..."
|
||||
URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st)
|
||||
echo "Uploading debug log to logs.omarchy.org..."
|
||||
URL=$(curl -sf -F "file=@$LOG_FILE" https://logs.omarchy.org/)
|
||||
if (( $? == 0 )) && [[ -n $URL ]]; then
|
||||
echo "✓ Log uploaded successfully!"
|
||||
echo "Share this URL:"
|
||||
echo ""
|
||||
echo " $URL"
|
||||
echo ""
|
||||
echo "This link will expire in 24 hours."
|
||||
else
|
||||
echo "Error: Failed to upload log file"
|
||||
exit 1
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# omarchy:summary=Run the Synaptics touchpad haptic feedback daemon
|
||||
|
||||
"""Haptic feedback daemon for Synaptics touchpads with Manual Trigger.
|
||||
|
||||
Monitors touchpad button press events and sends haptic pulses via HID
|
||||
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()
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Match Dell XPS systems with the Synaptics haptic touchpad.
|
||||
|
||||
omarchy-hw-match "XPS" && [[ -e /sys/bus/i2c/devices/i2c-VEN_06CB:00 ]]
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Cycle focused Hyprland monitor scaling through 1x, 1.25x, 1.6x, 2x, and 3x
|
||||
# omarchy:summary=Cycle focused Hyprland monitor scaling through 1x, 1.25x, 1.6x, 2x, 3x, and 4x
|
||||
|
||||
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
|
||||
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
|
||||
@@ -9,8 +9,8 @@ WIDTH=$(echo "$MONITOR_INFO" | jq -r '.width')
|
||||
HEIGHT=$(echo "$MONITOR_INFO" | jq -r '.height')
|
||||
REFRESH_RATE=$(echo "$MONITOR_INFO" | jq -r '.refreshRate')
|
||||
|
||||
# Cycle through scales: 1 → 1.25 → 1.6 → 2 → 3 → 1 (or reverse with --reverse)
|
||||
SCALES=(1 1.25 1.6 2 3)
|
||||
# Cycle through scales: 1 → 1.25 → 1.6 → 2 → 3 → 4 → 1 (or reverse with --reverse)
|
||||
SCALES=(1 1.25 1.6 2 3 4)
|
||||
|
||||
# Find the index of the scale closest to the current one (Hyprland may
|
||||
# snap fractional scales to nearby values, so we can't match exactly)
|
||||
|
||||
@@ -21,7 +21,10 @@ omarchy-pkg-add \
|
||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||
libretro-yabause \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git \
|
||||
libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \
|
||||
libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \
|
||||
libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \
|
||||
libretro-database-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
|
||||
@@ -233,13 +233,18 @@ show_hardware_menu() {
|
||||
options="$options\n Touchpad"
|
||||
fi
|
||||
|
||||
if omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics; then
|
||||
options="$options\n Touchpad Haptics"
|
||||
fi
|
||||
|
||||
if omarchy-hw-touchscreen; then
|
||||
options="$options\n Touchscreen"
|
||||
fi
|
||||
|
||||
case $(menu "Toggle" "$options") in
|
||||
*Laptop*) omarchy-hyprland-monitor-internal toggle ;;
|
||||
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle;;
|
||||
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle ;;
|
||||
*Haptics*) show_hardware_touchpad_haptics_menu ;;
|
||||
*Touchpad*) omarchy-toggle-touchpad ;;
|
||||
*Touchscreen*) omarchy-toggle-touchscreen ;;
|
||||
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
|
||||
@@ -247,6 +252,17 @@ show_hardware_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_hardware_touchpad_haptics_menu() {
|
||||
local current=$(dell-xps-touchpad-haptics get)
|
||||
local selected=$(menu "Touchpad Haptics" "low\nmid\nhigh" "" "$current")
|
||||
|
||||
if [[ -n $selected ]]; then
|
||||
dell-xps-touchpad-haptics set "$selected"
|
||||
else
|
||||
back_to show_hardware_menu
|
||||
fi
|
||||
}
|
||||
|
||||
show_style_menu() {
|
||||
case $(menu "Style" " Theme\n Unlock\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
||||
*Theme*) show_theme_menu ;;
|
||||
@@ -255,33 +271,27 @@ show_style_menu() {
|
||||
*Background*) show_background_menu ;;
|
||||
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
||||
*Screensaver*) show_screensaver_menu ;;
|
||||
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
||||
*About*) show_about_menu ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_screensaver_menu() {
|
||||
case $(menu "Screensaver" " Edit Text\n Set From Image\n Preview\n Restore Default") in
|
||||
*Text*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
||||
*Image*) set_screensaver_from_image ;;
|
||||
*Preview*) omarchy-launch-screensaver force ;;
|
||||
*Default*) terminal bash -lc 'omarchy-screensaver-logo default; echo; read -n 1 -s -r -p "Press any key to close..."' ;;
|
||||
show_about_menu() {
|
||||
case $(menu "About" " Edit Text\n Set From Image\n Restore Default") in
|
||||
*Text*) omarchy-branding-about text ;;
|
||||
*Image*) omarchy-branding-about image ;;
|
||||
*Default*) omarchy-branding-about reset ;;
|
||||
*) show_style_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
set_screensaver_from_image() {
|
||||
terminal bash -lc '
|
||||
image=$(fd --type file --ignore-case --extension svg --extension png . "$HOME" 2>/dev/null | fzf --prompt "Logo image> ")
|
||||
if [[ -n $image ]]; then
|
||||
if omarchy-screensaver-logo "$image"; then
|
||||
echo
|
||||
echo "Preview with: omarchy-launch-screensaver force"
|
||||
fi
|
||||
echo
|
||||
read -n 1 -s -r -p "Press any key to close..."
|
||||
fi
|
||||
'
|
||||
show_screensaver_menu() {
|
||||
case $(menu "Screensaver" " Edit Text\n Set From Image\n Restore Default") in
|
||||
*Text*) omarchy-branding-screensaver text ;;
|
||||
*Image*) omarchy-branding-screensaver image ;;
|
||||
*Default*) omarchy-branding-screensaver reset ;;
|
||||
*) show_style_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_theme_menu() {
|
||||
@@ -336,8 +346,8 @@ show_setup_power_menu() {
|
||||
|
||||
show_setup_security_menu() {
|
||||
case $(menu "Setup" " Fingerprint\n Fido2") in
|
||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||
*Fingerprint*) present_terminal omarchy-setup-security-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-security-fido2 ;;
|
||||
*) show_setup_menu ;;
|
||||
esac
|
||||
}
|
||||
@@ -568,7 +578,7 @@ show_install_ai_menu() {
|
||||
}
|
||||
|
||||
show_install_gaming_menu() {
|
||||
case $(menu "Install" " Steam\n RetroArch\n Minecraft\n NVIDIA GeForce NOW\n Xbox Cloud Gaming\n Xbox Controller ()\n Moonlight (GameStream)\n Lutris (Battle.net)\n Heroic (Epic Games)") in
|
||||
case $(menu "Install" " Steam\n RetroArch\n Minecraft\n NVIDIA GeForce NOW\n Xbox Cloud Gaming\n Xbox Controller\n Moonlight (GameStream)\n Lutris (Battle.net)\n Heroic (Epic Games)") in
|
||||
*Steam*) present_terminal omarchy-install-gaming-steam ;;
|
||||
*RetroArch*) present_terminal omarchy-install-gaming-retroarch ;;
|
||||
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
|
||||
@@ -650,23 +660,30 @@ show_install_elixir_menu() {
|
||||
}
|
||||
|
||||
show_remove_menu() {
|
||||
case $(menu "Remove" " Package\n Browser\n Web App\n TUI\n Development\n Gaming\n Preinstalls\n Dictation\n Theme\n Windows\n Fingerprint\n Fido2") in
|
||||
case $(menu "Remove" " Package\n Web App\n TUI\n Development\n Theme\n Browser\n Dictation\n Gaming\n Windows\n Preinstalls\n Security") in
|
||||
*Package*) terminal omarchy-pkg-remove ;;
|
||||
*Browser*) show_remove_browser_menu ;;
|
||||
*Web*) present_terminal omarchy-webapp-remove ;;
|
||||
*TUI*) present_terminal omarchy-tui-remove ;;
|
||||
*Development*) show_remove_development_menu ;;
|
||||
*Gaming*) show_remove_gaming_menu ;;
|
||||
*Preinstalls*) present_terminal omarchy-remove-preinstalls ;;
|
||||
*Dictation*) present_terminal omarchy-voxtype-remove ;;
|
||||
*Theme*) present_terminal omarchy-theme-remove ;;
|
||||
*Browser*) show_remove_browser_menu ;;
|
||||
*Dictation*) present_terminal omarchy-voxtype-remove ;;
|
||||
*Gaming*) show_remove_gaming_menu ;;
|
||||
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
|
||||
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
||||
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
|
||||
*Preinstalls*) present_terminal omarchy-remove-preinstalls ;;
|
||||
*Security*) show_remove_security_menu ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_remove_security_menu() {
|
||||
case $(menu "Remove" " Fingerprint\n Fido2") in
|
||||
*Fingerprint*) present_terminal omarchy-remove-security-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-remove-security-fido2 ;;
|
||||
*) show_remove_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_remove_browser_menu() {
|
||||
case $(menu "Remove" " Chrome\n Edge\n Brave\n Brave Origin\n Firefox\n Zen") in
|
||||
*Chrome*) present_terminal "omarchy-remove-browser chrome" ;;
|
||||
|
||||
@@ -30,16 +30,19 @@ for path in "${paths[@]}"; do
|
||||
[[ -e $path ]] || { echo "Path not found: $path" >&2; exit 1; }
|
||||
done
|
||||
|
||||
find_args=("${paths[@]}" -type f "(")
|
||||
find_args=("${paths[@]}" "(" -type d -name ".*" ! -name "." -prune ")" -o -type f ! -name ".*" "(")
|
||||
first_format=true
|
||||
for format in "${formats[@]}"; do
|
||||
if (( ${#find_args[@]} > ${#paths[@]} + 3 )); then
|
||||
if [[ $first_format == "true" ]]; then
|
||||
first_format=false
|
||||
else
|
||||
find_args+=(-o)
|
||||
fi
|
||||
|
||||
format="${format#.}"
|
||||
find_args+=(-iname "*.$format")
|
||||
done
|
||||
find_args+=(")")
|
||||
find_args+=(")" -printf '%T@\t%p\n')
|
||||
|
||||
find "${find_args[@]}" -printf '%T@\t%p\n' 2>/dev/null | sort -rn | cut -f2- |
|
||||
find "${find_args[@]}" 2>/dev/null | sort -rn | cut -f2- |
|
||||
omarchy-launch-walker --dmenu --width 800 --minheight 1 --maxheight 500 -p "$label…" "$@" 2>/dev/null
|
||||
|
||||
@@ -6,6 +6,6 @@ set -e
|
||||
|
||||
# Reinstall the Omarchy configuration directory from the git source.
|
||||
|
||||
git clone --depth=1 "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
git clone --depth=1 --branch master "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
mv $OMARCHY_PATH ~/.local/share/omarchy-old
|
||||
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
||||
|
||||
@@ -21,7 +21,10 @@ omarchy-pkg-drop \
|
||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||
libretro-yabause \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git \
|
||||
libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \
|
||||
libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \
|
||||
libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
rm -rf \
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Remove FIDO2 authentication from sudo and polkit
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
echo "Removing FIDO2 authentication from sudo..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
echo "Removing FIDO2 authentication from polkit..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
echo -e "\e[32mRemoving FIDO2 device from authentication.\n\e[0m"
|
||||
|
||||
remove_pam_config
|
||||
|
||||
if [[ -d /etc/fido2 ]]; then
|
||||
echo "Removing FIDO2 configuration..."
|
||||
sudo rm -rf /etc/fido2
|
||||
fi
|
||||
|
||||
echo "Removing FIDO2 packages..."
|
||||
omarchy-pkg-drop libfido2 pam-u2f
|
||||
|
||||
echo -e "\e[32mFIDO2 authentication has been completely removed.\e[0m"
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Remove fingerprint authentication from sudo, polkit, and lock screen
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
echo "Removing fingerprint authentication from sudo..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
echo "Removing fingerprint authentication from polkit..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
remove_hyprlock_fingerprint_icon() {
|
||||
echo "Removing fingerprint icon from hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = Enter Password/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
echo -e "\e[32mRemoving fingerprint scanner from authentication.\n\e[0m"
|
||||
|
||||
remove_pam_config
|
||||
remove_hyprlock_fingerprint_icon
|
||||
|
||||
echo "Removing fingerprint packages..."
|
||||
omarchy-pkg-drop fprintd libfprint-git
|
||||
|
||||
echo -e "\e[32mFingerprint authentication has been completely removed.\e[0m"
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
# omarchy:summary=Restart the SwayOSD server
|
||||
|
||||
if systemctl --user is-enabled --quiet swayosd-server.service; then
|
||||
systemctl --user restart swayosd-server.service
|
||||
else
|
||||
omarchy-restart-app swayosd-server
|
||||
fi
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user stop swayosd-server.service || true
|
||||
pkill -x swayosd-server || true
|
||||
systemctl --user reset-failed swayosd-server.service || true
|
||||
systemctl --user enable --now swayosd-server.service
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
# omarchy:summary=Restart Waybar
|
||||
# omarchy:examples=omarchy restart waybar
|
||||
|
||||
omarchy-restart-app waybar
|
||||
pkill -9 -x waybar
|
||||
setsid uwsm-app -- waybar >/dev/null 2>&1 &
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set up or remove FIDO2 authentication for sudo and polkit
|
||||
# omarchy:args=[--remove]
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}$1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}$1${NC}"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${YELLOW}$1${NC}"
|
||||
}
|
||||
|
||||
check_fido2_hardware() {
|
||||
tokens=$(fido2-token -L 2>/dev/null)
|
||||
if [[ -z $tokens ]]; then
|
||||
print_error "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
print_info "Configuring sudo for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Configuring polkit for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1
|
||||
elif [[ ! -f /etc/pam.d/polkit-1 ]]; then
|
||||
print_info "Creating polkit configuration with FIDO2 authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
print_info "Removing FIDO2 authentication from sudo..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && grep -Fq 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Removing FIDO2 authentication from polkit..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "--remove" == $1 ]]; then
|
||||
print_success "Removing FIDO2 device from authentication.\n"
|
||||
|
||||
# Remove PAM configuration
|
||||
remove_pam_config
|
||||
|
||||
# Remove FIDO2 configuration
|
||||
if [[ -d /etc/fido2 ]]; then
|
||||
print_info "Removing FIDO2 configuration..."
|
||||
sudo rm -rf /etc/fido2
|
||||
fi
|
||||
|
||||
# Uninstall packages
|
||||
print_info "Removing FIDO2 packages..."
|
||||
sudo pacman -Rns --noconfirm libfido2 pam-u2f
|
||||
|
||||
print_success "FIDO2 authentication has been completely removed."
|
||||
else
|
||||
print_success "Setting up FIDO2 device for authentication.\n"
|
||||
|
||||
# Install required packages
|
||||
print_info "Installing required packages..."
|
||||
omarchy-pkg-add libfido2 pam-u2f
|
||||
|
||||
if ! check_fido2_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create the pamu2fcfg file
|
||||
if [[ ! -f /etc/fido2/fido2 ]]; then
|
||||
sudo mkdir -p /etc/fido2
|
||||
print_success "\nLet's setup your device by confirming on the device now."
|
||||
print_info "Touch your FIDO2 key when it lights up...\n"
|
||||
|
||||
if pamu2fcfg >/tmp/fido2; then
|
||||
sudo mv /tmp/fido2 /etc/fido2/fido2
|
||||
print_success "FIDO2 device registered successfully!"
|
||||
else
|
||||
print_error "\nFIDO2 registration failed. Please try again."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_info "FIDO2 device already registered."
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Test with sudo
|
||||
print_info "\nTesting FIDO2 authentication with sudo..."
|
||||
print_info "Touch your FIDO2 key when prompted.\n"
|
||||
|
||||
if sudo echo "FIDO2 authentication test successful"; then
|
||||
print_success "\nPerfect! FIDO2 authentication is now configured."
|
||||
print_info "You can use your FIDO2 key for sudo and polkit authentication."
|
||||
else
|
||||
print_error "\nVerification failed. You may want to check your configuration."
|
||||
fi
|
||||
fi
|
||||
@@ -1,161 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set up or remove fingerprint authentication for sudo, polkit, and lock screen
|
||||
# omarchy:args=[--remove]
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}$1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}$1${NC}"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${YELLOW}$1${NC}"
|
||||
}
|
||||
|
||||
check_fingerprint_hardware() {
|
||||
# Get fingerprint devices for the user
|
||||
devices=$(fprintd-list "$USER" 2>/dev/null)
|
||||
|
||||
# Exit if no devices found
|
||||
if [[ -z $devices ]]; then
|
||||
print_error "\nNo fingerprint sensor detected."
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
print_info "Configuring sudo for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Configuring polkit for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1
|
||||
elif [[ ! -f /etc/pam.d/polkit-1 ]]; then
|
||||
print_info "Creating polkit configuration with fingerprint authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_fprintd.so
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
add_hyprlock_fingerprint_icon() {
|
||||
print_info "Adding fingerprint icon to hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = <span> Enter Password <\/span>/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = true/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
remove_hyprlock_fingerprint_icon() {
|
||||
print_info "Removing fingerprint icon from hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = Enter Password/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
print_info "Removing fingerprint authentication from sudo..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Remove from polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && grep -Fq 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
print_info "Removing fingerprint authentication from polkit..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "--remove" == $1 ]]; then
|
||||
print_success "Removing fingerprint scanner from authentication.\n"
|
||||
|
||||
# Remove PAM configuration
|
||||
remove_pam_config
|
||||
|
||||
# Remove fingerprint icon from hyprlock placeholder text
|
||||
remove_hyprlock_fingerprint_icon
|
||||
|
||||
# Uninstall packages
|
||||
print_info "Removing fingerprint packages..."
|
||||
sudo pacman -Rns --noconfirm fprintd
|
||||
|
||||
print_success "Fingerprint authentication has been completely removed."
|
||||
else
|
||||
print_success "Setting up fingerprint scanner for authentication.\n"
|
||||
|
||||
# Install required packages
|
||||
print_info "Installing required packages..."
|
||||
|
||||
# ASUS ExpertBook B9406CAA ships a FocalTech FT9349 ESS reader (USB
|
||||
# 2808:a97a). Mainline libfprint at 1.94.x lacks the focaltech_moc
|
||||
# driver (and its 0xa97a id_table entry); OPR ships libfprint-git
|
||||
# which carries both. Once upstream catches up, this branch is a
|
||||
# no-op and `libfprint-git` provides=libfprint anyway. Detect via
|
||||
# /sys to avoid depending on usbutils being installed first.
|
||||
for v in /sys/bus/usb/devices/*/idVendor; do
|
||||
[[ "$(cat "$v" 2>/dev/null)" == "2808" ]] || continue
|
||||
[[ "$(cat "${v%idVendor}idProduct" 2>/dev/null)" == "a97a" ]] || continue
|
||||
print_info "FocalTech FT9349 detected (B9406CAA) — using libfprint-git from OPR..."
|
||||
# libfprint-git provides+conflicts libfprint; pacman -S --noconfirm
|
||||
# defaults the conflict prompt to N and aborts. Pre-remove libfprint
|
||||
# with -Rdd so the install goes silent. -Rdd (not omarchy-pkg-drop's
|
||||
# -Rns) is required because fprintd requires libfprint; the dep is
|
||||
# re-satisfied immediately by libfprint-git's provides=libfprint.
|
||||
if omarchy-pkg-present libfprint; then
|
||||
sudo pacman -Rdd --noconfirm libfprint
|
||||
fi
|
||||
omarchy-pkg-add libfprint-git
|
||||
break
|
||||
done
|
||||
|
||||
omarchy-pkg-add fprintd usbutils
|
||||
|
||||
if ! check_fingerprint_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Add fingerprint icon to hyprlock placeholder text
|
||||
add_hyprlock_fingerprint_icon
|
||||
|
||||
# Enroll first fingerprint
|
||||
print_success "\nLet's setup your right index finger as the first fingerprint."
|
||||
print_info "Keep moving the finger around on sensor until the process completes.\n"
|
||||
|
||||
if sudo fprintd-enroll "$USER"; then
|
||||
print_success "\nFingerprint enrolled successfully!"
|
||||
|
||||
# Verify
|
||||
print_info "\nNow let's verify that it's working correctly.\n"
|
||||
if fprintd-verify; then
|
||||
print_success "\nPerfect! Fingerprint authentication is now configured."
|
||||
print_info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
|
||||
else
|
||||
print_error "\nVerification failed. You may want to try enrolling again."
|
||||
fi
|
||||
else
|
||||
print_error "\nEnrollment failed. Please try again."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,81 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set up FIDO2 authentication for sudo and polkit
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
check_fido2_hardware() {
|
||||
tokens=$(fido2-token -L 2>/dev/null)
|
||||
if [[ -z $tokens ]]; then
|
||||
echo -e "\e[31m\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well).\e[0m"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
echo "Configuring sudo for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && ! grep -q 'pam_u2f.so' /etc/pam.d/polkit-1; then
|
||||
echo "Configuring polkit for FIDO2 authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2' /etc/pam.d/polkit-1
|
||||
elif [[ ! -f /etc/pam.d/polkit-1 ]]; then
|
||||
echo "Creating polkit configuration with FIDO2 authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_u2f.so cue authfile=/etc/fido2/fido2
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
echo -e "\e[32mSetting up FIDO2 device for authentication.\n\e[0m"
|
||||
|
||||
# Install required packages
|
||||
echo "Installing required packages..."
|
||||
omarchy-pkg-add libfido2 pam-u2f
|
||||
|
||||
if ! check_fido2_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create the pamu2fcfg file
|
||||
if [[ ! -f /etc/fido2/fido2 ]]; then
|
||||
sudo mkdir -p /etc/fido2
|
||||
echo -e "\e[32m\nLet's setup your device by confirming on the device now.\e[0m"
|
||||
echo -e "Touch your FIDO2 key when it lights up...\n"
|
||||
|
||||
if pamu2fcfg >/tmp/fido2; then
|
||||
sudo mv /tmp/fido2 /etc/fido2/fido2
|
||||
echo -e "\e[32mFIDO2 device registered successfully!\e[0m"
|
||||
else
|
||||
echo -e "\e[31m\nFIDO2 registration failed. Please try again.\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "FIDO2 device already registered."
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Test with sudo
|
||||
echo -e "\nTesting FIDO2 authentication with sudo..."
|
||||
echo -e "Touch your FIDO2 key when prompted.\n"
|
||||
|
||||
if sudo echo "FIDO2 authentication test successful"; then
|
||||
echo -e "\e[32m\nPerfect! FIDO2 authentication is now configured.\e[0m"
|
||||
echo "You can use your FIDO2 key for sudo and polkit authentication."
|
||||
else
|
||||
echo -e "\e[31m\nVerification failed. You may want to check your configuration.\e[0m"
|
||||
fi
|
||||
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set up fingerprint authentication for sudo, polkit, and lock screen
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
check_fingerprint_hardware() {
|
||||
# Get fingerprint devices for the user
|
||||
devices=$(fprintd-list "$USER" 2>/dev/null)
|
||||
|
||||
# Exit if no devices found
|
||||
if [[ -z $devices ]]; then
|
||||
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
echo "Configuring sudo for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
|
||||
fi
|
||||
|
||||
# Configure polkit
|
||||
if [[ -f /etc/pam.d/polkit-1 ]] && ! grep -q 'pam_fprintd.so' /etc/pam.d/polkit-1; then
|
||||
echo "Configuring polkit for fingerprint authentication..."
|
||||
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/polkit-1
|
||||
elif [[ ! -f /etc/pam.d/polkit-1 ]]; then
|
||||
echo "Creating polkit configuration with fingerprint authentication..."
|
||||
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
|
||||
auth sufficient pam_fprintd.so
|
||||
auth required pam_unix.so
|
||||
|
||||
account required pam_unix.so
|
||||
password required pam_unix.so
|
||||
session required pam_unix.so
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
add_hyprlock_fingerprint_icon() {
|
||||
echo "Adding fingerprint icon to hyprlock placeholder text..."
|
||||
sed -i 's/placeholder_text = .*/placeholder_text = <span> Enter Password <\/span>/' ~/.config/hypr/hyprlock.conf
|
||||
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = true/' ~/.config/hypr/hyprlock.conf
|
||||
}
|
||||
|
||||
echo -e "\e[32mSetting up fingerprint scanner for authentication.\n\e[0m"
|
||||
|
||||
# Install required packages
|
||||
echo "Installing required packages..."
|
||||
|
||||
# libfprint-git provides+conflicts libfprint; pacman -S --noconfirm
|
||||
# defaults the conflict prompt to N and aborts. Pre-remove libfprint
|
||||
# with -Rdd so the install goes silent. -Rdd (not omarchy-pkg-drop's
|
||||
# -Rns) is required because fprintd requires libfprint; the dep is
|
||||
# re-satisfied immediately by libfprint-git's provides=libfprint.
|
||||
if omarchy-pkg-present libfprint; then
|
||||
sudo pacman -Rdd --noconfirm libfprint
|
||||
fi
|
||||
|
||||
omarchy-pkg-add libfprint-git fprintd usbutils
|
||||
|
||||
if ! check_fingerprint_hardware; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Add fingerprint icon to hyprlock placeholder text
|
||||
add_hyprlock_fingerprint_icon
|
||||
|
||||
# Enroll first fingerprint
|
||||
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\e[0m"
|
||||
echo -e "Keep moving the finger around on sensor until the process completes.\n"
|
||||
|
||||
if sudo fprintd-enroll "$USER"; then
|
||||
echo -e "\e[32m\nFingerprint enrolled successfully!\e[0m"
|
||||
|
||||
# Verify
|
||||
echo -e "\nNow let's verify that it's working correctly.\n"
|
||||
if fprintd-verify; then
|
||||
echo -e "\e[32m\nPerfect! Fingerprint authentication is now configured.\e[0m"
|
||||
echo "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
|
||||
else
|
||||
echo -e "\e[31m\nVerification failed. You may want to try enrolling again.\e[0m"
|
||||
fi
|
||||
else
|
||||
echo -e "\e[31m\nEnrollment failed. Please try again.\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,18 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set the screensaver logo text from an SVG/PNG or the default
|
||||
# omarchy:args=<default|path-to-logo.svg|png> [--width <columns>] [--height <rows>] [--mode <braille|block>] [--threshold <percent>] [--invert] [--stdout]
|
||||
# omarchy:examples=omarchy screensaver logo ~/logo.svg | omarchy screensaver logo default | omarchy screensaver logo ~/logo.png --width 80 --mode block --stdout
|
||||
# omarchy:summary=Transcode an image into ASCII/Unicode art text
|
||||
# omarchy:group=transcode
|
||||
# omarchy:name=ascii
|
||||
# omarchy:args=<input-image.svg|png> <output-path> [--width <columns>] [--height <rows>] [--mode <braille|block>] [--threshold <percent>] [--invert]
|
||||
# omarchy:examples=omarchy transcode ascii ~/logo.svg /tmp/logo.txt | omarchy transcode ascii ~/logo.png ~/.config/omarchy/branding/screensaver.txt --width 80
|
||||
|
||||
set -o pipefail
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: omarchy-screensaver-logo <default|path-to-logo.svg|png> [options]
|
||||
Usage: omarchy-transcode-ascii <input-image.svg|png> <output-path> [options]
|
||||
|
||||
Sets the screensaver logo text from an image.
|
||||
Pass "default" instead of an image path to restore the Omarchy default.
|
||||
By default, writes to ~/.config/omarchy/branding/screensaver.txt.
|
||||
Transcodes an image into ASCII/Unicode art text.
|
||||
|
||||
Options:
|
||||
-w, --width <columns> Maximum output width in terminal columns (default: 80)
|
||||
@@ -21,7 +21,6 @@ Options:
|
||||
-t, --threshold <percent> Pixel threshold from 0-100 (default: 50)
|
||||
--invert Treat light pixels as the logo instead of dark pixels
|
||||
--no-trim Preserve surrounding whitespace/background
|
||||
--stdout Print converted text instead of writing the screensaver file
|
||||
--help Show this help
|
||||
EOF
|
||||
}
|
||||
@@ -32,9 +31,8 @@ mode=braille
|
||||
threshold=50
|
||||
invert=false
|
||||
trim=true
|
||||
output_path="$HOME/.config/omarchy/branding/screensaver.txt"
|
||||
image_path=""
|
||||
reset_default=false
|
||||
output_path=""
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
@@ -98,9 +96,6 @@ while (($# > 0)); do
|
||||
--no-trim)
|
||||
trim=false
|
||||
;;
|
||||
--stdout)
|
||||
output_path="-"
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
@@ -111,10 +106,10 @@ while (($# > 0)); do
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
if [[ $1 == "default" && -z $image_path ]]; then
|
||||
reset_default=true
|
||||
elif [[ -z $image_path ]]; then
|
||||
if [[ -z $image_path ]]; then
|
||||
image_path="$1"
|
||||
elif [[ -z $output_path ]]; then
|
||||
output_path="$1"
|
||||
else
|
||||
echo "Unexpected argument: $1" >&2
|
||||
usage >&2
|
||||
@@ -127,10 +122,10 @@ done
|
||||
|
||||
if (($# > 0)); then
|
||||
while (($# > 0)); do
|
||||
if [[ $1 == "default" && -z $image_path ]]; then
|
||||
reset_default=true
|
||||
elif [[ -z $image_path ]]; then
|
||||
if [[ -z $image_path ]]; then
|
||||
image_path="$1"
|
||||
elif [[ -z $output_path ]]; then
|
||||
output_path="$1"
|
||||
else
|
||||
echo "Unexpected argument: $1" >&2
|
||||
usage >&2
|
||||
@@ -140,29 +135,7 @@ if (($# > 0)); then
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ $reset_default == "true" ]]; then
|
||||
if [[ -n $image_path ]]; then
|
||||
echo "default does not accept an image path" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
default_path="${OMARCHY_PATH:-$HOME/.local/share/omarchy}/logo.txt"
|
||||
if [[ ! -f $default_path ]]; then
|
||||
echo "Default screensaver logo text not found: $default_path" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $output_path == "-" ]]; then
|
||||
cat "$default_path"
|
||||
else
|
||||
mkdir -p "$(dirname "$output_path")"
|
||||
cp "$default_path" "$output_path"
|
||||
echo "Restored default screensaver logo text to $output_path"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -z $image_path ]]; then
|
||||
if [[ -z $image_path || -z $output_path ]]; then
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -375,10 +348,6 @@ if [[ ! -s $tmp_output ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $output_path == "-" ]]; then
|
||||
cat "$tmp_output"
|
||||
else
|
||||
mkdir -p "$(dirname "$output_path")"
|
||||
cp "$tmp_output" "$output_path"
|
||||
echo "Wrote screensaver logo text to $output_path"
|
||||
fi
|
||||
mkdir -p "$(dirname "$output_path")"
|
||||
cp "$tmp_output" "$output_path"
|
||||
echo "Wrote ASCII art to $output_path"
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Ensure the Omarchy keyring package is installed and populated
|
||||
# omarchy:summary=Ensure the Omarchy and Arch keyring packages are installed and populated
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then
|
||||
@@ -16,5 +16,7 @@ if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630
|
||||
fi
|
||||
|
||||
# Ensure we have the latest archlinux-keyring, maintainer keys might have changed
|
||||
# Always reinstall, as the keyring can be updated without a package version bump.
|
||||
echo -e "\e[32m\nUpdate Arch signing keys\e[0m"
|
||||
sudo pacman -Sy --noconfirm archlinux-keyring >/dev/null
|
||||
sudo pacman -Sy --noconfirm archlinux-keyring >/dev/null 2> >(grep -vE '^warning: archlinux-keyring-[^ ]+ is up to date -- reinstalling$' >&2)
|
||||
echo "Keys are correct"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Upload logs to 0x0.st
|
||||
# omarchy:summary=Upload logs to logs.omarchy.org
|
||||
# omarchy:args=<log-file>
|
||||
# omarchy:hidden=true
|
||||
|
||||
@@ -28,7 +28,7 @@ else
|
||||
echo "========================================="
|
||||
echo "SYSTEM INFORMATION"
|
||||
echo "========================================="
|
||||
echo "Hostname: $(hostname)"
|
||||
echo "Hostname: $(uname -n)"
|
||||
echo "Kernel: $(uname -r)"
|
||||
echo "Date: $(date)"
|
||||
echo ""
|
||||
@@ -41,19 +41,33 @@ fi
|
||||
|
||||
case "$LOG_TYPE" in
|
||||
install)
|
||||
# In the live ISO before reboot, the target system is mounted at /mnt so the
|
||||
# omarchy install log lives at /mnt/var/log/omarchy-install.log. On the
|
||||
# installed system it's at /var/log/omarchy-install.log. Prefer whichever
|
||||
# exists, with /mnt taking precedence (only present in the ISO context, and
|
||||
# there it's the right one).
|
||||
ARCHINSTALL_LOG="/var/log/archinstall/install.log"
|
||||
OMARCHY_LOG="/var/log/omarchy-install.log"
|
||||
if [[ -s /mnt/var/log/omarchy-install.log ]]; then
|
||||
OMARCHY_LOG="/mnt/var/log/omarchy-install.log"
|
||||
else
|
||||
OMARCHY_LOG="/var/log/omarchy-install.log"
|
||||
fi
|
||||
|
||||
# Combine system info with logs
|
||||
cat "$SYSTEM_INFO" >"$TEMP_LOG"
|
||||
cat $ARCHINSTALL_LOG $OMARCHY_LOG >>"$TEMP_LOG" 2>/dev/null
|
||||
[[ -s $ARCHINSTALL_LOG ]] && cat "$ARCHINSTALL_LOG" >>"$TEMP_LOG"
|
||||
if [[ -s $OMARCHY_LOG ]]; then
|
||||
printf '\n========================================\nOMARCHY INSTALL LOG (%s)\n========================================\n\n' "$OMARCHY_LOG" >>"$TEMP_LOG"
|
||||
cat "$OMARCHY_LOG" >>"$TEMP_LOG"
|
||||
else
|
||||
echo "Warning: omarchy install log not found (looked at /mnt/var/log/ and /var/log/)" >&2
|
||||
fi
|
||||
|
||||
if [[ ! -s $TEMP_LOG ]]; then
|
||||
echo "Error: No install logs found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Uploading installation log to 0x0.st..."
|
||||
echo "Uploading installation log to logs.omarchy.org..."
|
||||
;;
|
||||
|
||||
this-boot)
|
||||
@@ -66,7 +80,7 @@ this-boot)
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Uploading current boot logs to 0x0.st..."
|
||||
echo "Uploading current boot logs to logs.omarchy.org..."
|
||||
;;
|
||||
|
||||
last-boot)
|
||||
@@ -79,7 +93,7 @@ last-boot)
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Uploading previous boot logs to 0x0.st..."
|
||||
echo "Uploading previous boot logs to logs.omarchy.org..."
|
||||
;;
|
||||
|
||||
installed|system-info)
|
||||
@@ -98,7 +112,7 @@ installed|system-info)
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Uploading system information to 0x0.st..."
|
||||
echo "Uploading system information to logs.omarchy.org..."
|
||||
;;
|
||||
|
||||
*)
|
||||
@@ -113,15 +127,13 @@ esac
|
||||
|
||||
echo ""
|
||||
|
||||
URL=$(curl -sF "file=@$TEMP_LOG" -Fexpires=24 https://0x0.st)
|
||||
URL=$(curl -sf -F "file=@$TEMP_LOG" https://logs.omarchy.org/)
|
||||
|
||||
if (( $? == 0 )) && [[ -n $URL ]]; then
|
||||
echo "✓ Log uploaded successfully!"
|
||||
echo "Share this URL:"
|
||||
echo ""
|
||||
echo " $URL"
|
||||
echo ""
|
||||
echo "This link will expire in 24 hours."
|
||||
else
|
||||
echo "Error: Failed to upload log file"
|
||||
exit 1
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# omarchy:summary=Returns a formatted weather status string with temperature and wind speed.
|
||||
|
||||
weather=$(curl -fsS --max-time 4 "https://wttr.in?m&format=%l|%t|%w" 2>/dev/null | tr -d '\n')
|
||||
weather=$(curl -fsS --max-time 4 "https://wttr.in?format=%l|%t|%w" 2>/dev/null | tr -d '\n')
|
||||
|
||||
if [[ -z $weather ]]; then
|
||||
echo "Weather unavailable"
|
||||
@@ -12,15 +12,6 @@ fi
|
||||
IFS='|' read -r place temperature wind <<< "$weather"
|
||||
place=${place%%,*}
|
||||
place=${place^}
|
||||
format_temperature() {
|
||||
local celsius=${1#+}
|
||||
celsius=${celsius//°/}
|
||||
celsius=${celsius%C}
|
||||
|
||||
echo "${celsius}°c / $((celsius * 9 / 5 + 32))°f"
|
||||
}
|
||||
|
||||
temperature=$(format_temperature "$temperature")
|
||||
wind=${wind//km\// km/}
|
||||
temperature=${temperature#+}
|
||||
|
||||
echo "$(omarchy-weather-icon) $place · Temp $temperature · Wind $wind"
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Set install mode to online since boot.sh is used for curl installations
|
||||
export OMARCHY_ONLINE_INSTALL=true
|
||||
|
||||
ansi_art=' ▄▄▄
|
||||
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
|
||||
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
|
||||
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
|
||||
███ █▀ '
|
||||
ansi_art=' ▄ ▄
|
||||
▄███████ ▄███████ ▄████████▀ ▄█ █▄ ▄██ ██▄ ▄███████
|
||||
███ ███ ███ ███ ▀▀▀▀███▀▀ ███ ███ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███ ███ ███▄▄▄██▀
|
||||
███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ███ ███ ███▀▀▀▀
|
||||
███ ███ ██████████ ███ ███ ███ ███ ███ █████████
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ █▀ ███ ██▀ ██▀ ███ █▀ ▀█████▀ ███ ██▀
|
||||
▀▀▀ ▀ ▀ ▀▀▀ ▀'
|
||||
|
||||
clear
|
||||
echo -e "\n$ansi_art\n"
|
||||
@@ -38,13 +40,9 @@ sudo pacman -Syu --noconfirm --needed git
|
||||
OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}"
|
||||
|
||||
echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git"
|
||||
rm -rf ~/.local/share/omarchy/
|
||||
git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
|
||||
|
||||
echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m"
|
||||
cd ~/.local/share/omarchy
|
||||
git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}"
|
||||
cd -
|
||||
rm -rf ~/.local/share/omarchy/
|
||||
git clone --branch "$OMARCHY_REF" "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null
|
||||
|
||||
echo -e "\nInstallation starting..."
|
||||
source ~/.local/share/omarchy/install.sh
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--ozone-platform=wayland
|
||||
--ozone-platform-hint=wayland
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecodeLinuxGL,VaapiVideoEncoder
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
||||
|
||||
@@ -1 +1 @@
|
||||
command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT, Insert,"'
|
||||
command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT,Insert,activewindow"'
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
"type": "command",
|
||||
"key": "\ue900 OS",
|
||||
"keyColor": "blue",
|
||||
"text": "version=$(omarchy-version); echo \"Omarchy $version\""
|
||||
"text": "source /etc/os-release; omarchy=$(omarchy-version); echo \"$PRETTY_NAME → Omarchy $omarchy\""
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
|
||||
@@ -6,26 +6,21 @@ bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
|
||||
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"
|
||||
bindd = SUPER SHIFT, B, Browser, exec, omarchy-launch-browser
|
||||
bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
|
||||
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
||||
bindd = SUPER SHIFT ALT, M, Music TUI, exec, omarchy-launch-or-focus-tui cliamp
|
||||
bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus subtui
|
||||
bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
||||
bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
|
||||
bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
|
||||
bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian"
|
||||
bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
|
||||
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password
|
||||
|
||||
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
||||
bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
||||
bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
||||
bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
||||
bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
||||
bindd = SUPER SHIFT ALT, A, Claude, exec, omarchy-launch-webapp "https://claude.ai"
|
||||
bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://outlook.com"
|
||||
bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
||||
bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
|
||||
bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
|
||||
bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/"
|
||||
bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/"
|
||||
bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
|
||||
bindd = SUPER SHIFT ALT, J, Jellyfin, exec, omarchy-launch-or-focus-webapp Jellyfin "https://jellyfin.arthurp.fr/"
|
||||
bindd = SUPER SHIFT ALT, I, Immich, exec, omarchy-launch-or-focus-webapp Immich "https://immich.arthurp.fr/"
|
||||
|
||||
# Add extra bindings
|
||||
# bind = SUPER SHIFT, R, exec, alacritty -e ssh your-server
|
||||
|
||||
@@ -24,3 +24,9 @@ source = ~/.local/state/omarchy/toggles/hypr/*.conf
|
||||
|
||||
# Add any other personal Hyprland configuration below
|
||||
# windowrule = workspace 5, match:class qemu
|
||||
|
||||
input {
|
||||
kb_layout = fr,us
|
||||
kb_variant = ,colemak_dh_iso
|
||||
kb_options = grp:caps_toggle
|
||||
}
|
||||
@@ -1,19 +1,12 @@
|
||||
{
|
||||
"reload_style_on_change": true,
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"position": "left",
|
||||
"spacing": 0,
|
||||
"height": 26,
|
||||
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
|
||||
"modules-center": ["clock", "custom/weather", "custom/update", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator", "custom/notification-silencing-indicator"],
|
||||
"modules-right": [
|
||||
"group/tray-expander",
|
||||
"bluetooth",
|
||||
"network",
|
||||
"pulseaudio",
|
||||
"cpu",
|
||||
"battery"
|
||||
],
|
||||
"width": 35,
|
||||
"modules-left": ["custom/clock", "custom/weather", "cpu", "memory", "custom/media"],
|
||||
"modules-center": ["custom/update", "hyprland/workspaces", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator", "custom/notification-silencing-indicator"],
|
||||
"modules-right": ["group/tray-expander", "pulseaudio", "bluetooth", "network", "battery"],
|
||||
"hyprland/workspaces": {
|
||||
"on-click": "activate",
|
||||
"format": "{icon}",
|
||||
@@ -36,15 +29,14 @@
|
||||
"2": [],
|
||||
"3": [],
|
||||
"4": [],
|
||||
"5": []
|
||||
"5": [],
|
||||
"6": [],
|
||||
"7": [],
|
||||
"8": [],
|
||||
"9": [],
|
||||
"10": []
|
||||
}
|
||||
},
|
||||
"custom/omarchy": {
|
||||
"format": "<span font='omarchy'>\ue900</span>",
|
||||
"on-click": "omarchy-menu",
|
||||
"on-click-right": "xdg-terminal-exec",
|
||||
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
|
||||
},
|
||||
"custom/update": {
|
||||
"format": "",
|
||||
"exec": "omarchy-update-available",
|
||||
@@ -53,26 +45,40 @@
|
||||
"signal": 7,
|
||||
"interval": 21600
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": "",
|
||||
"on-click": "omarchy-launch-or-focus-tui btop",
|
||||
"on-click-right": "alacritty"
|
||||
"interval": 2,
|
||||
"format": "{icon} ",
|
||||
"format-icons": ["", "", "", "", "", "", "", ""],
|
||||
"on-click": "omarchy-launch-or-focus-tui btop"
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:L%A %H:%M}",
|
||||
"format-alt": "{:L%d %B W%V %Y}",
|
||||
"tooltip": false,
|
||||
"on-click-right": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select"
|
||||
"memory": {
|
||||
"interval": 2,
|
||||
"format": "{icon} ",
|
||||
"format-icons": ["", "", "", "", "", "", "", ""],
|
||||
"on-click": "omarchy-launch-or-focus-tui btop"
|
||||
},
|
||||
"custom/clock": {
|
||||
"exec": "$OMARCHY_PATH/default/waybar/clock.sh",
|
||||
"return-type": "json",
|
||||
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select",
|
||||
"tooltip": true
|
||||
},
|
||||
"custom/weather": {
|
||||
"exec": "$OMARCHY_PATH/default/waybar/weather.sh",
|
||||
"return-type": "json",
|
||||
"interval": 600,
|
||||
"interval": 60,
|
||||
"tooltip": false,
|
||||
"on-click": "notify-send -u low \"$(omarchy-weather-status)\""
|
||||
},
|
||||
"custom/media": {
|
||||
"exec": "$OMARCHY_PATH/default/waybar/media.sh",
|
||||
"return-type": "json",
|
||||
"interval": 1,
|
||||
"on-click": "$OMARCHY_PATH/default/waybar/media_click.sh",
|
||||
"on-click-right": "playerctl -p subtui next",
|
||||
"on-click-middle": "playerctl -p subtui previous",
|
||||
"tooltip": true
|
||||
},
|
||||
"network": {
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"format": "{icon}",
|
||||
@@ -137,7 +143,7 @@
|
||||
"modules": ["custom/expand-icon", "tray"]
|
||||
},
|
||||
"custom/expand-icon": {
|
||||
"format": "",
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-scroll-up": "",
|
||||
"on-scroll-down": "",
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* {
|
||||
background-color: @background;
|
||||
color: @foreground;
|
||||
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
@@ -12,18 +11,18 @@
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
margin-left: 8px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
margin-right: 8px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
all: initial;
|
||||
padding: 0 6px;
|
||||
margin: 0 1.5px;
|
||||
min-width: 9px;
|
||||
padding: 6px 0;
|
||||
margin: 1.5px 0;
|
||||
min-height: 9px;
|
||||
}
|
||||
|
||||
#workspaces button.empty {
|
||||
@@ -31,28 +30,29 @@
|
||||
}
|
||||
|
||||
#cpu,
|
||||
#memory,
|
||||
#custom-media,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#custom-omarchy,
|
||||
#custom-update {
|
||||
min-width: 12px;
|
||||
margin: 0 7.5px;
|
||||
min-height: 12px;
|
||||
margin: 7.5px 0;
|
||||
}
|
||||
|
||||
#tray {
|
||||
margin-right: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
margin-right: 17px;
|
||||
margin-top: 17px;
|
||||
}
|
||||
|
||||
#network {
|
||||
margin-right: 13px;
|
||||
margin-top: 13px;
|
||||
}
|
||||
|
||||
#custom-expand-icon {
|
||||
margin-right: 18px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
@@ -63,17 +63,17 @@ tooltip {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
margin-left: 8.75px;
|
||||
#custom-clock {
|
||||
margin-bottom: 8.75px;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
margin-left: 7.5px;
|
||||
margin-right: 7.5px;
|
||||
margin-bottom: 7.5px;
|
||||
margin-top: 7.5px;
|
||||
}
|
||||
|
||||
#custom-weather.unavailable {
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
@@ -85,11 +85,11 @@ tooltip {
|
||||
#custom-screenrecording-indicator,
|
||||
#custom-idle-indicator,
|
||||
#custom-notification-silencing-indicator {
|
||||
min-width: 12px;
|
||||
margin-left: 5px;
|
||||
margin-right: 0;
|
||||
min-height: 12px;
|
||||
margin-bottom: 5px;
|
||||
margin-top: 0;
|
||||
font-size: 10px;
|
||||
padding-bottom: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
|
||||
#custom-screenrecording-indicator.active {
|
||||
@@ -102,8 +102,8 @@ tooltip {
|
||||
}
|
||||
|
||||
#custom-voxtype {
|
||||
min-width: 12px;
|
||||
margin: 0 0 0 7.5px;
|
||||
min-height: 12px;
|
||||
margin: 0 0 7.5px 0;
|
||||
}
|
||||
|
||||
#custom-voxtype.recording {
|
||||
|
||||
@@ -40,6 +40,17 @@ _omarchy_complete() {
|
||||
candidates+=("--all" "--json" "--markdown" "--check")
|
||||
fi
|
||||
|
||||
if (( ${#candidates[@]} == 0 )) && [[ -x $bin_dir/$prefix ]]; then
|
||||
local args enum
|
||||
args=$(grep -m 1 '^# omarchy:args=<' "$bin_dir/$prefix" 2>/dev/null)
|
||||
enum="${args#*<}"
|
||||
enum="${enum%%>*}"
|
||||
|
||||
if [[ $enum == *"|"* && $enum != *" "* ]]; then
|
||||
read -r -a candidates <<<"${enum//|/ }"
|
||||
fi
|
||||
fi
|
||||
|
||||
if (( ${#candidates[@]} > 0 )); then
|
||||
local IFS=$'\n'
|
||||
COMPREPLY=($(compgen -W "${candidates[*]}" -- "$cur"))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Copy / Paste
|
||||
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert,
|
||||
bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert,
|
||||
bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X,
|
||||
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, activewindow
|
||||
bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert, activewindow
|
||||
bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X, activewindow
|
||||
bindd = SUPER CTRL, V, Clipboard manager, exec, omarchy-launch-walker -m clipboard
|
||||
|
||||
@@ -6,7 +6,7 @@ bindd = SUPER, W, Close window, killactive,
|
||||
bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all
|
||||
|
||||
# Control tiling
|
||||
bindd = SUPER, J, Toggle window split, togglesplit, # dwindle
|
||||
bindd = SUPER, J, Toggle window split, layoutmsg, togglesplit
|
||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||
bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating,
|
||||
bindd = SHIFT, F11, Force full screen, fullscreen, 0
|
||||
|
||||
@@ -50,8 +50,8 @@ decoration {
|
||||
group {
|
||||
col.border_active = $activeBorderColor
|
||||
col.border_inactive = $inactiveBorderColor
|
||||
col.border_locked_active = -1
|
||||
col.border_locked_inactive = -1
|
||||
col.border_locked_active = $activeBorderColor
|
||||
col.border_locked_inactive = $inactiveBorderColor
|
||||
|
||||
groupbar {
|
||||
font_size = 12
|
||||
@@ -108,9 +108,8 @@ animations {
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
force_split = 2 # Always split on the right
|
||||
preserve_split = true
|
||||
force_split = 2
|
||||
}
|
||||
|
||||
scrolling {
|
||||
|
||||
@@ -356,7 +356,7 @@ When user requests system changes:
|
||||
2. **Is it a config edit?** Edit in `~/.config/`, never `~/.local/share/omarchy/`
|
||||
3. **Is it a theme customization?** Create a NEW custom theme directory
|
||||
4. **Is it automation?** Use hooks in `~/.config/omarchy/hooks/`
|
||||
5. **Is it a package install?** Use `omarchy install package <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||
6. **Unsure if command exists?** Run `omarchy commands` (or `omarchy <group> --help` for one group)
|
||||
|
||||
### Reminder Requests
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
import { existsSync } from "node:fs";
|
||||
import { join } from "node:path";
|
||||
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
||||
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||
|
||||
const home = process.env.HOME ?? "";
|
||||
const lightModePath = join(home, ".config/omarchy/current/theme/light.mode");
|
||||
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.9 KiB |
@@ -96,6 +96,7 @@ Rectangle {
|
||||
color: "transparent"
|
||||
selectionColor: "transparent"
|
||||
selectedTextColor: "transparent"
|
||||
cursorDelegate: Item {}
|
||||
focus: true
|
||||
|
||||
onTextChanged: root.loginFailed = false
|
||||
|
||||
@@ -44,12 +44,12 @@ pause_media = true
|
||||
# .en models are English-only but faster and more accurate for English
|
||||
# large-v3-turbo is faster than large-v3 with minimal accuracy loss (recommended for GPU)
|
||||
# Or provide absolute path to a custom .bin model file
|
||||
model = "base.en"
|
||||
model = "base"
|
||||
|
||||
# Language for transcription
|
||||
# Use "en" for English, "auto" for auto-detection
|
||||
# See: https://github.com/openai/whisper#available-models-and-languages
|
||||
language = "en"
|
||||
language = "fr"
|
||||
|
||||
# Translate non-English speech to English
|
||||
translate = false
|
||||
@@ -82,13 +82,13 @@ type_delay_ms = 1
|
||||
|
||||
[output.notification]
|
||||
# Show notification when recording starts (hotkey pressed)
|
||||
on_recording_start = false
|
||||
on_recording_start = true
|
||||
|
||||
# Show notification when recording stops (transcription beginning)
|
||||
on_recording_stop = false
|
||||
on_recording_stop = true
|
||||
|
||||
# Show notification with transcribed text after transcription completes
|
||||
on_transcription = false
|
||||
on_transcription = true
|
||||
|
||||
# [text]
|
||||
# Text processing options (word replacements, spoken punctuation)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
print_status() {
|
||||
time=$(date +"%H:%M")
|
||||
date=$(date +"%d/%m")
|
||||
|
||||
# tooltip complet
|
||||
full_date=$(date +"%A %d %B %Y %H:%M:%S")
|
||||
calendar=$(cal -m)
|
||||
esc_calendar=$(sed 's/&/&/g; s/</</g; s/>/>/g' <<< "$calendar")
|
||||
|
||||
text="$time
|
||||
$date"
|
||||
|
||||
tooltip="$full_date
|
||||
|
||||
$esc_calendar"
|
||||
|
||||
jq -nc \
|
||||
--arg text "$text" \
|
||||
--arg tooltip "$tooltip" \
|
||||
'{ text: $text, tooltip: $tooltip }'
|
||||
}
|
||||
|
||||
print_status
|
||||
|
||||
last=""
|
||||
|
||||
while true; do
|
||||
current=$(date +"%H%M%S%Y%m%d")
|
||||
|
||||
if [[ "$current" != "$last" ]]; then
|
||||
print_status
|
||||
last="$current"
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
done
|
||||
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLAYER="subtui"
|
||||
|
||||
# Vérifie si Subtui est lancé
|
||||
if ! playerctl -l 2>/dev/null | grep -q "^${PLAYER}$"; then
|
||||
echo '{"text":"","tooltip":"Subtui non lancé"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Métadonnées
|
||||
title=$(playerctl -p "$PLAYER" metadata title 2>/dev/null)
|
||||
artist=$(playerctl -p "$PLAYER" metadata artist 2>/dev/null)
|
||||
album=$(playerctl -p "$PLAYER" metadata album 2>/dev/null)
|
||||
status=$(playerctl -p "$PLAYER" status 2>/dev/null)
|
||||
|
||||
# Valeurs par défaut
|
||||
[ -z "$title" ] && title="Titre inconnu"
|
||||
[ -z "$artist" ] && artist="Artiste inconnu"
|
||||
[ -z "$album" ] && album="Album inconnu"
|
||||
|
||||
# Position actuelle (secondes)
|
||||
position=$(playerctl -p "$PLAYER" position 2>/dev/null)
|
||||
[ -z "$position" ] && position=0
|
||||
|
||||
# Durée totale (microsecondes)
|
||||
length=$(playerctl -p "$PLAYER" metadata mpris:length 2>/dev/null)
|
||||
[ -z "$length" ] && length=0
|
||||
|
||||
# Conversion sûre
|
||||
position_sec=$(awk -v p="$position" 'BEGIN { printf("%d", p+0.5) }')
|
||||
length_sec=$((length / 1000000))
|
||||
|
||||
# Format temps
|
||||
elapsed=$(printf "%02d:%02d" $((position_sec/60)) $((position_sec%60)))
|
||||
|
||||
if [ "$length_sec" -gt 0 ]; then
|
||||
duration=$(printf "%02d:%02d" $((length_sec/60)) $((length_sec%60)))
|
||||
else
|
||||
duration="--:--"
|
||||
fi
|
||||
|
||||
# Icône
|
||||
if [ "$status" = "Playing" ]; then
|
||||
icon=""
|
||||
else
|
||||
icon=""
|
||||
fi
|
||||
|
||||
# Échapper les guillemets pour JSON
|
||||
title=${title//\"/\\\"}
|
||||
artist=${artist//\"/\\\"}
|
||||
album=${album//\"/\\\"}
|
||||
|
||||
# Tooltip
|
||||
tooltip="$artist
|
||||
$title
|
||||
|
||||
Album : $album
|
||||
|
||||
$elapsed / $duration
|
||||
|
||||
Clic gauche : Lecture/Pause
|
||||
Clic droit : Suivant
|
||||
Clic milieu : Précédent"
|
||||
|
||||
# Convertir les retours à la ligne pour JSON
|
||||
tooltip=$(echo "$tooltip" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
|
||||
# JSON final
|
||||
printf '{"text":"%s","tooltip":"%s"}\n' "$icon" "$tooltip"
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLAYER="subtui"
|
||||
|
||||
if playerctl -l 2>/dev/null | grep -q "^${PLAYER}$"; then
|
||||
playerctl -p "$PLAYER" play-pause
|
||||
else
|
||||
ghostty -e subtui &
|
||||
fi
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -10,17 +10,17 @@
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████████████ ████ ████
|
||||
████████████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████████████ █████████████████████████ ████
|
||||
████████████ █████████████████████████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ██████████████████████████████████████ ████
|
||||
████ ██████████████████████████████████████ ████
|
||||
████ ████ ████
|
||||
████ ████ ████
|
||||
█████████████████████████████ ████████████████████
|
||||
█████████████████████████████ ████████████████████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████ ████
|
||||
████ ████ ████
|
||||
████ ████ ████
|
||||
████████████ ████████████
|
||||
████████████ ████████████
|
||||
|
||||
@@ -50,8 +50,6 @@ run_logged $OMARCHY_INSTALL/config/hardware/intel/fred.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/sof-firmware.sh
|
||||
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
|
||||
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-display-backlight.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-display.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-touchpad.sh
|
||||
|
||||
@@ -2,5 +2,4 @@
|
||||
chrootable_systemctl_enable bluetooth.service
|
||||
|
||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf \
|
||||
~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf" ~/.config/wireplumber/wireplumber.conf.d/
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
# 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
|
||||
@@ -4,7 +4,7 @@ sudo mkdir -p /etc/systemd/system.conf.d /etc/systemd/user.conf.d
|
||||
|
||||
sudo tee /etc/systemd/system.conf.d/99-omarchy-nofile.conf >/dev/null <<'EOF'
|
||||
[Manager]
|
||||
DefaultLimitNOFILESoft=65536
|
||||
DefaultLimitNOFILE=65536:524288
|
||||
EOF
|
||||
|
||||
sudo cp /etc/systemd/system.conf.d/99-omarchy-nofile.conf \
|
||||
|
||||
@@ -10,7 +10,7 @@ sudo mkdir -p /etc/chromium/policies/managed
|
||||
sudo chmod a+rw /etc/chromium/policies/managed
|
||||
|
||||
# Set initial theme
|
||||
omarchy-theme-set "Tokyo Night"
|
||||
omarchy-theme-set "Rainynight"
|
||||
rm -rf ~/.config/chromium/SingletonLock # otherwise archiso will own the chromium singleton
|
||||
|
||||
# Set specific app links for current theme
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
# Omarchy core package list installed via install/packaging/base.sh
|
||||
# This file is also used by the ISO builder when determining needs
|
||||
|
||||
1password-beta
|
||||
1password-cli
|
||||
aether
|
||||
alacritty
|
||||
alsa-utils
|
||||
@@ -113,7 +111,6 @@ satty
|
||||
sddm
|
||||
signal-desktop
|
||||
slurp
|
||||
spotify
|
||||
socat
|
||||
starship
|
||||
sushi
|
||||
@@ -150,3 +147,7 @@ xournalpp
|
||||
yaru-icon-theme
|
||||
yay
|
||||
zoxide
|
||||
prismlauncher
|
||||
cava
|
||||
dua-cli
|
||||
yazi
|
||||
@@ -61,6 +61,9 @@ vulkan-asahi
|
||||
# Surface laptop support packages
|
||||
linux-firmware-marvell
|
||||
|
||||
# Dell laptop support packages
|
||||
dell-xps-touchpad-haptics
|
||||
|
||||
# T2 MacBook support packages
|
||||
apple-bcm-firmware
|
||||
apple-t2-audio-config
|
||||
|
||||
@@ -7,4 +7,5 @@ run_logged $OMARCHY_INSTALL/packaging/tuis.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/npx.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/asus-rog.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/framework16.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/dell-xps-touchpad-haptics.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/surface.sh
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
if omarchy-hw-dell-xps-haptic-touchpad; then
|
||||
omarchy-pkg-add dell-xps-touchpad-haptics
|
||||
fi
|
||||
@@ -2,4 +2,3 @@ ICON_DIR="$HOME/.local/share/applications/icons"
|
||||
|
||||
omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float "$ICON_DIR/Disk Usage.png"
|
||||
omarchy-tui-install "Docker" "lazydocker" tile "$ICON_DIR/Docker.png"
|
||||
omarchy-tui-install "Cliamp" "cliamp" tile "$ICON_DIR/Cliamp.png"
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
omarchy-webapp-install "HEY" https://app.hey.com HEY.png "omarchy-webapp-handler-hey %u" "x-scheme-handler/mailto"
|
||||
omarchy-webapp-install "Basecamp" https://launchpad.37signals.com Basecamp.png
|
||||
omarchy-webapp-install "WhatsApp" https://web.whatsapp.com/ WhatsApp.png
|
||||
omarchy-webapp-install "Google Photos" https://photos.google.com/ "Google Photos.png"
|
||||
omarchy-webapp-install "Google Contacts" https://contacts.google.com/ "Google Contacts.png"
|
||||
omarchy-webapp-install "Google Messages" https://messages.google.com/web/conversations "Google Messages.png"
|
||||
omarchy-webapp-install "Google Maps" https://maps.google.com "Google Maps.png"
|
||||
omarchy-webapp-install "ChatGPT" https://chatgpt.com/ ChatGPT.png
|
||||
omarchy-webapp-install "YouTube" https://youtube.com/ YouTube.png
|
||||
omarchy-webapp-install "GitHub" https://github.com/ GitHub.png
|
||||
omarchy-webapp-install "X" https://x.com/ X.png
|
||||
omarchy-webapp-install "Figma" https://figma.com/ Figma.png
|
||||
omarchy-webapp-install "Discord" https://discord.com/channels/@me Discord.png
|
||||
omarchy-webapp-install "Zoom" https://app.zoom.us/wc/home Zoom.png "omarchy-webapp-handler-zoom %u" "x-scheme-handler/zoommtg;x-scheme-handler/zoomus"
|
||||
omarchy-webapp-install "Fizzy" https://app.fizzy.do/ Fizzy.png
|
||||
omarchy-webapp-install "Jellyfin" https://jellyfin.arthurp.fr/ Jellyfin.png
|
||||
omarchy-webapp-install "Immich" https://immich.arthurp.fr/ Immich.png
|
||||
|
||||
@@ -1 +1,64 @@
|
||||
<svg fill="none" height="285" viewBox="0 0 1215 285" width="1215" xmlns="http://www.w3.org/2000/svg"><g fill="#000"><path clip-rule="evenodd" d="m720 120h-15v15h-14.998v14.999l-60.002.001v15.002l90-.002v.002h.002l-.002 89.998h-15v15h-13v15h-17v-89.998h-45v90l-45-.002v-89.998h-14.998v-30h14.998v-15.002h-14.998v-30.001h14.998v-75h15v-14.997h15v-15.002h105.002zm-90-.001h45v-74.997h-45z" fill-rule="evenodd"/><path clip-rule="evenodd" d="m105 30.002h15v14.997h15v180.001h-15v15h-15v15.002h-75v-15.002h-15v-15h-15v-180.001h15v-14.997h15v-15.002h75zm-60 194.998h45v-179.998h-45z" fill-rule="evenodd"/><path d="m300 15h60v15h15v14.999h15v180.001h-15v15h-15v15h-15l-.004-209.998h-44.994v-.002h-.002v210.002h-45v-210h-44.998v179.997h-.002v30.003h-15v-15.002h-15v-15h-14.998v-180.001h14.998v-14.999h15v-15h60v-15h45z"/><path clip-rule="evenodd" d="m555 225h-15v15h-15v15h-15v-105.001l-44.998.001v105.002h-45.002v-105.002h-15v-30.001h15v-75h15.002v-14.997h15v-15.002h105zm-89.998-105.001h44.998v-74.997h-44.998z" fill-rule="evenodd"/><path d="m885 75h-15v15h-15v15h-15v-59.998h-45v179.998h45v-59.998h15v14.997h15v15.001h15v30h-15v15h-15v15.002l-105-.002v-210.001h14.998v-14.997h15.002v-15.002h105z"/><path d="m960 119.999h45v-104.999h15v15h15v14.999h15v75.001h15v15h-15v90h-15v15h-15v15h-15v-105h-45v105.002l-45-.002v-105h-30v-15h15v-15.001h15v-75h15v-14.997h15v-15.002h15z"/><path d="m1125 119.999h45v-104.999h15v15h15v15h15v180h-15v15h-15v15.002l-75-.002v-15h-15v-15h-15v-45.001h15v-14.997-.002h30v60h45v-75h-90v-105.001h15v-14.997h15v-15.002h15z"/></g></svg>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="121.92007mm"
|
||||
height="35.805248mm"
|
||||
viewBox="0 0 121.92009 35.805248"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
id="layer1"
|
||||
transform="translate(-52.873167,-118.10323)">
|
||||
<g
|
||||
id="text1"
|
||||
style="font-size:3.175px;fill:none;stroke-width:0.264999"
|
||||
aria-label=" ▄ ▄ ▄███████ ▄███████ ▄████████▀ ▄█ █▄ ▄██ ██▄ ▄███████ ███ ███ ███ ███ ▀▀▀▀███▀▀ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███ ███ ███▄▄▄██▀ ███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ███ ███ ███▀▀▀▀ ███ ███ ██████████ ███ ███ ███ ███ ███ █████████ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ██▀ ██▀ ███ █▀ ▀█████▀ ███ ██▀ ▀▀▀ ▀ ▀ ▀▀▀ ▀"
|
||||
transform="translate(-19.299906,-5.3691469)">
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 159.80312,125.56788 v -2.0955 h 1.905 v 2.0955 z m 7.62001,0 v -2.0955 h 1.905 v 2.0955 z"
|
||||
id="path29" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 74.078074,129.54624 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905002,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 5.715,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 5.71501,2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 7.62001,0 v -2.0955 h 1.905 v 2.0955 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 7.62001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z"
|
||||
id="path30" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,133.5246 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 5.715004,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.620003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 3.81,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 7.62,2.0955 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z"
|
||||
id="path31" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,137.50296 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 5.715004,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.620003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 11.43,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 11.43001,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z"
|
||||
id="path32" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,141.48132 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905002,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 3.810001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905003,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905003,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 11.43,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 9.52501,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.90501,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 3.81001,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,-2.0955 v -2.0955 h 1.905 v 2.0955 z"
|
||||
id="path33" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,145.45969 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905002,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 3.810001,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905003,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905003,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 15.24001,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,2.0955 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.90501,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z"
|
||||
id="path34" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,149.43805 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 3.810001,0 v -4.191 h 1.905 v 4.191 z m 1.905003,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 11.43,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 11.43001,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z"
|
||||
id="path35" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,153.41641 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 5.715004,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.620003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 11.43,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 11.43001,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 5.71501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z"
|
||||
id="path36" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 72.173073,157.39477 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 7.620005,0 v -4.191 h 1.905 v 4.191 z m 1.905001,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 7.620005,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905001,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.620003,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 11.43,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 11.43001,2.0955 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.90499,0 v -4.191 h 1.905 v 4.191 z m 7.62001,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 9.525,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,2.0955 v -4.191 h 1.905 v 4.191 z m 1.90501,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,-2.0955 v -2.0955 h 1.905 v 2.0955 z m 7.62001,2.0955 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 7.62,0 v -4.191 h 1.905 v 4.191 z m 1.905,0 v -4.191 h 1.905 v 4.191 z m 1.90501,-2.0955 v -2.0955 h 1.905 v 2.0955 z"
|
||||
id="path37" />
|
||||
<path
|
||||
style="font-family:'JetBrainsMono Nerd Font';-inkscape-font-specification:'JetBrainsMono Nerd Font';fill:#000000;stroke-width:0.265"
|
||||
d="m 93.128086,159.27763 v -2.0955 h 1.905 v 2.0955 z m 1.905001,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 7.620003,0 v -2.0955 h 1.905 v 2.0955 z m 15.24001,0 v -2.0955 h 1.905 v 2.0955 z m 57.15004,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 1.905,0 v -2.0955 h 1.905 v 2.0955 z m 7.62,0 v -2.0955 h 1.905 v 2.0955 z"
|
||||
id="path38" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,10 +1,10 @@
|
||||
▄▄▄
|
||||
▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███
|
||||
███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███
|
||||
███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀
|
||||
███ █▀
|
||||
▄ ▄
|
||||
▄███████ ▄███████ ▄████████▀ ▄█ █▄ ▄██ ██▄ ▄███████
|
||||
███ ███ ███ ███ ▀▀▀▀███▀▀ ███ ███ ███ ███ ███ ███
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███ ███ ███▄▄▄██▀
|
||||
███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ███ ███ ███▀▀▀▀
|
||||
███ ███ ██████████ ███ ███ ███ ███ ███ █████████
|
||||
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
|
||||
███ █▀ ███ ██▀ ██▀ ███ █▀ ▀█████▀ ███ ██▀
|
||||
▀▀▀ ▀ ▀ ▀▀▀ ▀
|
||||
@@ -1,5 +1,3 @@
|
||||
set -e
|
||||
|
||||
echo "Enable Bluetooth A2DP auto-connect in WirePlumber"
|
||||
|
||||
destination=~/.config/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf
|
||||
|
||||
@@ -3,10 +3,6 @@ echo "Add cliamp music TUI player (Super+Shift+Alt+M)"
|
||||
if omarchy-pkg-missing cliamp; then
|
||||
omarchy-pkg-add cliamp
|
||||
|
||||
cp ~/.local/share/omarchy/applications/icons/Cliamp.png ~/.local/share/applications/icons/Cliamp.png
|
||||
gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
|
||||
omarchy-tui-install "Cliamp" "cliamp" tile "$HOME/.local/share/applications/icons/Cliamp.png"
|
||||
|
||||
if [[ -f ~/.config/hypr/bindings.conf ]] && ! grep -q "cliamp" ~/.config/hypr/bindings.conf; then
|
||||
sed -i '/^bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify/a bindd = SUPER SHIFT ALT, M, Music TUI, exec, omarchy-launch-or-focus-tui cliamp' ~/.config/hypr/bindings.conf
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
echo "Move Dell XPS touchpad haptics into the packaged service"
|
||||
|
||||
if omarchy-hw-dell-xps-haptic-touchpad; then
|
||||
sudo systemctl disable --now dell-xps-haptic-touchpad.service 2>/dev/null || true
|
||||
sudo rm -f /etc/systemd/system/dell-xps-haptic-touchpad.service
|
||||
sudo rm -f /etc/systemd/system/multi-user.target.wants/dell-xps-haptic-touchpad.service
|
||||
sudo rm -rf /etc/systemd/system/dell-xps-haptic-touchpad.service.d
|
||||
sudo rm -f /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules
|
||||
sudo rm -f /etc/omarchy-dell-haptic-touchpad.env
|
||||
sudo systemctl daemon-reload
|
||||
sudo udevadm control --reload-rules
|
||||
|
||||
source "$OMARCHY_PATH/install/packaging/dell-xps-touchpad-haptics.sh"
|
||||
fi
|
||||
@@ -6,7 +6,7 @@ WAYBAR_STYLE="$HOME/.config/waybar/style.css"
|
||||
if [[ -f $WAYBAR_CONFIG ]]; then
|
||||
if ! grep -q '"custom/weather"' "$WAYBAR_CONFIG"; then
|
||||
sed -i 's/"modules-center": \["clock",/"modules-center": ["clock", "custom\/weather",/' "$WAYBAR_CONFIG"
|
||||
sed -i '/"network": {/i\ "custom/weather": {\n "exec": "$OMARCHY_PATH/default/waybar/weather.sh",\n "return-type": "json",\n "interval": 600,\n "tooltip": false,\n "on-click": "notify-send -u low \\"$(omarchy-weather-status)\\""\n },' "$WAYBAR_CONFIG"
|
||||
sed -i '/"network": {/i\ "custom/weather": {\n "exec": "$OMARCHY_PATH/default/waybar/weather.sh",\n "return-type": "json",\n "interval": 60,\n "tooltip": false,\n "on-click": "notify-send -u low \\"$(omarchy-weather-status)\\""\n },' "$WAYBAR_CONFIG"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
echo "Remove VAAPI GL video feature flags from Chromium-based browser configs to prevent crashing on some machines"
|
||||
|
||||
remove_chromium_vaapi_features() {
|
||||
local file=$1
|
||||
|
||||
[[ -f $file ]] || return 0
|
||||
|
||||
sed -i --follow-symlinks \
|
||||
-e '/^--enable-features=/ s/VaapiVideoDecodeLinuxGL//g' \
|
||||
-e '/^--enable-features=/ s/VaapiVideoEncoder//g' \
|
||||
-e '/^--enable-features=/ s/,,*/,/g' \
|
||||
-e '/^--enable-features=/ s/=,/=/' \
|
||||
-e '/^--enable-features=/ s/,$//' \
|
||||
-e '/^--enable-features=$/d' \
|
||||
"$file"
|
||||
}
|
||||
|
||||
for flags_file in "$HOME"/.config/{chromium,chrome,google-chrome,google-chrome-beta,google-chrome-unstable,brave,brave-beta,brave-nightly,brave-origin-beta,microsoft-edge-stable,microsoft-edge-beta,microsoft-edge-dev,vivaldi-stable,vivaldi-snapshot,opera,opera-beta,opera-developer}-flags.conf; do
|
||||
remove_chromium_vaapi_features "$flags_file"
|
||||
done
|
||||
@@ -0,0 +1,4 @@
|
||||
echo "Remove Omarchy cliamp desktop stub and icon (replace by package inclusion)"
|
||||
|
||||
rm -f ~/.local/share/applications/Cliamp.desktop
|
||||
rm -f ~/.local/share/applications/icons/Cliamp.png
|
||||
@@ -0,0 +1,11 @@
|
||||
echo "Update elephant symbols paste shortcut for Hyprland 0.55"
|
||||
|
||||
symbols_config=~/.config/elephant/symbols.toml
|
||||
|
||||
if [[ -f $symbols_config ]]; then
|
||||
sed -i 's/hyprctl dispatch sendshortcut "SHIFT, Insert,"/hyprctl dispatch sendshortcut "SHIFT,Insert,activewindow"/' "$symbols_config"
|
||||
else
|
||||
omarchy-refresh-config elephant/symbols.toml
|
||||
fi
|
||||
|
||||
omarchy-restart-walker
|
||||
@@ -69,8 +69,8 @@ pass "fallback commands are inferred and documented"
|
||||
"$CLI" commands --all --json | jq -e '.commands[] | select(.route == "omarchy dev benchmark")' >/dev/null
|
||||
pass "benchmark command is discoverable in all commands"
|
||||
|
||||
"$CLI" commands --json | jq -e '.commands[] | select(.binary == "omarchy-pkg-add" and .route == "omarchy install package" and .filename_route == "omarchy pkg add" and (.routes | index("omarchy pkg add")))' >/dev/null
|
||||
pass "JSON exposes canonical and filename-derived routes"
|
||||
"$CLI" commands --json | jq -e '.commands[] | select(.binary == "omarchy-pkg-add" and .route == "omarchy pkg add" and .filename_route == "omarchy pkg add" and (.routes | index("omarchy pkg add")))' >/dev/null
|
||||
pass "JSON exposes direct pkg add route"
|
||||
|
||||
"$CLI" commands --json | jq -e '.commands[] | select(.binary == "omarchy-refresh-pacman" and .requires_sudo == true)' >/dev/null
|
||||
pass "sudo metadata marks sudo commands"
|
||||
@@ -79,11 +79,12 @@ output=$("$CLI" theme --help)
|
||||
assert_output_contains "group help renders" "$output" "Theme commands"
|
||||
|
||||
output=$("$CLI" install --help)
|
||||
assert_output_contains "install group help renders" "$output" "omarchy install package <packages...>"
|
||||
assert_output_contains "install group help renders" "$output" "Install commands"
|
||||
assert_output_contains "install group includes browser route" "$output" "omarchy install browser"
|
||||
|
||||
output=$("$CLI" install)
|
||||
assert_output_contains "bare group renders help instead of picker" "$output" "Install commands"
|
||||
assert_output_contains "bare group includes package route" "$output" "omarchy install package <packages...>"
|
||||
assert_output_contains "bare group includes browser route" "$output" "omarchy install browser"
|
||||
|
||||
output=$("$CLI" toggle)
|
||||
assert_output_contains "bare root command with children renders help" "$output" "Toggle commands"
|
||||
@@ -166,8 +167,8 @@ assert_output_contains "root alias resolves to command help" "$output" "omarchy-
|
||||
pass "aliases are included in JSON metadata"
|
||||
|
||||
output=$("$CLI" pkg add --help)
|
||||
assert_output_contains "fallback route resolves to curated metadata" "$output" "omarchy-pkg-add"
|
||||
assert_output_contains "fallback route shows canonical route" "$output" "omarchy install package <packages...>"
|
||||
assert_output_contains "pkg add help resolves" "$output" "omarchy-pkg-add"
|
||||
assert_output_contains "pkg add help shows direct route" "$output" "omarchy pkg add <packages...>"
|
||||
|
||||
output=$("$CLI" system reboot --help)
|
||||
assert_output_contains "system command help is safe" "$output" "omarchy-system-reboot"
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Rainy-Night
|
||||
- Install
|
||||
```bash
|
||||
omarchy-theme-install https://github.com/atif-1402/omarchy-rainynight-theme.git
|
||||
```
|
||||
|
||||
<img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/69fc99b8-d387-43a9-b0e8-47231c7379c4" />
|
||||
<img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/c22416db-8bfc-46b6-8e2b-06d82f3e70ef" />
|
||||
<img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/919139ab-baef-4084-8ca6-dba9f56287a5" />
|
||||
@@ -0,0 +1,190 @@
|
||||
/* Aether Theme Override Template
|
||||
* This file is automatically generated and copied to ~/.config/aether/theme.override.css
|
||||
* when you apply a theme in Aether.
|
||||
*
|
||||
* Generated from palette colors selected in Aether
|
||||
*/
|
||||
|
||||
/* Dynamic Color Palette */
|
||||
@define-color background #1e1e2e;
|
||||
@define-color foreground #cdd6f4;
|
||||
|
||||
@define-color color0 #45475a;
|
||||
@define-color color1 #f38ba8;
|
||||
@define-color color2 #a6e3a1;
|
||||
@define-color color3 #f9e2af;
|
||||
@define-color color4 #89b4fa;
|
||||
@define-color color5 #cba6f7;
|
||||
@define-color color6 #94e2d5;
|
||||
@define-color color7 #bac2de;
|
||||
@define-color color8 #585b70;
|
||||
@define-color color9 #f38ba8;
|
||||
@define-color color10 #a6e3a1;
|
||||
@define-color color11 #f9e2af;
|
||||
@define-color color12 #89b4fa;
|
||||
@define-color color13 #cba6f7;
|
||||
@define-color color14 #94e2d5;
|
||||
@define-color color15 #cdd6f4;
|
||||
|
||||
/* Base GTK theme variables */
|
||||
@define-color theme_bg_color @background;
|
||||
@define-color theme_fg_color @foreground;
|
||||
@define-color theme_base_color @background;
|
||||
@define-color theme_text_color @foreground;
|
||||
@define-color theme_selected_bg_color @color4;
|
||||
@define-color theme_selected_fg_color @background;
|
||||
@define-color insensitive_bg_color alpha(@background, 0.5);
|
||||
@define-color insensitive_fg_color alpha(@foreground, 0.5);
|
||||
@define-color insensitive_base_color @background;
|
||||
@define-color theme_unfocused_bg_color @background;
|
||||
@define-color theme_unfocused_fg_color @foreground;
|
||||
@define-color theme_unfocused_base_color @background;
|
||||
@define-color theme_unfocused_text_color @foreground;
|
||||
@define-color theme_unfocused_selected_bg_color @color4;
|
||||
@define-color theme_unfocused_selected_fg_color @background;
|
||||
|
||||
/* Adwaita Color Overrides */
|
||||
@define-color accent_bg_color @color4;
|
||||
@define-color accent_fg_color @color15;
|
||||
@define-color accent_color @color6;
|
||||
|
||||
@define-color window_bg_color @background;
|
||||
@define-color window_fg_color @foreground;
|
||||
|
||||
/* Sidebar background and content */
|
||||
@define-color view_bg_color @background;
|
||||
@define-color view_fg_color @foreground;
|
||||
@define-color sidebar_bg_color @background;
|
||||
@define-color sidebar_fg_color @foreground;
|
||||
@define-color sidebar_backdrop_color @background;
|
||||
@define-color sidebar_shade_color @background;
|
||||
|
||||
@define-color headerbar_bg_color alpha(@foreground, 0.05);
|
||||
@define-color headerbar_fg_color @foreground;
|
||||
@define-color headerbar_backdrop_color @background;
|
||||
@define-color headerbar_shade_color @background;
|
||||
@define-color headerbar_border_color alpha(@foreground, 0.15);
|
||||
|
||||
@define-color card_bg_color alpha(@foreground, 0.03);
|
||||
@define-color card_fg_color @foreground;
|
||||
@define-color card_shade_color @background;
|
||||
|
||||
@define-color thumbnail_bg_color @background;
|
||||
@define-color thumbnail_fg_color @foreground;
|
||||
|
||||
@define-color shade_color @background;
|
||||
@define-color scrollbar_outline_color @background;
|
||||
|
||||
@define-color popover_bg_color @background;
|
||||
@define-color popover_fg_color @foreground;
|
||||
|
||||
@define-color dialog_bg_color @background;
|
||||
@define-color dialog_fg_color @foreground;
|
||||
|
||||
@define-color destructive_bg_color @color1;
|
||||
@define-color destructive_fg_color @color15;
|
||||
|
||||
@define-color success_bg_color @color2;
|
||||
@define-color success_fg_color @color15;
|
||||
|
||||
@define-color warning_bg_color @color3;
|
||||
@define-color warning_fg_color @color15;
|
||||
|
||||
@define-color error_bg_color @color1;
|
||||
@define-color error_fg_color @color15;
|
||||
|
||||
@define-color borders alpha(@foreground, 0.15);
|
||||
|
||||
/* Additional bg/fg color variables */
|
||||
@define-color window_backdrop_color @background;
|
||||
@define-color view_backdrop_color @background;
|
||||
|
||||
@define-color menu_bg_color @background;
|
||||
@define-color menu_fg_color @foreground;
|
||||
|
||||
@define-color entry_bg_color alpha(@foreground, 0.03);
|
||||
@define-color entry_fg_color @foreground;
|
||||
|
||||
@define-color button_bg_color alpha(@foreground, 0.05);
|
||||
@define-color button_fg_color @foreground;
|
||||
|
||||
@define-color tooltip_bg_color @background;
|
||||
@define-color tooltip_fg_color @foreground;
|
||||
@define-color tooltip_border_color alpha(@foreground, 0.15);
|
||||
|
||||
@define-color osd_bg_color @background;
|
||||
@define-color osd_fg_color @foreground;
|
||||
@define-color osd_border_color alpha(@foreground, 0.15);
|
||||
|
||||
@define-color filechooser_bg_color @background;
|
||||
@define-color filechooser_fg_color @foreground;
|
||||
|
||||
@define-color nautilus_window_bg_color @background;
|
||||
@define-color nautilus_window_fg_color @foreground;
|
||||
|
||||
/* Portal/native dialog colors */
|
||||
@define-color portal_bg_color @background;
|
||||
@define-color portal_fg_color @foreground;
|
||||
|
||||
/* Gtk.FileDialog uses these in GTK4 */
|
||||
@define-color filedialog_bg_color @background;
|
||||
@define-color filedialog_fg_color @foreground;
|
||||
|
||||
/* Dropdown/ComboBox colors */
|
||||
@define-color dropdown_bg_color @background;
|
||||
@define-color dropdown_fg_color @foreground;
|
||||
@define-color dropdown_hover_bg_color alpha(@color4, 0.3);
|
||||
@define-color dropdown_selected_bg_color @color4;
|
||||
@define-color dropdown_selected_fg_color @background;
|
||||
|
||||
/* Pathbar/Breadcrumb colors */
|
||||
@define-color pathbar_bg_color @background;
|
||||
@define-color pathbar_fg_color @foreground;
|
||||
|
||||
/* Toolbar colors */
|
||||
@define-color toolbar_bg_color @background;
|
||||
@define-color toolbar_fg_color @foreground;
|
||||
|
||||
/* Notebook/Tab colors */
|
||||
@define-color notebook_bg_color @background;
|
||||
@define-color notebook_fg_color @foreground;
|
||||
|
||||
/* Scrollbar colors */
|
||||
@define-color scrollbar_slider_color alpha(@foreground, 0.3);
|
||||
@define-color scrollbar_slider_hover_color alpha(@foreground, 0.5);
|
||||
@define-color scrollbar_slider_active_color @foreground;
|
||||
|
||||
/* Treeview/Listview colors */
|
||||
@define-color treeview_bg_color @background;
|
||||
@define-color treeview_fg_color @foreground;
|
||||
|
||||
/* Link colors */
|
||||
@define-color link_color @color4;
|
||||
@define-color link_visited_color @color5;
|
||||
|
||||
/* Selection colors (for text selection, etc) */
|
||||
@define-color selection_bg_color @color4;
|
||||
@define-color selection_fg_color @background;
|
||||
|
||||
/* Content view (file browser grid/list) */
|
||||
@define-color content_view_bg @background;
|
||||
@define-color content_view_fg @foreground;
|
||||
|
||||
/* Placeholder text in entries */
|
||||
@define-color placeholder_text_color alpha(@foreground, 0.5);
|
||||
|
||||
/* Dim label */
|
||||
@define-color dim_label_color alpha(@foreground, 0.55);
|
||||
|
||||
|
||||
/* SVG Icons - recolor to match foreground text */
|
||||
.svg-icon {
|
||||
filter: invert(79%) sepia(18%) saturate(611%) hue-rotate(192deg)
|
||||
brightness(103%) contrast(94%);
|
||||
}
|
||||
|
||||
/* Sharp corners, Hyprland-inspired */
|
||||
* {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
[colors]
|
||||
[colors.primary]
|
||||
background = "#1e1e2e"
|
||||
foreground = "#cdd6f4"
|
||||
|
||||
[colors.normal]
|
||||
black = "#45475a"
|
||||
red = "#f38ba8"
|
||||
green = "#a6e3a1"
|
||||
yellow = "#f9e2af"
|
||||
blue = "#89b4fa"
|
||||
magenta = "#cba6f7"
|
||||
cyan = "#94e2d5"
|
||||
white = "#bac2de"
|
||||
|
||||
[colors.bright]
|
||||
black = "#585b70"
|
||||
red = "#f38ba8"
|
||||
green = "#a6e3a1"
|
||||
yellow = "#f9e2af"
|
||||
blue = "#89b4fa"
|
||||
magenta = "#cba6f7"
|
||||
cyan = "#94e2d5"
|
||||
white = "#cdd6f4"
|
||||
|
||||
[colors.cursor]
|
||||
text = "#1e1e2e"
|
||||
cursor = "#cdd6f4"
|
||||
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
@@ -0,0 +1,69 @@
|
||||
# ────────────────────────────────────────────────────────────
|
||||
# BTOP THEME — Rainy Night City (matches your wallpaper)
|
||||
# ────────────────────────────────────────────────────────────
|
||||
|
||||
# Transparent / dark night background
|
||||
theme[main_bg]="#1e2030"
|
||||
|
||||
# Main text – soft grey-blue (city lights)
|
||||
theme[main_fg]="#cdd3e1"
|
||||
|
||||
# Titles – light blue highlight (lamp glow)
|
||||
theme[title]="#d6e7ff"
|
||||
|
||||
# Highlight text – muted light grey-blue
|
||||
theme[hi_fg]="#bfc6d4"
|
||||
|
||||
# Selected row – deeper night shade
|
||||
theme[selected_bg]="#14151f"
|
||||
|
||||
# Selected row text – bright white-blue
|
||||
theme[selected_fg]="#e8f1ff"
|
||||
|
||||
# Inactive/dim text – distant-building grey
|
||||
theme[inactive_fg]="#7d8291"
|
||||
|
||||
# Misc text – light city grey
|
||||
theme[proc_misc]="#bfc6d4"
|
||||
|
||||
# Box outlines – subtle bluish-grey (window frame color)
|
||||
theme[cpu_box]="#292b3b"
|
||||
theme[mem_box]="#292b3b"
|
||||
theme[net_box]="#292b3b"
|
||||
theme[proc_box]="#292b3b"
|
||||
|
||||
# Divider lines – same subtle outline tone
|
||||
theme[div_line]="#292b3b"
|
||||
|
||||
# Graph gradients – smooth blue-grey (rain & neon reflections)
|
||||
theme[temp_start]="#4a4f65"
|
||||
theme[temp_mid]="#8c92a3"
|
||||
theme[temp_end]="#d6e7ff"
|
||||
|
||||
theme[cpu_start]="#4a4f65"
|
||||
theme[cpu_mid]="#8c92a3"
|
||||
theme[cpu_end]="#d6e7ff"
|
||||
|
||||
theme[free_start]="#4a4f65"
|
||||
theme[free_mid]="#8c92a3"
|
||||
theme[free_end]="#d6e7ff"
|
||||
|
||||
theme[cached_start]="#4a4f65"
|
||||
theme[cached_mid]="#8c92a3"
|
||||
theme[cached_end]="#d6e7ff"
|
||||
|
||||
theme[available_start]="#4a4f65"
|
||||
theme[available_mid]="#8c92a3"
|
||||
theme[available_end]="#d6e7ff"
|
||||
|
||||
theme[used_start]="#4a4f65"
|
||||
theme[used_mid]="#8c92a3"
|
||||
theme[used_end]="#d6e7ff"
|
||||
|
||||
theme[download_start]="#4a4f65"
|
||||
theme[download_mid]="#8c92a3"
|
||||
theme[download_end]="#d6e7ff"
|
||||
|
||||
theme[upload_start]="#4a4f65"
|
||||
theme[upload_mid]="#8c92a3"
|
||||
theme[upload_end]="#d6e7ff"
|
||||
@@ -0,0 +1,11 @@
|
||||
[color]
|
||||
gradient = 1
|
||||
gradient_count = 8
|
||||
gradient_color_1 = '#91e3e1'
|
||||
gradient_color_2 = '#a7aaaf'
|
||||
gradient_color_3 = '#d7d8db'
|
||||
gradient_color_4 = '#e382d2'
|
||||
gradient_color_5 = '#f6cbee'
|
||||
gradient_color_6 = '#d9f7f6'
|
||||
gradient_color_7 = '#f6cbee'
|
||||
gradient_color_8 = '#91e3e1'
|
||||
@@ -0,0 +1 @@
|
||||
30, 32, 48
|
||||
@@ -0,0 +1,23 @@
|
||||
accent = "#89b4fa"
|
||||
cursor = "#cdd6f4"
|
||||
foreground = "#cdd6f4"
|
||||
background = "#1e1e2e"
|
||||
selection_foreground = "#e8f1ff"
|
||||
selection_background = "#292b3b"
|
||||
|
||||
color0 = "#45475a"
|
||||
color1 = "#f38ba8"
|
||||
color2 = "#a6e3a1"
|
||||
color3 = "#f9e2af"
|
||||
color4 = "#89b4fa"
|
||||
color5 = "#cba6f7"
|
||||
color6 = "#94e2d5"
|
||||
color7 = "#bac2de"
|
||||
color8 = "#585b70"
|
||||
color9 = "#f38ba8"
|
||||
color10 = "#a6e3a1"
|
||||
color11 = "#f9e2af"
|
||||
color12 = "#89b4fa"
|
||||
color13 = "#cba6f7"
|
||||
color14 = "#94e2d5"
|
||||
color15 = "#cdd6f4"
|
||||
@@ -0,0 +1,23 @@
|
||||
# Background and foreground colors
|
||||
background = #1e1e2e
|
||||
foreground = #cdd6f4
|
||||
|
||||
# Standard colors
|
||||
palette = 0=#45475a
|
||||
palette = 1=#f38ba8
|
||||
palette = 2=#a6e3a1
|
||||
palette = 3=#f9e2af
|
||||
palette = 4=#89b4fa
|
||||
palette = 5=#cba6f7
|
||||
palette = 6=#94e2d5
|
||||
palette = 7=#bac2de
|
||||
|
||||
# Bright colors
|
||||
palette = 8=#585b70
|
||||
palette = 9=#f38ba8
|
||||
palette = 10=#a6e3a1
|
||||
palette = 11=#f9e2af
|
||||
palette = 12=#89b4fa
|
||||
palette = 13=#cba6f7
|
||||
palette = 14=#94e2d5
|
||||
palette = 15=#cdd6f4
|
||||
@@ -0,0 +1,166 @@
|
||||
@define-color background #160D16;
|
||||
@define-color foreground #fef9f3;
|
||||
@define-color black #160D16;
|
||||
@define-color red #fe4d2a;
|
||||
@define-color green #83bc7b;
|
||||
@define-color yellow #f7f24f;
|
||||
@define-color blue #a7aaaf;
|
||||
@define-color magenta #e382d2;
|
||||
@define-color cyan #91e3e1;
|
||||
@define-color white #F6C9A0;
|
||||
@define-color bright_black #4d3c4d;
|
||||
@define-color bright_red #ff9985;
|
||||
@define-color bright_green #bbddb6;
|
||||
@define-color bright_yellow #fffca3;
|
||||
@define-color bright_blue #d7d8db;
|
||||
@define-color bright_magenta #f6cbee;
|
||||
@define-color bright_cyan #d9f7f6;
|
||||
@define-color bright_white #fef9f3;
|
||||
|
||||
@define-color accent_bg_color @blue;
|
||||
@define-color accent_fg_color @background;
|
||||
@define-color accent_color @cyan;
|
||||
|
||||
@define-color window_bg_color @background;
|
||||
@define-color window_fg_color @foreground;
|
||||
|
||||
@define-color view_bg_color @black;
|
||||
@define-color view_fg_color @foreground;
|
||||
@define-color sidebar_bg_color @black;
|
||||
@define-color sidebar_fg_color @foreground;
|
||||
@define-color sidebar_backdrop_color @black;
|
||||
@define-color sidebar_shade_color @black;
|
||||
|
||||
@define-color headerbar_bg_color @background;
|
||||
@define-color headerbar_fg_color @foreground;
|
||||
@define-color headerbar_backdrop_color @black;
|
||||
@define-color headerbar_shade_color @black;
|
||||
@define-color card_bg_color @background;
|
||||
@define-color card_fg_color @foreground;
|
||||
|
||||
@define-color popover_bg_color @black;
|
||||
@define-color popover_fg_color @foreground;
|
||||
|
||||
@define-color destructive_bg_color @red;
|
||||
@define-color destructive_fg_color @background;
|
||||
|
||||
@define-color success_bg_color @green;
|
||||
@define-color success_fg_color @background;
|
||||
|
||||
@define-color warning_bg_color @yellow;
|
||||
@define-color warning_fg_color @background;
|
||||
|
||||
@define-color error_bg_color @red;
|
||||
@define-color error_fg_color @background;
|
||||
|
||||
@define-color dialog_bg_color @background;
|
||||
@define-color dialog_fg_color @foreground;
|
||||
|
||||
@define-color borders alpha(@foreground, 0.1);
|
||||
|
||||
@define-color theme_fg_color @foreground;
|
||||
@define-color theme_text_color @foreground;
|
||||
@define-color theme_bg_color @background;
|
||||
@define-color theme_base_color @black;
|
||||
@define-color theme_selected_bg_color @blue;
|
||||
@define-color theme_selected_fg_color @background;
|
||||
@define-color insensitive_bg_color @background;
|
||||
@define-color insensitive_fg_color @bright_black;
|
||||
@define-color insensitive_base_color @black;
|
||||
@define-color theme_unfocused_fg_color @foreground;
|
||||
@define-color theme_unfocused_text_color @foreground;
|
||||
@define-color theme_unfocused_bg_color @background;
|
||||
@define-color theme_unfocused_base_color @black;
|
||||
@define-color theme_unfocused_selected_bg_color @blue;
|
||||
@define-color theme_unfocused_selected_fg_color @background;
|
||||
@define-color unfocused_insensitive_color @bright_black;
|
||||
@define-color unfocused_borders alpha(@foreground, 0.1);
|
||||
@define-color warning_color @yellow;
|
||||
@define-color error_color @red;
|
||||
@define-color success_color @green;
|
||||
@define-color destructive_color @red;
|
||||
|
||||
@define-color content_view_bg @black;
|
||||
@define-color text_view_bg @black;
|
||||
|
||||
messagedialog {
|
||||
background-color: @dialog_bg_color;
|
||||
}
|
||||
|
||||
messagedialog label {
|
||||
color: @dialog_fg_color;
|
||||
font-size: 14pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
messagedialog .secondary-text {
|
||||
font-size: 10pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
messagedialog button {
|
||||
background-color: @black;
|
||||
color: @foreground;
|
||||
border: 1px solid @bright_black;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
messagedialog button:hover {
|
||||
background-color: @blue;
|
||||
}
|
||||
|
||||
banner revealer widget {
|
||||
background: @bright_black;
|
||||
padding: 5px;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
alertdialog.background {
|
||||
background-color: @dialog_bg_color;
|
||||
color: @dialog_fg_color;
|
||||
}
|
||||
|
||||
alertdialog .titlebar {
|
||||
background-color: @headerbar_bg_color;
|
||||
color: @headerbar_fg_color;
|
||||
}
|
||||
|
||||
alertdialog box {
|
||||
background-color: @dialog_bg_color;
|
||||
}
|
||||
|
||||
alertdialog label {
|
||||
color: @dialog_fg_color;
|
||||
}
|
||||
|
||||
filechooser .dialog-action-box {
|
||||
border-top: 1px solid @bright_black;
|
||||
}
|
||||
|
||||
filechooser .dialog-action-box:backdrop {
|
||||
border-top-color: @black;
|
||||
}
|
||||
|
||||
filechooser #pathbarbox {
|
||||
border-bottom: 1px solid @bright_black;
|
||||
}
|
||||
|
||||
filechooserbutton:drop(active) {
|
||||
box-shadow: none;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
toast {
|
||||
background-color: @black;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
toast button.circular.flat.image-button:hover {
|
||||
color: @background;
|
||||
background-color: @red;
|
||||
}
|
||||
|
||||
.svg-icon {
|
||||
filter: invert(79%) sepia(18%) saturate(611%) hue-rotate(192deg)
|
||||
brightness(103%) contrast(94%);
|
||||
}
|
||||