Compare commits

..

1 Commits

Author SHA1 Message Date
e36b069ad2 Add system-info Linux systemd user unit
Update the `system-info` directory with the addition of a `systemd`
service file and an new Linux script to display current CPU temperature
and core/thread utilization. Update `.conduit.yaml` with addition
`apt` dependencies `sysstat` and `jq`. Update the install and remove
scripts to setup and tear down the `systemd` user unit. Lastly, decrease
the `tmux` status line update interval from 5 to 2 seconds.
2021-02-17 00:15:17 +00:00
23 changed files with 104 additions and 482 deletions

34
.conduit.yaml Normal file
View File

@@ -0,0 +1,34 @@
---
- location: ~/.config/tmux
- apt:
- tmux
- xclip
- urlview
- sysstat
- jq
- brew:
- tmux
- urlview
- reattach-to-user-namespace
- pacman:
- tmux
- xclip
- urlscan
- dnf:
- tmux
- xclip
- urlscan
- symlink:
- src: tmux.conf
dst: ~/.tmux.conf
- src: layouts/session-main
dst: ~/.local/share/tmux/layouts/session-main
- src: layouts/window-tall
dst: ~/.local/share/tmux/layouts/window-tall
- src: layouts/window-wide-left
dst: ~/.local/share/tmux/layouts/window-wide-left
- src: layouts/window-wide-right
dst: ~/.local/share/tmux/layouts/window-wide-right
- command:
- install: system-info/install.sh
- remove: system-info/remove.sh

View File

@@ -1,9 +0,0 @@
#!/usr/bin/env bash
session_name=$(tmux display-message -p '#S')
session_layout=~/.local/share/tmux/layouts/session-$session_name
if [ -f $session_layout ]; then
$session_layout
else
tmux rename-window home
fi

View File

@@ -1,45 +0,0 @@
#!/usr/bin/env bash
if [ ! -d $HOME/.local/share/tmux/layouts ]; then
mkdir -p $HOME/.local/share/tmux/layouts
echo changed created layouts directory
fi
symlink() {
local source=$1
local dest=$2
if [ -L $dest ]; then
local target=`readlink $dest`
if [ "$target" != "$source" ]; then
rm $dest
ln -s $source $dest
echo changed replace incorrect symlink $dest
fi
elif [ -f $dest ]; then
error symlink failed $dest exists but is a regular file
else
ln -s $source $dest
echo changed created symlink $dest
fi
}
symlink $HOME/.config/tmux/tmux.conf \
$HOME/.tmux.conf
symlink $HOME/.config/tmux/layouts/session-config \
$HOME/.local/share/tmux/layouts/session-config
symlink $HOME/.config/tmux/layouts/session-infra \
$HOME/.local/share/tmux/layouts/session-infra
symlink $HOME/.config/tmux/layouts/session-main \
$HOME/.local/share/tmux/layouts/session-main
symlink $HOME/.config/tmux/layouts/session-visor \
$HOME/.local/share/tmux/layouts/session-visor
symlink $HOME/.config/tmux/layouts/session-work \
$HOME/.local/share/tmux/layouts/session-work
symlink $HOME/.config/tmux/layouts/window-auto \
$HOME/.local/share/tmux/layouts/window-auto
symlink $HOME/.config/tmux/layouts/window-tall \
$HOME/.local/share/tmux/layouts/window-tall
symlink $HOME/.config/tmux/layouts/window-wide-left \
$HOME/.local/share/tmux/layouts/window-wide-left
symlink $HOME/.config/tmux/layouts/window-wide-right \
$HOME/.local/share/tmux/layouts/window-wide-right

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env bash
set -e
interpreters=()
add() {
local interp=$1
if command -v $interp &> /dev/null; then
interpreters+=($(which $interp))
fi
}
add ipython
add python
add cling
add lua
add luajit
add node
add bash
add zsh
add fish
interpreter=$(
echo "${interpreters[@]}" | tr ' ' '\n' |
fzf --layout=reverse --info=hidden --border=none --cycle
)
$interpreter
exit

