ubuntuusers.de

(Volume) Regler YAD

Status: Gelöst | Ubuntu-Version: Lubuntu 22.04 (Jammy Jellyfish)
Antworten |

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 819

Volume Regler soll Werte zugefüttert bekommen, momentan wird nur bei Start ausgelesen und Soundlevel kann gesetzt werden. Also bspw. ständige Abfrage von

pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -n 1

soll übergeben werden.

Nun das Script, (1 Regler von mehreren), gebe es zu, tlw. nicht von mir.

(VolCur1=`pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -n 1`
yad --mark=0:0 --mark=50:50 --mark=100:100 --timeout="14" --title="Volume" --geometry="200x0-50-500" --scale --min-value 0 --max-value 130 --value $VolCur1 --print-partial --undecorated  --fixed --sticky --mouse --on-top --escape-ok --no-buttons --hide-value | while read VolNew1 
	do pactl set-sink-volume @DEFAULT_SINK@ ${VolNew1}%
	done)&

Die Frage für mich ist ob das überhaupt mit YAD machbar ist. Vllt. hat Jmd. eine Idee.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1243

Hallo Marantkurz,

was ist denn deine Frage?

Das Script funktioniert doch. In "VolCur1" wird der aktuelle Lautsprecher-Pegel eingelesen (z.B. 75%). Dann erzeugst du mit "yad" einen Schieberegler, der bei 0, 50 und 100% eine Marke zeigt (max 130% einstellbar). Das Window bekommt keinen Button oder sonstige Dekoration und kann über die ESC Taste oder das Timeout von 14 sek beendet werden. Sobald du den Slider verschiebst, werden die Werte ausgegeben, die in der "while" Schleife in "VolNew1" gespeichert und dann per "pactl" gesetzt werden.

Also, was willst du wissen/machen? Soll das Fenster anders aussehen?

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 819

Das Script stammt schon von mir, nur zusammengestückelt eben, soweit ob mir die Funktion klar ist.

OK, dann so: "timeout" raus, YAD Script starten, und nun Volume des Systemes mit den Systemmixern ändern. Nun soll der YAD Regler selbstständig mitziehen.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1243

OK, dann so: "timeout" raus, YAD Script starten, und nun Volume des Systemes mit den Systemmixern ändern. Nun soll der YAD Regler selbstständig mitziehen.

Hmm. So recht begreife ich nicht, was du machen willst. Wenn du die Lautstärke über den Systemmixer (z.B. "pavucontrol") ändern willst, dass mach das doch damit. Dann brauchst du doch kein "yad" Fenster.

Der Startwert im "yad" Fenster wird über "--value" festgelegt. Dies ist ein statischer Anfangswert. Die weitere Aktion erfolgt über den User via Tastatur oder Maus. Die Position des Sliders mit einem andern Wert (z.B. aus pactl) zu verknüpfen würde bedeuten, dass du z.B. via xdotool den Slider verschiebst. Alternativ kannst du natürlich ein "kill" auf "yad" loslassen und das Fenster mt dem neu eingelesenen pactl-Wert starten. Aber wozu?

Statt basic "yad" kannst du natürlich auch HTML/CSS verwenden (<input type="range" class="slider" ...) und via javascript bzw AJAX die Werte zu ändern. Ob das wesentlich einfacher ist sei dahin gestellt. Bei "yad" gibt es auch die Möglichkeit des "--html --uri" für eine Integration beider Vorgehensweisen.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 819

Dann brauchst du doch kein "yad" Fenster.

Dooooch, ich brauche einen schönen kleinen Regler, genauer sind es 4, bei dem Spass hängt noch eine Anlage, ein Radio(alle mit LAN Zugriff) und eine Audio App des Systems mit dran. Deren Rückgabewerte sind ebenfalls gefragt. 😎 ☺

Per "xdotool" Slider zu verschieben kam mir noch nicht in den Sinn, wenn es geht, wäre das eine Möglichkeit. Mal Probieren..

Das Regler Fenster killen und neuladen hatte ich auch schon im Sinn, da es plaziert ist und wenn das "Alte" sich erst später schliesst, wäre das natürlich auch eine Möglichkeit, zwar die Hammer Methode..

Der Startwert im "yad" Fenster wird über "--value" festgelegt. Dies ist ein statischer Anfangswert.

Die Eingabefelder lassen sich aktualisieren, hatte etwas die Hoffnung, dass der Slider ebenso das mitmachen könnte. Bisher im Netz aber nix passendes gefunden.

edit

Ausgabefelder

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1243

Die Eingabefelder lassen sich aktualisieren, hatte etwas die Hoffnung, dass der Slider ebenso das mitmachen könnte. Bisher im Netz aber nix passendes gefunden.

Ok, die Ausgabefelder werden aktualisiert. Auch Eingabefelder lassen sich von außen (z.B. /dev/stdin) füllen aber nur, wenn es keine Variablendefinition mit Gleichheitszeichen (=) ist. Bei "--slider" ist "--value" somit ein statischer, später nicht änderbarer Wert.

Aus diesem Grund habe ich auf die Möglichkeit des "--html --uri" abgehoben. Ich verwende z.B. "yad" um eine statische Webseite (file:///) anzuzeigen, die HTML <input> Elemente enthält und deren Wert per "console.log()" via javascript ausgibt. Diese Ausgaben stehen der Weiterverarbeitung (z.B. pactl set) zur Verfügung. Als "HTTP-Server" verwende ich dabei gern "awk", das Daten an die HTML Seite per AJAX versendet und die zurück gelieferten Daten entsprechend umsetzt ("bashBefehl" | getline Result).

Diese Vorgehensweise hört sich erst mal kompliziert an, ist es aber nicht. So kleine "awk "Befehle wie 'HTTP="/inet/tcp/"PORT"/0/0"; HTTP |& getline' sollte man allerdings schon beherrschen.

Marantkurz

(Themenstarter)

Anmeldungsdatum:
7. September 2023

Beiträge: 819

Danke @shiro!, ich will es nicht übertreiben.

Habe mich entschlossen, diesmal den pragmatischen Weg zu gehen und es so zu belassen und an den Empfänger weiterzugeben.

Timeout kommt noch auf 30, macht sich bei 4 Reglern besser.

Falls Jmd. das gebrauchen kann und den aktuellen Wert des Reglers sich noch anzeigen lassen will, dann käme noch "--hide-value" raus. ("--mark=50:50" habe ich auch wieder rausgenommen)

Antworten |