feat(apps): add OpenDeck + ydotool module

Installs ydotool via pacman and OpenDeck via Flatpak, wires ydotoold
and OpenDeck into the Hyprland autostart. Registers the module in the
TUI installer, answerfile generator, and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
Amir Alexander Abdelbaki 2026-06-26 11:08:32 +02:00
parent 29dc304e4f
commit 66e51474a1
5 changed files with 30 additions and 0 deletions

View File

@ -22,4 +22,6 @@ hl.on("hyprland.start", function()
hl.exec_cmd("hypridle") hl.exec_cmd("hypridle")
hl.exec_cmd("bash ~/Dotfiles/desktopenvs/hyprlua/scripts/presence-detect.sh") hl.exec_cmd("bash ~/Dotfiles/desktopenvs/hyprlua/scripts/presence-detect.sh")
hl.exec_cmd("chamel") hl.exec_cmd("chamel")
hl.exec_cmd("ydotoold")
hl.exec_cmd("flatpak run com.mairtech.OpenDeck")
end) end)

View File

@ -217,6 +217,7 @@ bash ~/Dotfiles/setup/install-modules.sh
| `butter` | butter (AUR) | Btrfs snapshot backup manager | | `butter` | butter (AUR) | Btrfs snapshot backup manager |
| `localsend` | localsend (AUR) | LAN file transfer (AirDrop-like) | | `localsend` | localsend (AUR) | LAN file transfer (AirDrop-like) |
| `croc` | croc | Cross-platform encrypted file transfer | | `croc` | croc | Cross-platform encrypted file transfer |
| `opendeck` | ydotool (pacman) · OpenDeck (Flatpak) | Stream Deck controller; ydotoold + OpenDeck added to Hyprland autostart |
| `localtunnel` | localtunnel (npm) | Expose localhost over a public URL | | `localtunnel` | localtunnel (npm) | Expose localhost over a public URL |
| `onlyoffice` | onlyoffice-bin (AUR) | Office suite (Docs, Sheets, Slides) | | `onlyoffice` | onlyoffice-bin (AUR) | Office suite (Docs, Sheets, Slides) |

View File

@ -253,6 +253,7 @@ if [[ "$AF_RUN_TUI" == "true" ]]; then
"stuntrally" "Stunt Rally rally racing game (Flatpak)" off \ "stuntrally" "Stunt Rally rally racing game (Flatpak)" off \
"localsend" "LocalSend LAN file transfer (AUR)" off \ "localsend" "LocalSend LAN file transfer (AUR)" off \
"croc" "croc cross-platform file transfer" off \ "croc" "croc cross-platform file transfer" off \
"opendeck" "OpenDeck Stream Deck controller (Flatpak+ydotool)" off \
"onlyoffice" "OnlyOffice office suite (AUR)" off \ "onlyoffice" "OnlyOffice office suite (AUR)" off \
"xournal" "Xournal++ note-taking & PDF annotator" off \ "xournal" "Xournal++ note-taking & PDF annotator" off \
"gimp" "GIMP GNU image manipulation program" off \ "gimp" "GIMP GNU image manipulation program" off \

View File

@ -0,0 +1,22 @@
#!/bin/bash
set -euo pipefail
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
log "Installing ydotool (pacman)..."
sudo pacman -S --noconfirm --needed ydotool
log "Installing OpenDeck (Flatpak)..."
ensure_flatpak
flatpak install -y flathub com.mairtech.OpenDeck
log "Wiring ydotoold + OpenDeck into Hyprland autostart..."
AUTOSTART="$HOME/Dotfiles/desktopenvs/hyprlua/hypr/usr/autostart.lua"
if grep -q "ydotoold\|OpenDeck\|com.mairtech.OpenDeck" "$AUTOSTART"; then
skip "ydotoold/OpenDeck already present in autostart.lua — skipping."
else
# Insert before the closing end) so entries appear inside the on("hyprland.start") block
sed -i 's|^end)$| hl.exec_cmd("ydotoold")\n hl.exec_cmd("flatpak run com.mairtech.OpenDeck")\nend)|' "$AUTOSTART"
log "Autostart entries added."
fi
log "OpenDeck + ydotool installed."

View File

