mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-02 12:47:49 +02:00
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
82b1c62d55 | ||
|
|
bbd2ddda2a | ||
|
|
c8ce3187b4 | ||
|
|
0152e18656 | ||
|
|
df300a3b31 | ||
|
|
706806728f |
@@ -82,7 +82,6 @@ Use these instead of raw shell commands:
|
||||
- `omarchy-cmd-missing` / `omarchy-cmd-present` - check for commands
|
||||
- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages
|
||||
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
|
||||
- `omarchy-notification-send` - send desktop notifications; do not call `notify-send` directly
|
||||
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
||||
|
||||
Exceptions are allowed for bootstrap, preflight, migration, and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.
|
||||
@@ -93,10 +92,6 @@ 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:
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
@@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
@@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
@@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
@@ -1,2 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB |
@@ -29,7 +29,6 @@ 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"
|
||||
@@ -40,14 +39,12 @@ GROUP_DESCRIPTIONS[default]="Default application selection"
|
||||
GROUP_DESCRIPTIONS[dev]="Omarchy development tools"
|
||||
GROUP_DESCRIPTIONS[drive]="Drive selection and encryption"
|
||||
GROUP_DESCRIPTIONS[font]="Font management"
|
||||
GROUP_DESCRIPTIONS[games]="Game launchers and helpers"
|
||||
GROUP_DESCRIPTIONS[hibernation]="Hibernation setup and removal"
|
||||
GROUP_DESCRIPTIONS[hook]="User hook runner"
|
||||
GROUP_DESCRIPTIONS[hw]="Hardware detection and controls"
|
||||
GROUP_DESCRIPTIONS[hyprland]="Hyprland window, monitor, and toggle controls"
|
||||
GROUP_DESCRIPTIONS[install]="Optional software installers"
|
||||
GROUP_DESCRIPTIONS[launch]="Application launchers"
|
||||
GROUP_DESCRIPTIONS[mako]="Mako notification controls"
|
||||
GROUP_DESCRIPTIONS[menu]="Omarchy menu commands"
|
||||
GROUP_DESCRIPTIONS[migrate]="Migration runner"
|
||||
GROUP_DESCRIPTIONS[notification]="Notification helpers"
|
||||
@@ -57,13 +54,11 @@ GROUP_DESCRIPTIONS[plymouth]="Plymouth boot theme management"
|
||||
GROUP_DESCRIPTIONS[powerprofiles]="Power profile management"
|
||||
GROUP_DESCRIPTIONS[refresh]="Reset config to defaults"
|
||||
GROUP_DESCRIPTIONS[reinstall]="Reinstall and reset workflows"
|
||||
GROUP_DESCRIPTIONS[reminder]="Desktop notification reminders"
|
||||
GROUP_DESCRIPTIONS[remove]="Removal workflows"
|
||||
GROUP_DESCRIPTIONS[restart]="Restart Omarchy components"
|
||||
GROUP_DESCRIPTIONS[setup]="Interactive setup wizards"
|
||||
GROUP_DESCRIPTIONS[screensaver]="Screensaver branding and animation"
|
||||
GROUP_DESCRIPTIONS[snapshot]="System snapshots"
|
||||
GROUP_DESCRIPTIONS[style]="Global UI style controls"
|
||||
GROUP_DESCRIPTIONS[sudo]="Sudo configuration helpers"
|
||||
GROUP_DESCRIPTIONS[swayosd]="SwayOSD status display helpers"
|
||||
GROUP_DESCRIPTIONS[system]="Reboot, shutdown, logout, and lock"
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/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
|
||||
|
||||
SOURCE_DIR="${XDG_PICTURES_DIR:-$HOME/Pictures}"
|
||||
|
||||
case "${1:-}" in
|
||||
image)
|
||||
image=$(omarchy-menu-file "Pick png/svg from $SOURCE_DIR" "${SOURCE_DIR}" "svg png")
|
||||
if [[ -n $image ]] && omarchy-transcode-ascii "$image" ~/.config/omarchy/branding/about.txt --width 54 --height 26; 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
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/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
|
||||
|
||||
SOURCE_DIR="${XDG_PICTURES_DIR:-$HOME/Pictures}"
|
||||
|
||||
case "${1:-}" in
|
||||
image)
|
||||
image=$(omarchy-menu-file "Pick png/svg from $SOURCE_DIR" "${SOURCE_DIR}" "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,7 +233,6 @@ 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|save] [--editor=<name>]
|
||||
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy] [--editor=<name>]
|
||||
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
|
||||
# omarchy:aliases=omarchy screenshot
|
||||
|
||||
@@ -126,22 +126,14 @@ esac
|
||||
FILENAME="screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
FILEPATH="$OUTPUT_DIR/$FILENAME"
|
||||
|
||||
case "$PROCESSING" in
|
||||
slurp)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
wl-copy <"$FILEPATH"
|
||||
if [[ $PROCESSING == "slurp" ]]; then
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
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"
|
||||
) >/dev/null 2>&1 &
|
||||
;;
|
||||
copy)
|
||||
grim -g "$SELECTION" - | wl-copy
|
||||
;;
|
||||
save)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
;;
|
||||
esac
|
||||
(
|
||||
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
|
||||
|
||||
@@ -25,7 +25,7 @@ brave) desktop_id="brave-browser.desktop"; name="Brave"; glyph="" ;;
|
||||
brave-origin) desktop_id="brave-origin-beta.desktop"; name="Brave Origin"; glyph="" ;;
|
||||
edge) desktop_id="microsoft-edge.desktop"; name="Edge"; glyph="" ;;
|
||||
firefox) desktop_id="firefox.desktop"; name="Firefox"; glyph="" ;;
|
||||
zen) desktop_id="zen.desktop"; name="Zen"; glyph="" ;;
|
||||
zen) desktop_id="zen.desktop"; name="Zen"; glyph="" ;;
|
||||
*)
|
||||
echo "Usage: omarchy-default-browser <chromium|chrome|brave|brave-origin|edge|firefox|zen>"
|
||||
exit 1
|
||||
|
||||
@@ -12,7 +12,7 @@ fi
|
||||
case "$1" in
|
||||
code) editor="code"; name="VSCode"; glyph="" ;;
|
||||
cursor) editor="cursor"; name="Cursor"; glyph="" ;;
|
||||
zed | zeditor) editor="zeditor"; name="Zed"; glyph="" ;;
|
||||
zed) editor="zed"; name="Zed"; glyph="" ;;
|
||||
sublime_text) editor="sublime_text"; name="Sublime Text"; glyph="" ;;
|
||||
helix) editor="helix"; name="Helix"; glyph="" ;;
|
||||
vim) editor="vim"; name="Vim"; glyph="" ;;
|
||||
|
||||
@@ -16,8 +16,6 @@ if [[ -f $FIRST_RUN_MODE ]]; then
|
||||
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/gdk-scale.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/swayosd.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/gtk-primary-paste.sh"
|
||||
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
|
||||
omarchy-hook-install post-update "$OMARCHY_PATH/install/first-run/install-voxtype.hook"
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=List installed RetroArch core names
|
||||
|
||||
set -e
|
||||
|
||||
core_dir="/usr/lib/libretro"
|
||||
preferred_cores=(
|
||||
"Amstrad CPC|cap32"
|
||||
"Arcade FBNeo|fbneo"
|
||||
"Arcade MAME|mame"
|
||||
"Commodore Amiga|puae"
|
||||
"Commodore C128|vice_x128"
|
||||
"Commodore C64|vice_x64"
|
||||
"Commodore VIC-20|vice_xvic"
|
||||
"Nintendo DS|desmume"
|
||||
"Nintendo Game Boy / Color|gambatte"
|
||||
"Nintendo Game Boy Advance|mgba"
|
||||
"Nintendo GameCube / Wii|dolphin"
|
||||
"Nintendo NES / Famicom|mesen"
|
||||
"Nintendo 64|parallel_n64"
|
||||
"Nintendo SNES / SFC|snes9x"
|
||||
"NEC PC Engine / TurboGrafx-16|mednafen_pce_fast"
|
||||
"NEC PC Engine CD / TurboGrafx-CD|mednafen_pce"
|
||||
"NEC PC Engine SuperGrafx|mednafen_supergrafx"
|
||||
"Sega Dreamcast|flycast"
|
||||
"Sega Mega Drive / Master System / Game Gear|genesis_plus_gx"
|
||||
"Sega Saturn|kronos"
|
||||
"Sony PlayStation|mednafen_psx_hw"
|
||||
"Sony PlayStation Portable|ppsspp"
|
||||
)
|
||||
|
||||
[[ -d $core_dir ]] || exit 0
|
||||
|
||||
for preferred_core in "${preferred_cores[@]}"; do
|
||||
label="${preferred_core%%|*}"
|
||||
core="${preferred_core#*|}"
|
||||
[[ -f $core_dir/${core}_libretro.so ]] && printf '%s (%s)\n' "$label" "$core"
|
||||
done
|
||||
@@ -1,76 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Create a desktop launcher for a RetroArch game
|
||||
# omarchy:args=[core path-to-game]
|
||||
# omarchy:examples=omarchy games retro install snes9x ~/Games/roms/snes/game.sfc | omarchy-games-retro-install /usr/lib/libretro/mgba_libretro.so ~/Games/roms/gba/game.gba
|
||||
|
||||
set -e
|
||||
|
||||
if (( $# == 0 )); then
|
||||
mapfile -t cores < <(omarchy-games-retro-cores)
|
||||
|
||||
if (( ${#cores[@]} == 0 )); then
|
||||
omarchy-notification-send -g "" "No RetroArch cores found" "/usr/lib/libretro"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
core=$(omarchy-menu-select "RetroArch core" "${cores[@]}") || exit 0
|
||||
[[ -n $core ]] || exit 0
|
||||
core="${core##*(}"
|
||||
core="${core%)}"
|
||||
|
||||
game_path=$(omarchy-menu-file "Retro game" "$HOME/Games/roms" "7z bin ccd chd cue dmg elf fds gb gba gbc iso lha m3u md n64 nds nes pbp sfc smc swc zip z64") || exit 0
|
||||
[[ -n $game_path ]] || exit 0
|
||||
elif (( $# == 2 )); then
|
||||
core="$1"
|
||||
game_path="$2"
|
||||
else
|
||||
echo "Usage: omarchy-games-retro-install [core path-to-game]"
|
||||
echo "Example: omarchy-games-retro-install snes9x ~/Games/roms/snes/game.sfc"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f $game_path ]]; then
|
||||
echo "Game not found: $game_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $core == */* ]]; then
|
||||
core_path="$core"
|
||||
else
|
||||
core_path="/usr/lib/libretro/${core}_libretro.so"
|
||||
fi
|
||||
|
||||
if [[ ! -f $core_path ]]; then
|
||||
echo "Core not found: $core_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
game_name=$(printf '%s' "${game_path##*/}" | sed 's/\.[^.]*$//; s/[[:space:]]*([^)]*)//g; s/[[:space:]]\+/ /g; s/^ //; s/ $//' | perl -Mopen=locale -pe 's/(^|[[:space:]])([^[:space:]])/$1\U$2/g')
|
||||
desktop_name="$game_name"
|
||||
desktop_id=$(printf '%s' "$desktop_name" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '-' | sed 's/^-//; s/-$//')
|
||||
desktop_dir="$HOME/.local/share/applications"
|
||||
desktop_file="$desktop_dir/$desktop_id.desktop"
|
||||
icon_dir="$desktop_dir/icons"
|
||||
icon_path="$icon_dir/Retro Gaming.png"
|
||||
|
||||
mkdir -p "$desktop_dir" "$icon_dir"
|
||||
[[ -f $icon_path ]] || cp "$HOME/.local/share/omarchy/applications/icons/Retro Gaming.png" "$icon_path"
|
||||
|
||||
cat >"$desktop_file" <<EOF
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=$desktop_name
|
||||
Comment=Play $game_name with RetroArch
|
||||
Exec=retroarch -L "$core_path" "$game_path"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=$icon_path
|
||||
StartupNotify=true
|
||||
Categories=Game;Emulator;
|
||||
EOF
|
||||
|
||||
chmod +x "$desktop_file"
|
||||
update-desktop-database "$desktop_dir" &>/dev/null || true
|
||||
|
||||
omarchy-notification-send -g "" "$game_name installed" "Start it with Super + Space"
|
||||
Executable
+96
@@ -0,0 +1,96 @@
|
||||
#!/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()
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/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 ]]
|
||||
@@ -10,44 +10,34 @@ MIRROR_TOGGLE="internal-monitor-mirror"
|
||||
# Get internal monitor name dynamically
|
||||
INTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP")).name' | head -n 1)
|
||||
|
||||
on() {
|
||||
if omarchy-hyprland-toggle-enabled $TOGGLE; then
|
||||
omarchy-hyprland-toggle $TOGGLE off
|
||||
omarchy-notification-send -g "Laptop display enabled"
|
||||
enable() {
|
||||
if omarchy-hyprland-toggle-enabled "$TOGGLE"; then
|
||||
omarchy-hyprland-toggle --disabled-notification " Laptop display enabled" "$TOGGLE"
|
||||
fi
|
||||
}
|
||||
|
||||
off() {
|
||||
disable() {
|
||||
if ! omarchy-hw-external-monitors; then
|
||||
omarchy-notification-send -g "Can't disable the only active display"
|
||||
notify-send -u low " Can't disable the only active display"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if omarchy-hyprland-toggle-disabled $TOGGLE && omarchy-hyprland-toggle-disabled $MIRROR_TOGGLE; then
|
||||
if omarchy-hyprland-toggle-disabled "$TOGGLE" && omarchy-hyprland-toggle-disabled "$MIRROR_TOGGLE"; then
|
||||
echo "monitor=$INTERNAL,disable" >"$TOGGLE_FLAG"
|
||||
omarchy-notification-send -g "Laptop display disabled"
|
||||
notify-send -u low " Laptop display disabled"
|
||||
hyprctl reload
|
||||
fi
|
||||
}
|
||||
|
||||
recover() {
|
||||
if ! omarchy-hw-external-monitors; then
|
||||
omarchy-hyprland-toggle $TOGGLE off
|
||||
fi
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if omarchy-hyprland-toggle-enabled $TOGGLE; then
|
||||
on
|
||||
else
|
||||
off
|
||||
if ! omarchy-hw-external-monitors && omarchy-hyprland-toggle-enabled "$TOGGLE"; then
|
||||
omarchy-hyprland-toggle "$TOGGLE"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
on) on ;;
|
||||
off) off ;;
|
||||
toggle) toggle ;;
|
||||
on) enable ;;
|
||||
off) disable ;;
|
||||
toggle) if omarchy-hyprland-toggle-enabled "$TOGGLE"; then enable; else disable; fi ;;
|
||||
recover) recover ;;
|
||||
*)
|
||||
echo "Usage: $(basename "$0") {on|off|toggle|recover}" >&2
|
||||
|
||||
@@ -12,48 +12,44 @@ INTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP")).na
|
||||
# Get the first available external monitor
|
||||
EXTERNAL=$(hyprctl monitors -j | jq -r '.[] | select(.name | contains("eDP") | not).name' | head -n 1)
|
||||
|
||||
on() {
|
||||
if [[ -z $EXTERNAL ]]; then
|
||||
omarchy-notification-send -g "No external monitors found for mirror"
|
||||
enable() {
|
||||
if [[ -z "$EXTERNAL" ]]; then
|
||||
notify-send -u low " No external monitors found for mirror"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $INTERNAL ]]; then
|
||||
omarchy-notification-send -g "No laptop monitor found to mirror"
|
||||
if [[ -z "$INTERNAL" ]]; then
|
||||
notify-send -u low " No laptop monitor found to mirror"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
omarchy-hyprland-toggle $DISABLE_TOGGLE off
|
||||
echo "monitor=$EXTERNAL, preferred, auto, 1, mirror, $INTERNAL" >"$TOGGLE_FLAG"
|
||||
omarchy-notification-send -g "Mirroring enabled ($EXTERNAL)"
|
||||
hyprctl reload
|
||||
}
|
||||
if omarchy-hyprland-toggle-enabled "$DISABLE_TOGGLE"; then
|
||||
omarchy-hyprland-toggle "$DISABLE_TOGGLE"
|
||||
fi
|
||||
|
||||
off() {
|
||||
if omarchy-hyprland-toggle-enabled $TOGGLE; then
|
||||
omarchy-hyprland-toggle $TOGGLE off
|
||||
omarchy-notification-send -g "Extended mode restored"
|
||||
if omarchy-hyprland-toggle-disabled "$TOGGLE"; then
|
||||
echo "monitor=$EXTERNAL, preferred, auto, 1, mirror, $INTERNAL" > "$TOGGLE_FLAG"
|
||||
notify-send -u low " Mirroring enabled ($EXTERNAL)"
|
||||
hyprctl reload
|
||||
fi
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if omarchy-hyprland-toggle-enabled $TOGGLE; then
|
||||
off
|
||||
else
|
||||
on
|
||||
disable() {
|
||||
if omarchy-hyprland-toggle-enabled "$TOGGLE"; then
|
||||
omarchy-hyprland-toggle --disabled-notification " Extended mode restored" "$TOGGLE"
|
||||
fi
|
||||
}
|
||||
|
||||
recover() {
|
||||
if ! omarchy-hw-external-monitors; then
|
||||
omarchy-hyprland-toggle $TOGGLE off
|
||||
if ! omarchy-hw-external-monitors && omarchy-hyprland-toggle-enabled "$TOGGLE"; then
|
||||
omarchy-hyprland-toggle "$TOGGLE"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
on) on ;;
|
||||
off) off ;;
|
||||
toggle) toggle ;;
|
||||
on) enable ;;
|
||||
off) disable ;;
|
||||
toggle) if omarchy-hyprland-toggle-enabled "$TOGGLE"; then disable; else enable; fi ;;
|
||||
recover) recover ;;
|
||||
*)
|
||||
echo "Usage: $(basename "$0") {on|off|toggle|recover}" >&2
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Print the monitor scale of the internal monitor or first other monitor
|
||||
|
||||
hyprctl monitors -j | jq -r '([.[] | select(.name | contains("eDP"))][0] // .[0]).scale // empty | tonumber | if . == floor then floor else . end'
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Cycle focused Hyprland monitor scaling through 1x, 1.25x, 1.6x, 2x, 3x, and 4x
|
||||
# omarchy:summary=Cycle focused Hyprland monitor scaling through 1x, 1.25x, 1.6x, 2x, and 3x
|
||||
|
||||
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 → 4 → 1 (or reverse with --reverse)
|
||||
SCALES=(1 1.25 1.6 2 3 4)
|
||||
# Cycle through scales: 1 → 1.25 → 1.6 → 2 → 3 → 1 (or reverse with --reverse)
|
||||
SCALES=(1 1.25 1.6 2 3)
|
||||
|
||||
# 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)
|
||||
@@ -40,10 +40,7 @@ MONITOR_CONF="$HOME/.config/hypr/monitors.conf"
|
||||
if [[ -f $MONITOR_CONF ]]; then
|
||||
mapfile -t ACTIVE_LINES < <(grep -E '^[[:space:]]*monitor=' "$MONITOR_CONF" | grep -vE 'disable[[:space:]]*$')
|
||||
if [[ ${#ACTIVE_LINES[@]} -eq 1 ]] && [[ "${ACTIVE_LINES[0]}" =~ ^monitor=,preferred,auto, ]]; then
|
||||
sed -i -E \
|
||||
-e "s|^(monitor=,preferred,auto,).*|\\1${NEW_SCALE}|" \
|
||||
-e "s|^([[:space:]]*env[[:space:]]*=[[:space:]]*GDK_SCALE,).*|\\1${NEW_SCALE}|" \
|
||||
"$MONITOR_CONF"
|
||||
sed -i -E "s|^(monitor=,preferred,auto,).*|\\1${NEW_SCALE}|" "$MONITOR_CONF"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
+23
-36
@@ -1,45 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Toggle permanent Hyprland flags by copying them into a directory that's sourced entirely.
|
||||
# omarchy:args=<flag-name> [on|off]
|
||||
# omarchy:args=[--enabled-notification <text>] [--disabled-notification <text>] <flag-name>
|
||||
|
||||
ENABLED_NOTIFICATION=""
|
||||
DISABLED_NOTIFICATION=""
|
||||
|
||||
while [[ $# -gt 1 ]]; do
|
||||
case $1 in
|
||||
--enabled-notification) ENABLED_NOTIFICATION="$2"; shift 2 ;;
|
||||
--disabled-notification) DISABLED_NOTIFICATION="$2"; shift 2 ;;
|
||||
*) break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
FLAG_NAME="$1"
|
||||
ACTION="${2:-toggle}"
|
||||
FLAG="$HOME/.local/state/omarchy/toggles/hypr/$FLAG_NAME.conf"
|
||||
FLAG_SOURCE="$OMARCHY_PATH/default/hypr/toggles/$FLAG_NAME.conf"
|
||||
|
||||
on() {
|
||||
if [[ -f $FLAG_SOURCE ]]; then
|
||||
mkdir -p "$(dirname "$FLAG")"
|
||||
cp "$FLAG_SOURCE" "$FLAG"
|
||||
else
|
||||
echo "Flag not found: $FLAG_NAME"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
if [[ -f $FLAG ]]; then
|
||||
rm $FLAG
|
||||
[[ -n $DISABLED_NOTIFICATION ]] && notify-send -u low "$DISABLED_NOTIFICATION"
|
||||
elif [[ -f $FLAG_SOURCE ]]; then
|
||||
cp $FLAG_SOURCE $FLAG
|
||||
[[ -n $ENABLED_NOTIFICATION ]] && notify-send -u low "$ENABLED_NOTIFICATION"
|
||||
else
|
||||
echo "Flag not found: $FLAG_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
off() {
|
||||
rm -f "$FLAG"
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if [[ -f $FLAG ]]; then
|
||||
off
|
||||
echo "off"
|
||||
else
|
||||
on
|
||||
echo "on"
|
||||
fi
|
||||
}
|
||||
|
||||
case $ACTION in
|
||||
on) on ;;
|
||||
off) off ;;
|
||||
toggle) toggle ;;
|
||||
*)
|
||||
echo "Usage: omarchy-hyprland-toggle <flag-name> [on|off]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
hyprctl reload >/dev/null
|
||||
hyprctl reload
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# omarchy:summary=Toggle single-window square aspect ratio.
|
||||
|
||||
case $(omarchy-hyprland-toggle single-window-aspect-ratio) in
|
||||
on) omarchy-notification-send -g "Enable single-window square aspect ratio" ;;
|
||||
off) omarchy-notification-send -g "Disable single-window square aspect ratio" ;;
|
||||
esac
|
||||
omarchy-hyprland-toggle \
|
||||
--enabled-notification " Enable single-window square aspect ratio" \
|
||||
--disabled-notification " Disable single-window square aspect ratio" \
|
||||
single-window-aspect-ratio
|
||||
|
||||
@@ -21,10 +21,7 @@ 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-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-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
libretro-database-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
|
||||
+46
-115
@@ -93,10 +93,9 @@ show_learn_menu() {
|
||||
}
|
||||
|
||||
show_trigger_menu() {
|
||||
case $(menu "Trigger" " Reminder\n Capture\n Transcode\n Share\n Toggle\n Hardware") in
|
||||
*Reminder*) show_reminder_menu ;;
|
||||
case $(menu "Trigger" " Capture\n Transcode\n Share\n Toggle\n Hardware") in
|
||||
*Capture*) show_capture_menu ;;
|
||||
*Transcode*) omarchy-transcode || back_to show_trigger_menu ;;
|
||||
*Transcode*) show_transcode_menu ;;
|
||||
*Share*) show_share_menu ;;
|
||||
*Toggle*) show_toggle_menu ;;
|
||||
*Hardware*) show_hardware_menu ;;
|
||||
@@ -104,41 +103,6 @@ show_trigger_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_reminder_menu() {
|
||||
case $(menu "Reminder" " Set one\n Show all\n Clear all") in
|
||||
*Set*) show_custom_reminder_input ;;
|
||||
*"Show all"*) omarchy-reminder show ;;
|
||||
*"Clear all"*) omarchy-reminder clear ;;
|
||||
*) back_to show_trigger_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_custom_reminder_input() {
|
||||
local minutes
|
||||
minutes=$(omarchy-menu-input "Remind in minutes")
|
||||
|
||||
if [[ $minutes =~ ^[0-9]+$ ]] && ((minutes > 0)); then
|
||||
show_reminder_message_input "$minutes"
|
||||
elif [[ -n $minutes ]]; then
|
||||
omarchy-notification-send -g "Invalid reminder" "Enter the number of minutes" -u critical
|
||||
show_custom_reminder_input
|
||||
else
|
||||
back_to show_reminder_menu
|
||||
fi
|
||||
}
|
||||
|
||||
show_reminder_message_input() {
|
||||
local minutes="$1"
|
||||
local message
|
||||
message=$(omarchy-menu-input "Reminder message")
|
||||
|
||||
if [[ -n $message ]]; then
|
||||
omarchy-reminder "$minutes" "$message"
|
||||
else
|
||||
omarchy-reminder "$minutes"
|
||||
fi
|
||||
}
|
||||
|
||||
show_capture_menu() {
|
||||
case $(menu "Capture" " Screenshot\n Screenrecord\n Text Extraction\n Color") in
|
||||
*Screenshot*) omarchy-capture-screenshot ;;
|
||||
@@ -195,8 +159,7 @@ show_screenrecord_menu() {
|
||||
}
|
||||
|
||||
show_share_menu() {
|
||||
case $(menu "Share" " Clipboard\n File \n Folder\n Receive") in
|
||||
*Receive*) uwsm-app -- localsend ;;
|
||||
case $(menu "Share" " Clipboard\n File \n Folder") in
|
||||
*Clipboard*) omarchy-menu-share clipboard ;;
|
||||
*File*) terminal bash -c "omarchy-menu-share file" ;;
|
||||
*Folder*) terminal bash -c "omarchy-menu-share folder" ;;
|
||||
@@ -204,6 +167,14 @@ show_share_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_transcode_menu() {
|
||||
case $(menu "Transcode" " Picture\n Video") in
|
||||
*Picture*) present_terminal "omarchy-transcode --path '$HOME/Pictures'" ;;
|
||||
*Video*) present_terminal "omarchy-transcode --path '$HOME/Videos'" ;;
|
||||
*) back_to show_trigger_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_toggle_menu() {
|
||||
local options=" Screensaver\n Nightlight\n Idle Lock\n Notifications\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Monitor Scaling\n Direct Boot\n Passwordless Sudo"
|
||||
|
||||
@@ -234,18 +205,13 @@ 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 ;;
|
||||
*Haptics*) show_hardware_touchpad_haptics_menu ;;
|
||||
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle;;
|
||||
*Touchpad*) omarchy-toggle-touchpad ;;
|
||||
*Touchscreen*) omarchy-toggle-touchscreen ;;
|
||||
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
|
||||
@@ -253,69 +219,43 @@ 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 Waybar\n Corners\n Hyprland\n Screensaver\n About") in
|
||||
|
||||
case $(menu "Style" " Theme\n Unlock\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
||||
*Theme*) show_theme_menu ;;
|
||||
*Unlock*) omarchy-launch-walker -m menus:omarchyunlocks --width 800 --minheight 400 ;;
|
||||
*Font*) show_font_menu ;;
|
||||
*Background*) show_background_menu ;;
|
||||
*Corners*) show_style_corners_menu ;;
|
||||
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
||||
*Waybar*) show_waybar_position_menu ;;
|
||||
*Screensaver*) show_screensaver_menu ;;
|
||||
*About*) show_about_menu ;;
|
||||
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
||||
*) show_main_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_style_corners_menu() {
|
||||
case $(omarchy-menu-select "Corners" " Sharp" " Round") in
|
||||
*Sharp*) omarchy-style-corners sharp ;;
|
||||
*Round*) omarchy-style-corners round ;;
|
||||
*) show_style_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
show_waybar_position_menu() {
|
||||
case $(menu "Waybar Position" " Top\n Bottom\n Left\n Right") in
|
||||
*Top*) omarchy-style-waybar-position top ;;
|
||||
*Bottom*) omarchy-style-waybar-position bottom ;;
|
||||
*Left*) omarchy-style-waybar-position left ;;
|
||||
*Right*) omarchy-style-waybar-position right ;;
|
||||
*) show_style_menu ;;
|
||||
esac
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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 ;;
|
||||
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_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_theme_menu() {
|
||||
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
|
||||
}
|
||||
@@ -368,8 +308,8 @@ show_setup_power_menu() {
|
||||
|
||||
show_setup_security_menu() {
|
||||
case $(menu "Setup" " Fingerprint\n Fido2") in
|
||||
*Fingerprint*) present_terminal omarchy-setup-security-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-security-fido2 ;;
|
||||
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
|
||||
*Fido2*) present_terminal omarchy-setup-fido2 ;;
|
||||
*) show_setup_menu ;;
|
||||
esac
|
||||
}
|
||||
@@ -449,7 +389,7 @@ show_setup_default_editor_menu() {
|
||||
omarchy-cmd-present nvim && options="$options Neovim"
|
||||
omarchy-cmd-present code && options="${options:+$options\n} VSCode"
|
||||
omarchy-cmd-present cursor && options="${options:+$options\n} Cursor"
|
||||
omarchy-cmd-present zeditor && options="${options:+$options\n} Zed"
|
||||
omarchy-cmd-present zed && options="${options:+$options\n} Zed"
|
||||
omarchy-cmd-present sublime_text && options="${options:+$options\n} Sublime Text"
|
||||
omarchy-cmd-present helix && options="${options:+$options\n} Helix"
|
||||
omarchy-cmd-present vim && options="${options:+$options\n} Vim"
|
||||
@@ -460,7 +400,7 @@ show_setup_default_editor_menu() {
|
||||
nvim) current=" Neovim" ;;
|
||||
code) current=" VSCode" ;;
|
||||
cursor) current=" Cursor" ;;
|
||||
zed | zeditor) current=" Zed" ;;
|
||||
zed) current=" Zed" ;;
|
||||
sublime_text) current=" Sublime Text" ;;
|
||||
helix) current=" Helix" ;;
|
||||
vim) current=" Vim" ;;
|
||||
@@ -600,9 +540,8 @@ 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)\n RetroArch Game Launcher") 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 Game Launcher"*) omarchy-games-retro-install ;;
|
||||
*RetroArch*) present_terminal omarchy-install-gaming-retroarch ;;
|
||||
*Minecraft*) install_and_launch "Minecraft" "minecraft-launcher" "minecraft-launcher" ;;
|
||||
*GeForce*) present_terminal omarchy-install-gaming-geforce-now ;;
|
||||
@@ -683,30 +622,23 @@ show_install_elixir_menu() {
|
||||
}
|
||||
|
||||
show_remove_menu() {
|
||||
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
|
||||
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
|
||||
*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 ;;
|
||||
*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" ;;
|
||||
*Preinstalls*) present_terminal omarchy-remove-preinstalls ;;
|
||||
*Security*) show_remove_security_menu ;;
|
||||
*Dictation*) present_terminal omarchy-voxtype-remove ;;
|
||||
*Theme*) present_terminal omarchy-theme-remove ;;
|
||||
*Windows*) present_terminal "omarchy-windows-vm remove" ;;
|
||||
*Fingerprint*) present_terminal "omarchy-setup-fingerprint --remove" ;;
|
||||
*Fido2*) present_terminal "omarchy-setup-fido2 --remove" ;;
|
||||
*) 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" ;;
|
||||
@@ -883,8 +815,7 @@ go_to_menu() {
|
||||
*toggle*) show_toggle_menu ;;
|
||||
*hardware*) show_hardware_menu ;;
|
||||
*share*) show_share_menu ;;
|
||||
*reminder-set*) show_custom_reminder_input ;;
|
||||
*reminder*) show_reminder_menu ;;
|
||||
*transcode*) show_transcode_menu ;;
|
||||
*background*) show_background_menu ;;
|
||||
*capture*) show_capture_menu ;;
|
||||
*style*) show_style_menu ;;
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Pick a file with Walker
|
||||
# omarchy:group=menu
|
||||
# omarchy:name=file
|
||||
# omarchy:args=label paths formats [walker args...]
|
||||
# omarchy:examples=omarchy menu file "Select image" "$HOME/Pictures" "jpg png webp"|omarchy-menu-file "Select media" "$HOME/Pictures:$HOME/Videos" "jpg png mp4 mov" --width 800
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if (( $# < 3 )); then
|
||||
echo "Usage: omarchy-menu-file <label> <paths> <formats> [walker args...]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
label="$1"
|
||||
paths_arg="$2"
|
||||
formats_arg="$3"
|
||||
shift 3
|
||||
|
||||
IFS=: read -r -a paths <<<"$paths_arg"
|
||||
read -r -a formats <<<"$formats_arg"
|
||||
|
||||
if (( ${#paths[@]} == 0 || ${#formats[@]} == 0 )); then
|
||||
echo "Usage: omarchy-menu-file <label> <paths> <formats> [walker args...]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for path in "${paths[@]}"; do
|
||||
[[ -e $path ]] || { echo "Path not found: $path" >&2; exit 1; }
|
||||
done
|
||||
|
||||
find_args=("${paths[@]}" "(" -type d -name ".*" ! -name "." -prune ")" -o -type f ! -name ".*" "(")
|
||||
first_format=true
|
||||
for format in "${formats[@]}"; do
|
||||
if [[ $first_format == "true" ]]; then
|
||||
first_format=false
|
||||
else
|
||||
find_args+=(-o)
|
||||
fi
|
||||
|
||||
format="${format#.}"
|
||||
find_args+=(-iname "*.$format")
|
||||
done
|
||||
find_args+=(")" -printf '%T@\t%p\n')
|
||||
|
||||
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
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Prompt for text input with Walker
|
||||
# omarchy:group=menu
|
||||
# omarchy:name=input
|
||||
# omarchy:args=prompt [walker args...]
|
||||
# omarchy:examples=omarchy menu input Reminder|omarchy-menu-input "Reminder in minutes" --width 400
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
prompt="${1:-Input}"
|
||||
if (( $# > 0 )); then
|
||||
shift
|
||||
fi
|
||||
|
||||
omarchy-launch-walker --dmenu --inputonly --width 295 --minheight 1 --maxheight 1 -p "$prompt…" "$@" 2>/dev/null
|
||||
@@ -3,23 +3,6 @@
|
||||
# omarchy:summary=Display Hyprland keybindings defined in your configuration using walker for an interactive search menu.
|
||||
|
||||
declare -A KEYCODE_SYM_MAP
|
||||
# Hyprland reports XKB keycodes for code: bindings. Keep a small fallback for
|
||||
# common keys so the menu remains readable if xkbcli cannot resolve a symbol.
|
||||
declare -A FALLBACK_KEYCODE_SYM_MAP=(
|
||||
[10]="1"
|
||||
[11]="2"
|
||||
[12]="3"
|
||||
[13]="4"
|
||||
[14]="5"
|
||||
[15]="6"
|
||||
[16]="7"
|
||||
[17]="8"
|
||||
[18]="9"
|
||||
[19]="0"
|
||||
[20]="MINUS"
|
||||
[21]="EQUAL"
|
||||
[61]="SLASH"
|
||||
)
|
||||
|
||||
build_keymap_cache() {
|
||||
local keymap
|
||||
@@ -54,18 +37,7 @@ build_keymap_cache() {
|
||||
}
|
||||
|
||||
lookup_keycode_cached() {
|
||||
local symbol
|
||||
symbol="${KEYCODE_SYM_MAP[$1]}"
|
||||
|
||||
if [[ -z $symbol ]]; then
|
||||
symbol="${FALLBACK_KEYCODE_SYM_MAP[$1]}"
|
||||
fi
|
||||
|
||||
if [[ -z $symbol ]]; then
|
||||
symbol="code:$1"
|
||||
fi
|
||||
|
||||
printf '%s\n' "${symbol^^}"
|
||||
printf '%s\n' "${KEYCODE_SYM_MAP[$1]}"
|
||||
}
|
||||
|
||||
parse_keycodes() {
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Pick one option with Walker
|
||||
# omarchy:group=menu
|
||||
# omarchy:name=select
|
||||
# omarchy:args=prompt option... [-- walker args...]
|
||||
# omarchy:examples=omarchy menu select Format jpg png|omarchy-menu-select Resolution 4k 1080p 720p -- --width 400
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if (( $# < 2 )); then
|
||||
echo "Usage: omarchy-menu-select <prompt> <option>... [-- walker args...]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
prompt="$1"
|
||||
shift
|
||||
|
||||
options=()
|
||||
walker_args=()
|
||||
|
||||
while (( $# > 0 )); do
|
||||
if [[ $1 == "--" ]]; then
|
||||
shift
|
||||
walker_args=("$@")
|
||||
break
|
||||
fi
|
||||
|
||||
options+=("$1")
|
||||
shift
|
||||
done
|
||||
|
||||
if (( ${#options[@]} == 0 )); then
|
||||
echo "Usage: omarchy-menu-select <prompt> <option>... [-- walker args...]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '%s\n' "${options[@]}" | omarchy-launch-walker --dmenu --width 295 --minheight 1 --maxheight 300 -p "$prompt…" "${walker_args[@]}" 2>/dev/null
|
||||
@@ -1,76 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Send a desktop notification with Omarchy glyph and body spacing
|
||||
# omarchy:args=<headline> [description] [-g <glyph>] [-u <low|normal|critical>] [notify-send options]
|
||||
# omarchy:examples=omarchy notification send "Reminder" "5 minutes are up" -g -u critical
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
headline=""
|
||||
description=""
|
||||
glyph=""
|
||||
urgency="low"
|
||||
args=()
|
||||
|
||||
parse_omarchy_option() {
|
||||
case $1 in
|
||||
-g | --glyph)
|
||||
if (($# < 2)); then
|
||||
echo "Missing value for $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
glyph="$2"
|
||||
return 0
|
||||
;;
|
||||
-u | --urgency)
|
||||
if (($# < 2)); then
|
||||
echo "Missing value for $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
urgency="$2"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
while (($# > 0)); do
|
||||
if parse_omarchy_option "$@"; then
|
||||
shift 2
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if (($# < 1)); then
|
||||
echo "Usage: omarchy-notification-send [-g <glyph>] [-u <low|normal|critical>] <headline> [description] [notify-send options]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
headline=$1
|
||||
shift
|
||||
|
||||
if (($# > 0)) && [[ $1 != -* ]]; then
|
||||
description=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
while (($# > 0)); do
|
||||
if parse_omarchy_option "$@"; then
|
||||
shift 2
|
||||
else
|
||||
args+=("$1")
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
summary="$glyph $headline"
|
||||
args+=("-u" "$urgency")
|
||||
|
||||
if [[ -n $description ]]; then
|
||||
description=$(printf '%b' "$description" | sed 's/^/ /')
|
||||
notify-send "${args[@]}" "$summary" "$description"
|
||||
else
|
||||
notify-send "${args[@]}" "$summary"
|
||||
fi
|
||||
@@ -19,8 +19,5 @@ echo
|
||||
sudo cp -f "$OMARCHY_PATH/default/pacman/pacman-$channel.conf" /etc/pacman.conf
|
||||
sudo cp -f "$OMARCHY_PATH/default/pacman/mirrorlist-$channel" /etc/pacman.d/mirrorlist
|
||||
|
||||
# Allow user customization of /etc/pacman.conf before the upgrade runs
|
||||
omarchy-hook pre-refresh-pacman
|
||||
|
||||
# Reset all package DBs and then update
|
||||
sudo pacman -Syyuu --noconfirm
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Reinstall the stable Omarchy source directory from git
|
||||
# omarchy:summary=Reinstall the Omarchy source directory from git
|
||||
|
||||
set -e
|
||||
|
||||
# Reinstall the Omarchy configuration directory from the git source.
|
||||
|
||||
git clone "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
git clone --depth=1 "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
mv $OMARCHY_PATH ~/.local/share/omarchy-old
|
||||
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set and show lightweight desktop notification reminders
|
||||
# omarchy:args=<minutes> [message] | show | clear
|
||||
# omarchy:examples=omarchy reminder 5 | omarchy reminder 30 "Check the oven" | omarchy reminder show | omarchy reminder clear
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
format_remaining() {
|
||||
local seconds=$1
|
||||
local minutes=$((seconds / 60))
|
||||
local remainder=$((seconds % 60))
|
||||
|
||||
if ((minutes > 0 && remainder > 0)); then
|
||||
echo "${minutes}m ${remainder}s"
|
||||
elif ((minutes > 0)); then
|
||||
echo "${minutes}m"
|
||||
else
|
||||
echo "${remainder}s"
|
||||
fi
|
||||
}
|
||||
|
||||
parse_systemd_timespan() {
|
||||
local timespan="$1"
|
||||
local total=0
|
||||
local value unit whole
|
||||
|
||||
while read -r value unit; do
|
||||
whole=${value%.*}
|
||||
|
||||
case $unit in
|
||||
d) total=$((total + whole * 86400)) ;;
|
||||
h) total=$((total + whole * 3600)) ;;
|
||||
min) total=$((total + whole * 60)) ;;
|
||||
s) total=$((total + whole)) ;;
|
||||
ms | us) ;;
|
||||
esac
|
||||
done < <(grep -oE '[0-9]+([.][0-9]+)?(d|h|min|s|ms|us)' <<<"$timespan" | sed -E 's/^([0-9.]+)([a-z]+)$/\1 \2/')
|
||||
|
||||
echo "$total"
|
||||
}
|
||||
|
||||
show_reminders() {
|
||||
local timer next remaining body=""
|
||||
local reminder_dir="${XDG_RUNTIME_DIR:-/tmp}/omarchy-reminders"
|
||||
local reminder_message=""
|
||||
local now=$(date +%s)
|
||||
|
||||
while IFS=$'\t' read -r timer next; do
|
||||
[[ -z $timer || -z $next ]] && continue
|
||||
|
||||
next=$((next / 1000000))
|
||||
((next <= now)) && continue
|
||||
|
||||
remaining=$((next - now))
|
||||
reminder=${timer%.timer}
|
||||
reminder=${reminder#omarchy-reminder-}
|
||||
set_at=${reminder##*-}
|
||||
reminder_minutes=${reminder%%m-*}
|
||||
reminder_message=""
|
||||
[[ -f $reminder_dir/${timer%.timer}.message ]] && reminder_message=$(<"$reminder_dir/${timer%.timer}.message")
|
||||
|
||||
if [[ -n $reminder_message ]]; then
|
||||
body+="$reminder_message in $(format_remaining $remaining) ($(date -d "@$next" +%-H:%M))"$'\n'
|
||||
else
|
||||
body+="${reminder_minutes}-min reminder in $(format_remaining $remaining) ($(date -d "@$next" +%-H:%M))"$'\n'
|
||||
fi
|
||||
done < <(systemctl --user list-timers --all --output=json "omarchy-reminder-*.timer" 2>/dev/null | jq -r '.[] | [.unit, .next] | @tsv')
|
||||
|
||||
if [[ -z $body ]]; then
|
||||
omarchy-notification-send -g "Upcoming reminders" "No outstanding reminders"
|
||||
else
|
||||
omarchy-notification-send -g "Upcoming reminders" "${body%$'\n'}"
|
||||
fi
|
||||
}
|
||||
|
||||
clear_reminders() {
|
||||
local units
|
||||
local reminder_dir="${XDG_RUNTIME_DIR:-/tmp}/omarchy-reminders"
|
||||
|
||||
units=$(systemctl --user list-timers --all --no-legend --no-pager "omarchy-reminder-*.timer" 2>/dev/null | awk '{ print $(NF - 1), $NF }')
|
||||
|
||||
if [[ -n $units ]]; then
|
||||
xargs -r systemctl --user stop <<<"$units" || true
|
||||
fi
|
||||
|
||||
rm -f "$reminder_dir"/omarchy-reminder-*.message 2>/dev/null || true
|
||||
omarchy-notification-send -g "All reminders have been cleared"
|
||||
}
|
||||
|
||||
case ${1:-} in
|
||||
show | list)
|
||||
show_reminders
|
||||
exit 0
|
||||
;;
|
||||
clear)
|
||||
clear_reminders
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
minutes=${1:-}
|
||||
shift || true
|
||||
message="$*"
|
||||
custom_message="$message"
|
||||
|
||||
if [[ -z $minutes ]] || [[ ! $minutes =~ ^[0-9]+$ ]] || ((minutes == 0)); then
|
||||
echo "Usage: omarchy-reminder <minutes> [message]"
|
||||
echo " omarchy-reminder show"
|
||||
echo " omarchy-reminder clear"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $message ]]; then
|
||||
message="Your ${minutes} minutes are up"
|
||||
fi
|
||||
|
||||
set_at=$(date +%s)
|
||||
remind_at=$(date -d "+${minutes} minutes" +%H:%M)
|
||||
unit="omarchy-reminder-${minutes}m-$set_at"
|
||||
reminder_dir="${XDG_RUNTIME_DIR:-/tmp}/omarchy-reminders"
|
||||
message_file="$reminder_dir/$unit.message"
|
||||
confirmation="You'll be reminded at $remind_at"
|
||||
confirmation_title="Reminder set for ${minutes} minutes"
|
||||
|
||||
mkdir -p "$reminder_dir"
|
||||
|
||||
if [[ -n $custom_message ]]; then
|
||||
printf "%s" "$custom_message" >"$message_file"
|
||||
confirmation_title="$custom_message in ${minutes} minutes"
|
||||
fi
|
||||
|
||||
systemd-run --user --quiet --collect --on-active="${minutes}m" --unit="$unit" \
|
||||
bash -c 'omarchy-notification-send -g "Reminder" "$1" -u critical; rm -f "$2"' bash "$message" "$message_file"
|
||||
|
||||
omarchy-notification-send -g "$confirmation_title" "$confirmation"
|
||||
@@ -21,10 +21,7 @@ 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-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-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
rm -rf \
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/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"
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/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,9 +2,5 @@
|
||||
|
||||
# omarchy:summary=Restart the PipeWire audio service to fix audio issues or apply new configuration.
|
||||
|
||||
echo -e "Restarting PipeWire audio services...\n"
|
||||
systemctl --user restart wireplumber.service pipewire.service
|
||||
|
||||
if systemctl --user --quiet is-active pipewire-pulse.service; then
|
||||
systemctl --user restart pipewire-pulse.service
|
||||
fi
|
||||
echo -e "Restarting pipewire audio service...\n"
|
||||
systemctl --user restart pipewire.service
|
||||
|
||||
@@ -2,8 +2,4 @@
|
||||
|
||||
# omarchy:summary=Restart the SwayOSD server
|
||||
|
||||
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
|
||||
omarchy-restart-app swayosd-server
|
||||
|
||||
@@ -3,5 +3,4 @@
|
||||
# omarchy:summary=Restart Waybar
|
||||
# omarchy:examples=omarchy restart waybar
|
||||
|
||||
pkill -9 -x waybar
|
||||
setsid uwsm-app -- waybar >/dev/null 2>&1 &
|
||||
omarchy-restart-app waybar
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
# 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
|
||||
|
||||
set -o pipefail
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage: omarchy-transcode-ascii <input-image.svg|png> <output-path> [options]
|
||||
Usage: omarchy-screensaver-logo <default|path-to-logo.svg|png> [options]
|
||||
|
||||
Transcodes an image into ASCII/Unicode art text.
|
||||
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.
|
||||
|
||||
Options:
|
||||
-w, --width <columns> Maximum output width in terminal columns (default: 80)
|
||||
@@ -21,6 +21,7 @@ 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
|
||||
}
|
||||
@@ -31,8 +32,9 @@ mode=braille
|
||||
threshold=50
|
||||
invert=false
|
||||
trim=true
|
||||
output_path="$HOME/.config/omarchy/branding/screensaver.txt"
|
||||
image_path=""
|
||||
output_path=""
|
||||
reset_default=false
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
@@ -96,6 +98,9 @@ while (($# > 0)); do
|
||||
--no-trim)
|
||||
trim=false
|
||||
;;
|
||||
--stdout)
|
||||
output_path="-"
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
@@ -106,10 +111,10 @@ while (($# > 0)); do
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
if [[ -z $image_path ]]; then
|
||||
if [[ $1 == "default" && -z $image_path ]]; then
|
||||
reset_default=true
|
||||
elif [[ -z $image_path ]]; then
|
||||
image_path="$1"
|
||||
elif [[ -z $output_path ]]; then
|
||||
output_path="$1"
|
||||
else
|
||||
echo "Unexpected argument: $1" >&2
|
||||
usage >&2
|
||||
@@ -122,10 +127,10 @@ done
|
||||
|
||||
if (($# > 0)); then
|
||||
while (($# > 0)); do
|
||||
if [[ -z $image_path ]]; then
|
||||
if [[ $1 == "default" && -z $image_path ]]; then
|
||||
reset_default=true
|
||||
elif [[ -z $image_path ]]; then
|
||||
image_path="$1"
|
||||
elif [[ -z $output_path ]]; then
|
||||
output_path="$1"
|
||||
else
|
||||
echo "Unexpected argument: $1" >&2
|
||||
usage >&2
|
||||
@@ -135,7 +140,29 @@ if (($# > 0)); then
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -z $image_path || -z $output_path ]]; then
|
||||
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
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -348,6 +375,10 @@ if [[ ! -s $tmp_output ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "$output_path")"
|
||||
cp "$tmp_output" "$output_path"
|
||||
echo "Wrote ASCII art to $output_path"
|
||||
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
|
||||
Executable
+131
@@ -0,0 +1,131 @@
|
||||
#!/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
|
||||
Executable
+161
@@ -0,0 +1,161 @@
|
||||
#!/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
|
||||
@@ -1,81 +0,0 @@
|
||||
#!/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
|
||||
@@ -1,95 +0,0 @@
|
||||
#!/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,20 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set Hyprland, Hyprlock, Mako, and Walker corners to sharp or round
|
||||
# omarchy:args=<sharp|round>
|
||||
# omarchy:examples=omarchy style corners round | omarchy style corners sharp
|
||||
|
||||
if [[ $1 != "sharp" && $1 != "round" ]]; then
|
||||
echo "Usage: omarchy-style-corners <sharp|round>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
omarchy-style-corners-hyprland "$1"
|
||||
omarchy-style-corners-hyprlock "$1"
|
||||
omarchy-style-corners-mako "$1"
|
||||
omarchy-style-corners-walker "$1"
|
||||
|
||||
case $1 in
|
||||
sharp) omarchy-notification-send "Sharp corners enabled" -g ;;
|
||||
round) omarchy-notification-send "Round corners enabled" -g ;;
|
||||
esac
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set or toggle shape of Hyprland window corners
|
||||
# omarchy:args=[toggle|sharp|round]
|
||||
# omarchy:examples=omarchy style corners hyprland toggle | omarchy style corners hyprland round | omarchy style corners hyprland sharp
|
||||
|
||||
case "${1:-toggle}" in
|
||||
round) set -- on ;;
|
||||
sharp) set -- off ;;
|
||||
toggle) ;;
|
||||
*)
|
||||
echo "Usage: omarchy-style-corners-hyprland [toggle|sharp|round]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
omarchy-hyprland-toggle rounded-corners "$1"
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set or toggle rounded Hyprlock input field corners
|
||||
# omarchy:args=[toggle|sharp|round]
|
||||
# omarchy:examples=omarchy style corners hyprlock toggle | omarchy style corners hyprlock round | omarchy style corners hyprlock sharp
|
||||
|
||||
TOGGLES_CONFIG="$HOME/.local/state/omarchy/toggles/hyprlock.conf"
|
||||
|
||||
set_rounding() {
|
||||
local radius="$1"
|
||||
|
||||
mkdir -p "$(dirname "$TOGGLES_CONFIG")"
|
||||
|
||||
cat >"$TOGGLES_CONFIG" <<EOF
|
||||
input-field {
|
||||
rounding = $radius
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
case "${1:-toggle}" in
|
||||
round) set_rounding 6 ;;
|
||||
sharp) set_rounding 0 ;;
|
||||
toggle)
|
||||
if [[ -f $TOGGLES_CONFIG ]] && grep -q '^ rounding = 6$' "$TOGGLES_CONFIG"; then
|
||||
set_rounding 0
|
||||
else
|
||||
set_rounding 6
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-style-corners-hyprlock [toggle|sharp|round]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set or toggle rounded Mako notification corners
|
||||
# omarchy:args=[toggle|sharp|round]
|
||||
# omarchy:examples=omarchy style corners mako toggle | omarchy style corners mako round | omarchy style corners mako sharp
|
||||
|
||||
TOGGLES_CONFIG="$HOME/.local/state/omarchy/toggles/mako.ini"
|
||||
|
||||
set_radius() {
|
||||
local radius="$1"
|
||||
|
||||
mkdir -p "$(dirname "$TOGGLES_CONFIG")"
|
||||
touch "$TOGGLES_CONFIG"
|
||||
|
||||
if grep -q '^border-radius=' "$TOGGLES_CONFIG"; then
|
||||
sed -i "s/^border-radius=.*/border-radius=$radius/" "$TOGGLES_CONFIG"
|
||||
else
|
||||
echo "border-radius=$radius" >>"$TOGGLES_CONFIG"
|
||||
fi
|
||||
}
|
||||
|
||||
case "${1:-toggle}" in
|
||||
round) set_radius 6 ;;
|
||||
sharp) set_radius 0 ;;
|
||||
toggle)
|
||||
if [[ -f $TOGGLES_CONFIG ]] && grep -q '^border-radius=6$' "$TOGGLES_CONFIG"; then
|
||||
set_radius 0
|
||||
else
|
||||
set_radius 6
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-style-corners-mako [toggle|sharp|round]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
makoctl reload
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set or toggle rounded Walker corners
|
||||
# omarchy:args=[toggle|sharp|round]
|
||||
# omarchy:examples=omarchy style corners walker toggle | omarchy style corners walker round | omarchy style corners walker sharp
|
||||
|
||||
TOGGLES_CSS="$HOME/.local/state/omarchy/toggles/walker.css"
|
||||
|
||||
set_radius() {
|
||||
local radius="$1"
|
||||
|
||||
mkdir -p "$(dirname "$TOGGLES_CSS")"
|
||||
touch "$TOGGLES_CSS"
|
||||
|
||||
if grep -q '^ border-radius:' "$TOGGLES_CSS"; then
|
||||
sed -i "s/^ border-radius:.*/ border-radius: ${radius}px;/" "$TOGGLES_CSS"
|
||||
elif grep -q '^border-radius:' "$TOGGLES_CSS"; then
|
||||
sed -i "s/^border-radius:.*/border-radius: ${radius}px;/" "$TOGGLES_CSS"
|
||||
else
|
||||
echo ".box-wrapper { border-radius: ${radius}px; }" >>"$TOGGLES_CSS"
|
||||
fi
|
||||
}
|
||||
|
||||
case "${1:-toggle}" in
|
||||
round) set_radius 6 ;;
|
||||
sharp) set_radius 0 ;;
|
||||
toggle)
|
||||
if [[ -f $TOGGLES_CSS ]] && grep -q 'border-radius: 6px;' "$TOGGLES_CSS"; then
|
||||
set_radius 0
|
||||
else
|
||||
set_radius 6
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: omarchy-style-corners-walker [toggle|sharp|round]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
omarchy-restart-walker
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Set Waybar position
|
||||
# omarchy:args=<top|bottom|left|right>
|
||||
# omarchy:examples=omarchy-style-waybar-position top | omarchy style waybar-position bottom
|
||||
|
||||
set -e
|
||||
|
||||
WAYBAR_CONFIG="$HOME/.config/waybar/config.jsonc"
|
||||
|
||||
position=$1
|
||||
|
||||
if [[ ! $position =~ ^(top|bottom|left|right)$ ]]; then
|
||||
echo "Usage: omarchy-style-waybar-position top|bottom|left|right" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Reset config and styles before making adjustments
|
||||
omarchy-refresh-config waybar/config.jsonc
|
||||
omarchy-refresh-config waybar/style.css
|
||||
|
||||
if [[ $position == "left" || $position == "right" ]]; then
|
||||
height=0
|
||||
width=28
|
||||
horizontal=false
|
||||
else
|
||||
height=26
|
||||
width=0
|
||||
horizontal=true
|
||||
fi
|
||||
|
||||
# Change position
|
||||
sed -i -E "s/(\"position\"[[:space:]]*:[[:space:]]*\")[a-z]+(\")/\\1${position}\\2/" "$WAYBAR_CONFIG"
|
||||
|
||||
# Change height/width
|
||||
sed -i -E "s/(\"height\"[[:space:]]*:[[:space:]]*)[0-9]+/\\1${height}/; s/(\"width\"[[:space:]]*:[[:space:]]*)[0-9]+/\\1${width}/" "$WAYBAR_CONFIG"
|
||||
|
||||
# Change the clock format
|
||||
if [[ $horizontal == true ]]; then
|
||||
sed -i -E '/"clock"[[:space:]]*:[[:space:]]*\{/,/\}/ s/"format"[[:space:]]*:[[:space:]]*"[^"]*"/"format": "{:L%A %H:%M}"/' "$WAYBAR_CONFIG"
|
||||
else
|
||||
sed -i -E '/"clock"[[:space:]]*:[[:space:]]*\{/,/\}/ s/"format"[[:space:]]*:[[:space:]]*"[^"]*"/"format": "{:%H\\n —\\n%M}"/' "$WAYBAR_CONFIG"
|
||||
fi
|
||||
|
||||
omarchy-restart-waybar
|
||||
+39
-15
@@ -13,7 +13,7 @@ usage() {
|
||||
Usage:
|
||||
omarchy transcode [--path path] [input] [format] [resolution]
|
||||
|
||||
With no input, pick a picture or video with Walker from ~/Pictures and ~/Videos,
|
||||
With no input, fuzzy-pick a picture or video from ~/Pictures and ~/Videos,
|
||||
or only from --path when provided. Then pick the output format and resolution.
|
||||
|
||||
Options:
|
||||
@@ -29,6 +29,30 @@ Resolutions:
|
||||
EOF
|
||||
}
|
||||
|
||||
pick_file() {
|
||||
local search_path="$1"
|
||||
local paths=()
|
||||
|
||||
if [[ -n $search_path ]]; then
|
||||
[[ -e $search_path ]] || { echo "Path not found: $search_path" >&2; return 1; }
|
||||
paths=("$search_path")
|
||||
else
|
||||
paths=("$HOME/Pictures" "$HOME/Videos")
|
||||
fi
|
||||
|
||||
find "${paths[@]}" -type f \
|
||||
\( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' -o -iname '*.gif' -o -iname '*.heic' -o -iname '*.avif' \
|
||||
-o -iname '*.mp4' -o -iname '*.mov' -o -iname '*.m4v' -o -iname '*.mkv' -o -iname '*.webm' -o -iname '*.avi' \) \
|
||||
-printf '%T@\t%p\n' 2>/dev/null | sort -rn | cut -f2- | fzf --layout=reverse-list --prompt="Transcode file> "
|
||||
}
|
||||
|
||||
pick_option() {
|
||||
local prompt="$1"
|
||||
shift
|
||||
|
||||
gum choose --header "$prompt" "$@"
|
||||
}
|
||||
|
||||
media_type() {
|
||||
local mime
|
||||
mime=$(file -b --mime-type "$1")
|
||||
@@ -163,10 +187,9 @@ main() {
|
||||
input="${positional[0]:-}"
|
||||
format="${positional[1]:-}"
|
||||
resolution="${positional[2]:-}"
|
||||
search_path="${search_path:-$HOME/Pictures:$HOME/Videos}"
|
||||
|
||||
if [[ -z $input ]]; then
|
||||
input=$(omarchy-menu-file "Transcode picture or video" "$search_path" "jpg jpeg png webp gif heic avif mp4 mov m4v mkv webm avi")
|
||||
input=$(pick_file "$search_path")
|
||||
fi
|
||||
|
||||
[[ -n $input ]] || return 1
|
||||
@@ -176,32 +199,33 @@ main() {
|
||||
|
||||
if [[ -z $format ]]; then
|
||||
if [[ $type == "picture" ]]; then
|
||||
format=$(omarchy-menu-select "Select format" jpg png)
|
||||
format=$(pick_option "Select format..." jpg png)
|
||||
else
|
||||
format=$(omarchy-menu-select "Select format" mp4 gif)
|
||||
format=$(pick_option "Select format..." mp4 gif)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z $resolution ]]; then
|
||||
if [[ $type == "picture" ]]; then
|
||||
resolution=$(omarchy-menu-select "Select resolution" high medium low)
|
||||
resolution=$(pick_option "Select resolution..." high medium low)
|
||||
else
|
||||
resolution=$(omarchy-menu-select "Select resolution" 4k 1080p 720p)
|
||||
resolution=$(pick_option "Select resolution..." 4k 1080p 720p)
|
||||
fi
|
||||
fi
|
||||
|
||||
output=$(output_path "$input" "$format" "$resolution")
|
||||
|
||||
if [[ $type == "video" ]]; then
|
||||
omarchy-notification-send -g "Transcoding video…" "$(basename -- "$input") to $format ($resolution)"
|
||||
transcode_video "$input" "$format" "$resolution" "$output"
|
||||
copy_to_clipboard "$output"
|
||||
omarchy-notification-send -g "Transcoded to $resolution $format" "Saved and copied to clipboard."
|
||||
else
|
||||
if [[ $type == "picture" ]]; then
|
||||
transcode_picture "$input" "$format" "$resolution" "$output"
|
||||
copy_to_clipboard "$output"
|
||||
omarchy-notification-send -g "Transcoded to $resolution $format" "Saved and copied to clipboard."
|
||||
else
|
||||
transcode_video "$input" "$format" "$resolution" "$output"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
copy_to_clipboard "$output"
|
||||
echo "Your $type has been transcoded into $format as $resolution. It's on your clipboard."
|
||||
echo ""
|
||||
echo "It's also in $output"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Ensure the Omarchy and Arch keyring packages are installed and populated
|
||||
# omarchy:summary=Ensure the Omarchy keyring package is installed and populated
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then
|
||||
@@ -16,7 +16,5 @@ 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 2> >(grep -vE '^warning: archlinux-keyring-[^ ]+ is up to date -- reinstalling$' >&2)
|
||||
echo "Keys are correct"
|
||||
sudo pacman -Sy --noconfirm archlinux-keyring >/dev/null
|
||||
|
||||
@@ -12,6 +12,15 @@ fi
|
||||
IFS='|' read -r place temperature wind <<< "$weather"
|
||||
place=${place%%,*}
|
||||
place=${place^}
|
||||
temperature=${temperature#+}
|
||||
format_temperature() {
|
||||
local celsius=${1#+}
|
||||
celsius=${celsius//°/}
|
||||
celsius=${celsius%C}
|
||||
|
||||
echo "$(omarchy-weather-icon) $place · Temp $temperature · Wind $wind"
|
||||
echo "${celsius}°c / $((celsius * 9 / 5 + 32))°f"
|
||||
}
|
||||
|
||||
temperature=$(format_temperature "$temperature")
|
||||
wind=${wind//km\// km/}
|
||||
|
||||
echo "$(omarchy-weather-icon) $place · Temperature $temperature · Wind $wind"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--ozone-platform=wayland
|
||||
--ozone-platform-hint=wayland
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecodeLinuxGL,VaapiVideoEncoder
|
||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<test name="family" qual="any">
|
||||
<string>monospace</string>
|
||||
</test>
|
||||
<edit name="family" mode="append" binding="same">
|
||||
<edit name="family" mode="assign" binding="strong">
|
||||
<string>JetBrainsMono Nerd Font</string>
|
||||
</edit>
|
||||
</match>
|
||||
|
||||
@@ -11,7 +11,7 @@ listener {
|
||||
on-timeout = pidof hyprlock || omarchy-launch-screensaver
|
||||
}
|
||||
|
||||
# Lock system after 5 minutes (screensaver resets idle timer, so have to just do half + 2s margin)
|
||||
# Lock system after 5 minutes
|
||||
listener {
|
||||
timeout = 152
|
||||
on-timeout = omarchy-system-lock
|
||||
|
||||
@@ -41,5 +41,3 @@ input-field {
|
||||
auth {
|
||||
fingerprint:enabled = false
|
||||
}
|
||||
|
||||
source = ~/.local/state/omarchy/toggles/hyprlock.conf
|
||||
|
||||
@@ -2,12 +2,25 @@
|
||||
# List current monitors and resolutions possible: hyprctl monitors
|
||||
# Format: monitor = [port], resolution, position, scale
|
||||
|
||||
# Default configuration
|
||||
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
||||
env = GDK_SCALE,2
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
||||
# env = GDK_SCALE,1.75
|
||||
# monitor=,preferred,auto,1.6
|
||||
|
||||
# Straight 1x setup for low-resolution displays like 1080p or 1440p
|
||||
# Or for ultrawide monitors like 34" 3440x1440 or 49" 5120x1440
|
||||
# env = GDK_SCALE,1
|
||||
# monitor=,preferred,auto,1
|
||||
|
||||
# Portrait/rotated secondary monitor (transform: 1 = 90°, 3 = 270°)
|
||||
# monitor = DP-2, preferred, auto, 1, transform, 1
|
||||
|
||||
# Example for Framework 13 w/ 6K XDR Apple display
|
||||
# monitor = DP-5, 6016x3384@60, auto, 2
|
||||
# monitor = eDP-1, 2880x1920@120, auto, 2
|
||||
|
||||
# Disable the second ghost monitor on an Apple 6K XDR over Thunderbolt
|
||||
# monitor=DP-2,disable
|
||||
|
||||
+4
-7
@@ -3,14 +3,11 @@
|
||||
# Print the current image file
|
||||
<Ctrl+p> = exec lp "$imv_current_file"
|
||||
|
||||
# Trash the current image and quit the viewer (recoverable from Trash)
|
||||
<Ctrl+x> = exec gio trash -- "$imv_current_file"; quit
|
||||
# Delete the current image and quit the viewer
|
||||
<Ctrl+x> = exec rm "$imv_current_file"; quit
|
||||
|
||||
# Trash the current image and move to the next one
|
||||
<Ctrl+Shift+X> = exec gio trash -- "$imv_current_file"; close
|
||||
# Delete the current image and move to the next one
|
||||
<Ctrl+Shift+X> = exec rm "$imv_current_file"; close
|
||||
|
||||
# Rotate the currently open image by 90 degrees
|
||||
<Ctrl+r> = exec mogrify -rotate 90 "$imv_current_file"
|
||||
|
||||
# Edit the current image in Satty and quit the viewer
|
||||
<Ctrl+e> = exec satty --filename "$imv_current_file" & ; quit
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Show the weather status notification after Omarchy has started.
|
||||
# To put it into use, remove .sample from this file name.
|
||||
|
||||
weather=$(omarchy-weather-status 2>/dev/null) || true
|
||||
|
||||
if [[ -n $weather && $weather != "Weather unavailable" ]]; then
|
||||
notify-send -u low "$weather"
|
||||
fi
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This hook is called by `omarchy refresh pacman` AFTER the channel template
|
||||
# is copied to /etc/pacman.conf and BEFORE `pacman -Syyuu` runs. Use it to
|
||||
# layer customizations onto the freshly-written pacman.conf so they're
|
||||
# respected by the upgrade — common cases are adding a custom repository
|
||||
# (e.g. CachyOS, Chaotic-AUR, an internal company repo) or extra IgnorePkg
|
||||
# lines.
|
||||
#
|
||||
# The hook runs as the invoking user with a warm sudo cache.
|
||||
#
|
||||
# To put it into use, remove .sample from this file name.
|
||||
|
||||
# Example: add an Include line above [core] for a custom repo.
|
||||
# Maintain the repo entries in /etc/pacman.d/custom-repos.conf yourself.
|
||||
|
||||
CONF=/etc/pacman.conf
|
||||
SNIPPET=/etc/pacman.d/custom-repos.conf
|
||||
MARKER="Include = $SNIPPET"
|
||||
|
||||
[[ -r $SNIPPET ]] || exit 0
|
||||
grep -qxF "$MARKER" "$CONF" && exit 0
|
||||
|
||||
sudo sed -i "0,/^\[core\]/s||$MARKER\n\n[core]|" "$CONF"
|
||||
@@ -1,13 +0,0 @@
|
||||
[Unit]
|
||||
Description=SwayOSD server
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/swayosd-server
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical-session.target
|
||||
@@ -4,7 +4,6 @@
|
||||
"position": "top",
|
||||
"spacing": 0,
|
||||
"height": 26,
|
||||
"width": 0,
|
||||
"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": [
|
||||
@@ -70,7 +69,7 @@
|
||||
"custom/weather": {
|
||||
"exec": "$OMARCHY_PATH/default/waybar/weather.sh",
|
||||
"return-type": "json",
|
||||
"interval": 60,
|
||||
"interval": 600,
|
||||
"tooltip": false,
|
||||
"on-click": "notify-send -u low \"$(omarchy-weather-status)\""
|
||||
},
|
||||
|
||||
@@ -70,7 +70,6 @@ tooltip {
|
||||
#custom-weather {
|
||||
margin-left: 7.5px;
|
||||
margin-right: 7.5px;
|
||||
min-width: 14px;
|
||||
}
|
||||
|
||||
#custom-weather.unavailable {
|
||||
@@ -110,38 +109,3 @@ tooltip {
|
||||
#custom-voxtype.recording {
|
||||
color: #a55555;
|
||||
}
|
||||
.left .modules-left, .right .modules-left { margin: 8px 0 0 0; }
|
||||
.left .modules-right, .right .modules-right { margin: 0 0 8px 0; }
|
||||
|
||||
.left #workspaces button, .right #workspaces button {
|
||||
padding: 6px 0;
|
||||
margin: 1.5px 0;
|
||||
}
|
||||
|
||||
.left #cpu, .right #cpu,
|
||||
.left #battery, .right #battery,
|
||||
.left #pulseaudio, .right #pulseaudio,
|
||||
.left #custom-omarchy, .right #custom-omarchy,
|
||||
.left #custom-update, .right #custom-update {
|
||||
margin: 1.5px 0;
|
||||
padding: 6px 0;
|
||||
min-width: 0;
|
||||
min-height: 12px;
|
||||
}
|
||||
|
||||
.left #tray, .right #tray { margin: 0 0 16px 0; }
|
||||
.left #bluetooth, .right #bluetooth { margin: 1.5px 0; padding: 6px 0; min-height: 12px; }
|
||||
.left #network, .right #network { margin: 1.5px 0; padding: 6px 0; min-height: 12px; }
|
||||
.left #custom-expand-icon, .right #custom-expand-icon { margin: 1.5px 0; padding: 6px 0; min-height: 12px; }
|
||||
.left #clock, .right #clock { margin: 8.75px 0 0 0; }
|
||||
.left #custom-weather, .right #custom-weather { margin: 1.5px 0; padding: 6px 0; min-height: 12px; min-width: 14px; margin-right: 4px; }
|
||||
|
||||
.left #custom-screenrecording-indicator, .right #custom-screenrecording-indicator,
|
||||
.left #custom-idle-indicator, .right #custom-idle-indicator,
|
||||
.left #custom-notification-silencing-indicator, .right #custom-notification-silencing-indicator {
|
||||
margin: 5px 0 0 0;
|
||||
min-width: 0;
|
||||
min-height: 12px;
|
||||
}
|
||||
|
||||
.left #custom-voxtype, .right #custom-voxtype { margin: 7.5px 0 0 0; min-width: 0; min-height: 12px; }
|
||||
|
||||
@@ -40,17 +40,6 @@ _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"))
|
||||
|
||||
@@ -3,6 +3,7 @@ exec-once = uwsm-app -- mako
|
||||
exec-once = ! omarchy-toggle-enabled waybar-off && uwsm-app -- waybar
|
||||
exec-once = uwsm-app -- fcitx5 --disable notificationitem
|
||||
exec-once = uwsm-app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
||||
exec-once = uwsm-app -- swayosd-server
|
||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = omarchy-first-run
|
||||
exec-once = omarchy-powerprofiles-init
|
||||
@@ -11,6 +12,3 @@ exec-once = uwsm-app -- omarchy-hyprland-monitor-watch
|
||||
# Slow app launch fix -- set systemd vars
|
||||
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
||||
exec-once = dbus-update-activation-environment --systemd --all
|
||||
|
||||
# Run post-boot hooks after startup config has loaded
|
||||
exec-once = sleep 2 && omarchy-hook post-boot
|
||||
|
||||
@@ -91,16 +91,6 @@ bindd = SUPER, code:21, Shrink window left, resizeactive, 100 0 # = key
|
||||
bindd = SUPER SHIFT, code:20, Shrink window up, resizeactive, 0 -100
|
||||
bindd = SUPER SHIFT, code:21, Expand window down, resizeactive, 0 100
|
||||
|
||||
bindd = SUPER ALT, code:20, Expand window left a little, resizeactive, -25 0
|
||||
bindd = SUPER ALT, code:21, Shrink window left a little, resizeactive, 25 0
|
||||
bindd = SUPER SHIFT ALT, code:20, Shrink window up a little, resizeactive, 0 -25
|
||||
bindd = SUPER SHIFT ALT, code:21, Expand window down a little, resizeactive, 0 25
|
||||
|
||||
bindd = SUPER CTRL, code:20, Expand window left a lot, resizeactive, -300 0
|
||||
bindd = SUPER CTRL, code:21, Shrink window left a lot, resizeactive, 300 0
|
||||
bindd = SUPER CTRL SHIFT, code:20, Shrink window up a lot, resizeactive, 0 -300
|
||||
bindd = SUPER CTRL SHIFT, code:21, Expand window down a lot, resizeactive, 0 300
|
||||
|
||||
# Scroll through existing workspaces with SUPER + scroll
|
||||
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
|
||||
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
|
||||
|
||||
@@ -13,10 +13,6 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator
|
||||
|
||||
# Aesthetics
|
||||
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
||||
bindd = SUPER SHIFT CTRL, UP, Move Waybar to top, exec, omarchy-style-waybar-position top
|
||||
bindd = SUPER SHIFT CTRL, DOWN, Move Waybar to bottom, exec, omarchy-style-waybar-position bottom
|
||||
bindd = SUPER SHIFT CTRL, LEFT, Move Waybar to left, exec, omarchy-style-waybar-position left
|
||||
bindd = SUPER SHIFT CTRL, RIGHT, Move Waybar to right, exec, omarchy-style-waybar-position right
|
||||
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
||||
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
|
||||
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, omarchy-hyprland-window-transparency-toggle
|
||||
@@ -48,12 +44,7 @@ bindd = SUPER CTRL, PRINT, Extract text (OCR) from screenshot, exec, omarchy-cap
|
||||
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
||||
|
||||
# Transcoding
|
||||
bindd = SUPER CTRL, PERIOD, Transcode, exec, omarchy-transcode
|
||||
|
||||
# Reminders
|
||||
bindd = SUPER CTRL, R, Set reminder, exec, omarchy-menu reminder-set
|
||||
bindd = SUPER CTRL ALT, R, Show reminders, exec, omarchy-reminder show
|
||||
bindd = SUPER SHIFT CTRL, R, Clear reminders, exec, omarchy-reminder clear
|
||||
bindd = SUPER CTRL, R, Transcode, exec, omarchy-menu transcode
|
||||
|
||||
# Waybar-less information
|
||||
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send -u low " $(date +"%A %H:%M · %d %B %Y · Week %V")"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
decoration {
|
||||
rounding = 6
|
||||
rounding_power = 3
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
anchor=top-right
|
||||
group-by=app-name,summary,body
|
||||
default-timeout=5000
|
||||
width=420
|
||||
outer-margin=20
|
||||
|
||||
@@ -6,8 +6,8 @@ description: >
|
||||
~/.config/alacritty/, ~/.config/foot/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/,
|
||||
or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings,
|
||||
monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes,
|
||||
wallpaper, night light, idle, lock screen, screenshots, reminders, layer rules,
|
||||
workspace settings, display config, and user-facing omarchy commands. Excludes Omarchy
|
||||
wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace
|
||||
settings, display config, and user-facing omarchy commands. Excludes Omarchy
|
||||
source development in ~/.local/share/omarchy/ and `omarchy dev` workflows.
|
||||
---
|
||||
|
||||
@@ -30,7 +30,7 @@ It is not for contributing to Omarchy source code.
|
||||
- Layer rules, workspace settings, display/monitor configuration
|
||||
- Themes, wallpapers, fonts, appearance changes
|
||||
- User-facing `omarchy` commands (`omarchy theme ...`, `omarchy refresh ...`, `omarchy restart ...`, etc.)
|
||||
- Screenshots, screen recording, reminders, night light, idle behavior, lock screen
|
||||
- Screenshots, screen recording, night light, idle behavior, lock screen
|
||||
|
||||
**If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.**
|
||||
|
||||
@@ -118,7 +118,6 @@ Run `omarchy --help` for the full list. The most common groups:
|
||||
| `omarchy install` | Install optional software / packages | `omarchy install docker dbs` |
|
||||
| `omarchy launch` | Launch apps | `omarchy launch browser` |
|
||||
| `omarchy capture` | Screenshots and recordings | `omarchy capture screenshot` |
|
||||
| `omarchy reminder` | Desktop notification reminders | `omarchy reminder 15 "Pickup Jack"` |
|
||||
| `omarchy pkg` | Package management | `omarchy pkg install <pkg>` |
|
||||
| `omarchy setup` | Initial setup tasks | `omarchy setup fingerprint` |
|
||||
| `omarchy update` | System updates | `omarchy update` |
|
||||
@@ -356,20 +355,9 @@ 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 pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||
5. **Is it a package install?** Use `omarchy install package <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
|
||||
|
||||
When the user asks to set a reminder, use `omarchy reminder <minutes> [message]` directly. Convert natural language durations to minutes and title-case short reminder labels when appropriate.
|
||||
|
||||
```bash
|
||||
omarchy reminder 15 "Pickup Jack"
|
||||
omarchy reminder 60 "Check laundry"
|
||||
omarchy reminder show
|
||||
omarchy reminder clear
|
||||
```
|
||||
|
||||
## Out of Scope
|
||||
|
||||
This skill intentionally does not cover Omarchy source development. Do not use this skill for:
|
||||
@@ -384,9 +372,6 @@ This skill intentionally does not cover Omarchy source development. Do not use t
|
||||
- "Configure my external monitor" -> Edit `~/.config/hypr/monitors.conf`
|
||||
- "Make the window gaps smaller" -> Edit `~/.config/hypr/looknfeel.conf`
|
||||
- "Set up night light to turn on at sunset" -> `omarchy toggle nightlight` or edit `~/.config/hypr/hyprsunset.conf`
|
||||
- "Set a reminder to pickup jack in 15 minutes" -> `omarchy reminder 15 "Pickup Jack"`
|
||||
- "Show my reminders" -> `omarchy reminder show`
|
||||
- "Clear all reminders" -> `omarchy reminder clear`
|
||||
- "Customize the catppuccin theme colors" -> Create `~/.config/omarchy/themes/catppuccin-custom/` by copying from stock, then edit
|
||||
- "Run a script every time I change themes" -> Create `~/.config/omarchy/hooks/theme-set`
|
||||
- "Reset waybar to defaults" -> `omarchy refresh waybar`
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
import { existsSync } from "node:fs";
|
||||
import { join } from "node:path";
|
||||
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
||||
|
||||
const home = process.env.HOME ?? "";
|
||||
const lightModePath = join(home, ".config/omarchy/current/theme/light.mode");
|
||||
|
||||
@@ -96,7 +96,6 @@ Rectangle {
|
||||
color: "transparent"
|
||||
selectionColor: "transparent"
|
||||
selectedTextColor: "transparent"
|
||||
cursorDelegate: Item {}
|
||||
focus: true
|
||||
|
||||
onTextChanged: root.loginFailed = false
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
include=~/.local/share/omarchy/default/mako/core.ini
|
||||
include=~/.local/state/omarchy/toggles/mako.ini
|
||||
|
||||
text-color={{ foreground }}
|
||||
border-color={{ accent }}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@import "../../../../../../../.config/omarchy/current/theme/walker.css";
|
||||
@import "../../../../../../../.local/state/omarchy/toggles/walker.css";
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
## Auto-connect A2DP playback/capture profiles on Bluetooth devices.
|
||||
## This helps speakers and receivers expose their audio profiles without
|
||||
## requiring manual PipeWire/WirePlumber recovery.
|
||||
|
||||
monitor.bluez.rules = [
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
device.name = "~bluez_card.*"
|
||||
}
|
||||
]
|
||||
actions = {
|
||||
update-props = {
|
||||
bluez5.auto-connect = [ a2dp_sink a2dp_source ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -16,7 +16,6 @@ run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh
|
||||
run_logged $OMARCHY_INSTALL/config/docker.sh
|
||||
run_logged $OMARCHY_INSTALL/config/mimetypes.sh
|
||||
run_logged $OMARCHY_INSTALL/config/user-dirs.sh
|
||||
run_logged $OMARCHY_INSTALL/config/toggles.sh
|
||||
run_logged $OMARCHY_INSTALL/config/nautilus-python.sh
|
||||
run_logged $OMARCHY_INSTALL/config/localdb.sh
|
||||
run_logged $OMARCHY_INSTALL/config/walker-elephant.sh
|
||||
@@ -51,6 +50,8 @@ 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
|
||||
|
||||
@@ -1,8 +1,2 @@
|
||||
# Turn on bluetooth by default
|
||||
chrootable_systemctl_enable bluetooth.service
|
||||
|
||||
# Persist last power state across reboots (default AutoEnable=true overrides it)
|
||||
sudo sed -i 's/^#\?AutoEnable=.*/AutoEnable=false/' /etc/bluetooth/main.conf
|
||||
|
||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf" ~/.config/wireplumber/wireplumber.conf.d/
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# Fix Dell XPS haptic touchpad.
|
||||
# The Synaptics haptic touchpad (vendor 06CB) uses the HID Manual Trigger
|
||||
# protocol, but the kernel's HID haptic subsystem only supports Auto Trigger.
|
||||
# This sets up a lightweight daemon that monitors touchpad button events and
|
||||
# sends haptic pulses via HID feature reports on the hidraw device.
|
||||
# Also disables I2C runtime PM to prevent the haptic engine losing state
|
||||
# across suspend/resume.
|
||||
|
||||
if omarchy-hw-match "XPS" \
|
||||
&& ls /sys/bus/i2c/devices/i2c-VEN_06CB:00 2>/dev/null; then
|
||||
|
||||
# Keep I2C controller power on to prevent haptic engine losing state
|
||||
sudo tee /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules << 'EOF'
|
||||
ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:19.0", ATTR{power/control}="on"
|
||||
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="i2c_designware.0", ATTR{power/control}="on"
|
||||
EOF
|
||||
sudo udevadm control --reload-rules
|
||||
|
||||
# Haptic feedback daemon as a systemd service
|
||||
sudo tee /etc/systemd/system/dell-xps-haptic-touchpad.service << SVC
|
||||
[Unit]
|
||||
Description=Dell XPS haptic touchpad feedback
|
||||
After=systemd-udev-settle.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=$OMARCHY_PATH/bin/omarchy-haptic-touchpad
|
||||
Restart=on-failure
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
SVC
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable dell-xps-haptic-touchpad.service
|
||||
fi
|
||||
@@ -1,8 +1,8 @@
|
||||
# This installs hardware video acceleration for Intel GPUs
|
||||
|
||||
if INTEL_GPU=$(lspci | grep -iE 'vga|3d|display' | grep -i 'intel'); then
|
||||
# HD Graphics / Iris / Xe / Arc / Non-Arc Panther Lake use intel-media-driver + VPL
|
||||
if [[ ${INTEL_GPU,,} =~ (hd\ graphics|uhd\ graphics|xe|iris|arc|panther\ lake) ]]; then
|
||||
# HD Graphics / Iris / Xe / Arc use intel-media-driver + VPL
|
||||
if [[ ${INTEL_GPU,,} =~ (hd\ graphics|uhd\ graphics|xe|iris|arc) ]]; then
|
||||
omarchy-pkg-add intel-media-driver libvpl vpl-gpu-rt
|
||||
elif [[ ${INTEL_GPU,,} =~ "gma" ]]; then
|
||||
# Older generations from 2008 to ~2014-2017 use libva-intel-driver
|
||||
|
||||
@@ -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]
|
||||
DefaultLimitNOFILE=65536:524288
|
||||
DefaultLimitNOFILESoft=65536
|
||||
EOF
|
||||
|
||||
sudo cp /etc/systemd/system.conf.d/99-omarchy-nofile.conf \
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
# Place in each assistant's global skills directory so the Omarchy skill is available on first install
|
||||
mkdir -p ~/.agents/skills ~/.claude/skills ~/.codex/skills ~/.pi/agent/skills
|
||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.agents/skills/omarchy
|
||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.claude/skills/omarchy
|
||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.codex/skills/omarchy
|
||||
ln -sfn "$OMARCHY_PATH/default/omarchy-skill" ~/.pi/agent/skills/omarchy
|
||||
# Place in ~/.claude/skills since all tools populate from there as well as their own sources
|
||||
mkdir -p ~/.claude/skills
|
||||
ln -s $OMARCHY_PATH/default/omarchy-skill ~/.claude/skills/omarchy
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# Make sure toggles are available
|
||||
mkdir -p ~/.local/state/omarchy/toggles
|
||||
touch ~/.local/state/omarchy/toggles/hyprlock.conf
|
||||
touch ~/.local/state/omarchy/toggles/mako.ini
|
||||
touch ~/.local/state/omarchy/toggles/walker.css
|
||||
@@ -1,3 +0,0 @@
|
||||
# Set the default GDK_SCALE from what the monitor is currently reporting
|
||||
|
||||
sed -i -E "s|^([[:space:]]*env[[:space:]]*=[[:space:]]*GDK_SCALE,).*|\\1$(omarchy-hyprland-monitor-scale)|" ~/.config/hypr/monitors.conf
|
||||
Regular → Executable
@@ -1,2 +0,0 @@
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now swayosd-server.service
|
||||
@@ -61,9 +61,6 @@ 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,5 +7,4 @@ 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
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
if omarchy-hw-dell-xps-haptic-touchpad; then
|
||||
omarchy-pkg-add dell-xps-touchpad-haptics
|
||||
fi
|
||||
@@ -3,6 +3,5 @@ omarchy-npx-install @google/gemini-cli gemini
|
||||
omarchy-npx-install @github/copilot copilot
|
||||
omarchy-npx-install opencode-ai opencode
|
||||
omarchy-npx-install playwright playwright-cli
|
||||
omarchy-npx-install @earendil-works/pi-coding-agent pi
|
||||
omarchy-npx-install @mariozechner/pi-coding-agent pi
|
||||
omarchy-npx-install @kitlangton/ghui ghui
|
||||
omarchy-npx-install hunkdiff hunk
|
||||
|
||||
@@ -2,3 +2,4 @@ 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,12 +0,0 @@
|
||||
echo "Enable Bluetooth A2DP auto-connect in WirePlumber"
|
||||
|
||||
destination=~/.config/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf
|
||||
|
||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||
|
||||
if [[ ! -f "$destination" ]]; then
|
||||
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf" \
|
||||
"$destination"
|
||||
fi
|
||||
|
||||
omarchy-state set reboot-required
|
||||
@@ -3,6 +3,10 @@ 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
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
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
|
||||
Regular → Executable
Regular → Executable
@@ -1,7 +0,0 @@
|
||||
echo "Update Pi CLI wrapper package"
|
||||
|
||||
pi_bin="$HOME/.local/bin/pi"
|
||||
|
||||
if [[ -f $pi_bin ]] && grep -q '^package="@mariozechner/pi-coding-agent"$' "$pi_bin"; then
|
||||
sed -i 's|^package="@mariozechner/pi-coding-agent"$|package="@earendil-works/pi-coding-agent"|' "$pi_bin"
|
||||
fi
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user