View File

@@ -1,28 +0,0 @@
#!/usr/bin/env zsh
tmux rename-window home
tmux new-window -c ~/.config/nvim
tmux rename-window config/nvim
`dirname $0`/window-auto
tmux new-window -c ~/.config/zsh
tmux rename-window config/zsh
`dirname $0`/window-auto
tmux new-window -c ~/.config/tmux
tmux rename-window config/tmux
`dirname $0`/window-auto
if [ -d ~/.config/work ]; then
tmux new-window -c ~/.config/work
tmux rename-window config/work
`dirname $0`/window-auto
fi
tmux new-window -c ~/.config/local
tmux rename-window config/local
tmux move-window -s config:config/local -t 9
`dirname $0`/window-auto
tmux select-window -t config:home

View File

@@ -1,12 +0,0 @@
#!/usr/bin/env zsh
tmux rename-window home
for entry in ~/Projects/infra/*; do
if [ ! -d $entry ]; then
continue
fi
tmux new-window -c $entry
tmux rename-window $(basename $entry)
`dirname $0`/window-auto
done

7
layouts/session-main Executable file → Normal file
View File

@@ -1,5 +1,4 @@
#!/usr/bin/env zsh rename-session main
rename-window home
tmux rename-session main # vim: filetype=tmux
tmux rename-window home
`dirname $0`/window-auto

View File

@@ -1,9 +0,0 @@
#!/usr/bin/env -S tmux source-file
rename-window home
if 'command -v btop &> /dev/null' \
'split-window -h btop' \
'split-window -h htop'
select-pane -t visor:home.1
# vim: ft=tmux

View File

@@ -1,9 +0,0 @@
#!/usr/bin/env sh
tmux rename-window work
tmux rename-window home
$(dirname $0)/window-auto
tmux new-window -c ~/Projects/modularml/modular
tmux rename-window modularml/modular
$(dirname $0)/window-auto

View File

@@ -1,27 +0,0 @@
#!/usr/bin/env zsh
cols=`tmux display -p "#{pane_width}"`
lines=`tmux display -p "#{pane_height}"`
width=$(( $cols / 2 )).0
height=$lines.0
ratio=$(( ($width / $height) * 100 ))
if [[ $cols -lt 140 ]] && [[ $lines -lt 70 ]]; then
# terminal is too small
exit
fi
if [[ $ratio -ge 100 ]]; then
# terminal is wide or square
if [[ $cols -gt 240 ]]; then
# terminal is wide and large
`dirname $0`/window-wide-right
else
# terminal is wide and small
tmux split-window -h -c '#{pane_current_path}'
tmux select-pane -t 1
fi
else
# terminal is tall
`dirname $0`/window-tall
fi

7
layouts/window-tall Executable file → Normal file
View File

@@ -1,6 +1,3 @@
#!/usr/bin/env -S tmux source-file
split-window -v -l 34% -c '#{pane_current_path}'
select-pane -t 1
# vim: ft=tmux # vim: ft=tmux
split-window -v -p 34
select-pane -t 1

14
layouts/window-wide-left Executable file → Normal file
View File

@@ -1,11 +1,3 @@
#!/usr/bin/env bash # vim: ft=tmux
split-window -h -p 43
cols=`tmux display -p "#{pane_width}"` select-pane -t 1
if [ "$LAYOUT_FULLSCREEN" = "1" ]; then
tmux split-window -h -l 37% -c '#{pane_current_path}'
tmux select-pane -t 1
else
tmux split-window -h -l 43% -c '#{pane_current_path}'
tmux select-pane -t 1
fi

14
layouts/window-wide-right Executable file → Normal file
View File

@@ -1,11 +1,3 @@
#!/usr/bin/env bash # vim: ft=tmux
split-window -h -p 57
cols=`tmux display -p "#{pane_width}"` select-pane -t 1
if [ "$TMUX_LAYOUT_FULLSCREEN" = "1" ]; then
tmux split-window -h -l 63% -c '#{pane_current_path}'
tmux select-pane -t 1
else
tmux split-window -h -l 57% -c '#{pane_current_path}'
tmux select-pane -t 1
fi

View File

@@ -1,20 +0,0 @@
#!/usr/bin/env bash
set -e
projects=()
# Get list of projects from ~/Projects
for dir in $HOME/Projects/**/*; do
if [ -d $dir ]; then
projects+=(${dir#$HOME/Projects/})
fi
done
project=$(
echo "${projects[@]}" | tr ' ' '\n' | sort -u |
fzf --layout=reverse --info=hidden --border=rounded --cycle
)
tmux new-window -n $project -c ~/Projects/$project
~/.local/share/tmux/layouts/window-auto

View File

@@ -1,26 +0,0 @@
#!/usr/bin/env bash
set -e
sessions=()
# Get list of predefined session layouts
for item in $HOME/.local/share/tmux/layouts/session-*; do
sessions+=(${item#$HOME/.local/share/tmux/layouts/session-})
done
# Get list of existing sessions
sessions+=($(tmux list-sessions | awk -F: '{print $1}'))
# Pick the session with fzf (remove duplicates)
session=$(
echo "${sessions[@]}" | tr ' ' '\n' | sort -u |
fzf --layout=reverse --info=hidden --border=rounded --cycle
)
# Create the session if it doesn't alreayd exist
tmux list-sessions | grep "^$session:" &> /dev/null || \
tmux new-session -Ads $session -c $HOME
# Switch to the session
tmux switch-client -t $session

View File

@@ -6,11 +6,7 @@ if [ `uname` = Darwin ]; then
cp $script_dir/system-info.plist ~/Library/LaunchAgents/system-info.plist cp $script_dir/system-info.plist ~/Library/LaunchAgents/system-info.plist
launchctl load -w ~/Library/LaunchAgents/system-info.plist launchctl load -w ~/Library/LaunchAgents/system-info.plist
else else
if [ "$WSL_DISTRO_NAME" = "" ]; then
cp $script_dir/system-info.service ~/.config/systemd/user/system-info.service cp $script_dir/system-info.service ~/.config/systemd/user/system-info.service
systemctl --user enable system-info systemctl --user enable system-info
systemctl --user start system-info systemctl --user start system-info
else
echo -e "\033[0;33mwarning:\033[0m WSL detected, system-info systemd service disabled"
fi
fi fi

View File

@@ -4,10 +4,6 @@ if [ `uname` = Darwin ]; then
launchctl unload ~/Library/LaunchAgents/system-info.plist launchctl unload ~/Library/LaunchAgents/system-info.plist
rm ~/Library/LaunchAgents/system-info.plist rm ~/Library/LaunchAgents/system-info.plist
else else
if [ "$WSL_DISTRO_NAME" = "" ]; then
systemctl --user stop system-info systemctl --user stop system-info
systemctl --user disable system-info systemctl --user disable system-info
else
echo -e "\033[0;33mwarning:\033[0m WSL detected, system-info systemd service disabled"
fi
fi fi

View File

@@ -8,63 +8,17 @@ if [ ! -d $cache_dir ]; then
mkdir -p $cache_dir mkdir -p $cache_dir
fi fi
if command -v sensors &> /dev/null; then
if sensors 'coretemp-isa-0000' &> /dev/null; then
function get_cpu_temp() {
sensors 'coretemp-isa-0000' | awk 'NR == 3 { print $4 }'
}
elif sensors 'k10temp-pci-00c3' &> /dev/null; then
function get_cpu_temp {
sensors 'k10temp-pci-00c3' | grep 'Tctl:' | awk '{ print $2 }'
}
else
function get_cpu_temp {
echo ''
}
fi
else
function get_cpu_temp {
echo 'N/A°C'
}
fi
if upower -e | grep 'BAT' 2> /dev/null; then
function get_battery {
local output=$(acpi -b)
local charging=$(echo $output | awk '{ print $3 }')
local percentage=$(echo $output | awk '{ print $4 }')
if [ "$charging" = "Charging," ];then
echo $percentage | awk '$battery ~ /.*/ {
printf " %d%% %s\n", $battery, substr("󰢟󰢜󰂆󰂇󰂈󰢝󰂉󰢞󰂊󰂋󰂅", int($battery / 100 * 11), 1)
}'
else
echo $percentage | awk '$battery ~ /.*/ {
printf " %d%% %s\n", $battery, substr("󰂎󰁺󰁻󰁼󰁽󰁾󰁿󰂀󰂁󰂂󰁹", int($battery / 100 * 11), 1)
}'
fi
}
else
function get_battery {
echo ''
}
fi
# Cleanup cache file when interrupted. # Cleanup cache file when interrupted.
trap '[ -f $cache_file ] && rm $cache_file; exit' INT trap '[ -f $cache_file ] && rm $cache_file;' INT
trap '[ -f $cache_file ] && rm $cache_file; exit' TERM
while true; do while true; do
# Parse the current CPU load on all cores/threads. # Parse the current CPU load on all cores/threads.
cpu_load=" `mpstat -P ALL -n 1 -u 1 -o JSON | \ cpu_load=`mpstat -P ALL -n 1 -u 1 -o JSON | \
jq '.sysstat.hosts[0].statistics[0]["cpu-load"][1:]|.[].idle' | \ jq '.sysstat.hosts[0].statistics[0]["cpu-load"][1:]|.[].idle' | \
awk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 100 * 9), 1) }'`" awk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 11), 1) }'`
# Parse the current CPU package temperature. # Parse the current CPU package temperature.
cpu_temp=$(get_cpu_temp) cpu_temp=`sensors coretemp-isa-0000 | head -3 | tail -1 | \
awk '{ print substr($4, 2) }'`
# Get the battery status if present.
battery=$(get_battery)
# Write to the cache file. # Write to the cache file.
echo "$cpu_temp$cpu_load$battery" > $cache_file echo "$cpu_temp $cpu_load" > $cache_file
done done

