all repos

tmux-stare @ b9948f1539909a7b2a4d411a03b6322b8116225b

session manager, but my session manager
4 files changed, 44 insertions(+), 0 deletions(-)
add rename hook for native tmux session renames
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-06-07 19:02:49 +0300
Authored at: 2026-06-07 19:00:55 +0300
Change ID: sokkmkutxtplqrwyormvqrlyrklklpmv
Parent: 8d8ca95
A scripts/_rename_hook.sh
···
        
        1
        +#!/usr/bin/env bash

      
        
        2
        +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

      
        
        3
        +source "$CURRENT_DIR/helpers.sh"

      
        
        4
        +

      
        
        5
        +main() {

      
        
        6
        +  local session_id="$1"

      
        
        7
        +  local new_name="$2"

      
        
        8
        +  local dir="$(get_opt_dir)"

      
        
        9
        +  local map_file="${dir}/.session_map"

      
        
        10
        +

      
        
        11
        +  [[ -z "$session_id" || -z "$new_name" ]] && exit 0

      
        
        12
        +

      
        
        13
        +  local old_name=""

      
        
        14
        +  if [[ -f "$map_file" ]]; then

      
        
        15
        +    old_name=$(awk -F'\t' -v id="$session_id" '$1 == id {print $2; exit}' "$map_file")

      
        
        16
        +  fi

      
        
        17
        +

      
        
        18
        +  [[ -z "$old_name" || "$old_name" == "$new_name" ]] && exit 0

      
        
        19
        +  [[ -e "${dir}/${new_name}_last" ]] && exit 0

      
        
        20
        +

      
        
        21
        +  local old_last="${dir}/${old_name}_last"

      
        
        22
        +  if [[ -L "$old_last" ]]; then

      
        
        23
        +    local actual="$(readlink "$old_last")"

      
        
        24
        +    local actual_basename="$(basename "$actual")"

      
        
        25
        +    local timestamp="${actual_basename: -15}"

      
        
        26
        +    local new_actual="${dir}/${new_name}_${timestamp}"

      
        
        27
        +    mv "$actual" "$new_actual"

      
        
        28
        +    ln -sf "$new_actual" "${dir}/${new_name}_last"

      
        
        29
        +    rm "$old_last"

      
        
        30
        +  fi

      
        
        31
        +

      
        
        32
        +  update_session_map

      
        
        33
        +}

      
        
        34
        +main "$@"

      
M scripts/helpers.sh
···
        39
        39
           echo "$dir"

      
        40
        40
         }

      
        41
        41
         

      
        
        42
        +update_session_map() {

      
        
        43
        +  local map_file="$(get_opt_dir)/.session_map"

      
        
        44
        +  tmux list-sessions -F "#{session_id}\t#{session_name}" 2>/dev/null >"$map_file"

      
        
        45
        +}

      
        
        46
        +

      
        42
        47
         # === spinner

      
        43
        48
         new_spinner() {

      
        44
        49
           local current=0

      
M scripts/sessions.sh
···
        251
        251
         if [[ -n "$current_session" ]]; then

      
        252
        252
           link_last "$(get_opt_dir)/${current_session}_last" "$(get_opt_dir)"

      
        253
        253
         fi

      
        
        254
        +

      
        
        255
        +update_session_map

      
        254
        256
         }

      
        255
        257
         

      
        256
        258
         unload_session() {

      
M stare.tmux
···
        27
        27
           fi

      
        28
        28
         

      
        29
        29
           add_save_interpolation

      
        
        30
        +

      
        
        31
        +  update_session_map

      
        
        32
        +  tmux set-hook -g session-renamed "run-shell '$CURRENT_DIR/scripts/_rename_hook.sh #{session_id} #{session_name}'"

      
        30
        33
         }

      
        31
        34
         main