From 2c1487ab9399e26e664596585754b6b5be7f5ae7 Mon Sep 17 00:00:00 2001 From: Marty Oehme <marty.oehme@gmail.com> Date: Sat, 4 Jan 2025 10:57:40 +0100 Subject: [PATCH] repo: Remove traces of tmux configuration While I never disliked tmux I have not been using it for absolute ages now, ever since starting to multiplex with wezterm. Wezterm can (at least with my current setup) *not* replace all tmux functionality - especially running multiple sessions in a detachable way on a remote server - but I have never needed those in a long time now. Detachable sessions I can create instead with `abduco`. --- README.md | 5 +- bootstrap/packages_stable.tsv | 1 - nvim/.config/nvim/lua/core/mappings.lua | 2 +- sh/.config/sh/xdg | 1 - terminal/.config/sh/alias.d/tmux.sh | 57 ------ terminal/.config/tmux/sessions/dot.session | 13 -- terminal/.config/tmux/sessions/music.session | 9 - terminal/.config/tmux/sessions/notes.session | 7 - terminal/.config/tmux/sessions/social.session | 10 - terminal/.config/tmux/sessions/sport.session | 4 - terminal/.config/tmux/sessions/todo.session | 15 -- terminal/.config/tmux/tmux.conf | 183 ------------------ terminal/.config/tmux/tmux.remote.conf | 10 - .../zsh/completions/_tmux_attach_start | 12 -- .../.local/bin/test/tmux_attach_start.bats | 39 ---- terminal/.local/bin/tmux_attach_start | 154 --------------- terminal/.local/bin/tmux_pane_tree | 20 -- 17 files changed, 3 insertions(+), 539 deletions(-) delete mode 100644 terminal/.config/sh/alias.d/tmux.sh delete mode 100644 terminal/.config/tmux/sessions/dot.session delete mode 100644 terminal/.config/tmux/sessions/music.session delete mode 100644 terminal/.config/tmux/sessions/notes.session delete mode 100644 terminal/.config/tmux/sessions/social.session delete mode 100644 terminal/.config/tmux/sessions/sport.session delete mode 100644 terminal/.config/tmux/sessions/todo.session delete mode 100644 terminal/.config/tmux/tmux.conf delete mode 100644 terminal/.config/tmux/tmux.remote.conf delete mode 100755 terminal/.config/zsh/completions/_tmux_attach_start delete mode 100644 terminal/.local/bin/test/tmux_attach_start.bats delete mode 100755 terminal/.local/bin/tmux_attach_start delete mode 100755 terminal/.local/bin/tmux_pane_tree diff --git a/README.md b/README.md index 3d97a7e..46cca40 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,12 @@ Enjoy! * [`waybar`](https://github.com/Alexays/Waybar) - Easily customizable statusbar for wayland * [`bemenu`](https://github.com/Cloudef/bemenu) - Extended dmenu replacement for wayland, X11 and ncurses * [`fontconfig`] - System-wide font replacements and styling settings -* [`wezterm`](https://wezfurlong.org/wezterm/) - Terminal emulator (fast, understandable and lua configurable) -* [`tmux`](https://github.com/tmux/tmux/) - terminal multiplexer (slowly migrating away in favor of wezterm) +* [`wezterm`](https://wezfurlong.org/wezterm/) - Terminal emulator and multiplexer (fast, understandable and lua configurable) * [`nvim`](https://neovim.io/) - Neovim configuration * [`vifm`](https://github.com/vifm/vifm) - vim-like file-manager * [`qutebrowser`](https://github.com/qutebrowser/qutebrowser) - vim-key enabled web browser * [`pass`](pass/README.md) - Password management suite -* [`bibtex`] - LateX/BibteX/pandoc plaintext writing & reference suite +* [`bibtex`] - LateX/BibteX/pandoc plaintext writing & reference suite (slowly migrating toward [typst](https://typst.app)) * [`git`](git/README.md) - distributed version control system. * [`office`](office/README.md) - office/productivity software for writing e-mail and setting appointments diff --git a/bootstrap/packages_stable.tsv b/bootstrap/packages_stable.tsv index 3d77a6e..284174d 100644 --- a/bootstrap/packages_stable.tsv +++ b/bootstrap/packages_stable.tsv @@ -311,7 +311,6 @@ tidy-viewer CLI csv pretty printer that uses column styling A timew Timewarrior, A command line time tracking application R tinyxxd Standalone version of the hex dump utility that comes with ViM R tlp Linux Advanced Power Management R -tmux Terminal multiplexer R toilet free replacement for the FIGlet utility. A topgrade-bin Invoke the upgrade procedure of multiple package managers A traceroute Tracks the route taken by packets over an IP network R diff --git a/nvim/.config/nvim/lua/core/mappings.lua b/nvim/.config/nvim/lua/core/mappings.lua index 7f457e9..c0c5880 100644 --- a/nvim/.config/nvim/lua/core/mappings.lua +++ b/nvim/.config/nvim/lua/core/mappings.lua @@ -113,7 +113,7 @@ map("t", "\\\\", [[<C-\><C-n>]], { desc = "exit terminal mode" }) map("n", "<leader>/", ":noh<cr>", { desc = "remove highlights" }) -- split buffers vertically/horizontally with the leader \ or - (mirrors my --- tmux setup) +-- multiplexer setup) map("n", "<leader>-", ":sp<cr>", { desc = "open horiz split" }) map("n", "<leader>\\", ":vsp<cr>", { desc = "open vert split" }) -- open actual new tab with leader-T diff --git a/sh/.config/sh/xdg b/sh/.config/sh/xdg index 38bbd99..0b62166 100644 --- a/sh/.config/sh/xdg +++ b/sh/.config/sh/xdg @@ -61,7 +61,6 @@ fi export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc" export SQLITE_HISTORY="$XDG_STATE_HOME/sqlite_history" export TEXMFVAR="$XDG_CACHE_HOME/texlive/texmf-var" -export TMUX_PLUGIN_MANAGER_PATH="$XDG_DATA_HOME/tmux" export VAGRANT_HOME="$XDG_DATA_HOME/vagrant" export WINEPREFIX="$XDG_DATA_HOME/wine" export ZDOTDIR="$XDG_CONFIG_HOME/zsh" diff --git a/terminal/.config/sh/alias.d/tmux.sh b/terminal/.config/sh/alias.d/tmux.sh deleted file mode 100644 index 12459be..0000000 --- a/terminal/.config/sh/alias.d/tmux.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env sh - -exist() { type "$1" >/dev/null 2>&1; } - -# alias tmux to follow xdg-specification -# shellcheck disable=2139 -alias tmux="tmux -f ${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf" - -# fzf -if exist fzf; then - # fzf select a tmux session to connect to, with pane preview - alias tm='_fzf_tmux_attach_start_session' - alias tl=tm -else - alias tm='tmux_attach_start' - # show a list of running tmux sessions - alias tl='tmux list-sessions -F "#{session_name}" 2>/dev/null ' -fi - -_fzf_tmux_list_sessions() { - tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf \ - --layout=reverse \ - --height=50% \ - --border \ - --prompt="Session> " \ - --preview="tmux_pane_tree {}" \ - --preview-window=right:80% \ - --print-query -} - -_fzf_tmux_attach_start_session() { - if [ -z "$1" ]; then - result=$(_fzf_tmux_list_sessions) - case "$?" in - 0) - # found a session, attaching - tmux_attach_start "$(echo "$result" | tail --lines=1)" - ;; - 1) - # did not find a session, creating - result=$(echo "$result" | head --lines=1) - # if . was only thing entered, create one for current dir - if [ "$result" = "." ]; then - tmux_attach_start - # create for query name - else - tmux_attach_start "$result" - fi - ;; - esac - else - tmux_attach_start "$1" - fi -} - -unset choice -unset -f exist diff --git a/terminal/.config/tmux/sessions/dot.session b/terminal/.config/tmux/sessions/dot.session deleted file mode 100644 index abb88c6..0000000 --- a/terminal/.config/tmux/sessions/dot.session +++ /dev/null @@ -1,13 +0,0 @@ -rename-window dot-git -send-keys "cd ~/.dotfiles; while true; do [[ -z $(git status -s) ]] && { fd -t f --hidden | entr -cd tea issue ;} || { fd -t f --hidden | entr -cd git -c color.ui=always diff ;} ; done" -split-window -h "cd ~/.dotfiles; while true; do fd -t f --hidden --exclude .git/objects | entr -cd git -c color.ui=always status; done" -split-window -v -send-keys "cd ~/.dotfiles; clear" C-m L C-m -select-pane -t 1 -split-window -v "cd ~/.dotfiles; while true; do fd -t f --hidden --exclude .git/objects | entr -cd git -c color.ui=always log --graph --date=short --decorate --oneline --all --remotes; done" -select-pane -t 4 -new-window -n code -send-keys "cd ~/.dotfiles; v ." C-m zo -new-window -n test -select-window -t 1 -attach-session -t . -c ~/.dotfiles diff --git a/terminal/.config/tmux/sessions/music.session b/terminal/.config/tmux/sessions/music.session deleted file mode 100644 index 0ae173a..0000000 --- a/terminal/.config/tmux/sessions/music.session +++ /dev/null @@ -1,9 +0,0 @@ -rename-window server -send-keys "mopidy" C-m -new-window -n player -send-keys "ncmpcpp" C-m -new-window -n mixer -send-keys "pulsemixer" C-m -new-window -n bluetooth -send-keys "bluetoothctl" C-m -select-window -t 2 diff --git a/terminal/.config/tmux/sessions/notes.session b/terminal/.config/tmux/sessions/notes.session deleted file mode 100644 index 266f002..0000000 --- a/terminal/.config/tmux/sessions/notes.session +++ /dev/null @@ -1,7 +0,0 @@ -rename-window notes -send-keys vm Space $WIKIROOT Space $LIBRARY C-m -new-window -n notepad -send-keys cd Space $WIKIROOT C-m -send-keys v C-m -send-keys Space w w -attach-session -t . -c $WIKIROOT diff --git a/terminal/.config/tmux/sessions/social.session b/terminal/.config/tmux/sessions/social.session deleted file mode 100644 index c81074b..0000000 --- a/terminal/.config/tmux/sessions/social.session +++ /dev/null @@ -1,10 +0,0 @@ -rename-window mail -send-keys "neomutt" C-m -new-window -n news -send-keys "newsboat" C-m -split-window -h -send-keys "tut" C-m -new-window -n matrix -send-keys "gomuks" C-m -new-window -n signal -send-keys "siggo" C-m diff --git a/terminal/.config/tmux/sessions/sport.session b/terminal/.config/tmux/sessions/sport.session deleted file mode 100644 index 0bbca19..0000000 --- a/terminal/.config/tmux/sessions/sport.session +++ /dev/null @@ -1,4 +0,0 @@ -rename-window stats -send-keys "cd ~/documents/records; v workout.md" C-m -new-window -n routine -send-keys "cd ~/documents/records; sc-im workout.csv" C-m diff --git a/terminal/.config/tmux/sessions/todo.session b/terminal/.config/tmux/sessions/todo.session deleted file mode 100644 index 7fd71ad..0000000 --- a/terminal/.config/tmux/sessions/todo.session +++ /dev/null @@ -1,15 +0,0 @@ -rename-window focus -send-keys tasksh C-m "+TODAY" C-m -new-window -n dash -send-keys "cd ${XDG_DATA_HOME:-~/.local/share}/task/; fd . | entr -c task next" C-m -split-window -h -l 71 -send-keys "cd ${XDG_DATA_HOME:-~/.local/share}/task/; fd . | entr -c task summary" C-m -split-window -v "cd ${XDG_DATA_HOME:-~/.local/share}/task/; fd . | entr -c task status:pending or +ACTIVE burndown" -select-pane -t 1 -split-window -v -l 5 -send-keys "t" Space -new-window -n journal -send-keys "calcurse" C-m -split-window -h -l 35% "ls ~/documents/records/jrnl.md | entr -c jrnl -5" -split-window -v -l 10% -select-window -t 2 diff --git a/terminal/.config/tmux/tmux.conf b/terminal/.config/tmux/tmux.conf deleted file mode 100644 index 5e477b4..0000000 --- a/terminal/.config/tmux/tmux.conf +++ /dev/null @@ -1,183 +0,0 @@ -# Layout of this conf file: -# 1. Global Settings -# 2. Plugins -# 3. Keybinds -# 4. Theme - -# For rapid change prototyping, disabled normally: -# bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "config reloaded." - -###################### -### 1. GLOBAL SETTINGS -###################### - -# show that activity happens but don't display a huge 'activity happening' notification -setw -g monitor-activity on -set -g visual-activity off - -# Start counting windows and panes at 1 -set -g base-index 1 -setw -g pane-base-index 1 -set -g renumber-windows on - -# Terminal improvements -set-window-option -g automatic-rename on -set-option -g set-titles on -set -g mouse on -# allow truecolor support -set -g default-terminal 'xterm-256color' -set -ga terminal-overrides ',xterm-256color:Tc' -set -g status-keys vi -set-window-option -g mode-keys vi -set -g history-limit 10000 - -# Screen size is based on the smallest client looking at the current windows, not the smallest -# client connected to the overall session. If two clients are connected to the same session but not -# looking at the same window, why would they care about each others screen size? -setw -g aggressive-resize on - -# No delay for escape key press -set -sg escape-time 0 - -# to enable autoread option in neovim -set-option -g focus-events on - -#################### -## 2. PLUGINS ## -#################### - -set -g @tpm_plugins ' \ - tmux-plugins/tpm \ - tmux-plugins/tmux-sensible \ - christoomey/vim-tmux-navigator \ - Morantron/tmux-fingers \ - ' - -set -g @fingers-key F - -# make sure tpm is installed -if-shell "test ! -d $TMUX_PLUGIN_MANAGER_PATH/tpm" \ - "run 'git clone https://github.com/tmux-plugins/tpm $TMUX_PLUGIN_MANAGER_PATH/tpm && $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins'" \ - -# optinally add this to install plugins on each start -- adds small lag to startup - # "run-shell $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins" - -##################### -## 3. KEYBINDINGS ## -##################### - -# Unbind some defaults -unbind '"' -unbind % - -# Custom modifier key -set -g prefix C-a -unbind-key C-b -bind-key -r C-a send-prefix - -# Window Navigation - Prefix + Vim Keys -bind-key -r C-h select-window -t :- -bind-key -r C-l select-window -t :+ - -# Resize Panes -bind-key -r H resize-pane -L 3 -bind-key -r J resize-pane -D 1 -bind-key -r K resize-pane -U 1 -bind-key -r L resize-pane -R 3 - -bind-key -r C-H resize-pane -L 10 -bind-key -r C-J resize-pane -D 5 -bind-key -r C-K resize-pane -U 5 -bind-key -r C-L resize-pane -R 10 - -# Send Pane to a new window (but stay on current window), join it back into the current window -bind-key B break-pane -d -bind-key C-b command-prompt -p "join pane from: " "join-pane -h -s '%%'" - -# Swap panes within the current window (swaps pane # entered with currently selected pane) -bind-key b display-panes\; command-prompt -p "pane #: " "swap-pane -t '%%'" - -# Kill tabs quicker -bind-key x kill-pane -bind-key C-x kill-window - -# Split Window into panes - automatically handled by plugin -bind-key '\' split-window -h -c '#{pane_current_path}' -bind-key '-' split-window -v -c '#{pane_current_path}' - -# Open a sessions chooser -bind C-s split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" - -# Make visual selections act a little more like vim -bind-key -T copy-mode-vi v send -X begin-selection -bind-key -T copy-mode-vi V send -X select-line -bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'wl-copy' \; send -X rectangle-off -bind-key -T copy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-on - -##################### -## 4. THEME ## -##################### - -# Status update interval -set -g status-interval 1 -# Clock mode -set -g clock-mode-colour colour24 -set -g clock-mode-style 24 - -# This tmux statusbar config was created by tmuxline.vim -# on Wed, 13 Mar 2019 - -set -g message-command-style bg="#2e2e2e",fg="#c8c8c8" -set -g message-style bg="#2e2e2e",fg="#c8c8c8" -set -g pane-active-border-style fg="#2e2e2e" -set -g pane-border-style fg="#2e2e2e" -set -g status-justify "centre" -set -g status "on" -set -g status-style "none" -set -g status-style "none" -set -g status-left-length "100" -set -g status-right-length "100" -setw -g window-status-style fg="#c8c8c8",bg="#2e2e2e","none" -setw -g window-status-activity-style bg="#2e2e2e",fg="#c8c8c8","underscore" -setw -g window-status-separator "" -set -g status-left "#[fg=#c8c8c8,bg=#2e2e2e] #S #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #I:#P #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]" -set -g status-right "#[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics] #[fg=#c8c8c8,bg=#2e2e2e] #{?client_prefix,#[fg=colour232]#[bg=brightblue],} #(whoami) #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] %d-%b-%y #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #H " -setw -g window-status-format "#[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[default] #I #W #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]" -setw -g window-status-current-format "#[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #I #W #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]" - -######################## -## 5. Nested Sessions ## -######################## -# from: https://github.com/samoshkin/tmux-config/blob/master/tmux/tmux.conf -# all credit to samoshkin - -# Session is considered to be remote when we ssh into host -if-shell 'test -n "$SSH_CLIENT"' \ - 'source-file $XDG_CONFIG_HOME/tmux/tmux.remote.conf' - -# We want to have single prefix key "C-a", usable both for local and remote session -# we don't want to "C-a" + "a" approach either -# Idea is to turn off all key bindings and prefix handling on local session, -# so that all keystrokes are passed to inner/remote session - -# see: toggle on/off all keybindings · Issue #237 · tmux/tmux - https://github.com/tmux/tmux/issues/237 - -# Also, change some visual styles when window keys are off -bind -T root F12 \ - set prefix None \;\ - set key-table off \;\ - set status-style fg="colour245",bg="colour238" \;\ - set window-status-current-format "#[fg=$color_window_off_status_bg,bg=$color_window_off_status_current_bg]$separator_powerline_right#[default] #I:#W# #[fg=$color_window_off_status_current_bg,bg=$color_window_off_status_bg]$separator_powerline_right#[default]" \;\ - set window-status-current-style fg="colour232",bg="colour254","bold" \;\ - if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\ - refresh-client -S \;\ - -bind -T off F12 \ - set -u prefix \;\ - set -u key-table \;\ - set -u status-style \;\ - set -u window-status-current-style \;\ - set -u window-status-current-format \;\ - refresh-client -S - -run -b "$TMUX_PLUGIN_MANAGER_PATH/tpm/tpm" diff --git a/terminal/.config/tmux/tmux.remote.conf b/terminal/.config/tmux/tmux.remote.conf deleted file mode 100644 index defe108..0000000 --- a/terminal/.config/tmux/tmux.remote.conf +++ /dev/null @@ -1,10 +0,0 @@ -# show status bar at bottom for remote session, -set -g status-position bottom - -# Set port of SSH remote tunnel, where tmux will pipe buffers to transfer on local machine for copy -set -g @copy_backend_remote_tunnel_port 11988 - -# In remote mode we don't show "clock" and "battery status" widgets -set -g status-left "#[fg=#c8c8c8,bg=#2e2e2e][SSH]#S #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #(whoami) #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#[fg=#c8c8c8,bg=#2e2e2e] #I:#P #[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]" -set -g status-right "#{prefix_highlight} $wg_is_keys_off $wg_is_zoomed #{sysstat_cpu} | #{sysstat_mem} | #{sysstat_loadavg} | $wg_user_host | #{online_status}" -set -g status-right "#[fg=#2e2e2e,bg=#2e2e2e,nobold,nounderscore,noitalics]#{prefix_highlight} #H " diff --git a/terminal/.config/zsh/completions/_tmux_attach_start b/terminal/.config/zsh/completions/_tmux_attach_start deleted file mode 100755 index da73e36..0000000 --- a/terminal/.config/zsh/completions/_tmux_attach_start +++ /dev/null @@ -1,12 +0,0 @@ -#compdef _tmux_attach_start -# -# Requires tmux_attach_start script in path -# -# Enables completion for zsh of tmux_attach_start function -# with currently open sessions, or tmux options. - -_tmux_attach_start() { - _alternative \ - "sessions:user sessions:($(tmux list-sessions -F'#{session_name}' 2>/dev/null))" -} - diff --git a/terminal/.local/bin/test/tmux_attach_start.bats b/terminal/.local/bin/test/tmux_attach_start.bats deleted file mode 100644 index 941d8ea..0000000 --- a/terminal/.local/bin/test/tmux_attach_start.bats +++ /dev/null @@ -1,39 +0,0 @@ -setup() { - fut="$BATS_TEST_DIRNAME/../tmux_attach_start" -} - -teardown() { - rm -rf $BATS_TMPDIR/xdg/* -} - -@test "runs correctly if invoked without arguments" { - run $fut - echo "$BATS_TEST_DIRNAME/../tmux_attach_start" - [ "$status" -eq 0 ] -} - -@test "Errors out if passed a non-existent session file (and some session name)" { - run $fut IDONT_EXIST_HERE.session sessionname - echo "STATUS: $output" - [ "$status" -eq 1 ] - echo "OUTPUT: $output" - [ "$output" = "can not source session file: 'IDONT_EXIST_HERE.session' does not exist." ] -} - -@test "Runs without errors when session file exists in PWD" { - touch $PWD/exists.session - run $fut exists.session sessionname - rm $PWD/exists.session - - [ "$status" -eq 0 ] -} - -@test "Runs without errors when session file exists in XDG_CONFIG_HOME/tmux/sessions/" { - export XDG_CONFIG_HOME=$BATS_TMPDIR - mkdir -p $XDG_CONFIG_HOME/tmux/sessions - sesdir=$XDG_CONFIG_HOME/tmux/sessions - touch $sesdir/exists.session - run $fut exists.session sessionname - - [ "$status" -eq 0 ] -} diff --git a/terminal/.local/bin/tmux_attach_start b/terminal/.local/bin/tmux_attach_start deleted file mode 100755 index e6ffc26..0000000 --- a/terminal/.local/bin/tmux_attach_start +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/sh -# -# Attach to a tmux session, or create it if it doesnt exist - -if [ "$1" = '-h' ] || [ "$1" = '--help' ]; then - cat <<-EOF - Usage: $0 [FILE] [NAME] - Attach to an existing tmux session, or bootstrap a new session. - - If no session exists which fits the criteria, this will create a new one and - load it up obeying the commands contained in the FILE argument passed in. It - must contain commands which are tmux-command compatible since they will be - passed to tmux unmodified. If a session exists and a valid configuration FILE is - passed, it will attach itself to the session and execute the session setup inside. - - It will load the default tmux.conf in the following order: - - XDG_CONFIG_HOME/tmux/tmux.conf (usually ~/.config/tmux/tmux.conf) - - ~/.tmux.conf - - /etc/tmux.conf - Afterwards, it will apply the contents of the FILE argument passed into the command. - - If no FILE argument is passed it will create an empty session, or attach itself to - the session specified. - - If no NAME argument is passed it will automatically create a session name from the - FILE argument passed. - - If creating a new session without passing in a FILE argument, and the current directory - contains a .tmux.session file, it will automatically use that to set up the session. - - By default, it also looks for valid session files in XDG_CONFIG_HOME/tmux/sessions/ - This path can be changed by setting the TM_SESSION_PATH environment variable. -EOF - exit 0 -fi - -# Make tmux obey the XDG specification on startup -if [ -e "$XDG_CONFIG_HOME/tmux/tmux.conf" ]; then - start="tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf" -else - start=tmux -fi - -_file_exists() { - if [ -f "$1" ]; then - true - else - false - fi -} - -_not_in_tmux() { - [ -z "$TMUX" ] -} - -_session_exists() { - if tmux has-session -t "$session_name" >/dev/null 2>&1; then - true - else - false - fi -} - -_create_detached_session() { - ($start new-session -d -s "$session_name") -} - -_load_env_session_file() { - if [ -f ./.tmux.session ]; then - xargs -L1 tmux <./.tmux.session - fi -} - -_load_session_file() { - if [ -f "$session_file" ]; then - xargs -L1 tmux <"$session_file" - fi -} - -_set_session_file_path() { - # Prefer local dir if file exists there, fall back to root dir - if _file_exists "${1}"; then - session_file="${1}" - elif _file_exists "${session_dir}${1}"; then - session_file="${session_dir}${1}" - fi -} - -_set_session_vars() { - session_dir=${TM_SESSION_DIR:-"$XDG_CONFIG_HOME/tmux/sessions/"} - - # set up session name and config file - if passed in as arguments - if [ "$#" -eq 2 ]; then - if ! _file_exists "$1" && ! _file_exists "${session_dir}${1}"; then - echo >&2 "can not source session file: '${1}' does not exist." - exit 1 - fi - _set_session_file_path "$1" - session_name=${2} - elif [ "$#" -eq 1 ]; then - _set_session_file_path "$1" - if ! _file_exists "$session_file"; then - session_name=${1} - fi - fi - - # set default session name if none was passed - if [ -z "$session_name" ]; then - # only if we have a filename should we append it to the session name - if [ -n "$session_file" ]; then - fname=/$(basename "$session_file" .session) - fi - # default to parent directory name / config file name for the session - session_name=$(basename "$PWD" | sed 's/[^a-zA-Z0-9\-]//g' | tr . -)"$fname" - fi -} - -_attach_or_create() { - # first create a new session if one doesn't exist - if ! _session_exists; then - _create_detached_session - # look for .tmux.session file if no file has been explicitly passed in - # session files always take precedence over environment files when specifically passed in - if ! _file_exists "$session_file"; then - _load_env_session_file - fi - fi - - _load_session_file - - # then attach or switch to the session - if _not_in_tmux; then - $start attach -t "$session_name" - else - $start switch-client -t "$session_name" - fi - - _unset_functions -} - -_unset_functions() { - unset _set_session_vars - unset _set_session_file_path - unset _attach_or_create - unset _load_session_file - unset _create_detached_session - unset _session_exists - unset _not_in_tmux - unset _file_exists -} - -_set_session_vars "$@" -_attach_or_create -exit 0 diff --git a/terminal/.local/bin/tmux_pane_tree b/terminal/.local/bin/tmux_pane_tree deleted file mode 100755 index 19f38f8..0000000 --- a/terminal/.local/bin/tmux_pane_tree +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -# create a tree-style view -# of all open tmux panes -# and the command they are currently running - -tmux ls -F'#{session_id}' | while read -r s; do - S=$(tmux ls -F'#{session_id}#{session_name}: #{T:tree_mode_format}' | grep ^"$s") - session_info=${S##$s} - session_name=$(echo "$session_info" | cut -d ':' -f 1) - if [[ -n "$1" ]] && [[ "$1" == "$session_name" ]]; then - echo -e "\033[1;34m$session_info\033[0m" - tmux lsw -t"$s" -F'#{window_id}' | while read -r w; do - W=$(tmux lsw -t"$s" -F'#{window_id}#{T:tree_mode_format} - #{pane_current_command}' | grep ^"$w") - H=$(tmux lsw -t"$s" -F'#{window_id}#H' | grep ^"$w") - echo " ${W##$w}" | sed "s/\"${H##$w}\" //" - done - else - echo -e "\033[1m$session_info\033[0m" - fi -done