View File

@@ -1,49 +0,0 @@
#!/usr/bin/env bash
cache_dir=~/.cache/tmux
cache_file=$cache_dir/system-info
# Make sure the output directory exists.
if [ ! -d $cache_dir ]; then
mkdir -p $cache_dir
fi
# Cleanup cache file when interrupted.
trap '[ -f $cache_file ] && rm $cache_file; exit' INT
trap '[ -f $cache_file ] && rm $cache_file; exit' TERM
if cat /proc/cpuinfo | grep -i intel > /dev/null; then
cpu_temp_sensor="/intelcpu/0/temperature/0"
elif cat /proc/cpuinfo | grep -i amd > /dev/null; then
cpu_temp_sensor="/amdcpu/0/temperature/0"
else
return 1
fi
powershell="/mnt/c/Windows/System32/WindowsPowerShell/v1.0//powershell.exe"
while true; do
# Assumes OpenHardwareMonitor is running and emitting data to WMI so we can
# access it via the Windows hosts powershell.exe.
raw_cpu_temp=$($powershell -NoProfile \
"(Get-WmiObject -Namespace \"root/OpenHardwareMonitor\" -Query 'select Value from Sensor WHERE Identifier LIKE \"$cpu_temp_sensor\"').Value" \
| sed 's/\r//')
cpu_temp=$(printf "%.1f°C" "$raw_cpu_temp")
cpu_load=" `mpstat -P ALL -n 1 -u 1 -o JSON | \
jq '.sysstat.hosts[0].statistics[0]["cpu-load"][1:]|.[].idle' | \
awk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 100 * 9), 1) }'`"
raw_battery=$($powershell -NoProfile \
"(Get-WmiObject win32_battery).EstimatedChargeRemaining" \
| sed 's/\r//')
if [ "" != "$raw_battery" ]; then
battery="$(echo $raw_battery | awk '$battery ~ /.*/ {
printf " %d%% %s\n", $battery, substr("", int($battery / 100 * 11), 1)
}')"
fi
echo "$cpu_temp$cpu_load$battery" > $cache_file
# echo "$(locale)" > $cache_file
sleep 2
done

