Add proper terminal launching
This commit is contained in:
parent
d25b8958af
commit
c050291fef
|
|
@ -4,6 +4,52 @@
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
||||||
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
|
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
|
||||||
|
terminal-name = "foot";
|
||||||
|
launch_terminal = pkgs.writeShellScriptBin "launch_terminal" ''
|
||||||
|
function find_leaf_pid(){
|
||||||
|
local PID
|
||||||
|
local RET
|
||||||
|
local NAME
|
||||||
|
PID=$1
|
||||||
|
for CHILD_PID in $(pgrep -P "$PID"); do
|
||||||
|
RET=$(find_leaf_pid "$CHILD_PID")
|
||||||
|
if [ "$RET" != "" ]; then
|
||||||
|
PID="$RET"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
NAME=$(ps -p "$PID" -o comm=)
|
||||||
|
if [ "$NAME" == "zsh" ]; then
|
||||||
|
echo "$PID"
|
||||||
|
elif [ "$NAME" == "ssh" ]; then
|
||||||
|
echo "$PID"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
LEAF_PID=$(find_leaf_pid "$1")
|
||||||
|
if [ "$(ps -p "$LEAF_PID" -o comm=)" == "ssh" ]; then
|
||||||
|
SSH_COMMAND=$(ps -p "$LEAF_PID" -o args --no-headers)
|
||||||
|
if [[ "$SSH_COMMAND" == *"waypipe"* ]]; then
|
||||||
|
CLIENT=$(echo "$SSH_COMMAND" | awk '{ print $5 }')
|
||||||
|
PREVIOUS_SESSION_ID=$(grep -z "SSH_SESSION_ID" "/proc/$LEAF_PID/environ" | xargs -0 -n 1 | grep -oP "[0-9]*")
|
||||||
|
SSH_SESSION_ID=$RANDOM
|
||||||
|
${terminal} -e zsh -c "SSH_SESSION_ID=$SSH_SESSION_ID waypipe ssh -t \"$CLIENT\" env SSH_SESSION_ID=\"$SSH_SESSION_ID\" PREVIOUS_SESSION_ID=\"$PREVIOUS_SESSION_ID\" \"zsh --login\""
|
||||||
|
else
|
||||||
|
${terminal} -e zsh -c "ssh -t \"$(echo "$SSH_COMMAND" | awk '{ print $2 }')\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
else # Not an ssh session
|
||||||
|
if [ "$(ps -p "$1" -o comm=)" == "${terminal-name}" ]; then
|
||||||
|
CWD=$(readlink -e /proc/"$LEAF_PID"/cwd)
|
||||||
|
if [ "$CWD" != "" ]; then
|
||||||
|
${terminal} --working-directory "$CWD"
|
||||||
|
else
|
||||||
|
${terminal}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
${terminal}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
# Since native Home Manager doesn't have a programs.niri module yet,
|
# Since native Home Manager doesn't have a programs.niri module yet,
|
||||||
# we generate the KDL configuration file directly.
|
# we generate the KDL configuration file directly.
|
||||||
|
|
@ -57,6 +103,10 @@ in {
|
||||||
spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate"
|
spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate"
|
||||||
prefer-no-csd
|
prefer-no-csd
|
||||||
|
|
||||||
|
hotkey-overlay {
|
||||||
|
skip-at-startup
|
||||||
|
}
|
||||||
|
|
||||||
gestures {
|
gestures {
|
||||||
hot-corners {
|
hot-corners {
|
||||||
off
|
off
|
||||||
|
|
@ -93,13 +143,13 @@ in {
|
||||||
|
|
||||||
binds {
|
binds {
|
||||||
// General Binds
|
// General Binds
|
||||||
Mod+Return { spawn "${terminal}"; }
|
Mod+Return { spawn "sh" "-c" "${launch_terminal}/bin/launch_terminal $(niri msg --json focused-window | ${pkgs.jq}/bin/jq .pid)"; }
|
||||||
Mod+Shift+Return { spawn "${terminal}"; }
|
Mod+Shift+Return { spawn "${terminal}"; }
|
||||||
Mod+Q { close-window; }
|
Mod+Q { close-window; }
|
||||||
Mod+A { spawn "${nautilus}"; }
|
Mod+A { spawn "${nautilus}"; }
|
||||||
Mod+B { spawn "Helium"; }
|
Mod+B { spawn "Helium"; }
|
||||||
Mod+M { maximize-column; }
|
Mod+M { maximize-column; }
|
||||||
Mod+Shift+F { toggle-windowed-fullscreen; }
|
Mod+F {maximize-window-to-edges;}
|
||||||
Mod+Tab { toggle-overview; }
|
Mod+Tab { toggle-overview; }
|
||||||
|
|
||||||
// Vicinae Binds
|
// Vicinae Binds
|
||||||
|
|
@ -154,7 +204,7 @@ in {
|
||||||
Mod+Shift+8 { move-column-to-workspace 8; }
|
Mod+Shift+8 { move-column-to-workspace 8; }
|
||||||
Mod+Shift+9 { move-column-to-workspace 9; }
|
Mod+Shift+9 { move-column-to-workspace 9; }
|
||||||
|
|
||||||
Mod+Mod+Sys_Req { screenshot; }
|
Print { screenshot; }
|
||||||
Ctrl+Alt+L {spawn "${pkgs.hyprlock}/bin/hyprlock"; }
|
Ctrl+Alt+L {spawn "${pkgs.hyprlock}/bin/hyprlock"; }
|
||||||
|
|
||||||
XF86MonBrightnessUp { spawn "${brightnessctl}" "set" "+10%"; }
|
XF86MonBrightnessUp { spawn "${brightnessctl}" "set" "+10%"; }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue