"Mais pourquoi on peut pas faire la même chose sous GNU/Linux ? Hein ? Pourquoi ?"
Et si je vous disais qu'on peut non seulement faire la même chose sous GNU/Linux, mais en mieux ?
Y'a quand même une condition préalable pour ce qui va suivre : il faut que votre gestionnaire de fenêtre soit x11 et non wayland.
A vérifier avec :
Code : Tout sélectionner
# echo $XDG_SESSION_TYPE
x11
Code : Tout sélectionner
#!/bin/bash
### OPTIONS EN LIGNE DE COMMANDE ###
CUSTOM_URL=""
START_TIME=""
while [[ $# -gt 0 ]]; do
case "$1" in
-u|--url)
CUSTOM_URL="$2"
shift 2
;;
-s|--start)
START_TIME="$2"
shift 2
;;
*)
echo "❌ Option inconnue: $1"
echo "Utilisation : $0 [--url <YouTube_URL>] [--start <HH:MM:SS>]"
exit 1
;;
esac
done
### CONFIGURATION ###
URL="${CUSTOM_URL:-https://youtu.be/BHACKCNDMW8?list=RDBHACKCNDMW8}"
SOCKET="/tmp/mpv_socket"
YTDL_PATH="/usr/local/bin/yt-dlp"
MPV_TITLE="wallpaper-mpv"
### 1. Vérifie les dépendances ###
REQUIRED_CMDS=(mpv socat xdotool wmctrl curl xbindkeys devilspie)
for cmd in "${REQUIRED_CMDS[@]}"; do
if ! command -v "$cmd" &>/dev/null; then
echo "[INFO] Installation de $cmd..."
sudo apt-get update && sudo apt-get install -y "$cmd"
else
echo "[OK] $cmd est déjà installé."
fi
done
### 2. Vérifie et installe yt-dlp si besoin ###
if [ ! -f "$YTDL_PATH" ]; then
echo "[INFO] yt-dlp introuvable. Téléchargement..."
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o "$YTDL_PATH"
sudo chmod a+rx "$YTDL_PATH"
else
echo "[OK] yt-dlp est présent."
fi
### 3. Supprime l’ancien socket si nécessaire ###
[ -e "$SOCKET" ] && rm "$SOCKET"
### 4. Prépare devilspie ###
mkdir -p ~/.devilspie
cat << EOF > ~/.devilspie/mpv.ds
(if
(is (window_name) "$MPV_TITLE")
(begin
(below)
(stick)
(skip_pager)
(skip_tasklist)
(pin)
)
)
EOF
# Lancer devilspie si pas déjà lancé
if ! pgrep -x devilspie &>/dev/null; then
echo "[INFO] Lancement de devilspie..."
devilspie & disown
fi
### 5. Mise à jour yt-dlp silencieuse ###
"$YTDL_PATH" --update &>/dev/null &
### 6. Lancer MPV ###
MPV_ARGS=(
--title="$MPV_TITLE"
--no-border
--geometry=100%x100%
--no-osc
--loop-playlist
--no-input-default-bindings
--ytdl-format="bestvideo[height<=720]+bestaudio/best"
--input-ipc-server="$SOCKET"
)
if [[ -n "$START_TIME" ]]; then
MPV_ARGS+=(--start="$START_TIME")
fi
MPV_ARGS+=("$URL")
mpv "${MPV_ARGS[@]}" &
MPV_PID=$!
sleep 3
# Récupérer l’ID de la fenêtre (optionnel ici, devilspie gère tout)
WIN_ID=$(xdotool search --name "$MPV_TITLE" | head -n 1)
### 7. Fonction de contrôle MPV ###
mpv_cmd() {
echo "{\"command\":$1}" | socat - "$SOCKET" > /dev/null
}
### 8. Raccourcis clavier globaux ###
set_shortcuts() {
echo "[INFO] Configuration des raccourcis clavier..."
mkdir -p ~/.config/youtube-wallpaper
AUTOKEY_SCRIPT=~/.config/youtube-wallpaper/hotkeys.sh
cat << 'EOF' > "$AUTOKEY_SCRIPT"
#!/bin/bash
SOCKET="/tmp/mpv_socket"
mpv_cmd() {
echo "{\"command\":$1}" | socat - "$SOCKET" > /dev/null
}
case "$1" in
pause) mpv_cmd '["cycle", "pause"]' ;;
mute) mpv_cmd '["cycle", "mute"]' ;;
volup) mpv_cmd '["add", "volume", 10]' ;;
voldn) mpv_cmd '["add", "volume", -10]' ;;
esac
EOF
chmod +x "$AUTOKEY_SCRIPT"
XBINDS=~/.xbindkeysrc
cat << EOF > "$XBINDS"
# Contrôle MPV Wallpaper
"bash $AUTOKEY_SCRIPT pause"
Control+Alt+p
"bash $AUTOKEY_SCRIPT mute"
Control+Alt+m
"bash $AUTOKEY_SCRIPT volup"
Control+Alt+Up
"bash $AUTOKEY_SCRIPT voldn"
Control+Alt+Down
EOF
pkill xbindkeys &>/dev/null
xbindkeys
echo "[OK] Raccourcis clavier activés."
}
set_shortcuts
### 9. Menu interactif ###
while true; do
clear
echo "🎥 Contrôle MPV Wallpaper"
echo "========================="
echo " [P] Pause / Play"
echo " [M] Mute / Unmute"
echo " [+] Volume +10%"
echo " [-] Volume -10%"
echo " [Q] Quitter MPV et ce script"
echo ""
echo "🔀 Raccourcis clavier globaux :"
echo " Ctrl+Alt+P → Pause/Play"
echo " Ctrl+Alt+M → Mute/Unmute"
echo " Ctrl+Alt+↑ → Volume +"
echo " Ctrl+Alt+↓ → Volume -"
echo "========================="
read -n1 -s -r -p "Choix: " key
echo ""
case "$key" in
p|P) mpv_cmd '["cycle", "pause"]' ;;
m|M) mpv_cmd '["cycle", "mute"]' ;;
+) mpv_cmd '["add", "volume", 10]' ;;
-) mpv_cmd '["add", "volume", -10]' ;;
q|Q)
echo "[INFO] Fermeture..."
pkill xbindkeys
if ps -p "$MPV_PID" &>/dev/null; then
kill "$MPV_PID"
wait "$MPV_PID"
fi
rm -f "$SOCKET"
exit 0
;;
*) echo "[WARN] Touche invalide" ;;
esac
sleep 0.5
done
Sinon j'ai mis par défaut une vidéo qui devrait vous déstresser...
A lancer dans un terminal, qui restera ouvert et bloqué pour cette fonction, et vous rappelera les quelques raccourcis clavier pour mettre la vidéo en pause, mettre le son en pause, l'augmenter ou le diminuer.
C'est honteux à dire, mais ça marche nickel sur le vieux mac qu'on m'avait offert et que je ramène à la foire à Colmar chaque année, sous Mint LMDE 6.
Superbes images, très agréables en bossant.
Cerise sur le gâteau : ça marche sous Cinnamon et Mate AVEC le changement de bureau virtuel !
Que du bohneur, je vous le dis !
Allez : encore un petit bonus sous cinnamon : vous ouvrez les paramètres système, Préférences->extensions, Télécharger, vous recherchez Opacity slider, que vous installez. Il faut revenir dans l'ongler Gérer et Activer le module avec le bouton +.
Désormais, vous pouvez régler la transparence de toutes vos fenêtres sous Cinnamon !
Avec un firefox transparent, ça change complètement la navigation !