View File

@@ -8,40 +8,12 @@ if [ ! -d $cache_dir ]; then
mkdir -p $cache_dir mkdir -p $cache_dir
fi fi
[ -f $cache_dir/cpu-temp ] && rm $cache_dir/cpu-temp
# Cleanup cache file when interrupted. # Cleanup cache file when interrupted.
trap '[ -f $cache_file ] && rm $cache_file; exit' INT trap '[ -f $cache_file ] && rm $cache_file; exit' INT
trap '[ -f $cache_file ] && rm $cache_file; exit' TERM trap '[ -f $cache_file ] && rm $cache_file; exit' TERM
# Check if a battery is installed.
ioreg -w0 -l | grep BatteryInstalled &> /dev/null && \
has_battery=true || has_battery=false
while true; do while true; do
# Get the current CPU temperature. battery="`pmset -g batt | grep --color=never -Eo '\d+%'` ↯"
cpu_temp=$( echo "$battery" > $cache_file
~/.local/bin/iSMC -o json temp | jq '."PMU tdie1".quantity' | xargs printf "%.1f°C " sleep 2
)
cpu_load=$(sudo powermetrics --format text \
--sample-rate 1200 --sample-count 1 --samplers cpu_power |
grep --color=never -E 'CPU \d active residency:' |
gawk '{print $5}' |
gawk '$idle ~ /[-.0-9]*/ { printf "%s", substr(" ▁▂▃▄▅▆▇█", int($idle / 100 * 9), 1) }'
)
# Parse the current battery charge percentage.
if $has_battery; then
raw_battery="$(pmset -g batt | \
grep --color=never 'InternalBattery' | \
grep --color=never -Eo '\d+%' | \
grep --color=never -Eo '\d+')"
battery="$(echo $raw_battery | gawk '$battery ~ /.*/ {
printf " %d%% %s\n", $battery, substr("󰂎󰁺󰁻󰁼󰁽󰁾󰁿󰂀󰂁󰂂󰁹", int($battery / 100 * 11), 1)
}')"
fi
# Write to the cache file.
echo "$cpu_temp$cpu_load$battery" > $cache_file
done done

