mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-02 04:37:49 +02:00
Compare commits
@@ -92,6 +92,10 @@ Exceptions are allowed for bootstrap, preflight, migration, and package-helper s
|
||||
- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors
|
||||
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)
|
||||
|
||||
# Visual Changes
|
||||
|
||||
When making visual changes, such as Waybar styles or desktop appearance, always take and analyze a screenshot after applying the change to verify the result. Use `omarchy capture screenshot fullscreen save` for fullscreen screenshots.
|
||||
|
||||
# Refresh Pattern
|
||||
|
||||
To copy a default config to user config with automatic backup:
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB |
@@ -53,7 +53,6 @@ GROUP_DESCRIPTIONS[npx]="NPX package wrappers"
|
||||
GROUP_DESCRIPTIONS[pkg]="Package management helpers"
|
||||
GROUP_DESCRIPTIONS[plymouth]="Plymouth boot theme management"
|
||||
GROUP_DESCRIPTIONS[powerprofiles]="Power profile management"
|
||||
GROUP_DESCRIPTIONS[echo]="Colored terminal output helpers"
|
||||
GROUP_DESCRIPTIONS[refresh]="Reset config to defaults"
|
||||
GROUP_DESCRIPTIONS[reinstall]="Reinstall and reset workflows"
|
||||
GROUP_DESCRIPTIONS[reminder]="Desktop notification reminders"
|
||||
|
||||
@@ -233,6 +233,7 @@ stop_screenrecording() {
|
||||
else
|
||||
finalize_recording
|
||||
local filename=$(cat "$RECORDING_FILE" 2>/dev/null)
|
||||
echo "$filename"
|
||||
local preview="${filename%.mp4}-preview.png"
|
||||
|
||||
# Generate a preview thumbnail from the first frame
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# omarchy:summary=Take a screenshot
|
||||
# omarchy:group=capture
|
||||
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy] [--editor=<name>]
|
||||
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy|save] [--editor=<name>]
|
||||
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
|
||||
# omarchy:aliases=omarchy screenshot
|
||||
|
||||
@@ -126,14 +126,22 @@ esac
|
||||
FILENAME="screenshot-$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
FILEPATH="$OUTPUT_DIR/$FILENAME"
|
||||
|
||||
if [[ $PROCESSING == "slurp" ]]; then
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
wl-copy <"$FILEPATH"
|
||||
case "$PROCESSING" in
|
||||
slurp)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
wl-copy <"$FILEPATH"
|
||||
|
||||
(
|
||||
ACTION=$(notify-send "Screenshot saved to clipboard and file" "Edit with Super + Alt + , (or click this)" -t 10000 -i "$FILEPATH" -A "default=edit")
|
||||
[[ $ACTION == "default" ]] && open_editor "$FILEPATH"
|
||||
) &
|
||||
else
|
||||
grim -g "$SELECTION" - | wl-copy
|
||||
fi
|
||||
(
|
||||
ACTION=$(notify-send "Screenshot saved to clipboard and file" "Edit with Super + Alt + , (or click this)" -t 10000 -i "$FILEPATH" -A "default=edit")
|
||||
[[ $ACTION == "default" ]] && open_editor "$FILEPATH"
|
||||
) >/dev/null 2>&1 &
|
||||
;;
|
||||
copy)
|
||||
grim -g "$SELECTION" - | wl-copy
|
||||
;;
|
||||
save)
|
||||
grim -g "$SELECTION" "$FILEPATH" || exit 1
|
||||
echo "$FILEPATH"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Print a failure message in red
|
||||
# omarchy:args=<message>
|
||||
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${RED}$*${NC}"
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Print an informational message in yellow
|
||||
# omarchy:args=<message>
|
||||
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${YELLOW}$*${NC}"
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Print a success message in green
|
||||
# omarchy:args=<message>
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${GREEN}$*${NC}"
|
||||
@@ -1,96 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# omarchy:summary=Run the Synaptics touchpad haptic feedback daemon
|
||||
|
||||
"""Haptic feedback daemon for Synaptics touchpads with Manual Trigger.
|
||||
|
||||
Monitors touchpad button press events and sends haptic pulses via HID
|
||||
feature reports. Required because the kernel's HID haptic subsystem only
|
||||
supports Auto Trigger with waveform enumeration, not the simpler Manual
|
||||
Trigger protocol used by these Synaptics touchpads.
|
||||
"""
|
||||
|
||||
import fcntl, glob, os, struct, sys
|
||||
|
||||
VENDOR = "06CB"
|
||||
REPORT_ID = 0x37
|
||||
INTENSITY = 40 # 0-100
|
||||
|
||||
# input_event: struct timeval (16 bytes on 64-bit) + type(H) + code(H) + value(i)
|
||||
EVENT_FORMAT = "llHHi"
|
||||
EVENT_SIZE = struct.calcsize(EVENT_FORMAT)
|
||||
EV_KEY = 0x01
|
||||
BTN_LEFT = 272
|
||||
BTN_RIGHT = 273
|
||||
BTN_MIDDLE = 274
|
||||
|
||||
# ioctl: HIDIOCSFEATURE(len) = _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x06, len)
|
||||
def HIDIOCSFEATURE(length):
|
||||
return 0xC0000000 | (length << 16) | (ord("H") << 8) | 0x06
|
||||
|
||||
|
||||
def find_hidraw():
|
||||
for path in sorted(glob.glob("/sys/class/hidraw/hidraw*")):
|
||||
uevent = os.path.join(path, "device", "uevent")
|
||||
try:
|
||||
with open(uevent) as f:
|
||||
content = f.read().upper()
|
||||
if f"0000{VENDOR}" in content:
|
||||
return os.path.join("/dev", os.path.basename(path))
|
||||
except OSError:
|
||||
continue
|
||||
return None
|
||||
|
||||
|
||||
def find_touchpad_event():
|
||||
for path in sorted(glob.glob("/sys/class/input/event*/device/name")):
|
||||
try:
|
||||
with open(path) as f:
|
||||
name = f.read().strip().upper()
|
||||
if VENDOR in name and "TOUCHPAD" in name:
|
||||
event = path.split("/")[-3]
|
||||
return os.path.join("/dev/input", event)
|
||||
except OSError:
|
||||
continue
|
||||
return None
|
||||
|
||||
|
||||
def main():
|
||||
hidraw = find_hidraw()
|
||||
if not hidraw:
|
||||
print("No Synaptics haptic touchpad hidraw device found", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
event = find_touchpad_event()
|
||||
if not event:
|
||||
print("No Synaptics haptic touchpad input device found", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
print(f"Haptic touchpad: hidraw={hidraw} input={event} intensity={INTENSITY}", flush=True)
|
||||
|
||||
haptic_report = struct.pack("BB", REPORT_ID, INTENSITY)
|
||||
ioctl_req = HIDIOCSFEATURE(len(haptic_report))
|
||||
|
||||
hidraw_fd = os.open(hidraw, os.O_RDWR)
|
||||
event_fd = os.open(event, os.O_RDONLY)
|
||||
|
||||
try:
|
||||
while True:
|
||||
data = os.read(event_fd, EVENT_SIZE)
|
||||
if len(data) < EVENT_SIZE:
|
||||
continue
|
||||
_, _, ev_type, code, value = struct.unpack(EVENT_FORMAT, data)
|
||||
if ev_type == EV_KEY and code in (BTN_LEFT, BTN_RIGHT, BTN_MIDDLE) and value == 1:
|
||||
try:
|
||||
fcntl.ioctl(hidraw_fd, ioctl_req, haptic_report)
|
||||
except OSError:
|
||||
pass
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
finally:
|
||||
os.close(event_fd)
|
||||
os.close(hidraw_fd)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Match Dell XPS systems with the Synaptics haptic touchpad.
|
||||
|
||||
omarchy-hw-match "XPS" && [[ -e /sys/bus/i2c/devices/i2c-VEN_06CB:00 ]]
|
||||
@@ -21,7 +21,10 @@ omarchy-pkg-add \
|
||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||
libretro-yabause \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git \
|
||||
libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \
|
||||
libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \
|
||||
libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \
|
||||
libretro-database-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
|
||||
+17
-1
@@ -233,13 +233,18 @@ show_hardware_menu() {
|
||||
options="$options\n Touchpad"
|
||||
fi
|
||||
|
||||
if omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics; then
|
||||
options="$options\n Touchpad Haptics"
|
||||
fi
|
||||
|
||||
if omarchy-hw-touchscreen; then
|
||||
options="$options\n Touchscreen"
|
||||
fi
|
||||
|
||||
case $(menu "Toggle" "$options") in
|
||||
*Laptop*) omarchy-hyprland-monitor-internal toggle ;;
|
||||
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle;;
|
||||
*Mirror*) omarchy-hyprland-monitor-internal-mirror toggle ;;
|
||||
*Haptics*) show_hardware_touchpad_haptics_menu ;;
|
||||
*Touchpad*) omarchy-toggle-touchpad ;;
|
||||
*Touchscreen*) omarchy-toggle-touchscreen ;;
|
||||
*"Hybrid GPU"*) present_terminal omarchy-toggle-hybrid-gpu ;;
|
||||
@@ -247,6 +252,17 @@ show_hardware_menu() {
|
||||
esac
|
||||
}
|
||||
|
||||
show_hardware_touchpad_haptics_menu() {
|
||||
local current=$(dell-xps-touchpad-haptics get)
|
||||
local selected=$(menu "Touchpad Haptics" "low\nmid\nhigh" "" "$current")
|
||||
|
||||
if [[ -n $selected ]]; then
|
||||
dell-xps-touchpad-haptics set "$selected"
|
||||
else
|
||||
back_to show_hardware_menu
|
||||
fi
|
||||
}
|
||||
|
||||
show_style_menu() {
|
||||
case $(menu "Style" " Theme\n Unlock\n Font\n Background\n Hyprland\n Screensaver\n About") in
|
||||
*Theme*) show_theme_menu ;;
|
||||
|
||||
@@ -6,6 +6,6 @@ set -e
|
||||
|
||||
# Reinstall the Omarchy configuration directory from the git source.
|
||||
|
||||
git clone --depth=1 "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
git clone --depth=1 --branch master "https://github.com/basecamp/omarchy.git" ~/.local/share/omarchy-new >/dev/null
|
||||
mv $OMARCHY_PATH ~/.local/share/omarchy-old
|
||||
mv ~/.local/share/omarchy-new $OMARCHY_PATH
|
||||
|
||||
@@ -21,7 +21,10 @@ omarchy-pkg-drop \
|
||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||
libretro-yabause \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||
libretro-cap32-git libretro-fbneo-git libretro-uae-git \
|
||||
libretro-vice-x128-git libretro-vice-x64-git libretro-vice-x64dtv-git libretro-vice-x64sc-git \
|
||||
libretro-vice-xcbm2-git libretro-vice-xcbm5x0-git libretro-vice-xpet-git \
|
||||
libretro-vice-xplus4-git libretro-vice-xscpu64-git libretro-vice-xvic-git \
|
||||
retroarch-joypad-autoconfig-git
|
||||
|
||||
rm -rf \
|
||||
|
||||
@@ -9,27 +9,27 @@ set -e
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
omarchy-echo-info "Removing FIDO2 authentication from sudo..."
|
||||
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
|
||||
omarchy-echo-info "Removing FIDO2 authentication from polkit..."
|
||||
echo "Removing FIDO2 authentication from polkit..."
|
||||
sudo sed -i '/pam_u2f\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
omarchy-echo-success "Removing FIDO2 device from authentication.\n"
|
||||
echo -e "\e[32mRemoving FIDO2 device from authentication.\n\e[0m"
|
||||
|
||||
remove_pam_config
|
||||
|
||||
if [[ -d /etc/fido2 ]]; then
|
||||
omarchy-echo-info "Removing FIDO2 configuration..."
|
||||
echo "Removing FIDO2 configuration..."
|
||||
sudo rm -rf /etc/fido2
|
||||
fi
|
||||
|
||||
omarchy-echo-info "Removing FIDO2 packages..."
|
||||
echo "Removing FIDO2 packages..."
|
||||
omarchy-pkg-drop libfido2 pam-u2f
|
||||
|
||||
omarchy-echo-success "FIDO2 authentication has been completely removed."
|
||||
echo -e "\e[32mFIDO2 authentication has been completely removed.\e[0m"
|
||||
|
||||
@@ -9,29 +9,29 @@ set -e
|
||||
remove_pam_config() {
|
||||
# Remove from sudo
|
||||
if grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
omarchy-echo-info "Removing fingerprint authentication from sudo..."
|
||||
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
|
||||
omarchy-echo-info "Removing fingerprint authentication from polkit..."
|
||||
echo "Removing fingerprint authentication from polkit..."
|
||||
sudo sed -i '/pam_fprintd\.so/d' /etc/pam.d/polkit-1
|
||||
fi
|
||||
}
|
||||
|
||||
remove_hyprlock_fingerprint_icon() {
|
||||
omarchy-echo-info "Removing fingerprint icon from hyprlock placeholder text..."
|
||||
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
|
||||
}
|
||||
|
||||
omarchy-echo-success "Removing fingerprint scanner from authentication.\n"
|
||||
echo -e "\e[32mRemoving fingerprint scanner from authentication.\n\e[0m"
|
||||
|
||||
remove_pam_config
|
||||
remove_hyprlock_fingerprint_icon
|
||||
|
||||
omarchy-echo-info "Removing fingerprint packages..."
|
||||
echo "Removing fingerprint packages..."
|
||||
omarchy-pkg-drop fprintd libfprint-git
|
||||
|
||||
omarchy-echo-success "Fingerprint authentication has been completely removed."
|
||||
echo -e "\e[32mFingerprint authentication has been completely removed.\e[0m"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
# omarchy:summary=Restart the SwayOSD server
|
||||
|
||||
if systemctl --user is-enabled --quiet swayosd-server.service; then
|
||||
systemctl --user restart swayosd-server.service
|
||||
else
|
||||
omarchy-restart-app swayosd-server
|
||||
fi
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user stop swayosd-server.service || true
|
||||
pkill -x swayosd-server || true
|
||||
systemctl --user reset-failed swayosd-server.service || true
|
||||
systemctl --user enable --now swayosd-server.service
|
||||
|
||||
@@ -3,4 +3,5 @@
|
||||
# omarchy:summary=Restart Waybar
|
||||
# omarchy:examples=omarchy restart waybar
|
||||
|
||||
omarchy-restart-app waybar
|
||||
pkill -9 -x waybar
|
||||
setsid uwsm-app -- waybar >/dev/null 2>&1 &
|
||||
|
||||
@@ -9,7 +9,7 @@ set -e
|
||||
check_fido2_hardware() {
|
||||
tokens=$(fido2-token -L 2>/dev/null)
|
||||
if [[ -z $tokens ]]; then
|
||||
omarchy-echo-failure "\nNo FIDO2 device detected. Please plug it in (you may need to unlock it as well)."
|
||||
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
|
||||
@@ -18,16 +18,16 @@ check_fido2_hardware() {
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_u2f.so /etc/pam.d/sudo; then
|
||||
omarchy-echo-info "Configuring sudo for FIDO2 authentication..."
|
||||
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
|
||||
omarchy-echo-info "Configuring polkit for FIDO2 authentication..."
|
||||
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
|
||||
omarchy-echo-info "Creating polkit configuration with FIDO2 authentication..."
|
||||
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
|
||||
@@ -39,10 +39,10 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
omarchy-echo-success "Setting up FIDO2 device for authentication.\n"
|
||||
echo -e "\e[32mSetting up FIDO2 device for authentication.\n\e[0m"
|
||||
|
||||
# Install required packages
|
||||
omarchy-echo-info "Installing required packages..."
|
||||
echo "Installing required packages..."
|
||||
omarchy-pkg-add libfido2 pam-u2f
|
||||
|
||||
if ! check_fido2_hardware; then
|
||||
@@ -52,30 +52,30 @@ fi
|
||||
# Create the pamu2fcfg file
|
||||
if [[ ! -f /etc/fido2/fido2 ]]; then
|
||||
sudo mkdir -p /etc/fido2
|
||||
omarchy-echo-success "\nLet's setup your device by confirming on the device now."
|
||||
omarchy-echo-info "Touch your FIDO2 key when it lights up...\n"
|
||||
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
|
||||
omarchy-echo-success "FIDO2 device registered successfully!"
|
||||
echo -e "\e[32mFIDO2 device registered successfully!\e[0m"
|
||||
else
|
||||
omarchy-echo-failure "\nFIDO2 registration failed. Please try again."
|
||||
echo -e "\e[31m\nFIDO2 registration failed. Please try again.\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
omarchy-echo-info "FIDO2 device already registered."
|
||||
echo "FIDO2 device already registered."
|
||||
fi
|
||||
|
||||
# Configure PAM
|
||||
setup_pam_config
|
||||
|
||||
# Test with sudo
|
||||
omarchy-echo-info "\nTesting FIDO2 authentication with sudo..."
|
||||
omarchy-echo-info "Touch your FIDO2 key when prompted.\n"
|
||||
echo -e "\nTesting FIDO2 authentication with sudo..."
|
||||
echo -e "Touch your FIDO2 key when prompted.\n"
|
||||
|
||||
if sudo echo "FIDO2 authentication test successful"; then
|
||||
omarchy-echo-success "\nPerfect! FIDO2 authentication is now configured."
|
||||
omarchy-echo-info "You can use your FIDO2 key for sudo and polkit authentication."
|
||||
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
|
||||
omarchy-echo-failure "\nVerification failed. You may want to check your configuration."
|
||||
echo -e "\e[31m\nVerification failed. You may want to check your configuration.\e[0m"
|
||||
fi
|
||||
|
||||
@@ -12,7 +12,7 @@ check_fingerprint_hardware() {
|
||||
|
||||
# Exit if no devices found
|
||||
if [[ -z $devices ]]; then
|
||||
omarchy-echo-failure "\nNo fingerprint sensor detected."
|
||||
echo -e "\e[31m\nNo fingerprint sensor detected.\e[0m"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
@@ -21,16 +21,16 @@ check_fingerprint_hardware() {
|
||||
setup_pam_config() {
|
||||
# Configure sudo
|
||||
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
|
||||
omarchy-echo-info "Configuring sudo for fingerprint authentication..."
|
||||
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
|
||||
omarchy-echo-info "Configuring polkit for fingerprint authentication..."
|
||||
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
|
||||
omarchy-echo-info "Creating polkit configuration with fingerprint authentication..."
|
||||
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
|
||||
@@ -43,15 +43,15 @@ EOF
|
||||
}
|
||||
|
||||
add_hyprlock_fingerprint_icon() {
|
||||
omarchy-echo-info "Adding fingerprint icon to hyprlock placeholder text..."
|
||||
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
|
||||
}
|
||||
|
||||
omarchy-echo-success "Setting up fingerprint scanner for authentication.\n"
|
||||
echo -e "\e[32mSetting up fingerprint scanner for authentication.\n\e[0m"
|
||||
|
||||
# Install required packages
|
||||
omarchy-echo-info "Installing 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
|
||||
@@ -75,21 +75,21 @@ setup_pam_config
|
||||
add_hyprlock_fingerprint_icon
|
||||
|
||||
# Enroll first fingerprint
|
||||
omarchy-echo-success "\nLet's setup your right index finger as the first fingerprint."
|
||||
omarchy-echo-info "Keep moving the finger around on sensor until the process completes.\n"
|
||||
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
|
||||
omarchy-echo-success "\nFingerprint enrolled successfully!"
|
||||
echo -e "\e[32m\nFingerprint enrolled successfully!\e[0m"
|
||||
|
||||
# Verify
|
||||
omarchy-echo-info "\nNow let's verify that it's working correctly.\n"
|
||||
echo -e "\nNow let's verify that it's working correctly.\n"
|
||||
if fprintd-verify; then
|
||||
omarchy-echo-success "\nPerfect! Fingerprint authentication is now configured."
|
||||
omarchy-echo-info "You can use your fingerprint for sudo, polkit, and lock screen (Super + Escape)."
|
||||
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
|
||||
omarchy-echo-failure "\nVerification failed. You may want to try enrolling again."
|
||||
echo -e "\e[31m\nVerification failed. You may want to try enrolling again.\e[0m"
|
||||
fi
|
||||
else
|
||||
omarchy-echo-failure "\nEnrollment failed. Please try again."
|
||||
echo -e "\e[31m\nEnrollment failed. Please try again.\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
# omarchy:summary=Ensure the Omarchy keyring package is installed and populated
|
||||
# omarchy:summary=Ensure the Omarchy and Arch keyring packages are installed and populated
|
||||
# omarchy:requires-sudo=true
|
||||
|
||||
if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then
|
||||
@@ -16,5 +16,7 @@ if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630
|
||||
fi
|
||||
|
||||
# Ensure we have the latest archlinux-keyring, maintainer keys might have changed
|
||||
# Always reinstall, as the keyring can be updated without a package version bump.
|
||||
echo -e "\e[32m\nUpdate Arch signing keys\e[0m"
|
||||
sudo pacman -Sy --noconfirm archlinux-keyring >/dev/null
|
||||
sudo pacman -Sy --noconfirm archlinux-keyring >/dev/null 2> >(grep -vE '^warning: archlinux-keyring-[^ ]+ is up to date -- reinstalling$' >&2)
|
||||
echo "Keys are correct"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--ozone-platform=wayland
|
||||
--ozone-platform-hint=wayland
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecodeLinuxGL,VaapiVideoEncoder
|
||||
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"custom/weather": {
|
||||
"exec": "$OMARCHY_PATH/default/waybar/weather.sh",
|
||||
"return-type": "json",
|
||||
"interval": 600,
|
||||
"interval": 60,
|
||||
"tooltip": false,
|
||||
"on-click": "notify-send -u low \"$(omarchy-weather-status)\""
|
||||
},
|
||||
|
||||
@@ -356,7 +356,7 @@ When user requests system changes:
|
||||
2. **Is it a config edit?** Edit in `~/.config/`, never `~/.local/share/omarchy/`
|
||||
3. **Is it a theme customization?** Create a NEW custom theme directory
|
||||
4. **Is it automation?** Use hooks in `~/.config/omarchy/hooks/`
|
||||
5. **Is it a package install?** Use `omarchy install package <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||
6. **Unsure if command exists?** Run `omarchy commands` (or `omarchy <group> --help` for one group)
|
||||
|
||||
### Reminder Requests
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
import { existsSync } from "node:fs";
|
||||
import { join } from "node:path";
|
||||
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
||||
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
||||
|
||||
const home = process.env.HOME ?? "";
|
||||
const lightModePath = join(home, ".config/omarchy/current/theme/light.mode");
|
||||
|
||||
@@ -96,6 +96,7 @@ Rectangle {
|
||||
color: "transparent"
|
||||
selectionColor: "transparent"
|
||||
selectedTextColor: "transparent"
|
||||
cursorDelegate: Item {}
|
||||
focus: true
|
||||
|
||||
onTextChanged: root.loginFailed = false
|
||||
|
||||
@@ -50,8 +50,6 @@ run_logged $OMARCHY_INSTALL/config/hardware/intel/fred.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/sof-firmware.sh
|
||||
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
|
||||
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-display-backlight.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-display.sh
|
||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-asus-ptl-b9406-touchpad.sh
|
||||
|
||||
@@ -2,5 +2,4 @@
|
||||
chrootable_systemctl_enable bluetooth.service
|
||||
|
||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf \
|
||||
~/.config/wireplumber/wireplumber.conf.d/
|
||||
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf" ~/.config/wireplumber/wireplumber.conf.d/
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
# Fix Dell XPS haptic touchpad.
|
||||
# The Synaptics haptic touchpad (vendor 06CB) uses the HID Manual Trigger
|
||||
# protocol, but the kernel's HID haptic subsystem only supports Auto Trigger.
|
||||
# This sets up a lightweight daemon that monitors touchpad button events and
|
||||
# sends haptic pulses via HID feature reports on the hidraw device.
|
||||
# Also disables I2C runtime PM to prevent the haptic engine losing state
|
||||
# across suspend/resume.
|
||||
|
||||
if omarchy-hw-match "XPS" \
|
||||
&& ls /sys/bus/i2c/devices/i2c-VEN_06CB:00 2>/dev/null; then
|
||||
|
||||
# Keep I2C controller power on to prevent haptic engine losing state
|
||||
sudo tee /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules << 'EOF'
|
||||
ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:19.0", ATTR{power/control}="on"
|
||||
ACTION=="add", SUBSYSTEM=="platform", KERNEL=="i2c_designware.0", ATTR{power/control}="on"
|
||||
EOF
|
||||
sudo udevadm control --reload-rules
|
||||
|
||||
# Haptic feedback daemon as a systemd service
|
||||
sudo tee /etc/systemd/system/dell-xps-haptic-touchpad.service << SVC
|
||||
[Unit]
|
||||
Description=Dell XPS haptic touchpad feedback
|
||||
After=systemd-udev-settle.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=$OMARCHY_PATH/bin/omarchy-haptic-touchpad
|
||||
Restart=on-failure
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
SVC
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable dell-xps-haptic-touchpad.service
|
||||
fi
|
||||
Executable → Regular
@@ -61,6 +61,9 @@ vulkan-asahi
|
||||
# Surface laptop support packages
|
||||
linux-firmware-marvell
|
||||
|
||||
# Dell laptop support packages
|
||||
dell-xps-touchpad-haptics
|
||||
|
||||
# T2 MacBook support packages
|
||||
apple-bcm-firmware
|
||||
apple-t2-audio-config
|
||||
|
||||
@@ -7,4 +7,5 @@ run_logged $OMARCHY_INSTALL/packaging/tuis.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/npx.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/asus-rog.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/framework16.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/dell-xps-touchpad-haptics.sh
|
||||
run_logged $OMARCHY_INSTALL/packaging/surface.sh
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
if omarchy-hw-dell-xps-haptic-touchpad; then
|
||||
omarchy-pkg-add dell-xps-touchpad-haptics
|
||||
fi
|
||||
@@ -2,4 +2,3 @@ ICON_DIR="$HOME/.local/share/applications/icons"
|
||||
|
||||
omarchy-tui-install "Disk Usage" "bash -c 'dust -r; read -n 1 -s'" float "$ICON_DIR/Disk Usage.png"
|
||||
omarchy-tui-install "Docker" "lazydocker" tile "$ICON_DIR/Docker.png"
|
||||
omarchy-tui-install "Cliamp" "cliamp" tile "$ICON_DIR/Cliamp.png"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
set -e
|
||||
|
||||
echo "Enable Bluetooth A2DP auto-connect in WirePlumber"
|
||||
|
||||
destination=~/.config/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf
|
||||
|
||||
@@ -3,10 +3,6 @@ echo "Add cliamp music TUI player (Super+Shift+Alt+M)"
|
||||
if omarchy-pkg-missing cliamp; then
|
||||
omarchy-pkg-add cliamp
|
||||
|
||||
cp ~/.local/share/omarchy/applications/icons/Cliamp.png ~/.local/share/applications/icons/Cliamp.png
|
||||
gtk-update-icon-cache ~/.local/share/icons/hicolor &>/dev/null
|
||||
omarchy-tui-install "Cliamp" "cliamp" tile "$HOME/.local/share/applications/icons/Cliamp.png"
|
||||
|
||||
if [[ -f ~/.config/hypr/bindings.conf ]] && ! grep -q "cliamp" ~/.config/hypr/bindings.conf; then
|
||||
sed -i '/^bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify/a bindd = SUPER SHIFT ALT, M, Music TUI, exec, omarchy-launch-or-focus-tui cliamp' ~/.config/hypr/bindings.conf
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
echo "Move Dell XPS touchpad haptics into the packaged service"
|
||||
|
||||
if omarchy-hw-dell-xps-haptic-touchpad; then
|
||||
sudo systemctl disable --now dell-xps-haptic-touchpad.service 2>/dev/null || true
|
||||
sudo rm -f /etc/systemd/system/dell-xps-haptic-touchpad.service
|
||||
sudo rm -f /etc/systemd/system/multi-user.target.wants/dell-xps-haptic-touchpad.service
|
||||
sudo rm -rf /etc/systemd/system/dell-xps-haptic-touchpad.service.d
|
||||
sudo rm -f /etc/udev/rules.d/99-dell-xps-haptic-touchpad.rules
|
||||
sudo rm -f /etc/omarchy-dell-haptic-touchpad.env
|
||||
sudo systemctl daemon-reload
|
||||
sudo udevadm control --reload-rules
|
||||
|
||||
source "$OMARCHY_PATH/install/packaging/dell-xps-touchpad-haptics.sh"
|
||||
fi
|
||||
Executable → Regular
Executable → Regular
@@ -6,7 +6,7 @@ WAYBAR_STYLE="$HOME/.config/waybar/style.css"
|
||||
if [[ -f $WAYBAR_CONFIG ]]; then
|
||||
if ! grep -q '"custom/weather"' "$WAYBAR_CONFIG"; then
|
||||
sed -i 's/"modules-center": \["clock",/"modules-center": ["clock", "custom\/weather",/' "$WAYBAR_CONFIG"
|
||||
sed -i '/"network": {/i\ "custom/weather": {\n "exec": "$OMARCHY_PATH/default/waybar/weather.sh",\n "return-type": "json",\n "interval": 600,\n "tooltip": false,\n "on-click": "notify-send -u low \\"$(omarchy-weather-status)\\""\n },' "$WAYBAR_CONFIG"
|
||||
sed -i '/"network": {/i\ "custom/weather": {\n "exec": "$OMARCHY_PATH/default/waybar/weather.sh",\n "return-type": "json",\n "interval": 60,\n "tooltip": false,\n "on-click": "notify-send -u low \\"$(omarchy-weather-status)\\""\n },' "$WAYBAR_CONFIG"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
echo "Remove VAAPI GL video feature flags from Chromium-based browser configs to prevent crashing on some machines"
|
||||
|
||||
remove_chromium_vaapi_features() {
|
||||
local file=$1
|
||||
|
||||
[[ -f $file ]] || return 0
|
||||
|
||||
sed -i --follow-symlinks \
|
||||
-e '/^--enable-features=/ s/VaapiVideoDecodeLinuxGL//g' \
|
||||
-e '/^--enable-features=/ s/VaapiVideoEncoder//g' \
|
||||
-e '/^--enable-features=/ s/,,*/,/g' \
|
||||
-e '/^--enable-features=/ s/=,/=/' \
|
||||
-e '/^--enable-features=/ s/,$//' \
|
||||
-e '/^--enable-features=$/d' \
|
||||
"$file"
|
||||
}
|
||||
|
||||
for flags_file in "$HOME"/.config/{chromium,chrome,google-chrome,google-chrome-beta,google-chrome-unstable,brave,brave-beta,brave-nightly,brave-origin-beta,microsoft-edge-stable,microsoft-edge-beta,microsoft-edge-dev,vivaldi-stable,vivaldi-snapshot,opera,opera-beta,opera-developer}-flags.conf; do
|
||||
remove_chromium_vaapi_features "$flags_file"
|
||||
done
|
||||
@@ -0,0 +1,4 @@
|
||||
echo "Remove Omarchy cliamp desktop stub and icon (replace by package inclusion)"
|
||||
|
||||
rm -f ~/.local/share/applications/Cliamp.desktop
|
||||
rm -f ~/.local/share/applications/icons/Cliamp.png
|
||||
Reference in New Issue
Block a user