From adcbb914f185a0b6242335bfb3709618b1769bbd Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.dev>
Date: Mon, 25 Nov 2024 08:03:59 +0000
Subject: [PATCH] Remove zellij

---
 nix/lib/shared/home-manager-packages.nix      |   4 -
 nix/lib/shared/home-manager.nix               |   1 -
 .../shared/scripts/create-zellij-session.nix  |  65 ---
 nix/modules/home-manager/zellij.nix           |  11 -
 .../home-manager/zsh/abbreviations.zsh        |  18 -
 zellij/config.kdl                             | 388 ------------------
 6 files changed, 487 deletions(-)
 delete mode 100644 nix/lib/shared/scripts/create-zellij-session.nix
 delete mode 100644 nix/modules/home-manager/zellij.nix
 delete mode 100644 zellij/config.kdl

diff --git a/nix/lib/shared/home-manager-packages.nix b/nix/lib/shared/home-manager-packages.nix
index a0f2c421..c9efbb59 100644
--- a/nix/lib/shared/home-manager-packages.nix
+++ b/nix/lib/shared/home-manager-packages.nix
@@ -12,9 +12,6 @@ let
   inherit (pkgs) writeShellApplication;
 
   _timer = writeShellApplication (import ./scripts/_timer.nix);
-  create-zellij-session = writeShellApplication (
-    import ./scripts/create-zellij-session.nix { inherit pkgs; }
-  );
   deliver = writeShellApplication (import ./scripts/deliver.nix { inherit pkgs; });
   export-video-list = writeShellApplication (
     import ./scripts/export-video-list.nix { inherit pkgs username; }
@@ -70,7 +67,6 @@ with pkgs;
   yarn
 
   # Scripts.
-  create-zellij-session
   deliver
   run
   t
diff --git a/nix/lib/shared/home-manager.nix b/nix/lib/shared/home-manager.nix
index b94bffab..80f1bed8 100644
--- a/nix/lib/shared/home-manager.nix
+++ b/nix/lib/shared/home-manager.nix
@@ -41,7 +41,6 @@
     ../../modules/home-manager/starship.nix
     ../../modules/home-manager/syncthing.nix
     ../../modules/home-manager/tmux.nix
-    ../../modules/home-manager/zellij.nix
     ../../modules/home-manager/zsh.nix
   ];
 }