@ -194,6 +194,7 @@ count_steps() {
[[ "$a" == *"stuntrally"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"stuntrally"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"localsend"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"localsend"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"croc"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"croc"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"opendeck"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"onlyoffice"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"onlyoffice"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"wireshark"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"wireshark"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"k8s"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$a" == *"k8s"* ]] && TOTAL=$(( TOTAL + 1 ))
@ -474,6 +475,7 @@ else
"stuntrally" "Stunt Rally rally racing game (Flatpak)" off \ "stuntrally" "Stunt Rally rally racing game (Flatpak)" off \
"localsend" "LocalSend LAN file transfer (AUR)" off \ "localsend" "LocalSend LAN file transfer (AUR)" off \
"croc" "croc cross-platform file transfer" off \ "croc" "croc cross-platform file transfer" off \
"opendeck" "OpenDeck Stream Deck controller (Flatpak+ydotool)" off \
"onlyoffice" "OnlyOffice office suite (AUR)" off \ "onlyoffice" "OnlyOffice office suite (AUR)" off \
"xournal" "Xournal++ note-taking & PDF annotator" off \ "xournal" "Xournal++ note-taking & PDF annotator" off \
"gimp" "GIMP GNU image manipulation program" off \ "gimp" "GIMP GNU image manipulation program" off \
@ -584,6 +586,7 @@ if ! $ANSWERFILE_MODE; then
[[ "$SELECTED_APPS" == *"stuntrally"* ]] && SUMMARY+=" ✦ Stunt Rally\n" [[ "$SELECTED_APPS" == *"stuntrally"* ]] && SUMMARY+=" ✦ Stunt Rally\n"
[[ "$SELECTED_APPS" == *"localsend"* ]] && SUMMARY+=" ✦ LocalSend\n" [[ "$SELECTED_APPS" == *"localsend"* ]] && SUMMARY+=" ✦ LocalSend\n"
[[ "$SELECTED_APPS" == *"croc"* ]] && SUMMARY+=" ✦ croc\n" [[ "$SELECTED_APPS" == *"croc"* ]] && SUMMARY+=" ✦ croc\n"
[[ "$SELECTED_APPS" == *"opendeck"* ]] && SUMMARY+=" ✦ OpenDeck + ydotool\n"
[[ "$SELECTED_APPS" == *"onlyoffice"* ]] && SUMMARY+=" ✦ OnlyOffice\n" [[ "$SELECTED_APPS" == *"onlyoffice"* ]] && SUMMARY+=" ✦ OnlyOffice\n"
[[ "$SELECTED_APPS" == *"xournal"* ]] && SUMMARY+=" ✦ Xournal++\n" [[ "$SELECTED_APPS" == *"xournal"* ]] && SUMMARY+=" ✦ Xournal++\n"
[[ "$SELECTED_APPS" == *"gimp"* ]] && SUMMARY+=" ✦ GIMP\n" [[ "$SELECTED_APPS" == *"gimp"* ]] && SUMMARY+=" ✦ GIMP\n"
@ -702,6 +705,7 @@ fi
[[ "$SELECTED_APPS" == *"stuntrally"* ]] && run_module "Stunt Rally" "$APPS/stuntrally.sh" [[ "$SELECTED_APPS" == *"stuntrally"* ]] && run_module "Stunt Rally" "$APPS/stuntrally.sh"
[[ "$SELECTED_APPS" == *"localsend"* ]] && run_module "LocalSend" "$APPS/localsend.sh" [[ "$SELECTED_APPS" == *"localsend"* ]] && run_module "LocalSend" "$APPS/localsend.sh"
[[ "$SELECTED_APPS" == *"croc"* ]] && run_module "croc" "$APPS/croc.sh" [[ "$SELECTED_APPS" == *"croc"* ]] && run_module "croc" "$APPS/croc.sh"
[[ "$SELECTED_APPS" == *"opendeck"* ]] && run_module "OpenDeck" "$APPS/opendeck.sh"
[[ "$SELECTED_APPS" == *"onlyoffice"* ]] && run_module "OnlyOffice" "$APPS/onlyoffice.sh" [[ "$SELECTED_APPS" == *"onlyoffice"* ]] && run_module "OnlyOffice" "$APPS/onlyoffice.sh"
[[ "$SELECTED_APPS" == *"xournal"* ]] && run_module "Xournal++" "$APPS/xournal.sh" [[ "$SELECTED_APPS" == *"xournal"* ]] && run_module "Xournal++" "$APPS/xournal.sh"
[[ "$SELECTED_APPS" == *"gimp"* ]] && run_module "GIMP" "$APPS/gimp.sh" [[ "$SELECTED_APPS" == *"gimp"* ]] && run_module "GIMP" "$APPS/gimp.sh"