Skript aus der i3-Konfiguration ausführen

Skript aus der i3-Konfiguration ausführen

Frage:

Ich verwende i3-wm und habe Mod3 als Hotkey aktiviert. Ich habe Folgendes drin ./config/i3/config:

#This command works
  bindsym Mod3+f exec "firefox" 

#This doesn't work nor do my other scripts
  bindsym Mod3+w exec "openBrowser" 

Beide Befehle funktionieren einwandfrei, wenn ich sie von Bash aus ausführe, aber nur der Befehl „Firefox“ läuft mit dem Hotkey. Das Ausführen meines eigenen Skripts funktioniert nicht.

Weitere Details:

openBrowser ist ein Skript, /opt/bin/das sich in meinem Pfad befindet. Habe auch Folgendes versucht:

#This command works
  bindsym Mod3+f exec /opt/bin/openBrowser

Ich habe auch andere Skripte ausprobiert, von denen keines funktioniert, wenn sie von i3 aufgerufen werden. Daher bin ich zu dem Schluss gekommen, dass es kein Problem mit dem Skript ist.

Mir ist auch aufgefallen, dass mein Cursor blinkt, wenn ich in Bash Mod3+w drücke, während die Taste ihren Wert auf den Bildschirm schreibt, wenn ich Mod3+[irgendeine nicht gesetzte Taste] drücke. Es scheint also, dass i3 zumindest versucht, die Funktion auszuführen.

Antwort1

Ich habe versucht, das von Ihnen beschriebene Problem zu reproduzieren. Dabei stellte ich fest, dass zwei i3-Konfigurationsdateien gleichzeitig vorhanden waren. ~/.config/i3/configund ~/.i3/config.

In meinem Fall ~/.config/i3/confighatte die Bearbeitung keinen Effekt, da es den Anschein hat, als ob das ~/.i3/configwichtiger wäre.

Das ist zwar unwahrscheinlich, aber prüfen Sie, ob Sie mehr als eine Konfigurationsdatei haben und möglicherweise die falsche bearbeiten.

Antwort2

Der execBefehl startet eine Anwendung, indem er den von Ihnen angegebenen Befehl an eine Shell übergibt. Dies bedeutet, dass Ihre Programme in Ihrem gesucht werden $PATH. Der Standardwert $PATHenthält normalerweise kein /opt/bin, mein Beispiel ist:

andreatsh@debian:~ 11:28 > echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Versuchen Sie /opt/bin, Ihrem Pfad Folgendes hinzuzufügen ~/.bashrc:

export PATH=$PATH:/opt

Ich habe einige Tests durchgeführt und das löst das Problem für mich. Jetzt:

bindsym Mod3+w exec somescript
bindsym Mod3+w exec /opt/bin/somescript

habe das gleiche Verhalten und das Skript funktioniert.

verwandte Informationen