View File

@@ -0,0 +1,8 @@
[Unit]
Description=System Info
[Service]
ExecStart=/home/benie/.config/tmux/system-info/system-info-Linux.sh
[Install]
WantedBy=default.target

View File

@@ -1,34 +0,0 @@
# Left status style
if -b '[ "$WSL_DISTRO_NAME" != "" ]' \
'setw -g status-left " #(hostname)|#{WSL_DISTRO_NAME}|#{session_name}"' \
'setw -g status-left " #(hostname -s)|#{session_name}"'
setw -g status-left-style fg=colour240,bg=colour233
setw -g status-left-length 32
# Centre status style
setw -g status-style fg=colour240,bg=colour233
# Right status style shows system info, date, and time.
setw -g status-right "#[fg=colour240]#(cat ~/.cache/tmux/system-info)#[fg=white] %a %d-%m-%y %H:%M "
setw -g status-right-style fg=white,bg=colour233
if -b '[ "`uname`" = "Darwin" ]' \
'run "tmux setw -g status-right-length $((`sysctl -n hw.ncpu` + 48))"' \
'run "tmux setw -g status-right-length $((`nproc --all` + 48))"'
# Active window status style
setw -g window-status-current-format " #{window_index}: #{window_name}"
setw -g window-status-current-style fg=white,bg=colour233
# Inactive window status style
setw -g window-status-format " #{window_index}: #{window_name}"
setw -g window-status-style fg=colour240,bg=colour233
# Pane border style
set -g pane-border-style fg=colour233,bg=colour233
set -g pane-active-border-style fg=colour235,bg=colour235
# Command line window list selection
set-window-option -g mode-style fg=white,bg=colour237
set-option -g message-style fg=white,bg=colour237
# vim: ft=tmux

