refactor: extract terminal launch logic into shared script
Add terminal-launcher script as a single entry point for launching foot-based terminals with a given class and command. Migrate all .desktop files to use it instead of inline foot invocations. Simplify hyprland keybindings by replacing inline focus_or_launch with hl.dsp.exec_cmd
This commit is contained in:
+17
-14
@@ -274,21 +274,24 @@ function toggle_master()
|
||||
hl.dispatch(hl.dsp.layout("mfact exact " .. mfact))
|
||||
end
|
||||
|
||||
hl.bind(LEADER .. "return", function()
|
||||
focus_or_launch({
|
||||
match = "tmux",
|
||||
field = "class",
|
||||
cmd = "gtk-launch tmux.desktop",
|
||||
})
|
||||
end, { description = "Open tmux terminal" })
|
||||
-- hl.bind(LEADER .. "return", function()
|
||||
-- focus_or_launch({
|
||||
-- match = "terminal-tmux",
|
||||
-- field = "class",
|
||||
-- cmd = "gtk-launch tmux.desktop",
|
||||
-- })
|
||||
-- end, { description = "Open tmux terminal" })
|
||||
|
||||
hl.bind(LEADER .. "SHIFT + return", function()
|
||||
focus_or_launch({
|
||||
match = "herdr",
|
||||
field = "class",
|
||||
cmd = "gtk-launch herdr.desktop",
|
||||
})
|
||||
end, { description = "Open herdr terminal" })
|
||||
-- hl.bind(LEADER .. "SHIFT + return", function()
|
||||
-- focus_or_launch({
|
||||
-- match = "terminal-herdr",
|
||||
-- field = "class",
|
||||
-- cmd = "gtk-launch herdr.desktop",
|
||||
-- })
|
||||
-- end, { description = "Open herdr terminal" })
|
||||
|
||||
hl.bind(LEADER .. "SHIFT + return", hl.dsp.exec_cmd("gtk-launch herdr.desktop"), { description = "Open herdr terminal" })
|
||||
hl.bind(LEADER .. "return", hl.dsp.exec_cmd("gtk-launch tmux.desktop"), { description = "Open tmux terminal" })
|
||||
|
||||
hl.bind(LEADER .. "B", hl.dsp.exec_raw(browser), { description = "Open browser" })
|
||||
hl.bind(LEADER .. "T", hl.dsp.exec_raw(terminal .. " -e btop"), { description = "Open system monitor" })
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=alcazar herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a alcazar-herdr -T "alcazar herdr" ssh alcazar mise exec -- herdr --session main
|
||||
Exec=terminal-launcher alcazar-herdr "ssh alcazar mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=alcazar tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a alcazar-tmux -T "alcazar tmux" ssh alcazar mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher alcazar-tmux "ssh alcazar mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=bianca Herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a bianca-herdr -T "bianca herdr" ssh bianca mise exec -- herdr --session main
|
||||
Exec=terminal-launcher bianca-herdr "ssh bianca mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=bianca tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a bianca-tmux -T "bianca tmux" ssh bianca mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher bianca-tmux "ssh bianca mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=dupont herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a dupont-herdr -T "dupont herdr" ssh dupont mise exec -- herdr --session main
|
||||
Exec=terminal-launcher dupont-herdr "ssh dupont mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=dupont tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a dupont-tmux -T "dupont tmux" ssh dupont mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher dupont-tmux "ssh dupont mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=Terminal herdr
|
||||
Comment=Terminal with herdr mux
|
||||
Exec=foot -a herdr -T "terminal herdr" mise exec -- herdr --session=main
|
||||
Exec=terminal-launcher terminal-herdr "mise exec -- herdr --session=main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=nca-ai-01 herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a nca-ai-01-herdr -T "nca ai 01 herdr" ssh nca-ai-01 mise exec -- herdr --session main
|
||||
Exec=terminal-launcher nca-ai-01-herdr "ssh nca-ai-01 mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=nca-ai-01 tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a nca-ai-01-tmux -T "nca ai 01 tmux" ssh nca-ai-01 mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher nca-ai-01-tmux "ssh nca-ai-01 mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=obelix herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a obelix-herdr -T "obelix herdr" ssh obelix mise exec -- herdr --session main
|
||||
Exec=terminal-launcher obelix-herdr "ssh obelix mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=obelix tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a obelix-tmux -T "obelix tmux" ssh obelix mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher obelix-tmux "ssh obelix mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=steve dev herdr
|
||||
Comment=remote dev
|
||||
Exec=foot -a steve-dev-herdr -T "steve dev herdr" ssh steve-dev mise exec -- herdr --session main
|
||||
Exec=terminal-launcher steve-dev-herdr "ssh steve-dev mise exec -- herdr --session main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=steve dev tmux
|
||||
Comment=remote dev
|
||||
Exec=foot -a steve-dev-tmux -T "steve dev tmux" ssh steve-dev mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher steve-dev-tmux "ssh steve-dev mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=foot -T terminal
|
||||
Exec=terminal-launcher terminal-fish "/usr/bin/fish"
|
||||
Icon=foot
|
||||
Terminal=false
|
||||
Categories=System;TerminalEmulator;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Version=1.0
|
||||
Name=Terminal tmux
|
||||
Comment=Terminal with tmux
|
||||
Exec=foot -a tmux -T "terminal tmux" mise exec -- tmux new -A -s main
|
||||
Exec=terminal-launcher "terminal-tmux" "mise exec -- tmux new -A -s main"
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=foot
|
||||
|
||||
@@ -85,6 +85,7 @@ dotfiles.default_mode = "symlink-each"
|
||||
"~/.local/bin/hyprland-keybindings" = { source = "script/hyprland-keybindings", mode = "symlink" }
|
||||
"~/.local/bin/hyprland-fetch-client" = { source = "script/hyprland-fetch-client", mode = "symlink" }
|
||||
"~/.local/bin/hyprland-focus-client" = { source = "script/hyprland-focus-client", mode = "symlink" }
|
||||
"~/.local/bin/terminal-launcher" = { source = "script/terminal-launcher", mode = "symlink" }
|
||||
|
||||
"~/.local/bin/battery" = { source = "script/battery", mode = "symlink" }
|
||||
# "~/.config/bin/ec" = { source = "script/ec", mode = "symlink" }
|
||||
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
class=$1
|
||||
cmd=$2
|
||||
terminal="foot -a $class -T $class \"$cmd\""
|
||||
hyprctl dispatch "focus_or_launch({ match = '$class', cmd = 'foot -a $class -T $class $cmd'})"
|
||||
Reference in New Issue
Block a user