diff options
Diffstat (limited to 'tmux/.local')
-rwxr-xr-x | tmux/.local/bin/timestamp.sh | 167 | ||||
-rwxr-xr-x | tmux/.local/bin/tmux-sshr | 62 | ||||
-rwxr-xr-x | tmux/.local/bin/tmux-windowizer | 14 |
3 files changed, 0 insertions, 243 deletions
diff --git a/tmux/.local/bin/timestamp.sh b/tmux/.local/bin/timestamp.sh deleted file mode 100755 index 5c60d02..0000000 --- a/tmux/.local/bin/timestamp.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/bin/sh -# shellcheck disable=2046 - -SCRIPT="$(basename "$0")" - -long='type:,git,sessions::,format:,verbose,help' -short='t:gs::f:vh' - -if ! opts="$(getopt -o $short -l $long -n "$SCRIPT" -- "$@")"; then - exit 1 -fi - -eval set -- "$opts" - -help() { - cat <<-EOF - $SCRIPT - Toby Vincent <tobyv@tobyvin.dev> - - $SCRIPT - Get a timestamp for a given directory using multiple activity sources. By default, uses stat. - - USAGE: - $SCRIPT [OPTION ...] <PATH> [PATH ...] - - OPTIONS: - -t, --type=<file|ssh> Specify type of input - -g, --git Check last git commit for timestamp - -s, --sessions=[PATH] Check nvim sessions directory for existing session files. - (DEFAULT="$XDG_DATA_HOME/nvim/sessions") - - -f, --format=<FORMAT> Format string for output. '{}' will be replaced directory - timestamp and '{1}' will be replaced directory path - - -v, --verbose Increase verbosity - -h, --help Show this help - EOF -} - -say() { - printf "%s: %s\n" "$SCRIPT" "$@" -} - -say_verbose() { - if [ "$verbose" -gt "0" ]; then - say "$@" - fi -} - -say_err() { - say "$@" >&2 -} - -err() { - err_dir="$1" - shift - say_err "cannot timestamp '$err_dir': $*" - exit 1 -} -err_help() { - help - err "$*" -} - -verbose=0 -type='' -git=false -sessions=false -sessions_dir="$XDG_DATA_HOME/nvim/sessions" -histfile="${HISTFILE:-$XDG_STATE_HOME/zsh/history}" -format="{}" -while true; do - case "$1" in - -h | --help) - help - exit 0 - ;; - -v | --verbose) - verbose=$((verbose + 1)) - shift - ;; - -t | --type) - case "$2" in - s*) type="ssh" ;; - f*) type="file" ;; - d*) type="directory" ;; - *) type="$2" ;; - esac - shift 2 - ;; - -e | --git) - git=true - shift - ;; - -s | --sessions) - sessions=true - if [ -n "$2" ]; then - sessions_dir="$2" - fi - shift 2 - ;; - -f | --format) - format="$2" - shift 2 - ;; - --) - shift - break - ;; - *) - err_help "Invalid argument: $1" - ;; - esac -done - -if [ "$#" -eq 0 ]; then - IFS=' -' - set -o noglob - set -- $(cat) -fi - -while [ $# -gt 0 ]; do - ts_max="0" - case "$type" in - ssh) - if ts=$(grep -P "^: \d+:\d;ssh.* $1" "$histfile" | tail -1 | cut -d: -f2 | sed 's/^\s*//'); then - say_verbose "ssh '$1': $ts" - if [ -n "$ts" ] && [ "$ts" -gt "$ts_max" ]; then - ts_max=$ts - fi - fi - ;; - file | directory) - if [ ! -d "$1" ]; then - say_err "$1" "No such file or directory" - shift - continue - fi - - if ts=$(stat -c "%Y" "$1"); then - say_verbose "stat '$1': $ts" - if [ "$ts" -gt "$ts_max" ]; then - ts_max=$ts - fi - fi - - if $git && ts=$(git -C "$1" --no-pager log -1 --all --format="%at" 2>/dev/null); then - say_verbose "git '$1': $ts" - if [ "$ts" -gt "$ts_max" ]; then - ts_max=$ts - fi - fi - - pattern=$(printf %s\\n "$1" | sed 's|/|.{1,2}|g') - if $sessions && ts=$(fd "$pattern" "$sessions_dir" -1 --type=f --max-depth=1 -x stat -c "%Y" {} 2>/dev/null); then - say_verbose "session '$1': $ts" - if [ "$ts" -gt "$ts_max" ]; then - ts_max=$ts - fi - fi - ;; - esac - - printf %s\\n "$format" | sed "s|{}|$ts_max|g" | sed "s|{1}|$1|g" - shift -done diff --git a/tmux/.local/bin/tmux-sshr b/tmux/.local/bin/tmux-sshr deleted file mode 100755 index b206906..0000000 --- a/tmux/.local/bin/tmux-sshr +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh - -if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then - tmux_sock=$(tmux display -p "#{socket_path}") - tmux -S "${tmux_sock}.control" run-shell "$(basename "$0") $*" - exit 0 -fi - -HOST=$(tmux display -p '#h' 2>/dev/null) -ATTACHED=$(tmux display -p "#{?#{m:*ssh,#{socket_path}},#{s/_/./:session_name},#{host}}") - -sessions() { - { - tmux -L ssh ls -F '#{?session_last_attached,#{session_last_attached},#{session_created}}:#{s/_/./:session_name}' - tmux ls -F '#{?session_last_attached,#{session_last_attached},#{session_created}}:#{host}' - } 2>/dev/null | sort -u | cut -d':' -f2 -} - -if [ "$#" -eq 0 ]; then - set -- "$( - sessions | sshr --resolve --port 22 --scan 0.0.0.0/24 --exclude "$ATTACHED" --include - | - fzf-tmux -p20%,20% -- --print-query | - tail -1 - )" -elif [ "$1" = "-1" ] 2>/dev/null; then - set -- "$(sessions | sed "/$ATTACHED/d" | head -n1)" -fi - -if [ -z "$1" ]; then - exit 0 -fi - -while read -r k v; do - case "$k" in - "hostname") - hostname=$v - session=$(printf '%s' "$v" | tr '.' '_') - break - ;; - esac -done <<-EOF - $(ssh -G "$@") -EOF - -if [ "${hostname##"$HOST"}" != "$hostname" ]; then - tmux detach -E 'tmux new -A' -else - if ! tmux -L ssh has-session -t "$session" 2>/dev/null; then - tmux -L ssh new-session -ds "$session" -- \ - ssh -t "$@" \ - -R "/tmp/tmux-${HOST}.control:/tmp/tmux-%i/ssh" \ - -- "zsh -l -c 'tmux -S /tmp/tmux-${HOST} new -A'" - fi - - if [ -z "$TMUX" ]; then - tmux -L ssh attach -t "$session" - else - tmux detach -E "tmux -L ssh attach -t $session" - fi - - exit 0 -fi diff --git a/tmux/.local/bin/tmux-windowizer b/tmux/.local/bin/tmux-windowizer deleted file mode 100755 index 81509ae..0000000 --- a/tmux/.local/bin/tmux-windowizer +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -branch_name=$(basename "$1") -session_name=$(tmux display-message -p "#S") -clean_name=$(echo "$branch_name" | tr "./" "__") -target="$session_name:$clean_name" - -if ! tmux has-session -t "$target" 2>/dev/null; then - tmux neww -dn "$clean_name" -fi - -shift -tmux send-keys -t "$target" "$* -" |