[passt scho] Awesomewm, awful.spawn, udiskie -f

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

[passt scho] Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 01.01.2023 17:24:51

Ein Gutes Neues euch!

Ich komme hier nicht weiter:

Ich versuche Debianudiskie mit der Option "-f lf" (verweist auf meine ~/.local/share/applications/lf.desktop für Debianlf) in Debianawesome "autozustarten".

Prinzipiell läuft udiskie auch und macht, was es soll. Aber ich kann leider den Pfad in der Benachrichtigung nicht mit lf öffnen, es passiert einfach nichts. Über die Kommandozeile funktioniert das.

Zur Veranschaulichung:

Code: Alles auswählen

awful.spawn.with_shell("udiskie -f lf")		# Autostartzeile in meiner ~/.config/awesome/rc.lua -> udiskie läuft im Hintergrund, öffnen über die Benachrichtigung bewirkt nichts

sebastian@t420:~$ udiskie -f lf		# Bei Eingabe über die Prompt -> ich kann den neu eingebundenen Ordner per Klick auf die Benachrichtigung "normal" mit lf öffnen
Leider komme ich hier gerade auch mit der Dokumentation nicht weiter, hat ein Awesomebenutzer von euch Ideen (bitte ohne .xinitrc)?
Zuletzt geändert von dasebastian am 03.01.2023 08:40:30, insgesamt 1-mal geändert.

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 01.01.2023 18:46:58

Ist Debianudiskie wirklich ein Shell Skript und nicht Python? Nach der man page shaut es nach Python aus. Wenn es Python wäre, dann wäre vielleicht awful.spawn mit dem Argument "python udiskie -f lf" besser. Das ist nur eine Idee.
Viele Grüße und Erfolg,
Christoph

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 01.01.2023 19:08:10

chrbr hat geschrieben: ↑ zum Beitrag ↑
01.01.2023 18:46:58
Ist Debianudiskie wirklich ein Shell Skript und nicht Python? ... dann wäre vielleicht awful.spawn mit dem Argument "python udiskie -f lf" besser.
Uupsie, "bash: python: Kommando nicht gefunden." :facepalm:

Müsste ich nachinstallieren, bin aber gerade erst durch eine Umstellung ein paar Pakete losgeworden... :evil:

Sollte das wirklich der einzige Weg sein, muss ich darüber nachdenken, was mir wichtiger ist, Klicksen oder Pakete.

Verständnigsfrage: warum geht es dann ganz wie erwartet von der Kommandozeile aus? (Deshalb hätte ich das Problem da eher bei Awesome bzw. dem konkreten "spawn.with...." gesucht.)

Benutzeravatar
TRex
Moderator
Beiträge: 8071
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von TRex » 01.01.2023 19:34:43

Vermutung: weil python3 keinen "python" symlink mehr bereitstellt und du es mit python3 udiskie .... ausführen musst.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 10:35:38

