Fvwm: Vergabe von Variablen mit PipeRead

OsunSeyi

Well-Known Member
Hilfe, bin genervt...:

Nachlesen kann man das unter COMMAND EXPANSION in der Manpage.

1) Die Variable $[desk.n] gibt die Nummer vom aktuellen Desktop aus.
2) Die verschachtelte Variable $[desk.name$[desk.n]] den mit "DesktopName" vergebenen Namen.

Der Desktopwechsel funktioniert tadellos, und der Pager zeigt auch den vergebenen Namen korrekt an.

Nun aber:

Code:
# Produziert die Xmessage-Ausgabe "0"
# obwohl ich auf Desktop "5 BSD" bin:

DesktopName         5 BSD
Key F2 A A Exec exec xmessage '$[desk.n]'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Produziert entsprechend die Xmessage-Ausgabe "Arbeitsfläche 0":

Key F2 A A Exec exec xmessage '$[desk.name$[desk.n]]'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Hier wiederum findet er durchaus das aktuelle Fenster auf Desktop "5 BSD"

Key F2 A A Exec exec xmessage '$[w.desk]'

Ich würde darum bescheiden davon ausgehen, daß in der hier installierten Version $[desk.n] eben nicht funktioniert...

Es gibt aber einen Workaround, siehe Forumsbeitrag:

Code:
# Gibt tatsächlich "5" aus:

Key F2 A A Exec exec xmessage `xdotool get_desktop`

Demnach wäre jetzt zB folgendes toll:

Code:
# Die Nummer des aktuellen Desktops in eine Variable lesen:

    SetEnv DESK    exec PipeRead 'xdotool get_desktop'

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Oder gleich das Gewünschte umsetzen:

    DestroyFunc ToggleButtons
    AddToFunc   ToggleButtons

    + I None (FvwmButtons BUTTONS-$0) Module FvwmButtons BUTTONS-$0
    + I Next (FvwmButtons BUTTONS-$0) Close

    Key F1 A A ToggleButtons PipeRead 'xdotool get_desktop'

# was natürlich *nicht* klappt...
# Zur Kontrolle: dieser Aufruf klappt:

    Key F1 A A ToggleButtons 5

Darum also die Frage, wie ich die Ausgabe von 'PipeRead' in eine Variable bekommen kann !?
 
Juchuh...:

Key F1 A A PipeRead "echo ToggleButtons `xdotool get_desktop`"

Ruft die Funktion "ToggleButtons" mit dem Parameter "5" (siehe Beispiel oben) auf.

Code:
    PipeRead "echo SetEnv DESK `xdotool get_desktop`"
    Key F2 A A Exec exec xmessage '$[DESK]'

# funktioniert leider nicht, aber mein Problem ist anscheinend gelöst
:)
 
Zurück
Oben