TC map f1 launch sh -c "ls && exec zsh"
leider funktionier das überhaupt nicht. das fenster wird sofort geschlossen, warum auch immer.mit oder ohne anführungszeichen
Weil das Paket zsh
wahrscheinlich nicht installiert ist.
TC nehme ich den auzuführenden befehl weg und starte
map f1 launch sh
kommt leeres fenster mit der anzeige
sh-5.2$
Du musst ja auch die bash
aufrufen, und nicht sh
.
Das eigentliche Problem besteht darin, dass es entweder keine oder nur genau eine Instanz von kitty
gibt, deswegen bringt ein Vergleich gegen den von pgrep
gelieferten Zähler nichts; entweder steht er auf 0
wenn kitty
nicht gestartet wurde, oder auf 1
wenn es ausgeführt wird, weil Jedes weitere Fenster innerhalb desselben Prozesses von kitty
läuft.
Die Abfrage mit -lt 2
führt immer zu Gleichheit (und damit zur Ausführung von fastfetch
), egal ob kitty
läuft oder nicht. ein Vergleich gegen 0
würde fastfetch
innerhalb von kitty
nie ausführen, und ein Vergleich gegen 1
immer. So kommt man also nicht weiter.
Ein möglicher Ansatz wäre, die Anzahl der Fenster für einen Vergleich heranzuziehen, dazu bietet sich die Variable KITTY_WINDOW_ID
an, die mit Öffnen jedes weiteren Fensters inkrementiert wird.
Für die .bashrc
sähe die Modifikation dann so aus:
if [ $(pgrep -c "kitty") == 0 ] ; then fastfetch ; fi
if [ "$KITTY_WINDOW_ID" == 1 ] ; then fastfetch ; fi
Die erste Zeile sorgt dafür, dass fastfetch
in jeder bash
-Session ausgeführt wird, einschränkend aber nur dann, wenn kitty
nicht läuft. Wenn fastfetch
nicht bei Start einer bash
-Session ausgeführt werden soll, kann man auf diese Zeile verzichten. Die zweite Zeile führt fastfetch
nur dann aus, wenn KITTY_WINDOW_ID
den Wert 1
hat, also nur im ersten Fenster, in allen weiteren Fenstern dann nicht mehr.
Der Eintrag in kitty.conf
für die Belegung von F1
müsste dann so aussehen: map f1 launch bash