1
0

aerospace-tmux-focus.nix 715 B

123456789101112131415161718192021222324252627282930313233
  1. { writeShellScriptBin, lib, tmux, aerospace }:
  2. let
  3. aerospaceBin = "${lib.getExe aerospace}";
  4. tmuxBin = "${lib.getExe tmux}";
  5. in
  6. writeShellScriptBin "tmux-aerospace-focus" ''
  7. direction="$1"
  8. if [[ -n "$(${aerospaceBin} list-windows --focused | grep tmux)" ]]; then
  9. tmux_dir=""
  10. case "$direction" in
  11. left) tmux_dir="L" ;;
  12. down) tmux_dir="D" ;;
  13. up) tmux_dir="U" ;;
  14. right) tmux_dir="R" ;;
  15. esac
  16. if [[ -n "$tmux_dir" ]]; then
  17. ret=$(${tmuxBin} run "#{at_edge} $tmux_dir")
  18. if [[ $ret -eq 1 ]]; then
  19. ${aerospaceBin} focus "$direction"
  20. else
  21. ${tmuxBin} select-pane "-$tmux_dir"
  22. fi
  23. fi
  24. fi
  25. ${aerospaceBin} focus "$direction"
  26. ''