Existe-t-il un moyen sophistiqué de faire fonctionner l'OSD de notification de volume avec pulseaudio et ALSA? Pour le moment, les ordinateurs de bureau standard ne fonctionnent qu'avec pulseaudio pour moi. Que diriez-vous d'un OSD vertical que je peux utiliser comme remplacement de remplacement ou appeler à partir de la ligne de commande pour signaler graphiquement les changements de pourcentages arbitraires, comme une barre qui monte et descend?
La raison pour laquelle j'en ai besoin pour travailler avec ALSA et pulseaudio est que j'utilise une application WINE qui ne fonctionne pas bien avec pulse, donc je tue pulse avant de démarrer l'application Windows pour utiliser ALSA sans la couche d'abstraction supplémentaire. Quand j'ai réalisé que les touches de volume de mon clavier ne fonctionnaient pas sans impulsion, j'ai écrit des scripts bash que j'appelle avec Compiz ou Openbox (configurés via CCSM et lxde-rc.xml, respectivement) pour capter le signal de sortie de pulseaudio --check
et puis réglez le volume en conséquence:
vol_step_up
#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
pactl set-sink-volume 0 -- +3db
else
amixer -c0 set Master playback 3+
fi
vol_step_down
#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
pactl set-sink-volume 0 -- -3db
else
amixer -c0 set Master playback 3-
fi
Les scripts fonctionnent très bien et mappent très bien sur les boutons, mais je n'ai plus de bon moyen de voir les commentaires visuels - pas même avec ceux pulseaudio puisque j'attrape les événements de bouton (XF86AudioLowerVolume, etc.). Évidemment, je pourrais simplement mapper les touches de volume ALSA à autre chose, mais il n'y a aucun sens à dupliquer les touches de raccourci.
J'ai trouvé un contrôle de volume python que je peux appeler dans les scripts ci-dessus:
https://github.com/fishman/utils/blob/master/pvol.py
pvol.py -s
affiche le niveau de volume actuel à l'écran pour ALSA et pulseaudio, mais il est terriblement petit par rapport à l'OSD gnome que j'avais utilisé, et il n'est pas vertical (barre en haut, ancien OSD en bas):
Donc, je l'ai agrandi et l'ai floppé:
Mais, même en changeant l'orientation en verticale, le thème GTK par défaut bleu n'est pas aussi lisse que VLC (voir ci-dessous).
Une grande partie de ce que j'ai trouvé en recherchant des implémentations OSD sont des publications sur les commandes notify-send qui manquent de tout le concept de barre de progression. Sinon, il s'agit principalement de barres horizontales (et de nombreux espaces réservés de comptage dans les scripts bash). Vraiment tout ce que je dois faire est d'appeler amix & pactl, donc quelque chose de simple comme la barre de progression gtk dans pvol.py serait génial - juste pas si bleu et pas juste au milieu de l'écran.
VLC a un bon exemple de ce que j'ai à l'esprit lorsque vous faites défiler la molette de la souris en mode plein écran:
C'est beaucoup moins obstructif que les cases habituelles qui se trouvent au centre de l'écran:
Toute l'analogie avec le curseur horizontal n'a jamais eu beaucoup de sens pour moi en dehors du panoramique audio entre les haut-parleurs gauche et droit.
Quoi qu'il en soit, comment se fait-il que les notifications de bureau par défaut soient appelées (en particulier LXDE)? Je vois beaucoup de messages sur la configuration des événements de presse clés, mais pas beaucoup sur les scripts que ces événements déclenchent. Quelles sont les autres options disponibles dans le département verticalement fantaisie?
De plus, y a-t-il un package que je devrais désinstaller pour éviter que des conflits ne surgissent entre les événements que je gère via les scripts et les commandes compiz ou openbox?
Mise à jour: Pour déterminer quel OSD j'utilise actuellement, je n'ai pas changé la façon dont je gère le bouton de sourdine tout de suite. Tuer xfce4-notifyd puis appuyer sur le bouton Muet engendre un nouveau processus xfce4-notifyd, donc je devinais que la grande icône du haut-parleur venait de quelque chose comme xfce4-volumed, mais je n'ai pas vraiment installé ce paquet ... Ah ha! Tuer gnome-settings-daemon arrête le gros OSD au centre de l'écran.
Réponses:
D'accord, au risque de répondre à ma propre question, j'ai trouvé un peu une version piratée pyqt ensemble de pvol à partir du lien dans la question ci-dessus. Si rien d'autre, peut-être que quelqu'un d'autre peut améliorer mon code. Finalement, je prévois de me débarrasser des parties du script ci-dessous qui ne sont pas utilisées ou de retirer les scripts bash de l'équation et d'avoir un script pyqt qui gère tous les événements de bouton. À l'heure actuelle, l'OSD expire à un taux constant à partir de la première pression sur un bouton au lieu de rester allumé pendant une durée fixe après la dernière pression sur un bouton.
Copiez, collez et enregistrez simplement les fichiers (avec les noms en gras), placez-les tous dans le même répertoire, définissez les bits exécutables et modifiez les appels système dans le script pyqt en fonction de l'endroit où vous les enregistrez, ou placez-les tous dans répertoire qui se trouve sur votre chemin. Mappez ensuite les scripts shell aux commandes Compiz, aux raccourcis Openbox ou à quelque chose de similaire, et modifiez le script pyqt si vous n'utilisez pas les boutons de volume du clavier multimédia.
Remarque: Le nom de classe Qvol était un titre de travail, et je n'ai pas pris la peine de le changer. Veuillez également noter que le bouton de sourdine n'est pas géré - Ce n'est qu'un prototype pour exprimer une avenue possible pour remplir les fonctionnalités demandées, et il n'est actuellement associé à aucun type de projet hébergé ou de modèle de développement standard. Tout type de développement significatif dérivé du code ci-dessous devrait probablement appartenir à Sourceforge, GitHub ou un site Web de projet. Cela dit, n'hésitez pas à modifier cette réponse ou à suggérer un projet existant qui permet est similaire dans la fonction et la conception.
vol_step_down
vol_step_up
pqvol
la source