nixconf/scripts/hyprland/touchpad_toggle.sh
Gabriella Bere 772518df4f attempted to add a keybind to toggle touchpad
somehow i cant get the script to run when i use the touchpad, but hey,
its in the repo now and the licence has been updated so i can get around
to it later

also i removed the default fish greeting it was annoying me
2025-06-08 05:17:39 +01:00

70 lines
2.3 KiB
Bash

#!/usr/bin/env bash
#
# Script to toggle a given device.
# Use the following command to choose what device you want to toggle:
# hyprctl devices
#
# Courtesy of r/hyprland Reddit community:
# https://reddit.com/r/hyprland/comments/11kr8bl/hotkey_disable_touchpad/
# https://reddit.com/r/hyprland/comments/1bqohmd/dynamically_enabledisable_device/
#
# Ported, generalized, improved and overengineered by Bahar Kurt for
# Diana's dotfiles.
#
# HACK: Try to set a nonexistent config under "device:" so that
# Hyprland refreshes all properties inside.
hyprctl keyword device:a true > /dev/null 2>&1
# Set device to be toggled
export HYPRLAND_DEVICE="$(hyprctl devices | grep touchpad | sed '/2-synaptics-touchpad/d; s/.* //')"
export HYPRLAND_VARIABLE="device[${HYPRLAND_DEVICE}]:enabled"
if [ -z "$XDG_RUNTIME_DIR" ]; then
export XDG_RUNTIME_DIR=/run/user/$(id -u)
fi
# Check if device is currently enabled
export STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status"
# Try to get the touchpad status from status file.
if [ -f "$STATUS_FILE" ]; then
export TOUCHPAD_ENABLED="$(cat "$STATUS_FILE")"
fi
# Toggle the touchpad
if [ "$TOUCHPAD_ENABLED" != "false" ]; then
# The touchpad is known to be, or assumed to be, enabled (not disabled).
export PREVIOUS_STATUS="true"
export TOUCHPAD_ENABLED="false"
# Try to disable the touchpad. If it fails, set the new status to enabled.
hyprctl --batch -r -- keyword "$HYPRLAND_VARIABLE" $TOUCHPAD_ENABLED || export TOUCHPAD_ENABLED="true"
else
# The touchpad is known to be disabled.
export PREVIOUS_STATUS="false"
export TOUCHPAD_ENABLED="true"
# Try to enable the touchpad. If it fails, set the new status to disabled.
hyprctl --batch -r -- keyword "$HYPRLAND_VARIABLE" $TOUCHPAD_ENABLED || export TOUCHPAD_ENABLED="false"
fi
# Write the new touchpad status into the status file.
echo "$TOUCHPAD_ENABLED" > "$STATUS_FILE"
# Generate the notification message.
export NOTIFMSG="Touchpad "
if [ "$TOUCHPAD_ENABLED" == "$PREVIOUS_STATUS" ]; then
export NOTIFMSG+="could not be "
# Touchpad could not be...
fi
if [ "$PREVIOUS_STATUS" == "true" ]; then
export NOTIFMSG+="disabled."
# Touchpad (could not be) disabled.
else
export NOTIFMSG+="enabled."
# Touchpad (could not be) enabled.
fi
notify-send -u normal "$NOTIFMSG"