Compare commits
1 Commits
21a88edfaa
...
future
| Author | SHA1 | Date | |
|---|---|---|---|
| cc688392da |
@@ -1,34 +1,15 @@
|
|||||||
---
|
---
|
||||||
- location: ~/.config/tmux
|
- location: ~/.config/tmux
|
||||||
- apt:
|
- apt:
|
||||||
- tmux
|
- libevent-dev
|
||||||
- xclip
|
- ncurses-dev
|
||||||
- urlview
|
- xsel
|
||||||
- sysstat
|
- repo:
|
||||||
- jq
|
- url: 'https://github.com/tmux/tmux.git'
|
||||||
- brew:
|
location: ~/.local/src/tmux
|
||||||
- tmux
|
branch: 2.6
|
||||||
- urlview
|
actions:
|
||||||
- reattach-to-user-namespace
|
- command: ./configure --prefix=$HOME/.local
|
||||||
- pacman:
|
- command: {install: make -j8 install, remove: make uninstall}
|
||||||
- tmux
|
|
||||||
- xclip
|
|
||||||
- urlscan
|
|
||||||
- dnf:
|
|
||||||
- tmux
|
|
||||||
- xclip
|
|
||||||
- urlscan
|
|
||||||
- symlink:
|
- symlink:
|
||||||
- src: tmux.conf
|
- {src: tmux.conf, dst: ~/.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
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
# vim: ft=tmux
|
# vim: ft=tmux
|
||||||
|
select-pane -t 0
|
||||||
split-window -v -p 34
|
split-window -v -p 34
|
||||||
select-pane -t 1
|
select-pane -t 1
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
rename-session main
|
|
||||||
rename-window home
|
|
||||||
|
|
||||||
# vim: filetype=tmux
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# vim: ft=tmux
|
|
||||||
split-window -h -p 43
|
|
||||||
select-pane -t 1
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# vim: ft=tmux
|
|
||||||
split-window -h -p 57
|
|
||||||
select-pane -t 1
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
script_dir=`dirname $0`
|
|
||||||
|
|
||||||
if [ `uname` = Darwin ]; then
|
|
||||||
cp $script_dir/system-info.plist ~/Library/LaunchAgents/system-info.plist
|
|
||||||
launchctl load -w ~/Library/LaunchAgents/system-info.plist
|
|
||||||
else
|
|
||||||
cp $script_dir/system-info.service ~/.config/systemd/user/system-info.service
|
|
||||||
systemctl --user enable system-info
|
|
||||||
systemctl --user start system-info
|
|
||||||
fi
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [ `uname` = Darwin ]; then
|
|
||||||
launchctl unload ~/Library/LaunchAgents/system-info.plist
|
|
||||||
rm ~/Library/LaunchAgents/system-info.plist
|
|
||||||
else
|
|
||||||
systemctl --user stop system-info
|
|
||||||
systemctl --user disable system-info
|
|
||||||
fi
|
|
||||||
@@ -1,24 +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
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
# Parse the current CPU load on all cores/threads.
|
|
||||||
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 / 11), 1) }'`
|
|
||||||
# Parse the current CPU package temperature.
|
|
||||||
cpu_temp=`sensors coretemp-isa-0000 | awk 'NR == 3 { print substr($4, 2) }'`
|
|
||||||
# Write to the cache file.
|
|
||||||
echo "$cpu_temp $cpu_load" > $cache_file
|
|
||||||
done
|
|
||||||
@@ -1,19 +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
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
battery="`pmset -g batt | grep --color=never -Eo '\d+%'` ↯"
|
|
||||||
echo "$battery" > $cache_file
|
|
||||||
sleep 2
|
|
||||||
done
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>Label</key>
|
|
||||||
<string>system-info</string>
|
|
||||||
<key>ProgramArguments</key>
|
|
||||||
<array>
|
|
||||||
<string>/Users/benie/.config/tmux/system-info/system-info-macOS.sh</string>
|
|
||||||
</array>
|
|
||||||
<key>KeepAlive</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=System Info
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/home/benie/.config/tmux/system-info/system-info-Linux.sh
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
128
tmux.conf
128
tmux.conf
@@ -1,6 +1,3 @@
|
|||||||
# Set the tmux version to check for command support
|
|
||||||
run 'tmux setenv -g TMUX_VERSION $(tmux -V | cut -c 6-8)'
|
|
||||||
|
|
||||||
# Use vim keybindings in copy mode
|
# Use vim keybindings in copy mode
|
||||||
set -g mode-keys vi
|
set -g mode-keys vi
|
||||||
|
|
||||||
@@ -13,13 +10,13 @@ bind Space send-prefix
|
|||||||
set -s escape-time 0
|
set -s escape-time 0
|
||||||
|
|
||||||
# Increase scrollback buffer size
|
# Increase scrollback buffer size
|
||||||
set -g history-limit 1000000
|
set -g history-limit 50000
|
||||||
|
|
||||||
# Set tmux messages display time to 4 seconds
|
# Set tmux messages display time to 4 seconds
|
||||||
set -g display-time 4000
|
set -g display-time 4000
|
||||||
|
|
||||||
# Refresh 'status-left' and 'status-right' more often
|
# Refresh 'status-left' and 'status-right' more often
|
||||||
set -g status-interval 2
|
set -g status-interval 5
|
||||||
|
|
||||||
# Upgrade $TERM
|
# Upgrade $TERM
|
||||||
set -g default-terminal "tmux-256color"
|
set -g default-terminal "tmux-256color"
|
||||||
@@ -37,109 +34,78 @@ set -g pane-base-index 1
|
|||||||
# Enable mouse support
|
# Enable mouse support
|
||||||
set-option -g mouse on
|
set-option -g mouse on
|
||||||
|
|
||||||
# Enable changing cursor shape per pane, vim or zsh should emit escape
|
# Enable changing cursor shape per pane in iTerm2 or VTE compatible terminals,
|
||||||
# sequences to change cursor shape.
|
# vim or zsh should emit VTE compatible escape sequences to change cursor shape
|
||||||
# iTerm2 only requires this before tmux 2.9
|
if -b '[ -n $ITERM_PROFILE ]' \
|
||||||
if '[ -n $ITERM_PROFILE ] && [[ "$TMUX_VERSION" < "2.9" ]]' \
|
"set -ga terminal-overrides '*:Ss=\E]1337;CursorShape=%p1%d\7'" \
|
||||||
'set -ga terminal-overrides "*:Ss=\E]1337;CursorShape=%p1%d\7"'
|
"set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[2 q'"
|
||||||
# VTE compatible terminals.
|
|
||||||
if '[ ! -n $ITERM_PROFILE ]' \
|
|
||||||
'set -ga terminal-overrides "*:Ss=\E[%p1%d q:Se=\E[2 q"'
|
|
||||||
|
|
||||||
# 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'
|
||||||
|
|
||||||
# Set only on macOS where it's required
|
# Set only on OS X 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'"
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
# 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}"
|
||||||
|
|
||||||
# Change word separators to better match Vim.
|
|
||||||
set -g word-separators "<>(){}[]/'\";@*+,.-_=!£$%^&:#~?`¬|\\ "
|
|
||||||
|
|
||||||
# Integrate pane selection with vim
|
# Integrate pane selection with vim
|
||||||
in_vim='tmux show-window-options | grep -q "@vim#{pane_id}"'
|
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
|
||||||
bind -n C-h if $in_vim 'send-keys C-h' 'select-pane -L'
|
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
|
||||||
bind -n C-j if $in_vim 'send-keys C-j' 'select-pane -D'
|
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
|
||||||
bind -n C-k if $in_vim 'send-keys C-k' 'select-pane -U'
|
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
|
||||||
bind -n C-l if $in_vim 'send-keys C-l' 'select-pane -R'
|
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
|
||||||
|
bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
|
||||||
|
|
||||||
# Integrate urlscan or fallback to urlview
|
# Integrate urlview
|
||||||
if -b 'which urlscan' \
|
bind-key u capture-pane \; split-window "tmux show-buffer | urlview -"
|
||||||
'bind u capture-pane \; split-window "tmux show-buffer | urlscan"' \
|
|
||||||
'bind u capture-pane \; split-window "tmux show-buffer | urlview -"'
|
|
||||||
|
|
||||||
# Unbind copy mode defaults so pane selection works
|
|
||||||
unbind -T copy-mode-vi C-h
|
|
||||||
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-key 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-keys -X begin-selection
|
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||||
|
|
||||||
# Enable mouse scrolling up in alternate buffers.
|
|
||||||
# If #{mouse_any_flag} is 1 the pane is running with mouse support, e.g. vim.
|
|
||||||
# If #{alternate_on} is 1 the terminal is in alternate buffer mode, e.g. less.
|
|
||||||
# If #{pane_in_mode} is 1 the pane is in copy-mode.
|
|
||||||
bind -n WheelUpPane \
|
|
||||||
if -Ft= "#{mouse_any_flag}" \
|
|
||||||
"send-keys -M" \
|
|
||||||
"if -Ft= \"#{alternate_on}\" \
|
|
||||||
\"send-keys -t= Up ; \
|
|
||||||
send-keys -t= Up ; \
|
|
||||||
send-keys -t= Up ; \" \
|
|
||||||
\"select-pane -t= ; \
|
|
||||||
if -Ft= '#{pane_in_mode}' \
|
|
||||||
'send-keys -M' \
|
|
||||||
'copy-mode -e ; send-keys -M' \" "
|
|
||||||
# Emulate mouse scrolling down in alternate buffers.
|
|
||||||
bind -n WheelDownPane \
|
|
||||||
if -Ft= "#{mouse_any_flag}" \
|
|
||||||
"send-keys -M" \
|
|
||||||
"if -Ft= \"#{alternate_on}\" \
|
|
||||||
\"send-keys -t= Down ; \
|
|
||||||
send-keys -t= Down ; \
|
|
||||||
send-keys -t= Down ; \" \
|
|
||||||
\"select-pane -t= ; \
|
|
||||||
send-keys -M\" "
|
|
||||||
|
|
||||||
# Yank to the system clipboard in copy mode
|
# Yank to the system clipboard in copy mode
|
||||||
if -b '[ "`uname`" = "Darwin" ]' \
|
if -b '[ "`uname`" = "Linux" ]' \
|
||||||
'bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel \
|
"bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xsel -i -p && xsel -o -p | xsel -i -b'"
|
||||||
"reattach-to-user-namespace pbcopy"' \
|
|
||||||
'bind -T copy-mode-vi y send -X copy-pipe-and-cancel \
|
|
||||||
"xclip -i -sel p -f | xclip -i -sel c"'
|
|
||||||
|
|
||||||
# Left status style
|
# Left status style
|
||||||
setw -g status-left " #{session_name}"
|
set-window-option -g status-left " #S"
|
||||||
setw -g status-left-style fg=colour240,bg=colour233
|
set-window-option -g status-left-fg colour240
|
||||||
|
set-window-option -g status-left-bg colour233
|
||||||
|
|
||||||
# Centre status style
|
# Centre status style
|
||||||
setw -g status-style fg=colour240,bg=colour233
|
set-window-option -g status-fg colour240
|
||||||
|
set-window-option -g status-bg colour233
|
||||||
|
|
||||||
# Right status style shows system info, date, and time.
|
# Right status style
|
||||||
setw -g status-right "#(cat ~/.cache/tmux/system-info) %a %d-%m-%y %H:%M "
|
set-window-option -g status-right "%a %d-%m-%y %H:%M "
|
||||||
setw -g status-right-style fg=white,bg=colour233
|
set-window-option -g status-right-fg white
|
||||||
|
set-window-option -g status-right-bg colour233
|
||||||
|
|
||||||
# Active window status style
|
# Active window status style
|
||||||
setw -g window-status-current-format " #{window_index}: #{window_name}"
|
set-window-option -g window-status-current-format " #I: #W"
|
||||||
setw -g window-status-current-style fg=white,bg=colour233
|
set-window-option -g window-status-current-fg white
|
||||||
|
set-window-option -g window-status-current-bg colour233
|
||||||
|
|
||||||
# Inactive window status style
|
# Inactive window status style
|
||||||
setw -g window-status-format " #{window_index}: #{window_name}"
|
set-window-option -g window-status-format " #I: #W"
|
||||||
setw -g window-status-style fg=colour240,bg=colour233
|
set-window-option -g window-status-fg colour240
|
||||||
|
set-window-option -g window-status-bg colour233
|
||||||
|
|
||||||
# Pane border style
|
# Active pane border
|
||||||
set -g pane-border-style fg=colour233,bg=colour233
|
set-option -g pane-active-border-fg colour235
|
||||||
set -g pane-active-border-style fg=colour235,bg=colour235
|
set-option -g pane-active-border-bg colour235
|
||||||
|
|
||||||
|
# Inactive pane border
|
||||||
|
set-option -g pane-border-fg colour233
|
||||||
|
set-option -g pane-border-bg colour233
|
||||||
|
|
||||||
# Command line window list selection
|
# Command line window list selection
|
||||||
set-window-option -g mode-style fg=white,bg=colour237
|
set-window-option -g mode-style fg=colour233,bg=colour30
|
||||||
set-option -g message-style fg=white,bg=colour237
|
set-option -g message-style fg=colour233,bg=colour30
|
||||||
|
|||||||
Reference in New Issue
Block a user