63 lines
1.8 KiB
Nix
63 lines
1.8 KiB
Nix
{ pkgs
|
|
, lib
|
|
, nixosConfig
|
|
, ...
|
|
}:
|
|
{
|
|
systemd.user.services."bluetooth-keyboard" = {
|
|
Unit = {
|
|
Description = "Disable the laptop keyboard when the bluetooth keyboard is connected";
|
|
After = [ "graphical-session.target" ];
|
|
PartOf = [ "graphical-session.target" ];
|
|
};
|
|
Install.WantedBy = [ "graphical-session.target" ];
|
|
Service = {
|
|
Type = "simple";
|
|
ExecStart = pkgs.writeShellScript "bluetooth-keyboard.sh" ''
|
|
PATH=$PATH:${
|
|
lib.makeBinPath [
|
|
pkgs.coreutils
|
|
pkgs.gnugrep
|
|
pkgs.libnotify
|
|
nixosConfig.programs.hyprland.package
|
|
]
|
|
}
|
|
BLUETOOTH_DEVICE="keychron-k1-max-keyboard"
|
|
LAPTOP_DEVICE="at-translated-set-2-keyboard"
|
|
STATUS_FILE="$XDG_RUNTIME_DIR/bluetooth_keyboard.status"
|
|
|
|
enable_laptop_keyboard() {
|
|
if [[ `cat $STATUS_FILE` == "false" ]]; then
|
|
printf "true" > "$STATUS_FILE"
|
|
echo "Enabling laptop keyboard"
|
|
notify-send -u normal "Enabling laptop keyboard"
|
|
hyprctl keyword '$LAPTOP_KEYBOARD_ENABLED' true
|
|
hyprctl keyword device:a ""
|
|
fi
|
|
}
|
|
|
|
disable_laptop_keyboard() {
|
|
if [[ `cat $STATUS_FILE` == "true" ]]; then
|
|
printf "false" > "$STATUS_FILE"
|
|
echo "Disabling laptop keyboard"
|
|
notify-send -u normal "Disabling laptop keyboard"
|
|
hyprctl keyword '$LAPTOP_KEYBOARD_ENABLED' false
|
|
hyprctl keyword device:a ""
|
|
fi
|
|
}
|
|
|
|
printf "true" > "$STATUS_FILE"
|
|
|
|
while true; do
|
|
if hyprctl devices | grep --quiet $BLUETOOTH_DEVICE ; then
|
|
disable_laptop_keyboard
|
|
else
|
|
enable_laptop_keyboard
|
|
fi
|
|
|
|
sleep 5;
|
|
done
|
|
'';
|
|
};
|
|
};
|
|
}
|