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