View File

@@ -1,9 +1,3 @@
# Address vim mode switching delay & garbage text on start
set -s escape-time 1
# Set global hooks to perform actions when events occur
set-hook -g session-created 'run ~/.config/tmux/hooks/session-create.sh'
# Set the tmux version to check for command support # Set the tmux version to check for command support
run 'tmux setenv -g TMUX_VERSION $(tmux -V | cut -c 6-8)' run 'tmux setenv -g TMUX_VERSION $(tmux -V | cut -c 6-8)'
@@ -15,6 +9,9 @@ unbind C-b
set -g prefix C-Space set -g prefix C-Space
bind Space send-prefix bind Space send-prefix
# Address vim mode switching delay
set -s escape-time 0
# Increase scrollback buffer size # Increase scrollback buffer size
set -g history-limit 1000000 set -g history-limit 1000000
@@ -27,15 +24,11 @@ set -g status-interval 2
# Upgrade $TERM # Upgrade $TERM
set -g default-terminal "tmux-256color" set -g default-terminal "tmux-256color"
# Enable true-color
if '[[ "$TMUX_VERSION" < "3.2" ]]' \
'set-option -as terminal-features ",xterm*:Tc"' \
'set-option -as terminal-features ",xterm*:RGB"'
# Focus events enabled for terminals that support them # Focus events enabled for terminals that support them
set -g focus-events on set -g focus-events on
# Aggressively resize the chosen window to smallest/largest session # TODO: Change this comment to something that explains the setting
# super useful when using "grouped sessions" and multi-monitor setup
setw -g aggressive-resize on setw -g aggressive-resize on
# Start window & pane index at 1 # Start window & pane index at 1
@@ -43,8 +36,6 @@ set -g pane-base-index 1
# Enable mouse support # Enable mouse support
set-option -g mouse on set-option -g mouse on
# Prevent mouse click up events exiting copy mode
unbind -T copy-mode-vi MouseDragEnd1Pane
# Enable changing cursor shape per pane, vim or zsh should emit escape # Enable changing cursor shape per pane, vim or zsh should emit escape
# sequences to change cursor shape. # sequences to change cursor shape.
@@ -58,32 +49,14 @@ if '[ ! -n $ITERM_PROFILE ]' \
# Enable strikethrough on VTE compatible terminals. # Enable strikethrough on VTE compatible terminals.
set -ga terminal-overrides 'xterm*:smxx=\E[9m' set -ga terminal-overrides 'xterm*:smxx=\E[9m'
# Binding to create window-auto layout
bind a run-shell ~/.local/share/tmux/layouts/window-auto
# TODO: bind A run-shell ~/.local/share/tmux/layouts/window-auto --refresh
# Set only on macOS where it's required # Set only on macOS where it's required
if -b '[ "`uname`" = "Darwin" ]' \ if -b '[ "`uname`" = "Darwin" ]' \
'set -g default-command "reattach-to-user-namespace -l $SHELL"' 'set -g default-command "reattach-to-user-namespace -l $SHELL"'
if -b '[[ "$TMUX_VERSION" > "3.2" ]]' {
# Open a popup with running the default shell
bind T display-popup -S fg=#54546D -b rounded -d '#{pane_current_path}' -E $SHELL
# Open a popup with session creator/switcher
bind S display-popup -B -w 60 -h 10 -E '~/.config/tmux/session.sh'
# Open a popup with project selector
bind P display-popup -B -w 60 -h 10 -E '~/.config/tmux/project.sh'
# Open a popup to pick an interpreter then launch it
bind I display-popup -S fg=#54546D -b rounded -d '#{pane_current_path}' -E '$SHELL -i ~/.config/tmux/interpreter.sh'
}
# Restore old next/previous window bindings # Restore old next/previous window bindings
bind C-n next-window bind C-n next-window
bind C-p previous-window bind C-p previous-window
# Kill current window
bind W kill-window
# Make new splits open in current directory # Make new splits open in current directory
bind '"' split-window -c '#{pane_current_path}' bind '"' split-window -c '#{pane_current_path}'
bind '%' split-window -h -c '#{pane_current_path}' bind '%' split-window -h -c '#{pane_current_path}'
@@ -109,17 +82,7 @@ unbind -T copy-mode-vi C-j
# Enter copy mode with C-U # Enter copy mode with C-U
bind C-u copy-mode -u bind C-u copy-mode -u
# Begin selection in copy mode with v not Space # Begin selection in copy mode with v not Space
bind -T copy-mode-vi v send -X begin-selection bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi V send -X select-line
bind -n C-v if-shell -F '#{pane_in_mode}' \
'send -X rectangle-toggle' \
'send-keys C-v'
# Exit copy mode with i/a
bind -T copy-mode-vi 'i' send -X cancel
bind -T copy-mode-vi 'a' send -X cancel
# Search without entering copy-mode first
bind '/' 'copy-mode;send-keys /'
bind '?' 'copy-mode;send-keys ?'
# Enable mouse scrolling up in alternate buffers. # Enable mouse scrolling up in alternate buffers.
# If #{mouse_any_flag} is 1 the pane is running with mouse support, e.g. vim. # If #{mouse_any_flag} is 1 the pane is running with mouse support, e.g. vim.
@@ -147,17 +110,36 @@ bind -n WheelDownPane \
\"select-pane -t= ; \ \"select-pane -t= ; \
send-keys -M\" " send-keys -M\" "
# Enable setting clipboard with OSC-52 when in an SSH session # Yank to the system clipboard in copy mode
if -b '[ "$SSH_TTY" != "" ]' \
'set-option -g set-clipboard on'
# Yank to the system clipboard in copy mode.
# TODO: reattach-to-user-namespace not necessary with tmux > 2.6
if -b '[ "`uname`" = "Darwin" ]' \ if -b '[ "`uname`" = "Darwin" ]' \
'bind -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy"' 'bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel \
# When not in WSL2 use xsel, when in WSL use win32yank.exe to avoid UI lockups. "reattach-to-user-namespace pbcopy"' \
if -b '[ "$WSLENV" = "" ]' \ 'bind -T copy-mode-vi y send -X copy-pipe-and-cancel \
'bind -T copy-mode-vi y send-keys -X copy-pipe "xsel -i --clipboard"' \ "xclip -i -sel p -f | xclip -i -sel c"'
'bind -T copy-mode-vi y send-keys -X copy-pipe "win32yank.exe -i -crlf"'
source-file ~/.config/tmux/theme.tmux # Left status style
setw -g status-left " #{session_name}"
setw -g status-left-style fg=colour240,bg=colour233
# Centre status style
setw -g status-style fg=colour240,bg=colour233
# Right status style shows system info, date, and time.
setw -g status-right "#(cat ~/.cache/tmux/system-info) %a %d-%m-%y %H:%M "
setw -g status-right-style fg=white,bg=colour233
# Active window status style
setw -g window-status-current-format " #{window_index}: #{window_name}"
setw -g window-status-current-style fg=white,bg=colour233
# Inactive window status style
setw -g window-status-format " #{window_index}: #{window_name}"
setw -g window-status-style fg=colour240,bg=colour233
# Pane border style
set -g pane-border-style fg=colour233,bg=colour233
set -g pane-active-border-style fg=colour235,bg=colour235
# Command line window list selection
set-window-option -g mode-style fg=white,bg=colour237
set-option -g message-style fg=white,bg=colour237