dasebastian hat geschrieben: ↑ zum Beitrag ↑
01.01.2023 19:08:10
Verständnigsfrage: warum geht es dann ganz wie erwartet von der Kommandozeile aus? (Deshalb hätte ich das Problem da eher bei Awesome bzw. dem konkreten "spawn.with.. gesucht.)
Oftmals hat das mit dem Environment zu tun, also Umgebungsvariablen, Suchpfaden usw. Bein Quoting mit Gänsefüßchen oder dem Tick als einzelnem Strich gibt es auch Unterschiede. Es gibt massenweise Fallstricke.

Noch eine andere Idee: Du könntest auch "io.popen" von Lua verwenden. Das Argument wäre das gleiche wie bei der Verwendung von awful.spawn. Achja, für den Lapsus Python vs Python3 bitte ich um Entschuldigung. Ich habe lange Zeit mit Systemen gearbeitet, wo zum Beispiel Python zu Python3 und das zu Python3.9 verlinkt war. Damit musste man bei einem Wechsel der Python Version im System nie die Shebang Zeile anpassen.

Viele Grüße,
Christoph

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 10:46:13

TRex hat geschrieben: ↑ zum Beitrag ↑
01.01.2023 19:34:43
... python3 keinen "python" symlink mehr bereitstellt und du es mit python3 udiskie ....
Ist installiert, stehe im Moment bei folgendem Eintrag in der rc.lua:

Code: Alles auswählen

awful.spawn.with_shell("python3 /usr/bin/udiskie -f lf")
Mit dem gleichen Ergebnis - udiskie läuft, aber das Öffnen per Benachrichtigungslink funktioniert nicht (ohne absolute Pfadangabe ging (natürlich?) gar nichts.
chrbr hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 10:35:38
dasebastian hat geschrieben: ↑ zum Beitrag ↑
01.01.2023 19:08:10
Verständnigsfrage ...
Oftmals hat das mit dem Environment zu tun ... Es gibt massenweise Fallstricke.
Oi.
Noch eine andere Idee: Du könntest auch "io.popen" von Lua verwenden. Das Argument wäre das gleiche wie bei der Verwendung von awful.spawn.
Du meinst

Code: Alles auswählen

io.popen("python3 /usr/bin/udiskie -f lf")
?
Ich habe das jetzt noch nicht ausprobiert, aber nach kurzer Suche mit "awesome wm io.popen" gibt mir die Gans eher abschlägige Antworten, im Sinne von "... you should avoid using io.popen in awesome...".
Achja, für den Lapsus Python vs Python3...
Ach bitte! :THX:

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 10:56:20

dasebastian hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 10:46:13
Ich habe das jetzt noch nicht ausprobiert, aber nach kurzer Suche mit "awesome wm io.popen" gibt mir die Gans eher abschlägige Antworten, im Sinne von "... you should avoid using io.popen in awesome...".
Tatsächlich, da bin ich noch nicht drüber gestolpert. Vielleicht ist das bei "keinen" Kommandos ok. Bei "langen" Kommandos scheint io.popen aweful zu blockieren. Das probiere ich vielleicht später mal aus. Heute probiere ich mal aweful und Python aus. Das interessiert mich schon. Man kann immer etwas lernen.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 11:18:22

chrbr hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 10:56:20
Das interessiert mich schon. Man kann immer etwas lernen.
Oft, wenn man denkt, ach das mach ich schnell... dann steht man plötzlich vor einem Heuhaufen... :roll:

Und es war natürlich die "Ente", nicht die "Gans"... :lol:

EDIT: meine "Bauchvermutung" ist, dass awful.spawn irgendwie keine Rückmeldungen/Rückeingaben von gestarteten Programmen zulässt, weil es auf der Kommandozeile ja funktioniert (sowohl mit als ohne vorangestelltem python3). Aber in Wirklichkeit habe ich keine Ahnung. Zu langen Kommandos, mein

Code: Alles auswählen

awful.spawn.with_shell("xautolock -time 5 -locker slock")
funktioniert zB. tadellos.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 12:05:32

Um vielleicht Tests zu ersparen:

Code: Alles auswählen

awful.spawn.easy_async_with_shell("python3 /usr/bin/udiskie -f lf")
liefert das gleiche Ergebnis (udiskie funktioniert, öffnen via link nicht).

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 12:50:47

Ein Versuch mit io.popen funktioniert hinsichtlich der Parameterübergabe von Python.
Das Python Skript gibt nur das Argument zurück:

Code: Alles auswählen

#!/usr/bin/env python3
import sys
if __name__ == '__main__':
	if len(sys.argv) != 2:
        print("Please start nwa.py with one argument")
        exit()
    print(sys.argv[1])
Das Lua Skript, das mit der Bluetooth Taste gestartet wird:

Code: Alles auswählen

]local wibox = require("wibox")
local awful = require("awful")

pversuch_widget = wibox.widget.textbox()
pversuch_widget.txt = wibox.widget.textbox()
pversuch_widget.txt:set_text("huhu")

function pversuch_start()
    local queue = io.popen("/home/chris/.myconfig/awesome/pversuch.py lala")
    local txt = queue:read()
    queue:close()
    pversuch_widget.txt:set_text(txt)
end
So ist es in rc.lua eingebaut:

Code: Alles auswählen

-- ziemlich am Anfang
require("pversuch")
-- Innerhalb von
         s.mytasklist, -- Middle widget
            { -- Right widgets
                ...
                pversuch_widget.txt,
                ...
 -- Weiter unten in
 globalkeys = gears.table.join(
     ...
     awful.key({ }, "XF86Bluetooth", pversuch_start),
Was macht denn udiskie? Vielleicht installiere ich mir das temporär. Mein primitives Beispiel ist möglicherweise nicht repräsentativ.

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 13:51:52

Hoi! Alle Achtung!

Debianudiskie ist ein "Mountdaemon" und verwaltet Wechseldatenträger, ohne, dass du gvfs oder root brauchst.

Da meine Oberfläche teils relativ sporadisch ist, lasse ich das bei mir laufen um damit eingesteckte Datenträger (Sticks, externe Platten) automatisch einhängen zu lassen bzw. um sie (bei mir zB. per shortcut) auszuwerfen.

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 15:27:59

Folgende Lua Funktionieren:

Code: Alles auswählen

function pversuch_start_nix()
    local queue = io.popen("/home/chris/.myconfig/awesome/pversuch.py lala")
    local txt = queue:read()
    queue:close()
    pversuch_widget.txt:set_text(txt)
end

function pversuch_start_nix()
    awful.spawn.with_shell( "/home/chris/.myconfig/awesome/pversuch.py lala")
end

function pversuch_start_nix()
    awful.spawn( "/home/chris/.myconfig/awesome/pversuch.py lala")
end

function pversuch_start()
    awful.spawn( "python3 /home/chris/.myconfig/awesome/pversuch.py lala")
end
Zu Deinem Aufruf
dasebastian hat geschrieben: ↑ zum Beitrag ↑
01.01.2023 17:24:51
Ich versuche Debianudiskie mit der Option "-f lf" (verweist auf meine ~/.local/share/applications/lf.desktop für Debianlf) in Debianawesome "autozustarten".
Was passiert denn, wenn Du

Code: Alles auswählen

usr/bin/udiskie -f $HOME/.local/share/applications/lf.desktop
mittels awesome ausführst? Wenn das nichts bringt, dann in einem zweiten Versuch $HOME durch den wirklichen Pfad ersetzen. Bei mir ist das /home/chris.

DerChris
Beiträge: 363
Registriert: 16.03.2009 16:45:12
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von DerChris » 02.01.2023 16:31:54

Moin moin,

mal doof um die Ecke gefragt, wären Debianpmount und/oder Debianudevil vielleicht eine Alternative? Allerdings wäre zumindest bei pmount die Möglichkeit zum automount weg. Udevil bringt eine Möglichkeit mit, aber das habe ich nicht getestet, da ich immer händisch mounte/unmounte.
i3 & bookworm

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 16:44:51

chrbr hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 15:27:59
Was passiert denn, wenn Du ....
Lustig, ich hatte beides schon versucht, aber nicht in Kombination (also sowohl absoluter Pfad zu udiskie als auch zur lf.desktop) - aber leider, gleiches Ergebnis. Es ist wie verhext.

Das Ding ist, dass das jetzt eigentlich nur ein blöder Schönheitsfehler für mein halbautistisches Gehirn ist, weil meine ursprüngliche Zielsetzung war einfach nur einfaches Automounten, hätte die Benachrichtigung keinen "Linkbutton" wäre ich mehr als zufrieden gewesen. Jetzt ist aus der Kür so eine halbe Pflicht geworden... :facepalm: :lol:

Moinmoin DerChris,
DerChris hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 16:31:54
... wären Debianpmount und/oder Debianudevil vielleicht eine Alternative?
Debianpmount fiel beim Ausprobieren bei mir raus wegen schon von dir angeführtem Grund und Debianudevil funktionierte gut (das war mit devmon-Skript, glaube ich), kam aber mit LUKS nicht zurecht, das ging gar nicht. Und da ich dann mit udiskie (eigentlich :twisted: ) schon voll zufrieden war (bin...), habe ich da dran nicht mehr weiter gebastelt.

EDIT: Bevor hier jetzt ein falscher Eindruck entsteht - Debianudiskie funktioniert super, es passt für mich. Ich dachte nur, das kann keine große Sache sein, das mit dem Link hinzukriegen. Sollte das nicht gehen, ist es für mich auch kein Grund, den Dienst zu wechseln.

Das mit io.popen lasse ich lieber, sie sagen's wirklich mehrmals ausdrücklich in der Dokumentation und da trau ICH mich dann nicht drüber :oops: :lol: :
It is strongly recommended not to use io.popen... First, do not use io.popen ever. ...

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 17:28:14

Ich habe in den Python Skripts mal mit

Code: Alles auswählen

import time
...
# im Mini-Skript
time.sleep(1)
mal eine Verzögerung eingebaut. Das Verhalten von io.popen ist sehr unterschiedlich.
Zusätzlich schreibe ich jedes Mal bei XF86Bluetooth in eine Datei.
  • Bei io.popen gibt es einen Fehler, wenn der Timer am Anfang verzögert. Dann kommt innerhalb eines Timeouts keinReturn zurück. Beim Timer am Ende passiert nichts schlimmes.
  • Bei awful.spwan und Timer am Anfang passiert gar nichts. Wahrscheinlich läuft awful.spawn in ein Timeout. Mit dem Timer am Ende passiert auch nichts. Nur die Variable in der GUI wird nicht aktualisiert.

Vielleicht probierst Du doch mal io.popen aus. Oder Du findest heraus, ob man ein Timeout von awful.spwan konfigurieren kann. Das würde mich auch interessieren.

Ansonsten könnte man auch den Aufruf mit Coroutines von Lua von aweful entkoppeln. Siehe http://www.lua.org/manual/5.4/manual.html#2.6. Das wäre aber schon wieder Aufwand.

KP97
Beiträge: 3427
Registriert: 01.02.2013 15:07:36

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von KP97 » 02.01.2023 17:35:53

Darüber bin ich mal gestolpert, evtl. kannst Du damit ja was anfangen (auch wenn Du eigentlich zufrieden bist)...
https://michael.stapelberg.ch/posts/201 ... etup_udev/

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 17:44:51

Danke KP97, aber ich bleibe mal. :THX:

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 02.01.2023 17:55:01

Mit

Code: Alles auswählen

io.popen("python3 /usr/bin/udiskie -f lf")
bin ich jetzt zwei mal in einen Freeze gerutscht, zuerst wurde zwar gemountet (der Benachrichtigungslink ging aber eh auch nicht), Aushängen ging dann schon nicht mehr (device is busy), dann Funkstille. Und beim zweiten Mal weiß ich gar nicht mehr, was ich gemacht habe, ich war nicht lange angemeldet, Punktausende.

Vielen Dank für die Mühe und das Ausprobieren chrbr, aber ich bin artig und halte mich an die Spielregeln der Awesomeleute... :mrgreen:

Meine rc.lua steht jetzt wieder auf Anfang (awful.spawn.with_shell... udiskie), der Dienst funktioniert, über die Stelle, wo der Benachrichtigungslink auftaucht klebe ich einfach ein Pflaster... :lol:

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 02.01.2023 19:22:46

Ok, das war auf jeden Fall eine Herausforderung. Ich werde mal schauen, ob und wie ich die io.popen umstellt. Ich habe jedenfalls auch etwas gelernt.

Zum Benachrichtigungs-Dingsda: Wenn man die Info anderweitig bekommen kann, dann kann man auch dafür eine neue Instanz / Lua Skript basteln. Dann wären das Mounten und die Anzeige entkoppelt.

Viele Grüße,
Christoph

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 03.01.2023 08:40:09

chrbr hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 19:22:46
... werde mal schauen, ob und wie ich die io.popen umstellt.
Aber bitte nur zwecks Eigentinteresse! Für mich passt der Versuch... :mrgreen:
... dann kann man auch dafür eine neue Instanz / Lua Skript basteln....
Ja Leute, die das können schon. Ich hatte mich ja udiskie entschieden, weil es wesentlich unkomplizierter bei mir lief, als die Alternativen. Im Ernst, das passt schon. Ich habe noch unter MATE nie diesen Link verfolgt, da werde ich jetzt nicht damit anfangen, nur weil er da ist. :THX: :hail:

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: [passt scho] Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 03.01.2023 14:49:59

dasebastian hat geschrieben: ↑ zum Beitrag ↑
02.01.2023 17:55:01
Meine rc.lua steht jetzt wieder auf Anfang (awful.spawn.with_shell... udiskie), der Dienst funktioniert, über die Stelle, wo der Benachrichtigungslink auftaucht klebe ich einfach ein Pflaster... :lol:
Wenn Du mal wieder viel Geduld hast, dann könntest Du mit den awful.spawn.*async* Zoo exprimentiere. Hinsichtlich der Hänger mit io.popen stimme ich Dir zu. Vielleicht führt eine Race Condition mit dem blockierenden Verhalten von io.popen zu der Katastrophe.

Viele Grüße,
Christoph

dasebastian
Beiträge: 1873
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: [passt scho] Awesomewm, awful.spawn, udiskie -f

Beitrag von dasebastian » 03.01.2023 15:07:07

chrbr hat geschrieben: ↑ zum Beitrag ↑
03.01.2023 14:49:59
Wenn Du mal wieder viel Geduld hast, dann könntest Du mit den awful.spawn.*async* Zoo exprimentieren...
Du meinst so in der Art: viewtopic.php?t=185874#p1317130 ? :mrgreen:

Ich habe (bevor ich auf "passt scho" gesetzt habe), sogar noch probiert, udiskie mittels bashskript per awful.spawn...shell aufzurufen (sowas habe ich an anderer Stelle in meinem System schon mal erfolgreich gemacht). Alle Varianten (komplette Pfade, halbkomplette, gar keine, mit vorgestelltem python3, ohne... frage nicht) ausprobiert. Das wollte auch nicht.

Es ist schon seltsam, dass es vom Terminal aus geht, sobald aber awesome ins Spiel kommt - nicht bzw. nur ohne die Parameter. Achja. Mittels ~/.xintitrc ist es das gleiche Spiel.

Darf ich abschließend nochmal fragen: könnte/ist das einfach so eine "Pythonsache" (sein), dass da irgendwelche Variablen/Parameter zur Übergabe von Optionen fehlen (ausser man ist eben schon in einer vollständig geladenen Umgebung)?

PS: das Pflaster in der rechten oberen Bildschirmecke funktioniert... :facepalm: :lol:

chrbr
Beiträge: 550
Registriert: 29.10.2022 15:53:26

Re: [passt scho] Awesomewm, awful.spawn, udiskie -f

Beitrag von chrbr » 03.01.2023 16:28:04

dasebastian hat geschrieben: ↑ zum Beitrag ↑
03.01.2023 15:07:07
Darf ich abschließend nochmal fragen: könnte/ist das einfach so eine "Pythonsache" (sein), dass da irgendwelche Variablen/Parameter zur Übergabe von Optionen fehlen (ausser man ist eben schon in einer vollständig geladenen Umgebung)?
Das glaube ich nicht. Bei meinen Versuchen hat die Parameterübergabe auch funktioniert. Ich vermute, dass irgend ein Prozess bei der Erkennung von Sticks usw bei udiskie zu lange dauert und etwas in awesome in ein Timeout rennt. Die Verwendung von awful.spawn.easy_async_with_shell gemäß der vierten Blocks in https://awesomewm.org/doc/api/libraries ... spawn.html ist vielleicht die Lösung.

Ansonsten hilf ein Pflaster immer und irgendwie :D .

Antworten