Add proper terminal launching
This commit is contained in:
parent
d25b8958af
commit
c050291fef
|
|
@ -4,6 +4,52 @@
|
|||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
||||
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 {
|
||||
# Since native Home Manager doesn't have a programs.niri module yet,
|
||||
# we generate the KDL configuration file directly.
|
||||
|
|
@ -57,6 +103,10 @@ in {
|
|||
spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate"
|
||||
prefer-no-csd
|
||||
|
||||
hotkey-overlay {
|
||||
skip-at-startup
|
||||
}
|
||||
|
||||
gestures {
|
||||
hot-corners {
|
||||
off
|
||||
|
|
@ -93,13 +143,13 @@ in {
|
|||
|
||||
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+Q { close-window; }
|
||||
Mod+A { spawn "${nautilus}"; }
|
||||
Mod+B { spawn "Helium"; }
|
||||
Mod+M { maximize-column; }
|
||||
Mod+Shift+F { toggle-windowed-fullscreen; }
|
||||
Mod+F {maximize-window-to-edges;}
|
||||
Mod+Tab { toggle-overview; }
|
||||
|
||||
// Vicinae Binds
|
||||
|
|
@ -154,7 +204,7 @@ in {
|
|||
Mod+Shift+8 { move-column-to-workspace 8; }
|
||||
Mod+Shift+9 { move-column-to-workspace 9; }
|
||||
|
||||
Mod+Mod+Sys_Req { screenshot; }
|
||||
Print { screenshot; }
|
||||
Ctrl+Alt+L {spawn "${pkgs.hyprlock}/bin/hyprlock"; }
|
||||
|
||||
XF86MonBrightnessUp { spawn "${brightnessctl}" "set" "+10%"; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue