Quitter le forum et retourner au site

Vidéo YT en fond d'écran + musique + controles

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 794
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Vidéo YT en fond d'écran + musique + controles

Message par le Manchot Masqué »

Si vous connaissez les fonds d'écran apple défilants, vous vous êtes sûrement déjà posés la question bêêêêêêêête :
"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
Soyons fous : voilà le code de youtube-wallpaper.sh :

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

Il accepte en argument une URL youtube (choix de la vidéo), et un décalage si vous ne voulez pas commencer à zéro.

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 !
Pièces jointes
Capture d’écran du 2025-09-12 04-32-17.jpeg
Capture d’écran du 2025-09-12 04-32-17.jpeg (54.78 Kio) Consulté 4547 fois
Capture d’écran du 2025-09-12 04-31-44.jpeg
Capture d’écran du 2025-09-12 04-31-44.jpeg (68.85 Kio) Consulté 4547 fois
Capture d’écran du 2025-09-12 04-31-01.jpeg
Capture d’écran du 2025-09-12 04-31-01.jpeg (55.39 Kio) Consulté 4547 fois
Répondre