diff --git a/nix/lib/shared/scripts/create-zellij-session.nix b/nix/lib/shared/scripts/create-zellij-session.nix
deleted file mode 100644
index b8a5e9bf..00000000
--- a/nix/lib/shared/scripts/create-zellij-session.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ pkgs }:
-{
-  name = "create-zellij-session";
-
-  runtimeInputs = with pkgs; [
-    openssl
-    zellij
-  ];
-
-  text = ''
-    function _execute_zellij_layout {
-      local session_name="$1"
-      local layout_file="$2"
-
-      DIGEST="$(openssl sha512 "$layout_file")"
-
-      # Prompt the first time we see a given layout file before running it.
-      if ! grep -q "$DIGEST" ~/..zellij.digests 2> /dev/null; then
-        cat "$layout_file"
-
-        read -r -n 1 -p "Trust (and run) this Zellij file? (t = trust, otherwise = skip) "
-
-        if [[ $REPLY =~ ^[Tt]$ ]]; then
-          echo "$DIGEST" >> ~/..zellij.digests
-
-          _attach_to_or_create_zellij_session --layout "$layout_file"
-        fi
-      else
-        _attach_to_or_create_zellij_session --layout "$layout_file"
-      fi
-    }
-
-    function _attach_to_or_create_zellij_session {
-      zellij attach "$session_name" 2>/dev/null || zellij --session "$session_name" "$@"
-    }
-
-    function main {
-      if [[ $# -eq 1 ]]; then
-        selected_path=$1
-      else
-        selected_path=$(find "$REPOS" "$REPOS/tfw" "$HOME/Documents" -maxdepth 1 -mindepth 1 -type d \
-            ! -name "*-old" \
-            ! -name "*.bak" \
-            ! -name "*.old" \
-            ! -name "_archive" \
-          | sort \
-          | fzf --reverse)
-      fi
-
-      session_name=$(basename "$selected_path")
-
-      cd "$selected_path"
-
-      if [[ -f ".ignored/dev.kdl" ]]; then
-        _execute_zellij_layout "$session_name" ".ignored/dev.kdl"
-      elif [[ -f "dev.kdl" ]]; then
-        _execute_zellij_layout "$session_name" "dev.kdl"
-      fi
-
-      _attach_to_or_create_zellij_session
-    }
-
-    main "$@"
-  '';
-}
diff --git a/nix/modules/home-manager/zellij.nix b/nix/modules/home-manager/zellij.nix
deleted file mode 100644
index d746d2ba..00000000
--- a/nix/modules/home-manager/zellij.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ self, ... }:
-{
-  programs.zellij = {
-    enable = true;
-  };
-
-  xdg.configFile."zellij" = {
-    source = "${self}/zellij";
-    recursive = true;
-  };
-}
diff --git a/nix/modules/home-manager/zsh/abbreviations.zsh b/nix/modules/home-manager/zsh/abbreviations.zsh
index 615c6a39..143ad365 100644
--- a/nix/modules/home-manager/zsh/abbreviations.zsh
+++ b/nix/modules/home-manager/zsh/abbreviations.zsh
@@ -57,24 +57,6 @@ abbr ta="tmux attach"
 abbr tl="tmux list-sessions"
 abbr tk="tmux kill-session"
 
-# zellij
-abbr czs="create-zellij-session"
-abbr z="zellij"
-abbr za="zellij attach"
-abbr zd="zellij delete-session"
-abbr zda="zellij delete-all-sessions"
-abbr ze="zellij edit"
-abbr zei="zellij edit --in-place"
-abbr zk="zellij kill-session"
-abbr zka="zellij kill-all-sessions | sort"
-abbr zl="zellij list-sessions | grep -v EXITED"
-abbr zla="zellij list-sessions"
-abbr znt="zellij action new-tab"
-abbr zr="zellij run --"
-abbr zri="zellij run --in-place --"
-abbr zrf="zellij run --floating --"
-abbr multitask="zellij action start-or-reload-plugin file:$HOME/zellij-plugins/multitask.wasm --configuration "shell=$SHELL,cwd=`pwd`""
-
 # Docker and Docker Compose.
 abbr dk="docker"
 abbr dkp="docker ps"
diff --git a/zellij/config.kdl b/zellij/config.kdl
deleted file mode 100644
index e5496e1d..00000000
--- a/zellij/config.kdl
+++ /dev/null
@@ -1,388 +0,0 @@
-keybinds {
-  normal {
-    // uncomment this and adjust key if using copy_on_select=false
-    // bind "Alt c" { Copy; }
-  }
-
-  locked {
-    bind "Ctrl g" { SwitchToMode "Normal"; }
-  }
-
-  resize {
-    bind "Ctrl n" { SwitchToMode "Normal"; }
-    bind "h" "Left" { Resize "Increase Left"; }
-    bind "j" "Down" { Resize "Increase Down"; }
-    bind "k" "Up" { Resize "Increase Up"; }
-    bind "l" "Right" { Resize "Increase Right"; }
-    bind "H" { Resize "Decrease Left"; }
-    bind "J" { Resize "Decrease Down"; }
-    bind "K" { Resize "Decrease Up"; }
-    bind "L" { Resize "Decrease Right"; }
-    bind "=" "+" { Resize "Increase"; }
-    bind "-" { Resize "Decrease"; }
-  }
-
-  pane {
-    bind "Ctrl p" { SwitchToMode "Normal"; }
-    bind "h" "Left" { MoveFocus "Left"; }
-    bind "l" "Right" { MoveFocus "Right"; }
-    bind "j" "Down" { MoveFocus "Down"; }
-    bind "k" "Up" { MoveFocus "Up"; }
-    bind "p" { SwitchFocus; }
-    bind "n" { NewPane; SwitchToMode "Normal"; }
-    bind "d" { NewPane "Down"; SwitchToMode "Normal"; }
-    bind "r" { NewPane "Right"; SwitchToMode "Normal"; }
-    bind "x" { CloseFocus; SwitchToMode "Normal"; }
-    bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
-    bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
-    bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
-    bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
-    bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;}
-  }
-
-  move {
-    bind "Ctrl h" { SwitchToMode "Normal"; }
-    bind "n" "Tab" { MovePane; }
-    bind "p" { MovePaneBackwards; }
-    bind "h" "Left" { MovePane "Left"; }
-    bind "j" "Down" { MovePane "Down"; }
-    bind "k" "Up" { MovePane "Up"; }
-    bind "l" "Right" { MovePane "Right"; }
-  }
-
-  tab {
-    bind "Ctrl t" { SwitchToMode "Normal"; }
-    bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
-    bind "h" "Left" "Up" "k" { GoToPreviousTab; }
-    bind "l" "Right" "Down" "j" { GoToNextTab; }
-    bind "n" { NewTab; SwitchToMode "Normal"; }
-    bind "x" { CloseTab; SwitchToMode "Normal"; }
-    bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
-    bind "b" { BreakPane; SwitchToMode "Normal"; }
-    bind "]" { BreakPaneRight; SwitchToMode "Normal"; }
-    bind "[" { BreakPaneLeft; SwitchToMode "Normal"; }
-    bind "1" { GoToTab 1; SwitchToMode "Normal"; }
-    bind "2" { GoToTab 2; SwitchToMode "Normal"; }
-    bind "3" { GoToTab 3; SwitchToMode "Normal"; }
-    bind "4" { GoToTab 4; SwitchToMode "Normal"; }
-    bind "5" { GoToTab 5; SwitchToMode "Normal"; }
-    bind "6" { GoToTab 6; SwitchToMode "Normal"; }
-    bind "7" { GoToTab 7; SwitchToMode "Normal"; }
-    bind "8" { GoToTab 8; SwitchToMode "Normal"; }
-    bind "9" { GoToTab 9; SwitchToMode "Normal"; }
-    bind "Tab" { ToggleTab; }
-  }
-
-  scroll {
-    bind "Ctrl s" { SwitchToMode "Normal"; }
-    bind "e" { EditScrollback; SwitchToMode "Normal"; }
-    bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
-    bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
-    bind "j" "Down" { ScrollDown; }
-    bind "k" "Up" { ScrollUp; }
-    bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
-    bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
-    bind "d" { HalfPageScrollDown; }
-    bind "u" { HalfPageScrollUp; }
-    // uncomment this and adjust key if using copy_on_select=false
-    // bind "Alt c" { Copy; }
-  }
-
-  search {
-    bind "Ctrl s" { SwitchToMode "Normal"; }
-    bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
-    bind "j" "Down" { ScrollDown; }
-    bind "k" "Up" { ScrollUp; }
-    bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
-    bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
-    bind "d" { HalfPageScrollDown; }
-    bind "u" { HalfPageScrollUp; }
-    bind "n" { Search "down"; }
-    bind "p" { Search "up"; }
-    bind "c" { SearchToggleOption "CaseSensitivity"; }
-    bind "w" { SearchToggleOption "Wrap"; }
-    bind "o" { SearchToggleOption "WholeWord"; }
-  }
-
-  entersearch {
-    bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
-    bind "Enter" { SwitchToMode "Search"; }
-  }
-
-  renametab {
-    bind "Ctrl c" { SwitchToMode "Normal"; }
-    bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
-  }
-
-  renamepane {
-    bind "Ctrl c" { SwitchToMode "Normal"; }
-    bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
-  }
-
-  session {
-    bind "Ctrl o" { SwitchToMode "Normal"; }
-    bind "Ctrl s" { SwitchToMode "Scroll"; }
-    bind "d" { Detach; }
-    bind "w" {
-      LaunchOrFocusPlugin "session-manager" {
-        floating true
-        move_to_focused_tab true
-      };
-
-      SwitchToMode "Normal"
-    }
-  }
-
-  tmux {
-    bind "[" { SwitchToMode "Scroll"; }
-    bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
-    bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
-    bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
-    bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
-    bind "c" { NewTab; SwitchToMode "Normal"; }
-    bind "," { SwitchToMode "RenameTab"; }
-    bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
-    bind "n" { GoToNextTab; SwitchToMode "Normal"; }
-    bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
-    bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
-    bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
-    bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
-    bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
-    bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
-    bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
-    bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
-    bind "o" { FocusNextPane; }
-    bind "d" { Detach; }
-    bind "Space" { NextSwapLayout; }
-    bind "x" { CloseFocus; SwitchToMode "Normal"; }
-  }
-
-  shared_except "locked" {
-    bind "Ctrl g" { SwitchToMode "Locked"; }
-    bind "Ctrl q" { Quit; }
-    bind "Alt n" { NewPane; }
-    bind "Alt i" { MoveTab "Left"; }
-    bind "Alt o" { MoveTab "Right"; }
-    bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
-    bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
-    bind "Alt j" "Alt Down" { MoveFocus "Down"; }
-    bind "Alt k" "Alt Up" { MoveFocus "Up"; }
-    bind "Alt =" "Alt +" { Resize "Increase"; }
-    bind "Alt -" { Resize "Decrease"; }
-    bind "Alt [" { PreviousSwapLayout; }
-    bind "Alt ]" { NextSwapLayout; }
-  }
-
-  shared_except "normal" "locked" {
-    bind "Enter" "Esc" { SwitchToMode "Normal"; }
-  }
-
-  shared_except "pane" "locked" {
-    bind "Ctrl p" { SwitchToMode "Pane"; }
-  }
-
-  shared_except "resize" "locked" {
-    bind "Ctrl n" { SwitchToMode "Resize"; }
-  }
-
-  shared_except "scroll" "locked" {
-    bind "Ctrl s" { SwitchToMode "Scroll"; }
-  }
-
-  shared_except "session" "locked" {
-    bind "Ctrl o" { SwitchToMode "Session"; }
-  }
-
-  shared_except "tab" "locked" {
-    bind "Ctrl t" { SwitchToMode "Tab"; }
-  }
-
-  shared_except "move" "locked" {
-    bind "Ctrl h" { SwitchToMode "Move"; }
-  }
-
-  shared_except "tmux" "locked" {
-    bind "Ctrl b" { SwitchToMode "Tmux"; }
-  }
-}
-
-plugins {
-  tab-bar location="zellij:tab-bar"
-  status-bar location="zellij:status-bar"
-  strider location="zellij:strider"
-  compact-bar location="zellij:compact-bar"
-  session-manager location="zellij:session-manager"
-
-  welcome-screen location="zellij:session-manager" {
-    welcome_screen true
-  }
-
-  filepicker location="zellij:strider" {
-    cwd "/"
-  }
-}
-
-// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
-// eg. when terminal window with an active zellij session is closed
-// Options:
-//   - detach (Default)
-//   - quit
-//
-// on_force_close "quit"
-
-//  Send a request for a simplified ui (without arrow fonts) to plugins
-//  Options:
-//  - true
-//  - false (Default)
-//
-simplified_ui true
-
-// Choose the path to the default shell that zellij will use for opening new panes
-// Default: $SHELL
-//
-// default_shell "fish"
-
-// Choose the path to override cwd that zellij will use for opening new panes
-//
-// default_cwd ""
-
-// Toggle between having pane frames around the panes
-// Options:
-//   - true (default)
-//   - false
-//
-// pane_frames true
-
-// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
-// Options:
-//   - true (default)
-//   - false
-//
-// auto_layout true
-
-// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
-// Options:
-//   - true (default)
-//   - false
-//
-// session_serialization false
-
-// Whether pane viewports are serialized along with the session, default is false
-// Options:
-//   - true
-//   - false (default)
-// serialize_pane_viewport true
-
-// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
-// defaults to the scrollback size. If this number is higher than the scrollback size, it will
-// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
-//
-// scrollback_lines_to_serialize 10000
-
-// Define color themes for Zellij
-// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
-// Once these themes are defined, one of them should to be selected in the "theme" section of this file
-//
-// themes {
-//   dracula {
-//     fg 248 248 242
-//     bg 40 42 54
-//     red 255 85 85
-//     green 80 250 123
-//     yellow 241 250 140
-//     blue 98 114 164
-//     magenta 255 121 198
-//     orange 255 184 108
-//     cyan 139 233 253
-//     black 0 0 0
-//     white 255 255 255
-//   }
-// }
-
-// Choose the theme that is specified in the themes section.
-// Default: default
-//
-theme "catppuccin-mocha"
-
-// The name of the default layout to load on startup
-// Default: "default"
-//
-default_layout "compact"
-
-// Choose the mode that zellij uses when starting up.
-// Default: normal
-//
-// default_mode "locked"
-
-// Toggle enabling the mouse mode.
-// On certain configurations, or terminals this could
-// potentially interfere with copying text.
-// Options:
-//   - true (default)
-//   - false
-//
-// mouse_mode false
-
-// Configure the scroll back buffer size
-// This is the number of lines zellij stores for each pane in the scroll back
-// buffer. Excess number of lines are discarded in a FIFO fashion.
-// Valid values: positive integers
-// Default value: 10000
-//
-// scroll_buffer_size 10000
-
-// Provide a command to execute when copying text. The text will be piped to
-// the stdin of the program to perform the copy. This can be used with
-// terminal emulators which do not support the OSC 52 ANSI control sequence
-// that will be used by default if this option is not set.
-// Examples:
-//
-// copy_command "xclip -selection clipboard" // x11
-// copy_command "wl-copy"          // wayland
-// copy_command "pbcopy"           // osx
-
-// Choose the destination for copied text
-// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
-// Does not apply when using copy_command.
-// Options:
-//   - system (default)
-//   - primary
-//
-// copy_clipboard "primary"
-
-// Enable or disable automatic copy (and clear) of selection when releasing mouse
-// Default: true
-//
-// copy_on_select false
-
-// Path to the default editor to use to edit pane scrollbuffer
-// Default: $EDITOR or $VISUAL
-//
-// scrollback_editor "/usr/bin/vim"
-
-// When attaching to an existing session with other users,
-// should the session be mirrored (true)
-// or should each user have their own cursor (false)
-// Default: false
-//
-// mirror_session true
-
-// The folder in which Zellij will look for layouts
-//
-// layout_dir "/path/to/my/layout_dir"
-
-// The folder in which Zellij will look for themes
-//
-// theme_dir "/path/to/my/theme_dir"
-
-// Enable or disable the rendering of styled and colored underlines (undercurl).
-// May need to be disabled for certain unsupported terminals
-// Default: true
-//
-// styled_underlines false
-
-// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
-// metadata info on this session)
-// Default: false
-//
-// disable_session_metadata true