transition from HOSTCONFIG to MYSHELLCONFIG
and use the same pathes for vim plugin repos on git.schuerz.at as on github.com
This commit is contained in:
commit
d2f0657629
147 changed files with 13640 additions and 0 deletions
33
.gitconfig
Executable file
33
.gitconfig
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
[credential]
|
||||||
|
helper = cache --timeout=1200
|
||||||
|
[user]
|
||||||
|
name = Jakobus Schürz
|
||||||
|
email = jakobus.schuerz@schuerz.at
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
[core]
|
||||||
|
editor = vim
|
||||||
|
[diff]
|
||||||
|
submodule = log
|
||||||
|
[alias]
|
||||||
|
last = log -1 HEAD
|
||||||
|
unstage = reset HEAD --
|
||||||
|
visual = !gitk
|
||||||
|
tree = log --oneline --decorate --graph --all
|
||||||
|
treefull = log --graph --all
|
||||||
|
hist = log --pretty=format:'%h %ad | %s%d [%an : %cn]' --graph --date=short
|
||||||
|
fixcached = rm -r --cached .
|
||||||
|
delete-last-commit = reset --soft HEAD~1
|
||||||
|
purge-last-commit = reset --hard HEAD~1
|
||||||
|
pushdetachedhead = push origin HEAD:master
|
||||||
|
[merge]
|
||||||
|
conflictstyle = diff3
|
||||||
|
tool = vimdiff
|
||||||
|
[mergetool]
|
||||||
|
prompt = false
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
pushup = "!gitbranchname() { git symbolic-ref --short HEAD; }; gitpushupstream() { git push --set-upstream origin `gitbranchname`; }; gitpushupstream"
|
||||||
|
|
||||||
|
[include]
|
||||||
|
path = ~/.gitconfig_local
|
24
.githooks/post-merge
Executable file
24
.githooks/post-merge
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
printf '\npost-checkout hook\n\n'
|
||||||
|
|
||||||
|
prevHEAD=$1
|
||||||
|
newHEAD=$2
|
||||||
|
checkoutType=$3
|
||||||
|
|
||||||
|
[[ $checkoutType == 1 ]] && checkoutType='branch' ||
|
||||||
|
checkoutType='file' ;
|
||||||
|
|
||||||
|
echo 'Checkout type: '$checkoutType
|
||||||
|
echo ' prev HEAD: '`git name-rev --name-only $prevHEAD`
|
||||||
|
echo ' new HEAD: '`git name-rev --name-only $newHEAD`
|
||||||
|
|
||||||
|
pwd
|
||||||
|
REPODIR=$(git rev-parse --show-toplevel)
|
||||||
|
. ./functions.sh
|
||||||
|
create_symlinks ${REPODIR}
|
||||||
|
|
||||||
|
# Check if local scripts exists and source it
|
||||||
|
[ -e .local_scripts/post-merge ] && . .local_scripts/post-merge
|
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
vim/.netrwhist
|
||||||
|
vim/.VimballRecord
|
||||||
|
vim/bundle/*
|
||||||
|
!vim/bundle/Vundle.vim
|
||||||
|
*.log
|
||||||
|
*.swp
|
||||||
|
*.orig
|
||||||
|
serverconfig.local.conf
|
||||||
|
bashrc_local
|
||||||
|
.local_scripts
|
||||||
|
.git-token
|
15
.gitmodules
vendored
Normal file
15
.gitmodules
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[submodule "vim/bundle/Vundle.vim"]
|
||||||
|
path = vim/bundle/Vundle.vim
|
||||||
|
url = http://git.schuerz.at/public/Vim/Vundle.vim.git
|
||||||
|
[submodule "tmux/plugins/tpm"]
|
||||||
|
path = tmux/plugins/tpm
|
||||||
|
url = http://git.schuerz.at/public/tmux-plugins/tpm.git
|
||||||
|
[submodule "tmux/plugins/tmux-themepack"]
|
||||||
|
path = tmux/plugins/tmux-themepack
|
||||||
|
url = http://git.schuerz.at/public/tmux-plugins/tmux-themepack.git
|
||||||
|
[submodule "tmux/plugins/tmux-sensible"]
|
||||||
|
path = tmux/plugins/tmux-sensible
|
||||||
|
url = http://git.schuerz.at/public/tmux-plugins/tmux-sensible.git
|
||||||
|
[submodule "git-credential-pass"]
|
||||||
|
path = git-credential-pass
|
||||||
|
url = http://git.schuerz.at/public/git-credential-pass.git
|
147
PS1
Normal file
147
PS1
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
# /etc/profile.d/PS1.sh: executed by Bourne-compatible login shells.
|
||||||
|
|
||||||
|
parse_git_branch() {
|
||||||
|
|
||||||
|
git branch 2>/dev/null | sed -ne 's/* \(.*\)/ (\1)/p'
|
||||||
|
#git symbolic-ref --short HEAD 2> /dev/null | sed -ne 's/\(.*\)/ (\1)/p'
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -x "/usr/bin/getsyssubvol" ]; then
|
||||||
|
if [ "$(/usr/bin/getsyssubvol /)" = "/" ] ; then
|
||||||
|
SYSSUBVOL=""
|
||||||
|
else
|
||||||
|
SYSSUBVOL="[$(/usr/bin/getsyssubvol /)]"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
SYSSUBVOL=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Reset
|
||||||
|
Color_Off='\e[0m' # Text Reset
|
||||||
|
|
||||||
|
# Regular Colors
|
||||||
|
Black='\e[0;30m' # Black
|
||||||
|
Red='\e[0;31m' # Red
|
||||||
|
Green='\e[0;32m' # Green
|
||||||
|
Yellow='\e[0;33m' # Yellow
|
||||||
|
Blue='\e[0;34m' # Blue
|
||||||
|
Purple='\e[0;35m' # Purple
|
||||||
|
Cyan='\e[0;36m' # Cyan
|
||||||
|
White='\e[0;37m' # White
|
||||||
|
|
||||||
|
# Bold
|
||||||
|
BBlack='\e[1;30m' # Black
|
||||||
|
BRed='\e[1;31m' # Red
|
||||||
|
BGreen='\e[1;32m' # Green
|
||||||
|
BYellow='\e[1;33m' # Yellow
|
||||||
|
BBlue='\e[1;34m' # Blue
|
||||||
|
BPurple='\e[1;35m' # Purple
|
||||||
|
BCyan='\e[1;36m' # Cyan
|
||||||
|
BWhite='\e[1;37m' # White
|
||||||
|
|
||||||
|
# Underline
|
||||||
|
UBlack='\e[4;30m' # Black
|
||||||
|
URed='\e[4;31m' # Red
|
||||||
|
UGreen='\e[4;32m' # Green
|
||||||
|
UYellow='\e[4;33m' # Yellow
|
||||||
|
UBlue='\e[4;34m' # Blue
|
||||||
|
UPurple='\e[4;35m' # Purple
|
||||||
|
UCyan='\e[4;36m' # Cyan
|
||||||
|
UWhite='\e[4;37m' # White
|
||||||
|
|
||||||
|
# Blinking
|
||||||
|
BLBlack='\e[5;30m' # Black
|
||||||
|
BLRed='\e[5;31m' # Red
|
||||||
|
BLGreen='\e[5;32m' # Green
|
||||||
|
BLYellow='\e[5;33m' # Yellow
|
||||||
|
BLBlue='\e[5;34m' # Blue
|
||||||
|
BLPurple='\e[5;35m' # Purple
|
||||||
|
BLCyan='\e[5;36m' # Cyan
|
||||||
|
BLWhite='\e[5;37m' # White
|
||||||
|
|
||||||
|
# Background
|
||||||
|
On_Black='\e[40m' # Black
|
||||||
|
On_Red='\e[41m' # Red
|
||||||
|
On_Green='\e[42m' # Green
|
||||||
|
On_Yellow='\e[43m' # Yellow
|
||||||
|
On_Blue='\e[44m' # Blue
|
||||||
|
On_Purple='\e[45m' # Purple
|
||||||
|
On_Cyan='\e[46m' # Cyan
|
||||||
|
On_White='\e[47m' # White
|
||||||
|
|
||||||
|
# High Intensity
|
||||||
|
IBlack='\e[0;90m' # Black
|
||||||
|
IRed='\e[0;91m' # Red
|
||||||
|
IGreen='\e[0;92m' # Green
|
||||||
|
IYellow='\e[0;93m' # Yellow
|
||||||
|
IBlue='\e[0;94m' # Blue
|
||||||
|
IPurple='\e[0;95m' # Purple
|
||||||
|
ICyan='\e[0;96m' # Cyan
|
||||||
|
IWhite='\e[0;97m' # White
|
||||||
|
|
||||||
|
# Bold High Intensity
|
||||||
|
BIBlack='\e[1;90m' # Black
|
||||||
|
BIRed='\e[1;91m' # Red
|
||||||
|
BIGreen='\e[1;92m' # Green
|
||||||
|
BIYellow='\e[1;93m' # Yellow
|
||||||
|
BIBlue='\e[1;94m' # Blue
|
||||||
|
BIPurple='\e[1;95m' # Purple
|
||||||
|
BICyan='\e[1;96m' # Cyan
|
||||||
|
BIWhite='\e[1;97m' # White
|
||||||
|
|
||||||
|
# High Intensity backgrounds
|
||||||
|
On_IBlack='\e[0;100m' # Black
|
||||||
|
On_IRed='\e[0;101m' # Red
|
||||||
|
On_IGreen='\e[0;102m' # Green
|
||||||
|
On_IYellow='\e[0;103m' # Yellow
|
||||||
|
On_IBlue='\e[0;104m' # Blue
|
||||||
|
On_IPurple='\e[0;105m' # Purple
|
||||||
|
On_ICyan='\e[0;106m' # Cyan
|
||||||
|
On_IWhite='\e[0;107m' # White
|
||||||
|
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*|screen*)
|
||||||
|
case "$TERM" in
|
||||||
|
screen*) SCREEN="(SCREEN) ";;
|
||||||
|
*) SCREEN="";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Labels: remote, tmpconfig, screen...
|
||||||
|
if [ ! -z ${SSH_TTY+x} ]; then
|
||||||
|
LABEL="${LABEL} \[$On_IRed\]\[$BBlack\]remote\[$Color_Off\]"
|
||||||
|
fi
|
||||||
|
if $SSHS ; then
|
||||||
|
LABEL="${LABEL} \[$On_IWhite\]\[$BBlack\]tmpconfig\[$Color_Off\]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Base prompt
|
||||||
|
if [ "`id -u`" -eq 0 ]; then
|
||||||
|
PS1="\[$BRed\]$SCREEN\u@\h \[$BRed\]\[\e[m\]\[$IPurple\](\A)\[\e[m\]$LABEL\n\[$BRed\]${SYSSUBVOL}\w:\$(parse_git_branch) \[\e[m\]\[$BRed\]# "
|
||||||
|
else
|
||||||
|
PS1="\[$BIBlue\]$SCREEN\u@\h \[$BIBlue\]\[\e[m\]\[$IPurple\](\A)\[\e[m\]$LABEL\n\[$BIBlue\]${SYSSUBVOL}\w:\$(parse_git_branch) \[\e[m\]\[$BIBlue\]\$ "
|
||||||
|
fi
|
||||||
|
RETVAL0="\342\234\223"
|
||||||
|
RETVALN0="\342\234\227 "
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Labels: remote, tmpconfig, screen...
|
||||||
|
if [ ! -z ${SSH_TTY+x} ]; then
|
||||||
|
LABEL="${LABEL} \[$On_Red\]\[$BWhite\]remote\[$Color_Off\]"
|
||||||
|
fi
|
||||||
|
if $SSHS ; then
|
||||||
|
LABEL="${LABEL} \[$On_White\]\[$BBlack\]tmpconfig\[$Color_Off\]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Base prompt
|
||||||
|
if [ "`id -u`" -eq 0 ]; then
|
||||||
|
PS1="\[$BRed\][$SYSSUBVOL]\u@\h \[$BIBlue\]\[\e[m\]\[$BIPurple\](\A)\[\e[m\]\[$BBlue\]$LABEL\n\[$BRed\]${SYSSUBVOL}\w:\$(parse_git_branch) \$ \[\e[m\]\[$Blue\]"
|
||||||
|
else
|
||||||
|
PS1="\[$BBlue\][$SYSSUBVOL]\u@\h \[$BIBlue\]\[\e[m\]\[$BIPurple\](\A)\[\e[m\]\[$BBlue\]$LABEL\n\[$BIBlue\]${SYSSUBVOL}\w:\$(parse_git_branch) \$ \[\e[m\]\[$Blue\]"
|
||||||
|
fi
|
||||||
|
RETVAL0=":)"
|
||||||
|
RETVALN0=":("
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
PS1="( \$? \$(if [[ \$? == 0 ]]; then echo \"\[$Green\]${RETVAL0}\"; else echo \"\[$Red\]${RETVALN0}\"; fi )\[\e[m\]) ${PS1}\[\e[m\]"
|
||||||
|
|
||||||
|
#trap 'echo -ne "\e[0m"' DEBUG
|
85
README.md
Normal file
85
README.md
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
# server-config
|
||||||
|
|
||||||
|
Am Einfachsten ist es, das github-Repo zu forken und in .gitconfig den Namen und die Emailadresse an die eigenen Werte anzupassen. Das Repo ist öffentlich, also keine Passwörter speicher!!!
|
||||||
|
|
||||||
|
.gitconfig wird von diesem Repo beim Einrichten nach ~/.gitconfig gelinkt. Bitte beachten, dass damit eine schon vorhandene eigene Datei überschrieben wird!
|
||||||
|
|
||||||
|
Soll ein Proxy zum Einsatz kommen, so ist dieser mittels
|
||||||
|
```
|
||||||
|
git config http.proxy "http://proxy.to.use:prot/"
|
||||||
|
```
|
||||||
|
local für jedes Repo zu konfigurieren. Die globale gitconfig für den User wird auf allen eingesetzten Instanzen verteilt und versioniert!
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
Damit auf einem neuen Server meine persönlichen Alias und Bash-Promt, wie auch verschiedene andere Befehle (vim in sudo mit der vimrc des Benutzers) zur Verfügung stehen, muss als erstes nach dem ersten Login folgendes ausgeführt werden:
|
||||||
|
|
||||||
|
Download von github
|
||||||
|
```
|
||||||
|
curl -o bashrc\_add "https://raw.githubusercontent.com/xundeenergie/server-config/master/bashrc\_add"
|
||||||
|
```
|
||||||
|
oder Download von git.schuerz.at
|
||||||
|
```
|
||||||
|
curl -o bashrc\_add "https://git.schuerz.at/?p=server-config.git;a=blob\_plain;f=bashrc\_add;hb=HEAD"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lokale Configuration
|
||||||
|
in ~/.bashrc werden vor der Zeile zum Einbinden der Serverconfig die Variablen eingefügt um damit ein hostspezifisches Verhalten zu steuern
|
||||||
|
MYSHELLCONFIG\_GIT\_CHECKOUTSCRIPT\_OPTIONS=
|
||||||
|
Mögliche Optionen:
|
||||||
|
* -h
|
||||||
|
Verwendung: Damit kann man angeben, ob ein headless Repo erzeugt wird. Ohne -h folgt das Repo origin/master
|
||||||
|
MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL=git # git ist default
|
||||||
|
MYSHELLCONFIG\_GIT\_REMOTE\_PUSH\_PROTOCOL=$MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL # MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL ist default
|
||||||
|
Mögliche Optionen:
|
||||||
|
* git - (default) Gitprotokoll ist git (Auf manchen Umgebungen kann der dazu notwenidge Port gesperrt sein)
|
||||||
|
* http - wenn git nicht möglich ist, kann das http/https Protokoll verwendet werden. (ist langsamer als git, jedoch ist fast überall Port 80 oder 440 freigeschaltet)
|
||||||
|
* ssh - Wenn auch schreibend auf das Repo zugegriffen werden soll, so muss Privatekey, Pubkey (und wenn konfiguriert Certifikate mit den notwendigen Principals) vorhanden sein, dann kann das ssh-Prodokoll verwendet werden.
|
||||||
|
|
||||||
|
|
||||||
|
## Einbinden von bashrc\_add in die bash
|
||||||
|
|
||||||
|
Die Default .bashrc muss am Ende um folgende Zeilen ergänzt werden:
|
||||||
|
```
|
||||||
|
vi .bashrc
|
||||||
|
|
||||||
|
# User specific aliases and function
|
||||||
|
[ -f bashrc\_add ] && . bashrc\_add
|
||||||
|
```
|
||||||
|
damit diese heruntergeladene Datei beim nächsten Login oder aufruf von bash gesourced wird.
|
||||||
|
Diese Datei clont dieses Repo nach $HOME oder pullt es, wenn das Repo schon vorhanden ist.
|
||||||
|
|
||||||
|
Damit ist auch schon alles erledigt
|
||||||
|
|
||||||
|
# Über ~/.bashrc manuell festlegbare Variablen und ihre Default-Werte, wenn nicht manuell gesetzt:
|
||||||
|
MYSHELLCONFIG\_SUBPATH=server-config
|
||||||
|
MYSHELLCONFIG\_BASE="${HOME}/${MYSHELLCONFIG\_SUBPATH}"
|
||||||
|
MYSHELLCONFIG\_LOGDIR="${MYSHELLCONFIG\_BASE}/logs"
|
||||||
|
MYSHELLCONFIG\_LOGFILE="${MYSHELLCONFIG\_LOGDIR}/git.log"
|
||||||
|
MYSHELLCONFIG\_GIT\_TIMEOUT=5s
|
||||||
|
|
||||||
|
MYSHELLCONFIG\_GIT\_SERVER="git.schuerz.at"
|
||||||
|
MYSHELLCONFIG\_GIT\_REPO\_NAME="server-config.git"
|
||||||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_HTTP="/public/"
|
||||||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_SSH=":public/"
|
||||||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_GIT="/public/"
|
||||||
|
|
||||||
|
|
||||||
|
# Modifizierung mit Skript
|
||||||
|
Wenn das auf mehreren Hosts ausgeführt werden muss, kann man auch das in diesem Repo in bin abgelegte Skript configserver.sh verwenden.
|
||||||
|
Am besten dieses Skript nach ${HOME}/bin kopieren und ausführbar machen.
|
||||||
|
|
||||||
|
```
|
||||||
|
cp bin/configserver.sh ${HOME}/bin
|
||||||
|
chmod +x ${HOME}/bin/configserver.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
configserver.sh [<username>@]<hostname> [port] [ssh-options]
|
||||||
|
|
||||||
|
ein Hostname muss angegeben werden
|
||||||
|
Wenn kein Username angegeben wird, fragt das Skript nach einem Username. Ist der Username leer, bricht das Programm ab.
|
||||||
|
|
||||||
|
Wenn kein Port angegeben wird, wird der Standardport 22 verwendet.
|
||||||
|
|
||||||
|
Weitere ssh-Optionen sind wie in der Notation für ssh anzugeben.
|
||||||
|
z.B.: -i /path/to/private.key -o https://git.ebcont.com/jakobus.schuerz/server-config.git
|
148
aliases
Normal file
148
aliases
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
#Persönliche Aliases
|
||||||
|
|
||||||
|
# usefull commands
|
||||||
|
alias fuck='sudo $(history -p \!\!)'
|
||||||
|
alias wosis='which $(history -p \!\!)'
|
||||||
|
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"' # Fix terminal aber binary output
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# paketmanagement
|
||||||
|
# -- apt
|
||||||
|
alias aptupgrade='sudo /usr/bin/apt update && sudo /usr/bin/apt dist-upgrade'
|
||||||
|
alias apt-get-key='sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys'
|
||||||
|
# -- dnf
|
||||||
|
alias dnfupgrade='sudo dnf upgrade'
|
||||||
|
|
||||||
|
# docker and docker-compose
|
||||||
|
alias dcdown='docker-compose down'
|
||||||
|
alias dclogs='docker-compose logs -f'
|
||||||
|
alias dcup='docker-compose up --build -d'
|
||||||
|
alias dcpull='docker-compose pull'
|
||||||
|
alias dcbuild='docker-compose build --pull'
|
||||||
|
alias dcrestartcollabora='docker-compose restart collabora-code'
|
||||||
|
alias dcrestart='docker-compose down && docker-compose pull && docker-compose up --build -d'
|
||||||
|
alias diclean='docker images | grep '\''<none>'\'' | grep -P '\''[1234567890abcdef]{12}'\'' -o | xargs -L1 docker rmi'
|
||||||
|
alias dclean='docker ps -a | grep -v '\''CONTAINER\|_config\|_data\|_run'\'' | cut -c-12 | xargs docker rm'
|
||||||
|
# Kill all running containers.
|
||||||
|
alias dockerkillall='docker kill $(docker ps -q)'
|
||||||
|
# Delete all stopped containers.
|
||||||
|
alias dockercleanc='printf "\n>>> Deleting stopped containers\n\n" && docker rm $(docker ps -a -q)'
|
||||||
|
# Delete all untagged images.
|
||||||
|
alias dockercleani='printf "\n>>> Deleting untagged images\n\n" && docker rmi $(docker images -q -f dangling=true)'
|
||||||
|
# Delete all stopped containers and untagged images.
|
||||||
|
alias dockerclean='dockercleanc || true && dockercleani'
|
||||||
|
|
||||||
|
# git
|
||||||
|
alias git-getbranchauthors="git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n"
|
||||||
|
alias gcm='git checkout master'
|
||||||
|
|
||||||
|
# xdg-user-dirs
|
||||||
|
alias godesktop='[ -e $(xdg-user-dir DESKTOP) ] && cd $(xdg-user-dir DESKTOP)'
|
||||||
|
alias godoc='[ -e $(xdg-user-dir DOCUMENTS) ] && cd $(xdg-user-dir DOCUMENTS)'
|
||||||
|
alias godownload='[ -e $(xdg-user-dir DOWNLOAD) ] && cd $(xdg-user-dir DOWNLOAD'
|
||||||
|
alias gomusic='[ -e $(xdg-user-dir MUSIC) ] && cd $(xdg-user-dir MUSIC)'
|
||||||
|
alias gopublic='[ -e $(xdg-user-dir PUBLICSHARE) ] && cd $(xdg-user-dir PUBLICSHARE)'
|
||||||
|
alias gotempl='[ -e $(xdg-user-dir TEMPLATES) ] && cd $(xdg-user-dir TEMPLATES)'
|
||||||
|
alias govideo='[ -e $(xdg-user-dir VIDEOS) ] && cd $(xdg-user-dir VIDEOS)'
|
||||||
|
|
||||||
|
# some special locations
|
||||||
|
alias godebian='cd ~/debian'
|
||||||
|
alias gofvwm='cd /home/jakob/src/fvwmverve/'
|
||||||
|
alias gofvwmsys='cd /usr/share/fvwm-verve/'
|
||||||
|
alias goserverconfig='cd $MYSHELLCONFIG_BASE'
|
||||||
|
alias goxund='cd /home/jakob/xundeenergie.at/'
|
||||||
|
|
||||||
|
# system-dirs
|
||||||
|
alias gosystemd='cd /etc/systemd/system/'
|
||||||
|
alias goudevrules='cd /etc/udev/rules.d/'
|
||||||
|
alias gousrlocal='cd /usr/local/bin/'
|
||||||
|
|
||||||
|
# btrfs-backup
|
||||||
|
alias golocbak='cd /var/cache/btrfs_pool_SYSTEM/'
|
||||||
|
alias gorembak='cd /var/cache/backup/$HOSTNAME/'
|
||||||
|
alias lslocbak='ls -alF /var/cache/btrfs_pool_SYSTEM/'
|
||||||
|
alias lsrembak='ls -alF /var/cache/backup/$HOSTNAME/'
|
||||||
|
|
||||||
|
# common commands
|
||||||
|
alias ....='cd ../../..'
|
||||||
|
alias ...='cd ../..'
|
||||||
|
alias ..='cd ..'
|
||||||
|
alias cd..='cd ..'
|
||||||
|
alias cp='cp -i --reflink=auto'
|
||||||
|
alias dir='ls -l $LS_OPTIONS'
|
||||||
|
alias grep='grep --color'
|
||||||
|
alias la='ls -la $LS_OPTIONS'
|
||||||
|
alias ll='ls -l $LS_OPTIONS'
|
||||||
|
alias l='ls -alF $LS_OPTIONS'
|
||||||
|
alias ls-l='ls -l $LS_OPTIONS'
|
||||||
|
alias md='mkdir -p'
|
||||||
|
alias rd=rmdir
|
||||||
|
alias rmbrokenlinks='for f in $(find -L . -maxdepth 1 -type l); do unlink "$f";done'
|
||||||
|
|
||||||
|
# tests
|
||||||
|
alias testmail='echo testemail von ${USER}@${HOSTNAME} am $(date)|mail -s "TESTEMAIL ${USER}@${HOSTNAME} $(date)"'
|
||||||
|
|
||||||
|
# logging
|
||||||
|
alias tailmail='sudo tail -f /var/log/mail.log /var/log/exim4/mainlog /var/log/exim4/rejectlog /var/log/exim4/paniclog'
|
||||||
|
alias taildemsg='sudo watch -n1 "dmesg|tail -n20"'
|
||||||
|
alias tailsys='sudo tail -f /var/log/syslog /var/log/dmesg'
|
||||||
|
|
||||||
|
# infos, stati
|
||||||
|
alias getrelease='cat /etc/*release'
|
||||||
|
alias mkbackupinfo='mkbackup -Vi list SNP BKP SRC'
|
||||||
|
alias myip='curl "http://icanhazip.com/"'
|
||||||
|
alias netzwerk='watch "route; echo iwconfig; iwconfig 2> /dev/null ;echo; echo ifconfig; ifconfig 2> /dev/null; echo; echo arp -a; arp -a; echo EOF"'
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
alias jq='jq -C'
|
||||||
|
alias ncmpcpp='ncmpcpp -h "${MPD_HOST}" -p "${MPD_PORT}"'
|
||||||
|
alias nedit='LC_ALL=ISO-8850-15;export LC_ALL;nedit -fn win8x15 -xrm "*fontList:win8x15"'
|
||||||
|
alias o='less -r'
|
||||||
|
alias totem='VDPAU_DRIVER=va_gl totem'
|
||||||
|
alias unetbootin='export QT_X11_NO_MITSHM=1 unetbootin'
|
||||||
|
alias vi='/usr/bin/vim'
|
||||||
|
alias vlc='VDPAU_DRIVER=va_gl vlc'
|
||||||
|
alias tmux='tmux -f ~/.tmux.conf'
|
||||||
|
|
||||||
|
# mount/unmount
|
||||||
|
alias me='owndisk mount'
|
||||||
|
alias m=mount
|
||||||
|
#alias mxxx='encfs ~/.x ~/X && xdg-open ~/X'
|
||||||
|
alias ue='owndisk umount'
|
||||||
|
#alias umxx='fusermount -u ~/X'
|
||||||
|
alias u=umount
|
||||||
|
|
||||||
|
# rock64
|
||||||
|
alias rock64='sudo minicom -D /dev/ttyUSB0 --color=on'
|
||||||
|
alias rock64='sudo minicom -D /dev/ttyUSB0 -b 1500000--color=on'
|
||||||
|
|
||||||
|
# openvpn
|
||||||
|
alias ovpnrestart='sudo systemctl restart openvpn-client@${HOSTNAME}.service'
|
||||||
|
alias ovpnstart='sudo systemctl start openvpn-client@${HOSTNAME}.service'
|
||||||
|
alias ovpnstatus='sudo systemctl status openvpn-client@${HOSTNAME}.service'
|
||||||
|
alias ovpnstop='sudo systemctl stop openvpn-client@${HOSTNAME}.service'
|
||||||
|
|
||||||
|
# systemd
|
||||||
|
alias scdr='systemctl --system daemon-reload'
|
||||||
|
alias scpo='systemctl poweroff'
|
||||||
|
alias scrb='systemctl reboot'
|
||||||
|
alias scrl='systemctl reload'
|
||||||
|
alias scrs='systemctl restart'
|
||||||
|
alias scs='systemctl start'
|
||||||
|
alias scstp='systemctl stop'
|
||||||
|
alias scst='systemctl status'
|
||||||
|
alias sc='systemctl'
|
||||||
|
alias sda='systemd-analyze plot > /tmp/bootchart.svg && eog /tmp/bootchart.svg&'
|
||||||
|
|
||||||
|
# remote control
|
||||||
|
alias virgooff='ssh virgo sudo systemctl poweroff'
|
||||||
|
alias virgoreboot='ssh virgo sudo systemctl reboot'
|
||||||
|
alias aldebaranoff='ssh aldebaran sudo systemctl poweroff'
|
||||||
|
alias aldebaransuspend='ssh aldebaran sudo systemctl suspend'
|
||||||
|
alias aldebaranreboot='ssh aldebaran sudo systemctl reboot'
|
||||||
|
|
||||||
|
|
||||||
|
# nextcloud
|
||||||
|
alias nextcloud-add-missing-indices='docker exec -ti nc_app_1 php occ db:add-missing-indices'
|
||||||
|
alias nextcloud-upgrade='docker-compose down && docker image rm nc_app:latest nc_web:latest && docker-compose pull && docker-compose up --build -d'
|
22
bash_completion.d/kinit-custom
Normal file
22
bash_completion.d/kinit-custom
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
function _kerberosconfig() {
|
||||||
|
KEYS=""
|
||||||
|
for KEY_DIR in ${KERBEROS_CONFIG_DIRS[*]};do
|
||||||
|
KEYS="${KEYS} $(find ${KERBEROS_CONFIG_DIRS[*]} -type f -name "*.conf" -exec basename {} \; 2>/dev/null |sed 's/\.conf$//' )"
|
||||||
|
done
|
||||||
|
echo $KEYS
|
||||||
|
# echo $(find ${KERBEROS_CONFIG_DIRS[*]} -type f -name "*.conf" -exec basename {} \; -exec sed 's/\.conf$//' \; 2>/dev/null )
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function _kerberosfiles() {
|
||||||
|
COMPREPLY=()
|
||||||
|
local CUR KEYS
|
||||||
|
CUR="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
KEYS=$(_kerberosconfig)
|
||||||
|
COMPREPLY=( $(compgen -W "${KEYS}" -- ${CUR}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _kerberosfiles kinit-custom
|
21
bash_completion.d/mencfs
Normal file
21
bash_completion.d/mencfs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
function _encfsconfig() {
|
||||||
|
KEYS=""
|
||||||
|
for KEY_DIR in ${ENCFS_CONFIG_DIRS[*]};do
|
||||||
|
KEYS="${KEYS} $(find ${ENCFS_CONFIG_DIRS[*]} -type f -name "*.conf" -exec basename {} \; 2>/dev/null |sed 's/\.conf$//' )"
|
||||||
|
done
|
||||||
|
echo $KEYS
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function _encfsfiles() {
|
||||||
|
COMPREPLY=()
|
||||||
|
local CUR KEYS
|
||||||
|
CUR="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
KEYS=$(_encfsconfig)
|
||||||
|
COMPREPLY=( $(compgen -W "${KEYS}" -- ${CUR}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _encfsfiles mencfs
|
21
bash_completion.d/setproxy
Normal file
21
bash_completion.d/setproxy
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
function _proxycreds() {
|
||||||
|
KEYS=""
|
||||||
|
for KEY_DIR in ${SETPROXY_CREDS_DIRS[*]};do
|
||||||
|
KEYS="${KEYS} $(find ${KEY_DIR} -type f -name "*.conf" -exec basename {} \; 2>/dev/null |sed 's/\.conf$//')"
|
||||||
|
done
|
||||||
|
echo $KEYS
|
||||||
|
}
|
||||||
|
|
||||||
|
function _proxyfiles() {
|
||||||
|
COMPREPLY=()
|
||||||
|
local CUR KEYS
|
||||||
|
CUR="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
#KEYS="$(find ${KEY_DIR}/* -type f|awk -F ${KEY_DIR}/ '{print $2}'|sed 's/\.session$//')"
|
||||||
|
KEYS=$(_proxycreds)
|
||||||
|
COMPREPLY=( $(compgen -W "${KEYS}" -- ${CUR}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _proxyfiles setproxy
|
2
bash_completion.d/sshs
Normal file
2
bash_completion.d/sshs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#. /usr/share/bash-completion/completions/ssh
|
||||||
|
shopt -u hostcomplete && complete -F _ssh sshs
|
1
bash_completion.d/sshserverconfig
Normal file
1
bash_completion.d/sshserverconfig
Normal file
|
@ -0,0 +1 @@
|
||||||
|
shopt -u hostcomplete && complete -F _ssh sshserverconfig
|
22
bash_completion.d/tmuxx
Normal file
22
bash_completion.d/tmuxx
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
function _keys() {
|
||||||
|
KEYS=""
|
||||||
|
for KEY_DIR in ${TMUX_SESSION_DIRS[*]};do
|
||||||
|
#KEYS=${KEYS}" $(find ${KEY_DIR}/* -type f|awk -F ${KEY_DIR}/ '{print $2}'|sed 's/\.session$//')"
|
||||||
|
KEYS=$(find ${TMUX_SESSION_DIRS[*]} -type f -name "*.session" -exec basename {} \; 2>/dev/null |sed 's/\.session$//')
|
||||||
|
done
|
||||||
|
echo $KEYS
|
||||||
|
}
|
||||||
|
|
||||||
|
function _keyfiles() {
|
||||||
|
COMPREPLY=()
|
||||||
|
local CUR KEYS
|
||||||
|
CUR="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
#KEYS="$(find ${KEY_DIR}/* -type f|awk -F ${KEY_DIR}/ '{print $2}'|sed 's/\.session$//')"
|
||||||
|
KEYS=$(_keys)
|
||||||
|
COMPREPLY=( $(compgen -W "${KEYS}" -- ${CUR}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _keyfiles tmuxx
|
11
bash_completion.d/uencfs
Normal file
11
bash_completion.d/uencfs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function _uencfsfiles() {
|
||||||
|
COMPREPLY=()
|
||||||
|
local CUR KEYS
|
||||||
|
CUR="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
KEYS=$(mount|grep encfs|sed -e 's/^encfs on \(.*\)\ type.*$/\1/')
|
||||||
|
COMPREPLY=( $(compgen -W "${KEYS}" -- ${CUR}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
complete -F _uencfsfiles uencfs
|
316
bashrc_add
Executable file
316
bashrc_add
Executable file
|
@ -0,0 +1,316 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#debug
|
||||||
|
|
||||||
|
# set SSHS to false, if not set
|
||||||
|
if [ -z ${SSHS+x} ]; then SSHS=false;fi
|
||||||
|
|
||||||
|
# check if we are a interactive shell
|
||||||
|
if [ -n "$PS1" ] ;then
|
||||||
|
#echo "interactive shell" >&2
|
||||||
|
|
||||||
|
|
||||||
|
# define variables
|
||||||
|
|
||||||
|
[ -z "${USERNAME+x}" ] && USERNAME="$USER"
|
||||||
|
[ -z "${USEREMAIL+x}" ] && USEREMAIL="$USER@$(domainname -f)"
|
||||||
|
[ -z "${FULLNAME+x}" ] && FULLNAME="$(getent passwd $USER | cut -d ":" -f 5 | cut -d ',' -f 1)"
|
||||||
|
[ -z "${GIT_AUTHOR_NAME+x}" ] && GIT_AUTHOR_NAME=$FULLNAME
|
||||||
|
[ -z "${GIT_AUTHOR_EMAIL+x}" ] && GIT_AUTHOR_EMAIL=$FULLNAME
|
||||||
|
[ -z "${GIT_COMMITTER_NAME+x}" ] && GIT_COMMITTER_NAME=$FULLNAME
|
||||||
|
[ -z "${GIT_COMMITTER_EMAIL+x}" ] && GIT_COMMITTER_EMAIL=$FULLNAME
|
||||||
|
|
||||||
|
[ -z "${MYSHELLCONFIG_SUBPATH+x}" ] && MYSHELLCONFIG_SUBPATH=".local/hostconfig"
|
||||||
|
[ -z "${MYSHELLCONFIG_BASE+x}" ] && MYSHELLCONFIG_BASE="${HOME}/${MYSHELLCONFIG_SUBPATH}"
|
||||||
|
[ -z "${MYSHELLCONFIG_LOGDIR+x}" ] && MYSHELLCONFIG_LOGDIR="${MYSHELLCONFIG_BASE}/logs"
|
||||||
|
[ -z "${MYSHELLCONFIG_LOGFILE+x}" ] && MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/git.log"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_TIMEOUT+x}" ] && MYSHELLCONFIG_GIT_TIMEOUT=5s
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT+x}" ] && MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT=20s
|
||||||
|
MYSHELLCONFIG_BASH_COMPLETION="${HOME}/${MYSHELLCONFIG_SUBPATH}/bash_completion.d"
|
||||||
|
|
||||||
|
SGIT="git -C ${MYSHELLCONFIG_BASE}"
|
||||||
|
export MYSHELLCONFIG_BASE MYSHELLCONFIG_LOGDIR MYSHELLCONFIG_LOGFILE SGIT
|
||||||
|
|
||||||
|
# define functions
|
||||||
|
|
||||||
|
ckrepo () {
|
||||||
|
# check if remote repo is reachable
|
||||||
|
if $( timeout --foreground "${MYSHELLCONFIG_GIT_TIMEOUT}" $SGIT ls-remote >/dev/null 2>&1) ;then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_config () {
|
||||||
|
local nok=""
|
||||||
|
local gco=""
|
||||||
|
if which git >/dev/null; then
|
||||||
|
echo -n "Sync config with ${MYSHELLCONFIG_GIT_SERVER}: " 1>&2
|
||||||
|
# MYSHELLCONFIG_GITCHECKOUTSCRIPT_OPTIONS are options for bin/git-myshellconfig-checkout
|
||||||
|
# this are now:
|
||||||
|
# -h for headless repo
|
||||||
|
if [ -z ${MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS+x} ]; then
|
||||||
|
gco="-h"
|
||||||
|
else
|
||||||
|
gco="$MYSHELLCONFIG_GIT_CHECKOUTSCRIPT_OPTIONS"
|
||||||
|
fi
|
||||||
|
${MYSHELLCONFIG_BASE}/bin/git-myshellconfig-checkout ${gco}|| nok="not " 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1 #|tee -a ./logs/git.log 1>&2
|
||||||
|
printf '%s\n' "${nok}synced" 1>&2
|
||||||
|
|
||||||
|
# If you want, put a greeting message after sync here
|
||||||
|
# cat << EOF >&2
|
||||||
|
#
|
||||||
|
#---------------------------------------------------
|
||||||
|
#if you want to update submodules, change dir an run
|
||||||
|
#cd $MYSHELLCONFIG_BASE
|
||||||
|
#git submodule update --remote --merge
|
||||||
|
#cd ~
|
||||||
|
#---------------------------------------------------
|
||||||
|
#EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "git not installed, no configuration possible, please install git" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! $SSHS; then
|
||||||
|
# echo "do not source bashrc_add" >&2
|
||||||
|
# else
|
||||||
|
# echo "source bashrc_add" >&2
|
||||||
|
# Uncomment the following line if you don't like systemctl's auto-paging feature:
|
||||||
|
# export SYSTEMD_PAGER=
|
||||||
|
|
||||||
|
### set userspecific variables #######
|
||||||
|
[ -z "$PDSH_RCMD_TYPE" ] && PDSH_RCMD_TYPE=ssh
|
||||||
|
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR=/run/user/$(id -u $USER)
|
||||||
|
|
||||||
|
######################################
|
||||||
|
|
||||||
|
MYSHELLCONFIG_GIT_PROTOCOL_GIT="git://"
|
||||||
|
MYSHELLCONFIG_GIT_PROTOCOL_HTTP="http://"
|
||||||
|
MYSHELLCONFIG_GIT_PROTOCOL_SSH="git@"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_SERVER+x}" ] && MYSHELLCONFIG_GIT_SERVER="git.schuerz.at"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_REPO_NAME+x}" ] && MYSHELLCONFIG_GIT_REPO_NAME="$(basename $MYSHELLCONFIG_BASE).git"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_HTTP+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_HTTP="/public/"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_SSH+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_SSH=":public/"
|
||||||
|
[ -z "${MYSHELLCONFIG_GIT_REPO_PATH_GIT+x}" ] && MYSHELLCONFIG_GIT_REPO_PATH_GIT="/public/"
|
||||||
|
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT="${MYSHELLCONFIG_GIT_PROTOCOL_GIT}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_GIT}"
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH="${MYSHELLCONFIG_GIT_PROTOCOL_SSH}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_SSH}"
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP="${MYSHELLCONFIG_GIT_PROTOCOL_HTTP}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_HTTP}"
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC_DEFAULT="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}"
|
||||||
|
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_DEFAULT="${MYSHELLCONFIG_GIT_PROTOCOL_GIT}${MYSHELLCONFIG_GIT_SERVER}${MYSHELLCONFIG_GIT_REPO_PATH_GIT}"
|
||||||
|
|
||||||
|
# If MYSHELLCONFIG_GIT_REMOTE is set in ~/.bashrc before sourcing this file, take value from ~/.bashrc
|
||||||
|
# If set MYSHELLCONFIG_GIT_REMOTE_PROTOCOL in ~/.bashrc before sourcing this file, you cange choose one of the above
|
||||||
|
# defined values for a specific host
|
||||||
|
|
||||||
|
if [ -z ${MYSHELLCONFIG_GIT_REMOTE+x} ]; then
|
||||||
|
case $MYSHELLCONFIG_GIT_REMOTE_PROTOCOL in
|
||||||
|
git)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}"
|
||||||
|
;;
|
||||||
|
ssh)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH}"
|
||||||
|
;;
|
||||||
|
http)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_DEFAULT}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC}${MYSHELLCONFIG_GIT_REPO_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z ${MYSHELLCONFIG_GIT_REMOTE_PUSH+x} ]; then
|
||||||
|
case $MYSHELLCONFIG_GIT_REMOTE_PUSH_PROTOCOL in
|
||||||
|
git)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_GIT}"
|
||||||
|
;;
|
||||||
|
ssh)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_SSH}"
|
||||||
|
;;
|
||||||
|
http)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_DEFAULT}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE_PUSH=${MYSHELLCONFIG_GIT_REMOTE_PUSH_PUBLIC}${MYSHELLCONFIG_GIT_REPO_NAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
#GIT_SSH_PATH="/srv/repos"
|
||||||
|
|
||||||
|
case $TERM in
|
||||||
|
*term*)
|
||||||
|
|
||||||
|
if [ -d "${MYSHELLCONFIG_BASE}" -a $($SGIT status 1>/dev/null 2>&1; echo $?) -eq 0 ]; then
|
||||||
|
[ -d "${MYSHELLCONFIG_LOGDIR}" ] || mkdir -p "${MYSHELLCONFIG_LOGDIR}"
|
||||||
|
if ! $SGIT rev-parse --git-dir > /dev/null 2>&1 ; then
|
||||||
|
echo "Init ${MYSHELLCONFIG_BASE} as git-repo" >&2
|
||||||
|
$SGIT init
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update Userinformations for git
|
||||||
|
$SGIT config user.email "${USERNAME}"
|
||||||
|
$SGIT config user.name "${FULLNAME}"
|
||||||
|
|
||||||
|
# set upstream only if not detached
|
||||||
|
[ $($SGIT rev-parse --abbrev-ref HEAD) != "HEAD" ] && $SGIT branch --set-upstream-to=origin/$($SGIT rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
|
# sync repo with origin if git is reachable
|
||||||
|
if ckrepo ; then
|
||||||
|
sync_config
|
||||||
|
. ${MYSHELLCONFIG_BASE}/functions.sh
|
||||||
|
create_symlinks "$MYSHELLCONFIG_BASE"
|
||||||
|
else
|
||||||
|
echo "${MYSHELLCONFIG_GIT_SERVER}" not reachable >&2;
|
||||||
|
echo profile not syncing >&2;
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "Clone ${MYSHELLCONFIG_GIT_REMOTE} and configure git" >&2
|
||||||
|
|
||||||
|
if $( timeout --foreground "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT}" git -C ${HOME} clone "${MYSHELLCONFIG_GIT_REMOTE}" "${MYSHELLCONFIG_BASE}" ); then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
MYSHELLCONFIG_GIT_REMOTE="${MYSHELLCONFIG_GIT_REMOTE_PUBLIC_HTTP}${MYSHELLCONFIG_GIT_REPO_NAME}"
|
||||||
|
echo "Clone ${MYSHELLCONFIG_GIT_REMOTE} and configure git" >&2
|
||||||
|
timeout --foreground "${MYSHELLCONFIG_GIT_CHECKOUT_TIMEOUT}" git -C ${HOME} clone "${MYSHELLCONFIG_GIT_REMOTE}" "${MYSHELLCONFIG_BASE}" || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[ -d "${MYSHELLCONFIG_BASE}" ] && { echo create ${MYSHELLCONFIG_LOGDIR} >&2; mkdir -p "${MYSHELLCONFIG_LOGDIR}"; }
|
||||||
|
|
||||||
|
$SGIT config user.email "${USERNAME}"
|
||||||
|
$SGIT config user.name "${FULLNAME}"
|
||||||
|
|
||||||
|
# Initialize Vundle as preconfigured Submodule
|
||||||
|
#$SGIT submodule update --init --recursive
|
||||||
|
#$SGIT submodule foreach 'git checkout master'
|
||||||
|
|
||||||
|
echo "sync config" >&2
|
||||||
|
sync_config
|
||||||
|
. ${MYSHELLCONFIG_BASE}/functions.sh
|
||||||
|
echo "config synced, functions.sh sourced" >&2
|
||||||
|
create_symlinks "$MYSHELLCONFIG_BASE"
|
||||||
|
|
||||||
|
# Install vim Plugins
|
||||||
|
#echo "Run Vim, and in Vim run :PluginInstall to install all Plugins"
|
||||||
|
vim -c "PluginInstall" -c ":qa!"
|
||||||
|
fi
|
||||||
|
[ -z ${MYSHELLCONFIG_GIT_REMOTE_PUSH+x} ] || $SGIT remote set-url --push origin "${MYSHELLCONFIG_GIT_REMOTE_PUSH}"
|
||||||
|
# cd ${HOME}
|
||||||
|
;;
|
||||||
|
*screen*)
|
||||||
|
echo "I'm in sceen/tmux now" >&2
|
||||||
|
;;
|
||||||
|
*dumb*)
|
||||||
|
echo "Run with dumb terminal" 1>&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -e ${MYSHELLCONFIG_BASE}/functions.sh ]; then
|
||||||
|
. ${MYSHELLCONFIG_BASE}/functions.sh
|
||||||
|
else
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
# ls is not in color on all systems
|
||||||
|
export LS_OPTIONS='--color=auto'
|
||||||
|
eval "`dircolors`"
|
||||||
|
|
||||||
|
#######################################################################################
|
||||||
|
# User specific aliases and function
|
||||||
|
|
||||||
|
|
||||||
|
if [ -d "${HOME}/bin" ] ; then
|
||||||
|
pathmunge "${HOME}/bin"
|
||||||
|
export PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "${MYSHELLCONFIG_BASE}/bin" ] ; then
|
||||||
|
pathmunge "${MYSHELLCONFIG_BASE}/bin"
|
||||||
|
export PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "${MYSHELLCONFIG_BASE}/git-credential-pass" ] ; then
|
||||||
|
pathmunge "${MYSHELLCONFIG_BASE}/git-credential-pass"
|
||||||
|
export PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${MYSHELLCONFIG_BASE}/aliases" ]; then
|
||||||
|
. "${MYSHELLCONFIG_BASE}/aliases"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f ~/.aliases ]; then
|
||||||
|
. ~/.aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${MYSHELLCONFIG_BASE}/PS1" ]; then
|
||||||
|
. "${MYSHELLCONFIG_BASE}/PS1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "${MYSHELLCONFIG_BASH_COMPLETION}" ]; then
|
||||||
|
for i in $( ls "${MYSHELLCONFIG_BASH_COMPLETION}" ); do
|
||||||
|
. "${MYSHELLCONFIG_BASH_COMPLETION}/${i}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#########################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Go HOME
|
||||||
|
#cd ${HOME}
|
||||||
|
|
||||||
|
|
||||||
|
echo "bashrc_add sourced" 1>&2
|
||||||
|
|
||||||
|
if test ! $TMUX && test $SSH_TTY && test $TERM != screen && test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
"User: $USER - $UID"
|
||||||
|
|
||||||
|
Starting or resuming screen session
|
||||||
|
Press CTRL+C to cancel screen startup
|
||||||
|
|
||||||
|
EOF
|
||||||
|
sleep 1
|
||||||
|
#screen -UxR
|
||||||
|
tmux attach-session
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset -f pathmunge
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
case $TERM in
|
||||||
|
*screen*)
|
||||||
|
echo BASHRC: $BASHRC -> source it
|
||||||
|
#[ -e $BASHRC ] && . "$BASHRC"
|
||||||
|
if [ ! -z ${BASHRC+x} ]; then
|
||||||
|
if [ -e $BASHRC ] ; then
|
||||||
|
exec bash --rcfile "$BASHRC" -i /dev/null
|
||||||
|
else
|
||||||
|
exec bash -i
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exec bash -i
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
42
bin/configserver.sh
Executable file
42
bin/configserver.sh
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ $1 = *"@"* ]]; then
|
||||||
|
USERNAME=${1%@*}
|
||||||
|
SERVER=${1#*@}
|
||||||
|
else
|
||||||
|
SERVER="$1"
|
||||||
|
echo -n "Username (@${SERVER}): "
|
||||||
|
read USERNAME
|
||||||
|
fi
|
||||||
|
[ -z "${USERNAME}" ] && { echo "Username not set"; exit 1; }
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ $# -ge 1 ]; then
|
||||||
|
PORT=$1
|
||||||
|
else
|
||||||
|
PORT=22
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
|
||||||
|
OPTIONS="$@"
|
||||||
|
|
||||||
|
SSH="/usr/bin/ssh"
|
||||||
|
CMD="$SSH ${OPTIONS} -p ${PORT} ${USERNAME}@${SERVER}"
|
||||||
|
|
||||||
|
echo "Configure new Server (${SERVER}) for personal use"
|
||||||
|
|
||||||
|
$CMD /bin/bash << EOF
|
||||||
|
test -e "~/bashrc_add" && { echo "Server ${SERVER} configured"; exit 0; }
|
||||||
|
rm -rf ~/bashrc_add
|
||||||
|
#wget "https://git.schuerz.at/?p=public/server-config.git;a=blob_plain;f=bashrc_add;hb=HEAD" -O ~/bashrc_add
|
||||||
|
git clone https://git.schuerz.at/public/server-config.git
|
||||||
|
ln -s server-config/bashrc_add bashrc_add
|
||||||
|
echo "modify ~/.bashrc"
|
||||||
|
if grep -q bashrc_add .bashrc ;then
|
||||||
|
sed -i -e '/bashrc_add/d' .bashrc
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
printf "%s" "[ -f bashrc_add ] && . bashrc_add" | tee -a .bashrc
|
||||||
|
echo
|
||||||
|
EOF
|
||||||
|
$CMD
|
87
bin/flip.pl
Executable file
87
bin/flip.pl
Executable file
|
@ -0,0 +1,87 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
|
||||||
|
binmode(STDOUT, ":utf8");
|
||||||
|
|
||||||
|
my %flipTable = (
|
||||||
|
"a" => "\x{0250}",
|
||||||
|
"b" => "q",
|
||||||
|
"c" => "\x{0254}",
|
||||||
|
"d" => "p",
|
||||||
|
"e" => "\x{01DD}",
|
||||||
|
"f" => "\x{025F}",
|
||||||
|
"g" => "\x{0183}",
|
||||||
|
"h" => "\x{0265}",
|
||||||
|
"i" => "\x{0131}",
|
||||||
|
"j" => "\x{027E}",
|
||||||
|
"k" => "\x{029E}",
|
||||||
|
"l" => "|",
|
||||||
|
"m" => "\x{026F}",
|
||||||
|
"n" => "u",
|
||||||
|
"o" => "o",
|
||||||
|
"p" => "d",
|
||||||
|
"q" => "b",
|
||||||
|
"r" => "\x{0279}",
|
||||||
|
"s" => "s",
|
||||||
|
"t" => "\x{0287}",
|
||||||
|
"u" => "n",
|
||||||
|
"v" => "\x{028C}",
|
||||||
|
"w" => "\x{028D}",
|
||||||
|
"x" => "x",
|
||||||
|
"y" => "\x{028E}",
|
||||||
|
"z" => "z",
|
||||||
|
"A" => "\x{0250}",
|
||||||
|
"B" => "q",
|
||||||
|
"C" => "\x{0254}",
|
||||||
|
"D" => "p",
|
||||||
|
"E" => "\x{01DD}",
|
||||||
|
"F" => "\x{025F}",
|
||||||
|
"G" => "\x{0183}",
|
||||||
|
"H" => "\x{0265}",
|
||||||
|
"I" => "\x{0131}",
|
||||||
|
"J" => "\x{027E}",
|
||||||
|
"K" => "\x{029E}",
|
||||||
|
"L" => "|",
|
||||||
|
"M" => "\x{026F}",
|
||||||
|
"N" => "u",
|
||||||
|
"O" => "o",
|
||||||
|
"P" => "d",
|
||||||
|
"Q" => "b",
|
||||||
|
"R" => "\x{0279}",
|
||||||
|
"S" => "s",
|
||||||
|
"T" => "\x{0287}",
|
||||||
|
"U" => "n",
|
||||||
|
"V" => "\x{028C}",
|
||||||
|
"W" => "\x{028D}",
|
||||||
|
"X" => "x",
|
||||||
|
"Y" => "\x{028E}",
|
||||||
|
"Z" => "z",
|
||||||
|
"." => "\x{02D9}",
|
||||||
|
"[" => "]",
|
||||||
|
"'" => ",",
|
||||||
|
"," => "'",
|
||||||
|
"(" => ")",
|
||||||
|
"{" => "}",
|
||||||
|
"?" => "\x{00BF}",
|
||||||
|
"!" => "\x{00A1}",
|
||||||
|
"\"" => ",",
|
||||||
|
"<" => ">",
|
||||||
|
"_" => "\x{203E}",
|
||||||
|
";" => "\x{061B}",
|
||||||
|
"\x{203F}" => "\x{2040}",
|
||||||
|
"\x{2045}" => "\x{2046}",
|
||||||
|
"\x{2234}" => "\x{2235}",
|
||||||
|
"\r" => "\n",
|
||||||
|
" " => " "
|
||||||
|
);
|
||||||
|
|
||||||
|
while ( <> ) {
|
||||||
|
my $string = reverse( $_ );
|
||||||
|
while ($string =~ /(.)/g) {
|
||||||
|
print $flipTable{$1};
|
||||||
|
}
|
||||||
|
print qq(\n);
|
||||||
|
}
|
99
bin/git-myshellconfig-checkout
Executable file
99
bin/git-myshellconfig-checkout
Executable file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#################################################################################################
|
||||||
|
# title :git-myshellconfig-checkout #
|
||||||
|
# description :checkout git detached HEAD #
|
||||||
|
# author :Jakobus Schürz #
|
||||||
|
# changes by :Jakobus Schürz #
|
||||||
|
# created :17.01.2019 #
|
||||||
|
# updated : #
|
||||||
|
# version :1.0 #
|
||||||
|
# usage :./git-checkout #
|
||||||
|
# notes : #
|
||||||
|
#################################################################################################
|
||||||
|
|
||||||
|
[ -z "${SGIT+x}" ] && SGIT=git
|
||||||
|
MYSHELLCONFIG_LOGDIR="./logs"
|
||||||
|
MYSHELLCONFIG_LOGFILE="${MYSHELLCONFIG_LOGDIR}/git.log"
|
||||||
|
[ -d "${MYSHELLCONFIG_LOGDIR}" ] || mkdir -p "${MYSHELLCONFIG_LOGDIR}"
|
||||||
|
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
+-----BEGINN $(date) -------------------------------+
|
||||||
|
EOF
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
-h)
|
||||||
|
# Headless repo local
|
||||||
|
PRE="origin/"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PRE=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
$SGIT fetch origin -p 2>>"${MYSHELLCONFIG_LOGFILE}"|| { echo fetch failed; exit 1; }
|
||||||
|
|
||||||
|
if $SGIT diff-index --ignore-submodules --exit-code HEAD -- >> "${MYSHELLCONFIG_LOGFILE}" ; then
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
Check for local changes:
|
||||||
|
no changes in local repo
|
||||||
|
$SGIT checkout repo ${PRE}master
|
||||||
|
EOF
|
||||||
|
#echo "checkout origin/master as detached HEAD"
|
||||||
|
$SGIT checkout ${PRE}master 1>>"${MYSHELLCONFIG_LOGFILE}" 2>>"${MYSHELLCONFIG_LOGFILE}"|| exit 2
|
||||||
|
$SGIT merge FETCH_HEAD 1>>"${MYSHELLCONFIG_LOGFILE}" 2>>"${MYSHELLCONFIG_LOGFILE}"|| exit 3
|
||||||
|
else
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
Check for local changes:
|
||||||
|
Ich habe lokale Änderungen festgestellt
|
||||||
|
um die Änderung zurückzusetzen bitte
|
||||||
|
|
||||||
|
$SGIT checkout \$FILENAME
|
||||||
|
|
||||||
|
oder um alle lokalen Änderungen auf einmal zurückzusetzen:
|
||||||
|
|
||||||
|
$SGIT checkout .
|
||||||
|
|
||||||
|
ausführen
|
||||||
|
|
||||||
|
Die Änderungen sind:
|
||||||
|
EOF
|
||||||
|
$SGIT diff-index HEAD --|awk '{print $5, $6}' >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
$SGIT diff-index -p HEAD -- >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
|
||||||
|
echo "Lokale Änderungen festgestellt: Siehe Logfile ${MYSHELLCONFIG_LOGFILE}" >&2
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
|
||||||
|
+-----ENDE $(date) ---------------------------------+
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 4
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
|
||||||
|
+-----update submodules $(date) ---------------------------------+
|
||||||
|
|
||||||
|
EOF
|
||||||
|
rc=0
|
||||||
|
## Update/init submodules
|
||||||
|
#$SGIT submodule update --remote --merge 2>>"${MYSHELLCONFIG_LOGFILE}"|| { echo update submodules failed: continue ; }
|
||||||
|
#$SGIT submodule init 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo update submodules failed; exit 1; }
|
||||||
|
#$SGIT submodule sync 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo sync submodules failed; exit 1; }
|
||||||
|
#$SGIT submodule foreach "$SGIT branch -u origin/master master" 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo set-upstream submodules failed; exit 1; }
|
||||||
|
#$SGIT submodule update --recursive --remote --merge 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo update submodules failed; exit 1; }
|
||||||
|
|
||||||
|
#echo "update submodules" >&2
|
||||||
|
$SGIT submodule init 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo update submodules failed on ini; rc=5; }
|
||||||
|
$SGIT submodule sync 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo sync submodules failed on sync; rc=6; }
|
||||||
|
$SGIT submodule foreach "git checkout master" 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo checkout master submodules failed on set upstream; rc=7; }
|
||||||
|
$SGIT submodule foreach "git branch -u origin/master master" 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo set-upstream submodules failed on set upstream; rc=8; }
|
||||||
|
$SGIT submodule update --recursive --remote --merge 1>>"${MYSHELLCONFIG_LOGFILE}" 2>&1|| { echo update submodules failed on update; rc=9; }
|
||||||
|
#echo "submodules updated" >&2
|
||||||
|
|
||||||
|
cat << EOF >> "${MYSHELLCONFIG_LOGFILE}"
|
||||||
|
|
||||||
|
+-----ENDE $(date) ---------------------------------+
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit $rc
|
||||||
|
|
458
functions.sh
Normal file
458
functions.sh
Normal file
|
@ -0,0 +1,458 @@
|
||||||
|
# Initialize variables, if not set
|
||||||
|
[ -z ${TMUX_SESSION_DIRS+x} ] && TMUX_SESSION_DIRS=( ~/.config/tmux/sessions ~/.local/share/tmux/sessions ~/.tmux/sessions)
|
||||||
|
[ -z ${SETPROXY_CREDS_DIRS+x} ] && SETPROXY_CREDS_DIRS=(~/.config/proxycreds)
|
||||||
|
[ -z ${KERBEROS_CONFIG_DIRS+x} ] && KERBEROS_CONFIG_DIRS=(~/.config/kinit)
|
||||||
|
[ -z ${ENCFS_CONFIG_DIRS+x} ] && ENCFS_CONFIG_DIRS=(~/.config/encfs)
|
||||||
|
|
||||||
|
export TMUX_SESSION_DIRS SETPROXY_CREDS_DIRS KERBEROS_CONFIG_DIRS
|
||||||
|
|
||||||
|
sudo() {
|
||||||
|
local SUDO
|
||||||
|
SUDO=$( if [ -e /bin/sudo ]; then echo /bin/sudo; else echo /usr/bin/sudo; fi )
|
||||||
|
$SUDO TMUX=$TMUX SSHS=$SSHS SSH_TTY=$SSH_TTY "$@"
|
||||||
|
|
||||||
|
}
|
||||||
|
create_symlinks() {
|
||||||
|
|
||||||
|
#echo MYSHELLCONFIG_BASE: $MYSHELLCONFIG_BASE
|
||||||
|
# MYSHELLCONFIG_BASEDIR="$1"
|
||||||
|
# DIR="$(basename ${MYSHELLCONFIG_BASEDIR})"
|
||||||
|
# cd "${MYSHELLCONFIG_BASEDIR}"
|
||||||
|
cd ${MYSHELLCONFIG_BASE}
|
||||||
|
#echo "DIR MYSHELLCONFIG_BASEDIR $DIR $MYSHELLCONFIG_BASEDIR"
|
||||||
|
git config credential.helper 'cache --timeout=300'
|
||||||
|
#Anlegen von Symlinks
|
||||||
|
rm -rf ~/.vimrc ~/.vim ~/bashrc_add ~/.gitconfig ~/.tmux.conf ~/.tmux
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/vimrc" ~/.vimrc
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/vim" ~/.vim
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/.gitconfig" ~/.gitconfig
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/bashrc_add" ~/bashrc_add
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/tmux" ~/.tmux
|
||||||
|
ln -sf "${MYSHELLCONFIG_BASE}/tmux/tmux.conf" ~/.tmux.conf
|
||||||
|
|
||||||
|
# Configure to use githooks in .githooks, not in standardlocation .git/hooks
|
||||||
|
$SGIT config core.hooksPath .githooks
|
||||||
|
# remove all old symlinks in .githooks and relink files from .githooks to .git/hooks
|
||||||
|
# don't know, why i do it here. TODO: Check it
|
||||||
|
find .git/hooks -type l -exec rm {} \; && find .githooks -type f -exec ln -sf ../../{} .git/hooks/ \;
|
||||||
|
|
||||||
|
cd ~-
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setproxy () {
|
||||||
|
|
||||||
|
local CONFIG
|
||||||
|
case $# in
|
||||||
|
0)
|
||||||
|
echo too few arguments
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -z ${SETPROXY_CREDS_DIRS+x} ] ; then
|
||||||
|
echo "are you sure, SETPROXY_CREDS_DIRS is defined?"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
CONFIG=$(find ${SETPROXY_CREDS_DIRS[*]} -mindepth 1 -name "$1.conf" -print -quit 2>/dev/null )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -e ${CONFIG} ]; then
|
||||||
|
echo -n "${CONFIG} existing: "
|
||||||
|
source "${CONFIG}"
|
||||||
|
echo "sourced"
|
||||||
|
export PROXY_CREDS="${PROXY_USER}:${PROXY_PASS}@"
|
||||||
|
else
|
||||||
|
echo "${CONFIG} not existing"
|
||||||
|
export PROXY_CREDS=""
|
||||||
|
fi
|
||||||
|
export {http,https,ftp}_proxy="http://${PROXY_CREDS}${PROXY_SERVER}:${PROXY_PORT}"
|
||||||
|
}
|
||||||
|
|
||||||
|
mencfs () {
|
||||||
|
|
||||||
|
[ $# -eq 0 ] && { echo "too few arguments" >&2; return 1; }
|
||||||
|
local PKEY
|
||||||
|
local ENCDIR
|
||||||
|
local DESTDIR
|
||||||
|
local PASS=$(which pass 2>/dev/null || exit 127 )
|
||||||
|
local ENCFS=$(which encfs 2>/dev/null || exit 127 )
|
||||||
|
local CONFIG
|
||||||
|
if [ -z ${ENCFS_CONFIG_DIRS+x} ] ; then
|
||||||
|
echo "are you sure, ENCFS_CONFIG_DIRS is defined?"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
CONFIG=$(find ${ENCFS_CONFIG_DIRS[*]} -mindepth 1 -name "$1.conf" -print -quit 2>/dev/null )
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e ${CONFIG} ]; then
|
||||||
|
echo -n "${CONFIG} existing: "
|
||||||
|
source "${CONFIG}"
|
||||||
|
echo "sourced"
|
||||||
|
else
|
||||||
|
echo "${CONFIG} not existing"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z ${PKEY+x} ] && return 3
|
||||||
|
[ -z ${ENCDIR+x} ] && return 4
|
||||||
|
[ -z ${DESTDIR+x} ] && DESTDIR="$(dirname $ENCDIR)/$(basename $ENCDIR| tr '[:lower:]' '[:upper:]'| sed -e 's/^\.//')"
|
||||||
|
$PASS "${PKEY}" 1>/dev/null 2>&1 || { echo entry $PKEY does not exist in passwordsotre; return 5; }
|
||||||
|
local ENCFS_PASSWORD=$($PASS "${PKEY}" | head -n1)
|
||||||
|
|
||||||
|
if [ -z ${ENCDIR+x} -a -d ${ENCDIR} ];then
|
||||||
|
echo "no encrypted directory found -> exit"
|
||||||
|
return 4
|
||||||
|
else
|
||||||
|
echo mount encrypted directory $ENCDIR on $DESTDIR
|
||||||
|
$ENCFS -S $ENCDIR $DESTDIR <<!
|
||||||
|
$ENCFS_PASSWORD
|
||||||
|
!
|
||||||
|
if [ $? ]; then
|
||||||
|
echo open "$DESTDIR"
|
||||||
|
xdg-open $DESTDIR
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
uencfs () {
|
||||||
|
|
||||||
|
local FUSERMOUNT=$(which fusermount 2>/dev/null || exit 127 )
|
||||||
|
[ -z ${FUSERMOUNT+x} ] && return 127
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
if [ ! -d ${1} ];then
|
||||||
|
echo "encrypted directory ${1} not found -> exit" >&2
|
||||||
|
return 128
|
||||||
|
else
|
||||||
|
echo umount encrypted directory $1 >&2
|
||||||
|
$FUSERMOUNT -u "$1"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "no arguments given. Umount all mounted encfs-dirs" >&2
|
||||||
|
for i in $(mount|grep encfs|sed -e 's/^encfs on \(.*\)\ type.*$/\1/');do
|
||||||
|
echo $FUSERMOUNT -u "$i"
|
||||||
|
$FUSERMOUNT -u "$i"
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
kinit-custom () {
|
||||||
|
|
||||||
|
local PKEY
|
||||||
|
local REALM
|
||||||
|
local PASS=$(which pass 2>/dev/null || exit 127 )
|
||||||
|
local KINIT=$(which kinit 2>/dev/null || exit 127 )
|
||||||
|
local CONFIG
|
||||||
|
if [ -z ${KERBEROS_CONFIG_DIRS+x} ] ; then
|
||||||
|
echo "are you sure, KERBEROS_CONFIG_DIRS is defined?"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
CONFIG=$(find ${KERBEROS_CONFIG_DIRS[*]} -mindepth 1 -name "$1.conf" -print -quit 2>/dev/null )
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e ${CONFIG} ]; then
|
||||||
|
echo -n "${CONFIG} existing: "
|
||||||
|
source "${CONFIG}"
|
||||||
|
echo "sourced"
|
||||||
|
else
|
||||||
|
echo "${CONFIG} not existing"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -z ${PKEY+x} ] && return 3
|
||||||
|
$PASS "${PKEY}" 1>/dev/null 2>&1 || return 3
|
||||||
|
local KERBEROS_PASSWORD=$($PASS "${PKEY}" | head -n1)
|
||||||
|
local KERBEROS_USER=$($PASS "${PKEY}" | grep login | sed -e 's/^login: //' )
|
||||||
|
#echo KERBEROS_PASSWORD: $KERBEROS_PASSWORD
|
||||||
|
echo Get kerberos-ticket for: $KERBEROS_USER@$REALM
|
||||||
|
|
||||||
|
if [ -z ${KERBEROS_USER+x} ];then
|
||||||
|
echo "no kerberos user found -> exit"
|
||||||
|
return 4
|
||||||
|
else
|
||||||
|
$KINIT -R "${KERBEROS_USER}@${REALM}" <<!
|
||||||
|
${KERBEROS_PASSWORD}
|
||||||
|
!
|
||||||
|
if [ $? -gt 0 ] ; then
|
||||||
|
echo renew kerberos-ticket failed. try to get a new one
|
||||||
|
$KINIT "${KERBEROS_USER}@${REALM}" <<!
|
||||||
|
${KERBEROS_PASSWORD}
|
||||||
|
!
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
unsetproxy () {
|
||||||
|
unset {http,https,fpt}_proxy
|
||||||
|
unset PROXY_{CREDS,USER,PASS,SERVER,PORT}
|
||||||
|
}
|
||||||
|
|
||||||
|
git-mergedetachedheadtomaster () {
|
||||||
|
git checkout -b tmp
|
||||||
|
git branch -f master tmp
|
||||||
|
git checkout master
|
||||||
|
git branch -d tmp
|
||||||
|
git commit -m "Merged detached head into master" .
|
||||||
|
#git push origin master
|
||||||
|
}
|
||||||
|
|
||||||
|
pathmunge () {
|
||||||
|
case ":${PATH}:" in
|
||||||
|
*:"$1":*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$2" = "after" ] ; then
|
||||||
|
PATH=$PATH:$1
|
||||||
|
else
|
||||||
|
PATH=$1:$PATH
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
mkcd () {
|
||||||
|
mkdir -p "$1"
|
||||||
|
cd "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
sshserverconfig() {
|
||||||
|
|
||||||
|
local SSH="/usr/bin/ssh"
|
||||||
|
[ -e ${MYSHELLCONFIG_BASE}/bashrc_add ] && $SSH -T -o VisualHostKey=no $@ "cat > ~/bashrc_add" < "${MYSHELLCONFIG_BASE}/bashrc_add"
|
||||||
|
#[ -e ${HOME}/.gitconfig ] && $SSH -T -o VisualHostKey=no $@ "cat > ~/.gitconfig" < "${HOME}/.gitconfig"
|
||||||
|
#[ -e ${HOME}/.gitconfig_local ] && $SSH -T -o VisualHostKey=no $@ "cat > ~/.gitconfig_local" < "${HOME}/.gitconfig_local"
|
||||||
|
local CMD="$SSH -T $@"
|
||||||
|
$CMD /bin/bash << EOF
|
||||||
|
[ -e /etc/bashrc ] && . /etc/bashrc
|
||||||
|
[ -e /etc/bash.bashrc ] && . /etc/bash.bashrc
|
||||||
|
echo "modify ~/.bashrc"
|
||||||
|
if grep -q bashrc_add ~/.bashrc ;then
|
||||||
|
sed -i -e '/bashrc_add/d' ~/.bashrc
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
printf "%s" "[ -f bashrc_add ] && . bashrc_add" | tee -a ~/.bashrc
|
||||||
|
echo
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
}
|
||||||
|
sshs() {
|
||||||
|
|
||||||
|
# MKTMPCMD='mktemp $(echo ${XDG_RUNTIME_DIR}/bashrc.XXXXXXXX.conf)'
|
||||||
|
# VIMMKTMPCMD="mktemp ${XDG_RUNTIME_DIR}/vimrc.XXXXXXXX.conf"
|
||||||
|
|
||||||
|
local TMPBASHCONFIG=$(mktemp -p ${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf)
|
||||||
|
local FILELIST=( "${MYSHELLCONFIG_BASE}/functions.sh" "${MYSHELLCONFIG_BASE}/aliases" "${HOME}/.aliases" "${MYSHELLCONFIG_BASE}/PS1" "${MYSHELLCONFIG_BASE}/bash_completion.d/*" )
|
||||||
|
|
||||||
|
# Read /etc/bashrc or /etc/bash.bashrc (depending on distribution) and /etc/profile.d/*.sh first
|
||||||
|
cat << EOF >> "${TMPBASHCONFIG}"
|
||||||
|
[ -e /etc/bashrc ] && BASHRC=/etc/bashrc
|
||||||
|
[ -e /etc/bash.bashrc ] && BASHRC=/etc/bash.bashrc
|
||||||
|
. \$BASHRC
|
||||||
|
|
||||||
|
for i in /etc/profile.d/*.sh; do
|
||||||
|
if [ -r "$i" ];then
|
||||||
|
if [ "$PS1" ]; then
|
||||||
|
. "$i"
|
||||||
|
else
|
||||||
|
. "$i" >/dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for f in ${FILELIST[*]}; do
|
||||||
|
if [ -e $f ]; then
|
||||||
|
#echo add $f to tmpconfig
|
||||||
|
cat "$f" >> "${TMPBASHCONFIG}";
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $# -ge 1 ]; then
|
||||||
|
if [ -e "${TMPBASHCONFIG}" ] ; then
|
||||||
|
local RCMD="/bin/bash --noprofile --norc -c "
|
||||||
|
local REMOTETMPBASHCONFIG=$(ssh -T -o VisualHostKey=no $@ "mktemp -p \${XDG_RUNTIME_DIR} -t bashrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]' )
|
||||||
|
local REMOTETMPVIMCONFIG=$(ssh -T -o VisualHostKey=no $@ "mktemp -p \${XDG_RUNTIME_DIR} -t vimrc.XXXXXXXX --suffix=.conf"| tr -d '[:space:]')
|
||||||
|
|
||||||
|
# Add additional aliases to bashrc for remote-machine
|
||||||
|
cat << EOF >> "${TMPBASHCONFIG}"
|
||||||
|
alias vi='vim -u ${REMOTETMPVIMCONFIG}'
|
||||||
|
alias vim='vim -u ${REMOTETMPVIMCONFIG}'
|
||||||
|
alias vimdiff='vimdiff -u ${REMOTETMPVIMCONFIG}'
|
||||||
|
export LS_OPTIONS="${LS_OPTIONS}"
|
||||||
|
export VIMRC="${REMOTETMPVIMCONFIG}"
|
||||||
|
export BASHRC="${REMOTETMPBASHCONFIG}"
|
||||||
|
title "\$USER@\$HOSTNAME: \$PWD"
|
||||||
|
echo "This bash runs with temporary config from \$BASHRC"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
ssh -T -o VisualHostKey=no $@ "cat > ${REMOTETMPBASHCONFIG}" < "${TMPBASHCONFIG}"
|
||||||
|
ssh -T -o VisualHostKey=no $@ "cat > ${REMOTETMPVIMCONFIG}" < "${MYSHELLCONFIG_BASE}/vimrc"
|
||||||
|
RCMD="
|
||||||
|
trap \"rm -f ${REMOTETMPBASHCONFIG} ${REMOTETMPVIMCONFIG}\" EXIT " ;
|
||||||
|
ssh -t $@ "$RCMD; SSHS=true bash -c \"function bash () { /bin/bash --rcfile ${REMOTETMPBASHCONFIG} -i ; } ; export -f bash; exec bash --rcfile ${REMOTETMPBASHCONFIG}\""
|
||||||
|
rm "${TMPBASHCONFIG}"
|
||||||
|
else
|
||||||
|
echo "${TMPBASHCONFIG} does not exist. Use »ssh $@«" >&2
|
||||||
|
ssh -t "$@"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "too few arguments for sshs" >&2
|
||||||
|
ssh
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
VIMRC="${MYSHELLCONFIG_BASE}/vimrc"
|
||||||
|
|
||||||
|
svi () {
|
||||||
|
if [ -f ${VIMRC} ]; then
|
||||||
|
sudo vim -u "${VIMRC}" $@;
|
||||||
|
else
|
||||||
|
sudo vim $@
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
vim-plugins-update () {
|
||||||
|
vim -c "PluginUpdate" -c ":qa!"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
vim-plugins-install () {
|
||||||
|
vim -c "PluginInstall" -c ":qa!"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
vim-repair-vundle () {
|
||||||
|
if [ -z ${MYSHELLCONFIG_BASE+x} ]; then
|
||||||
|
echo "MYSHELLCONFIG_BASE nicht gesetzt. Eventuell noch einmal ausloggen und wieder einloggen"
|
||||||
|
else
|
||||||
|
cd $MYSHELLCONFIG_BASE
|
||||||
|
cd vim/bundle
|
||||||
|
rm -rf Vundle.vim
|
||||||
|
git clone "${MYSHELLCONFIG_GIT_REMOTE_PUBLIC}Vim/Vundle.vim.git"
|
||||||
|
cd ~-
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
getbashrcfile () {
|
||||||
|
if [ -z ${BASHRC+x} ] ; then
|
||||||
|
echo "bash uses default"
|
||||||
|
else
|
||||||
|
cat /proc/$$/cmdline | xargs -0 echo|awk '{print $3}'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
catbashrcfile () {
|
||||||
|
if [ -z ${BASHRC+x} ] ; then
|
||||||
|
echo "bash uses default"
|
||||||
|
else
|
||||||
|
#cat $(cat /proc/$$/cmdline | xargs -0 echo|awk '{print $3}')
|
||||||
|
cat $(getbashrcfile)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
getvimrcfile () {
|
||||||
|
if [ -z ${VIMRC+x} ] ; then
|
||||||
|
echo "vim uses default"
|
||||||
|
else
|
||||||
|
echo $VIMRC
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
catvimrcfile () {
|
||||||
|
if [ -z ${VIMRC+x} ] ; then
|
||||||
|
echo "vim uses default"
|
||||||
|
else
|
||||||
|
#cat $VIMRC
|
||||||
|
cat $(getvimrcfile)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Functions to set the correct title of the terminal
|
||||||
|
function title()
|
||||||
|
{
|
||||||
|
# change the title of the current window or tab
|
||||||
|
echo -ne "\033]0;$*\007"
|
||||||
|
}
|
||||||
|
|
||||||
|
function sshx()
|
||||||
|
{
|
||||||
|
/usr/bin/ssh "$@"
|
||||||
|
# revert the window title after the ssh command
|
||||||
|
title $USER@$HOST
|
||||||
|
}
|
||||||
|
|
||||||
|
function su()
|
||||||
|
{
|
||||||
|
/bin/su "$@"
|
||||||
|
# revert the window title after the su command
|
||||||
|
title $USER@$HOST
|
||||||
|
}
|
||||||
|
|
||||||
|
function usage()
|
||||||
|
{
|
||||||
|
cat << EOF
|
||||||
|
Keyboard-shortcuts:
|
||||||
|
|
||||||
|
# tmux:
|
||||||
|
C+Cursor tmux window change size
|
||||||
|
M+[hjkl] tmux change splitted windows
|
||||||
|
|
||||||
|
# vim:
|
||||||
|
C+[hjkl] vim change splitted windows
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function pdsh-update-hetzner()
|
||||||
|
{
|
||||||
|
curl -s -H "Authorization: Bearer $(pass hetzner.com/api-token | head -n1)" \
|
||||||
|
https://api.hetzner.cloud/v1/servers \
|
||||||
|
| /usr/bin/jq '.servers[].public_net.ipv4.ip'|sed -e 's/\"//g' \
|
||||||
|
|while read i; do
|
||||||
|
dig -x $i | awk '$0 !~ /^;/ && $4 == "PTR" {print $5}'
|
||||||
|
done |sed -s -e 's/\.$//' > ~/.dsh/group/hetzner-servers
|
||||||
|
}
|
||||||
|
|
||||||
|
function tmuxx() {
|
||||||
|
case $# in
|
||||||
|
1)
|
||||||
|
SESS=($(find ${TMUX_SESSION_DIRS[*]} -mindepth 1 -name "$1.session" 2>/dev/null ))
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo no session specified return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
TMUX='/usr/bin/tmux'
|
||||||
|
$TMUX -f ~/.tmux.conf new-session -d
|
||||||
|
[ -e ${SESS[0]} ] && $TMUX source-file ${SESS[0]}
|
||||||
|
$TMUX attach-session -d
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gnome-shell-extensions-enable-defaults () {
|
||||||
|
if [ -f ~/.config/gnome-shell-extensions-default.list ]; then
|
||||||
|
for i in $(cat ~/.config/gnome-shell-extensions-default.list); do
|
||||||
|
#gnome-shell-extension-tool -e $i;
|
||||||
|
gnome-extensions enable $i;
|
||||||
|
done;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkbkp () {
|
||||||
|
if ping -c 1 backup.vpn >/dev/null 2>&1 ; then
|
||||||
|
local SSH="/usr/bin/ssh"
|
||||||
|
local CMD="$SSH -T backup.vpn"
|
||||||
|
$CMD /bin/bash << EOF
|
||||||
|
sudo find /srv/nfs/backup -mindepth 1 -maxdepth 1|grep -v -e "git$\|git-backup-repos"|while read i;do printf "%-30s%s\\n" "\$i" \$(ls \$i|tail -n1);done
|
||||||
|
EOF
|
||||||
|
which pdsh 1>/dev/null 2>&1 && pdsh -g hetzner-servers sudo systemctl status backup.service
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "backup.vpn is not reachable -> exit"
|
||||||
|
return 1
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
2
tmux/plugins/tmux-sensible/.gitattributes
vendored
Normal file
2
tmux/plugins/tmux-sensible/.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Force text files to have unix eols, so Windows/Cygwin does not break them
|
||||||
|
*.* eol=lf
|
43
tmux/plugins/tmux-sensible/CHANGELOG.md
Normal file
43
tmux/plugins/tmux-sensible/CHANGELOG.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
### master
|
||||||
|
- remove `detach-on-destroy`
|
||||||
|
- do not set `aggressive-resize` on iTerm terminal
|
||||||
|
- disable `detach-on-destroy`
|
||||||
|
|
||||||
|
### v3.0.0, 2015-06-24
|
||||||
|
- remove 'almost sensible' feature
|
||||||
|
|
||||||
|
### v2.3.0, 2015-06-24
|
||||||
|
- update to support \*THE\* latest tmux version
|
||||||
|
- bugfix for `prefix + R` key binding
|
||||||
|
- fix for tmux 2.0 `default-terminal` option (thanks @kwbr)
|
||||||
|
|
||||||
|
### v2.2.0, 2015-02-10
|
||||||
|
- bugfix in `key_binding_not_set`: the regex is now properly detecting key
|
||||||
|
bindings with `-r` flag.
|
||||||
|
- enable `aggressive-resize`
|
||||||
|
|
||||||
|
### v2.1.0, 2014-12-12
|
||||||
|
- check before binding `prefix + prefix` (@m1foley)
|
||||||
|
- enable `focus-events`
|
||||||
|
- deprecate 'almost sensible' feature. The reason for this is to focus the
|
||||||
|
plugin on doing just one thing.
|
||||||
|
|
||||||
|
### v2.0.0, 2014-10-03
|
||||||
|
- bugfix: prevent exiting tmux if 'reattach-to-user-namespace' is not installed
|
||||||
|
- remove all mouse-related options
|
||||||
|
- introduce 'almost sensible' setting and options
|
||||||
|
|
||||||
|
### v1.1.0, 2014-08-30
|
||||||
|
- bugfix: determine the default shell from the $SHELL env var on OS X
|
||||||
|
- set `mode-mouse on` by default
|
||||||
|
- do not make any decision about the prefix, just enhance it
|
||||||
|
- update `README.md`. List options set in the plugin.
|
||||||
|
- do *not* set `mode-mouse on` by default because some users don't like it
|
||||||
|
- if a user changes default prefix but binds `C-b` to something else, do not
|
||||||
|
unbind `C-b`
|
||||||
|
|
||||||
|
### v1.0.0, 2014-07-30
|
||||||
|
- initial work on the plugin
|
||||||
|
- add readme
|
19
tmux/plugins/tmux-sensible/LICENSE.md
Normal file
19
tmux/plugins/tmux-sensible/LICENSE.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (C) 2014 Bruno Sutic
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||||
|
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
114
tmux/plugins/tmux-sensible/README.md
Normal file
114
tmux/plugins/tmux-sensible/README.md
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
# Tmux sensible
|
||||||
|
|
||||||
|
A set of tmux options that should be acceptable to everyone.
|
||||||
|
|
||||||
|
Inspired by [vim-sensible](https://github.com/tpope/vim-sensible).
|
||||||
|
|
||||||
|
Tested and working on Linux, OSX and Cygwin.
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
|
||||||
|
- `tmux-sensible` options should be acceptable to **every** tmux user!<br/>
|
||||||
|
If any of the options bothers you, please open an issue and it will probably
|
||||||
|
be updated (or removed).
|
||||||
|
- if you think a new option should be added, feel free to open a pull request.
|
||||||
|
- **no overriding** of user defined settings.<br/>
|
||||||
|
Your existing `.tmux.conf` settings are respected and they won't be changed.
|
||||||
|
That way you can use `tmux-sensible` if you have a few specific options.
|
||||||
|
|
||||||
|
### Goals
|
||||||
|
|
||||||
|
- group standard tmux community options in one place
|
||||||
|
- remove clutter from your `.tmux.conf`
|
||||||
|
- educate new tmux users about basic options
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
|
# utf8 is on
|
||||||
|
set -g utf8 on
|
||||||
|
set -g status-utf8 on
|
||||||
|
|
||||||
|
# address vim mode switching delay (http://superuser.com/a/252717/65504)
|
||||||
|
set -s escape-time 0
|
||||||
|
|
||||||
|
# increase scrollback buffer size
|
||||||
|
set -g history-limit 50000
|
||||||
|
|
||||||
|
# tmux messages are displayed for 4 seconds
|
||||||
|
set -g display-time 4000
|
||||||
|
|
||||||
|
# refresh 'status-left' and 'status-right' more often
|
||||||
|
set -g status-interval 5
|
||||||
|
|
||||||
|
# set only on OS X where it's required
|
||||||
|
set -g default-command "reattach-to-user-namespace -l $SHELL"
|
||||||
|
|
||||||
|
# upgrade $TERM
|
||||||
|
set -g default-terminal "screen-256color"
|
||||||
|
|
||||||
|
# emacs key bindings in tmux command prompt (prefix + :) are better than
|
||||||
|
# vi keys, even for vim users
|
||||||
|
set -g status-keys emacs
|
||||||
|
|
||||||
|
# focus events enabled for terminals that support them
|
||||||
|
set -g focus-events on
|
||||||
|
|
||||||
|
# super useful when using "grouped sessions" and multi-monitor setup
|
||||||
|
setw -g aggressive-resize on
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
|
||||||
|
# easier and faster switching between next/prev window
|
||||||
|
bind C-p previous-window
|
||||||
|
bind C-n next-window
|
||||||
|
|
||||||
|
Above bindings enhance the default `prefix + p` and `prefix + n` bindings by
|
||||||
|
allowing you to hold `Ctrl` and repeat `a + p`/`a + n` (if your prefix is
|
||||||
|
`C-a`), which is a lot quicker.
|
||||||
|
|
||||||
|
# source .tmux.conf as suggested in `man tmux`
|
||||||
|
bind R source-file '~/.tmux.conf'
|
||||||
|
|
||||||
|
"Adaptable" key bindings that build upon your `prefix` value:
|
||||||
|
|
||||||
|
# if prefix is 'C-a'
|
||||||
|
bind C-a send-prefix
|
||||||
|
bind a last-window
|
||||||
|
|
||||||
|
If prefix is `C-b`, above keys will be `C-b` and `b`.<br/>
|
||||||
|
If prefix is `C-z`, above keys will be `C-z` and `z`... you get the idea.
|
||||||
|
|
||||||
|
### Installation with [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm) (recommended)
|
||||||
|
|
||||||
|
Add plugin to the list of TPM plugins in `.tmux.conf`:
|
||||||
|
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
|
||||||
|
Hit `prefix + I` to fetch the plugin and source it. That's it!
|
||||||
|
|
||||||
|
### Manual Installation
|
||||||
|
|
||||||
|
Clone the repo:
|
||||||
|
|
||||||
|
$ git clone https://github.com/tmux-plugins/tmux-sensible ~/clone/path
|
||||||
|
|
||||||
|
Add this line to the bottom of `.tmux.conf`:
|
||||||
|
|
||||||
|
run-shell ~/clone/path/sensible.tmux
|
||||||
|
|
||||||
|
Reload TMUX environment with `$ tmux source-file ~/.tmux.conf`, and that's it.
|
||||||
|
|
||||||
|
### Other goodies
|
||||||
|
|
||||||
|
You might also find these useful:
|
||||||
|
|
||||||
|
- [copycat](https://github.com/tmux-plugins/tmux-copycat)
|
||||||
|
improve tmux search and reduce mouse usage
|
||||||
|
- [pain control](https://github.com/tmux-plugins/tmux-pain-control)
|
||||||
|
useful standard bindings for controlling panes
|
||||||
|
- [resurrect](https://github.com/tmux-plugins/tmux-resurrect)
|
||||||
|
persists tmux environment across system restarts
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
[MIT](LICENSE.md)
|
161
tmux/plugins/tmux-sensible/sensible.tmux
Executable file
161
tmux/plugins/tmux-sensible/sensible.tmux
Executable file
|
@ -0,0 +1,161 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# used to match output from `tmux list-keys`
|
||||||
|
KEY_BINDING_REGEX="bind-key[[:space:]]\+\(-r[[:space:]]\+\)\?\(-T prefix[[:space:]]\+\)\?"
|
||||||
|
|
||||||
|
is_osx() {
|
||||||
|
local platform=$(uname)
|
||||||
|
[ "$platform" == "Darwin" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
iterm_terminal() {
|
||||||
|
[[ "$TERM_PROGRAM" =~ ^iTerm ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
command_exists() {
|
||||||
|
local command="$1"
|
||||||
|
type "$command" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# returns prefix key, e.g. 'C-a'
|
||||||
|
prefix() {
|
||||||
|
tmux show-option -gv prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
# if prefix is 'C-a', this function returns 'a'
|
||||||
|
prefix_without_ctrl() {
|
||||||
|
local prefix="$(prefix)"
|
||||||
|
echo "$prefix" | cut -d '-' -f2
|
||||||
|
}
|
||||||
|
|
||||||
|
option_value_not_changed() {
|
||||||
|
local option="$1"
|
||||||
|
local default_value="$2"
|
||||||
|
local option_value=$(tmux show-option -gv "$option")
|
||||||
|
[ "$option_value" == "$default_value" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
server_option_value_not_changed() {
|
||||||
|
local option="$1"
|
||||||
|
local default_value="$2"
|
||||||
|
local option_value=$(tmux show-option -sv "$option")
|
||||||
|
[ "$option_value" == "$default_value" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
key_binding_not_set() {
|
||||||
|
local key="$1"
|
||||||
|
if $(tmux list-keys | grep -q "${KEY_BINDING_REGEX}${key}[[:space:]]"); then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
key_binding_not_changed() {
|
||||||
|
local key="$1"
|
||||||
|
local default_value="$2"
|
||||||
|
if $(tmux list-keys | grep -q "${KEY_BINDING_REGEX}${key}[[:space:]]\+${default_value}"); then
|
||||||
|
# key still has the default binding
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# OPTIONS
|
||||||
|
|
||||||
|
# enable utf8 (option removed in tmux 2.2)
|
||||||
|
tmux set-option -g utf8 on 2>/dev/null
|
||||||
|
|
||||||
|
# enable utf8 in tmux status-left and status-right (option removed in tmux 2.2)
|
||||||
|
tmux set-option -g status-utf8 on 2>/dev/null
|
||||||
|
|
||||||
|
# address vim mode switching delay (http://superuser.com/a/252717/65504)
|
||||||
|
if server_option_value_not_changed "escape-time" "500"; then
|
||||||
|
tmux set-option -s escape-time 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# increase scrollback buffer size
|
||||||
|
if option_value_not_changed "history-limit" "2000"; then
|
||||||
|
tmux set-option -g history-limit 50000
|
||||||
|
fi
|
||||||
|
|
||||||
|
# tmux messages are displayed for 4 seconds
|
||||||
|
if option_value_not_changed "display-time" "750"; then
|
||||||
|
tmux set-option -g display-time 4000
|
||||||
|
fi
|
||||||
|
|
||||||
|
# refresh 'status-left' and 'status-right' more often
|
||||||
|
if option_value_not_changed "status-interval" "15"; then
|
||||||
|
tmux set-option -g status-interval 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# required (only) on OS X
|
||||||
|
if is_osx && command_exists "reattach-to-user-namespace" && option_value_not_changed "default-command" ""; then
|
||||||
|
tmux set-option -g default-command "reattach-to-user-namespace -l $SHELL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# upgrade $TERM, tmux 1.9
|
||||||
|
if option_value_not_changed "default-terminal" "screen"; then
|
||||||
|
tmux set-option -g default-terminal "screen-256color"
|
||||||
|
fi
|
||||||
|
# upgrade $TERM, tmux 2.0+
|
||||||
|
if server_option_value_not_changed "default-terminal" "screen"; then
|
||||||
|
tmux set-option -s default-terminal "screen-256color"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# emacs key bindings in tmux command prompt (prefix + :) are better than
|
||||||
|
# vi keys, even for vim users
|
||||||
|
tmux set-option -g status-keys emacs
|
||||||
|
|
||||||
|
# focus events enabled for terminals that support them
|
||||||
|
tmux set-option -g focus-events on
|
||||||
|
|
||||||
|
# super useful when using "grouped sessions" and multi-monitor setup
|
||||||
|
if ! iterm_terminal; then
|
||||||
|
tmux set-window-option -g aggressive-resize on
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DEFAULT KEY BINDINGS
|
||||||
|
|
||||||
|
local prefix="$(prefix)"
|
||||||
|
local prefix_without_ctrl="$(prefix_without_ctrl)"
|
||||||
|
|
||||||
|
# if C-b is not prefix
|
||||||
|
if [ $prefix != "C-b" ]; then
|
||||||
|
# unbind obsolete default binding
|
||||||
|
if key_binding_not_changed "C-b" "send-prefix"; then
|
||||||
|
tmux unbind-key C-b
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pressing `prefix + prefix` sends <prefix> to the shell
|
||||||
|
if key_binding_not_set "$prefix"; then
|
||||||
|
tmux bind-key "$prefix" send-prefix
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If Ctrl-a is prefix then `Ctrl-a + a` switches between alternate windows.
|
||||||
|
# Works for any prefix character.
|
||||||
|
if key_binding_not_set "$prefix_without_ctrl"; then
|
||||||
|
tmux bind-key "$prefix_without_ctrl" last-window
|
||||||
|
fi
|
||||||
|
|
||||||
|
# easier switching between next/prev window
|
||||||
|
if key_binding_not_set "C-p"; then
|
||||||
|
tmux bind-key C-p previous-window
|
||||||
|
fi
|
||||||
|
if key_binding_not_set "C-n"; then
|
||||||
|
tmux bind-key C-n next-window
|
||||||
|
fi
|
||||||
|
|
||||||
|
# source `.tmux.conf` file - as suggested in `man tmux`
|
||||||
|
if key_binding_not_set "R"; then
|
||||||
|
tmux bind-key R run-shell ' \
|
||||||
|
tmux source-file ~/.tmux.conf > /dev/null; \
|
||||||
|
tmux display-message "Sourced .tmux.conf!"'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
main
|
201
tmux/plugins/tmux-themepack/README.md
Normal file
201
tmux/plugins/tmux-themepack/README.md
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
# Tmux Themepack
|
||||||
|
|
||||||
|
A pack of various themes for Tmux.
|
||||||
|
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Install manually
|
||||||
|
|
||||||
|
1. Clone repo to local machine:
|
||||||
|
|
||||||
|
git clone https://github.com/jimeh/tmux-themepack.git ~/.tmux-themepack
|
||||||
|
|
||||||
|
2. Source desired theme in your `~/.tmux.conf`:
|
||||||
|
|
||||||
|
source-file "${HOME}/.tmux-themepack/powerline/block/green.tmuxtheme"
|
||||||
|
|
||||||
|
In some linux distributions you might have to remove the quotation marks from the
|
||||||
|
`source-file` command to avoid a `no such file or directory` error:
|
||||||
|
|
||||||
|
source-file ${HOME}/.tmux-themepack/powerline/block/green.tmuxtheme
|
||||||
|
|
||||||
|
### Install using [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm)
|
||||||
|
|
||||||
|
1. Add plugin to the list of TPM plugins in `.tmux.conf`:
|
||||||
|
|
||||||
|
set -g @plugin 'jimeh/tmux-themepack'
|
||||||
|
|
||||||
|
2. Hit `prefix + I` to fetch the plugin and source it. The plugin should now be working.
|
||||||
|
|
||||||
|
You can pick and choose a theme via `.tmux.conf` option:
|
||||||
|
|
||||||
|
- `set -g @themepack 'basic'` (default)
|
||||||
|
- `set -g @themepack 'powerline/block/blue'`
|
||||||
|
- `set -g @themepack 'powerline/block/cyan'`
|
||||||
|
- `set -g @themepack 'powerline/default/gray'`
|
||||||
|
- `set -g @themepack 'powerline/double/magenta'`
|
||||||
|
- `...`
|
||||||
|
|
||||||
|
## Themes
|
||||||
|
|
||||||
|
### Basic Themes
|
||||||
|
|
||||||
|
**Default:**
|
||||||
|
|
||||||
|
![basic](https://raw.github.com/jimeh/tmux-themepack-previews/master/default-preview.png)
|
||||||
|
|
||||||
|
**Basic:**
|
||||||
|
|
||||||
|
![basic](https://raw.github.com/jimeh/tmux-themepack-previews/master/basic-preview.png)
|
||||||
|
|
||||||
|
### Powerline Themes
|
||||||
|
|
||||||
|
Inspired by the [Powerline][] VIM plugin,
|
||||||
|
and requires the use of a powerline compatible font in your terminal. You can
|
||||||
|
find a number of such fonts in the
|
||||||
|
[powerline-fonts][] project.
|
||||||
|
|
||||||
|
If your preferred font isn't available there, please refer to Powerline's
|
||||||
|
documentation on [Font Patching][] to patch the font yourself.
|
||||||
|
|
||||||
|
[powerline]: https://github.com/Lokaltog/powerline
|
||||||
|
[powerline-fonts]: https://github.com/Lokaltog/powerline-fonts
|
||||||
|
[font patching]: https://powerline.readthedocs.org/en/latest/fontpatching.html#font-patching
|
||||||
|
|
||||||
|
**Powerline Blue:**
|
||||||
|
|
||||||
|
![powerline-default-blue](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/blue-preview.png)
|
||||||
|
|
||||||
|
**Powerline Cyan:**
|
||||||
|
|
||||||
|
![powerline-default-cyan](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/cyan-preview.png)
|
||||||
|
|
||||||
|
**Powerline Gray:**
|
||||||
|
|
||||||
|
![powerline-default-gray](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/gray-preview.png)
|
||||||
|
|
||||||
|
**Powerline Green:**
|
||||||
|
|
||||||
|
![powerline-default-green](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/green-preview.png)
|
||||||
|
|
||||||
|
**Powerline Magenta:**
|
||||||
|
|
||||||
|
![powerline-default-magenta](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/magenta-preview.png)
|
||||||
|
|
||||||
|
**Powerline Orange:**
|
||||||
|
|
||||||
|
![powerline-default-orange](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/orange-preview.png)
|
||||||
|
|
||||||
|
**Powerline Red:**
|
||||||
|
|
||||||
|
![powerline-default-red](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/red-preview.png)
|
||||||
|
|
||||||
|
**Powerline Yellow:**
|
||||||
|
|
||||||
|
![powerline-default-yellow](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/default/yellow-preview.png)
|
||||||
|
|
||||||
|
#### Block
|
||||||
|
|
||||||
|
Currently selected window is indicated by a colored block.
|
||||||
|
|
||||||
|
**Powerline Blue Block:**
|
||||||
|
|
||||||
|
![powerline-block-blue](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/blue-preview.png)
|
||||||
|
|
||||||
|
**Powerline Cyan Block:**
|
||||||
|
|
||||||
|
![powerline-block-cyan](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/cyan-preview.png)
|
||||||
|
|
||||||
|
**Powerline Gray Block:**
|
||||||
|
|
||||||
|
![powerline-block-gray](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/gray-preview.png)
|
||||||
|
|
||||||
|
**Powerline Green Block:**
|
||||||
|
|
||||||
|
![powerline-block-green](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/green-preview.png)
|
||||||
|
|
||||||
|
**Powerline Magenta Block:**
|
||||||
|
|
||||||
|
![powerline-block-magenta](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/magenta-preview.png)
|
||||||
|
|
||||||
|
**Powerline Orange Block:**
|
||||||
|
|
||||||
|
![powerline-block-orange](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/orange-preview.png)
|
||||||
|
|
||||||
|
**Powerline Red Block:**
|
||||||
|
|
||||||
|
![powerline-block-red](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/red-preview.png)
|
||||||
|
|
||||||
|
**Powerline Yellow Block:**
|
||||||
|
|
||||||
|
![powerline-block-yellow](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/block/yellow-preview.png)
|
||||||
|
|
||||||
|
#### Double
|
||||||
|
|
||||||
|
Both left and right far sides of the statusbar are colored, rather than just
|
||||||
|
the left side.
|
||||||
|
|
||||||
|
**Powerline Double Blue:**
|
||||||
|
|
||||||
|
![powerline-double-blue](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/blue-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Cyan:**
|
||||||
|
|
||||||
|
![powerline-double-cyan](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/cyan-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Green:**
|
||||||
|
|
||||||
|
![powerline-double-green](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/green-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Magenta:**
|
||||||
|
|
||||||
|
![powerline-double-magenta](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/magenta-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Orange:**
|
||||||
|
|
||||||
|
![powerline-double-orange](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/orange-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Red:**
|
||||||
|
|
||||||
|
![powerline-double-red](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/red-preview.png)
|
||||||
|
|
||||||
|
**Powerline Double Yellow:**
|
||||||
|
|
||||||
|
![powerline-double-yellow](https://raw.github.com/jimeh/tmux-themepack-previews/master/powerline/double/yellow-preview.png)
|
||||||
|
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- Use different themes/colors on different machines by using some sort of
|
||||||
|
wrapper around launching Tmux.
|
||||||
|
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
If you decide to contribute your own tmux themes, please try to base it on the
|
||||||
|
`default.tmuxtheme` theme. This ensures that switching between themes works as
|
||||||
|
it should and completely overwrites all settings from previous themes.
|
||||||
|
|
||||||
|
If it's not possible to base your theme on my default one, something is
|
||||||
|
probably missing from it. So please contribute a fix to the default theme too
|
||||||
|
in that case :)
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
```
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2013 Jim Myhrberg
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
```
|
54
tmux/plugins/tmux-themepack/basic.tmuxtheme
Normal file
54
tmux/plugins/tmux-themepack/basic.tmuxtheme
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style bg=black,fg=cyan
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=black,fg=green
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#S #[fg=white]» #[fg=yellow]#I #[fg=cyan]#P"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=black,fg=cyan
|
||||||
|
set -g status-right-length 40
|
||||||
|
set -g status-right "#H #[fg=white]« #[fg=yellow]%H:%M:%S #[fg=green]%d-%b-%y"
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=red,fg=black
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=black,fg=yellow
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=default
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=green
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour default
|
||||||
|
set -g display-panes-active-colour default
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour red
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=default,fg=default
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=default,fg=default
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=red,fg=default
|
62
tmux/plugins/tmux-themepack/default.tmuxtheme
Normal file
62
tmux/plugins/tmux-themepack/default.tmuxtheme
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
#
|
||||||
|
# Default Tmux Theme
|
||||||
|
#
|
||||||
|
|
||||||
|
# This theme matches Tmux's default style as closely as possible. It functions
|
||||||
|
# as a template for creating new themes, and as a way to reset a running Tmux
|
||||||
|
# server's style to it's defaults.
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 15
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style bg=green,fg=black
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=green,fg=black
|
||||||
|
set -g status-left-length 10
|
||||||
|
set -g status-left "[#S]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=green,fg=black
|
||||||
|
set -g status-right-length 40
|
||||||
|
set -g status-right "\"#H\" %H:%M %d-%b-%y"
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format "#I:#W#F"
|
||||||
|
set -g window-status-current-format "#I:#W#F"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=green,fg=black
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=black,fg=green
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator " "
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify left
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=white
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=green
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour blue
|
||||||
|
set -g display-panes-active-colour red
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour blue
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=yellow,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=green,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=yellow,fg=black
|
64
tmux/plugins/tmux-themepack/powerline/block/blue.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/blue.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Blue Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour24,bold] #S #[fg=colour24,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour24,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour31
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour24
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour24
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour24,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour24,fg=colour231
|
65
tmux/plugins/tmux-themepack/powerline/block/cyan.tmuxtheme
Normal file
65
tmux/plugins/tmux-themepack/powerline/block/cyan.tmuxtheme
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#
|
||||||
|
# Powerline Cyan Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour39,bold] #S #[fg=colour39,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour39,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour75
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour39
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour39
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour39,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour39,fg=colour232
|
||||||
|
|
64
tmux/plugins/tmux-themepack/powerline/block/gray.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/gray.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Gray Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour245,bold] #S #[fg=colour245,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour245,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour235
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour240
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour240
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour245,fg=colour232
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=colour250
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour243,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/block/green.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/green.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Green Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour100,bold] #S #[fg=colour100,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour100,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour107
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour100
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour100
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour100,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour100,fg=colour235
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Magenta Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour125,bold] #S #[fg=colour125,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour90,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour141
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour90
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour90
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour90,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour125,fg=colour231
|
64
tmux/plugins/tmux-themepack/powerline/block/orange.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/orange.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Orange Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour130,bold] #S #[fg=colour130,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour130,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour130
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour130
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour130
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour130,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour130,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/block/red.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/red.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Red Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour16,bg=colour88,bold] #S #[fg=colour88,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour124,fg=colour16
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour88
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour88
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour88
|
||||||
|
set -g message-style bg=colour24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour124,fg=colour231
|
64
tmux/plugins/tmux-themepack/powerline/block/yellow.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/block/yellow.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Yellow Block - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour227,bold] #S #[fg=colour227,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format " #I:#W#F "
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour227,fg=colour232
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour229
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour227
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour227
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour227,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour227,fg=colour235
|
64
tmux/plugins/tmux-themepack/powerline/default/blue.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/default/blue.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Blue - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour24,bold] #S #[fg=colour24,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour33,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour100,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour24
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour24
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour24,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour24,fg=colour231
|
64
tmux/plugins/tmux-themepack/powerline/default/cyan.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/default/cyan.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Cyan - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour39,bold] #S #[fg=colour39,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour81,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour39,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour39
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour39
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour39,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour39,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/default/gray.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/default/gray.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Gray - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour245,bold] #S #[fg=colour245,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour250,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=black,fg=colour250
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour243
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour235
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour240
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour240
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour245,fg=colour232
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=colour250
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour243,fg=colour232
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Green - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour100,bold] #S #[fg=colour100,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour190,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour100,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour100
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour100
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour100,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour100,fg=colour235
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Magenta - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour125,bold] #S #[fg=colour125,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour129,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour125,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour125
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour125
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour125,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour125,fg=colour231
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Orange - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour130,bold] #S #[fg=colour130,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour166,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour130,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour130
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour130
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour130,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour130,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/default/red.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/default/red.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Red - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour16,bg=colour88,bold] #S #[fg=colour88,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour160,bold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour88,fg=colour16
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour88
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour88
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour124,fg=colour231
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Yellow - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour227,bold] #S #[fg=colour227,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour227,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour227,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour227
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour227
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour227,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour227,fg=colour235
|
64
tmux/plugins/tmux-themepack/powerline/double/blue.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/double/blue.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Blue - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour24,bold] #S #[fg=colour24,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour24,bg=colour240]#[fg=colour232,bg=colour24,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour33,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour24,fg=colour233
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour24
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour24
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour24,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour24,fg=colour231
|
64
tmux/plugins/tmux-themepack/powerline/double/cyan.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/double/cyan.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Cyan - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour233,bg=colour39,bold] #S #[fg=colour39,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour39,bg=colour240]#[fg=colour233,bg=colour39,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour81,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour39,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour39
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour39
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour39,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour39,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/double/green.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/double/green.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Green - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour233,bg=colour100,bold] #S #[fg=colour100,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour100,bg=colour240]#[fg=colour233,bg=colour100,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour190,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour100,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour100
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour100
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour100,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour100,fg=colour235
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Magenta - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour233,bg=colour125,bold] #S #[fg=colour125,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour125,bg=colour240]#[fg=colour233,bg=colour125,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour129,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour125,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour125
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour125
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour125,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour125,fg=colour231
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Orange - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour233,bg=colour130,bold] #S #[fg=colour130,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour130,bg=colour240]#[fg=colour233,bg=colour130,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour166,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour130,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour130
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour130
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour130,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour130,fg=colour232
|
64
tmux/plugins/tmux-themepack/powerline/double/red.tmuxtheme
Normal file
64
tmux/plugins/tmux-themepack/powerline/double/red.tmuxtheme
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Red - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour238,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour232,bg=colour88,bold] #S #[fg=colour88,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour88,bg=colour240]#[fg=colour232,bg=colour88,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour160,bold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour88,fg=colour16
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour88
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour88
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour88,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour124,fg=colour231
|
|
@ -0,0 +1,64 @@
|
||||||
|
#
|
||||||
|
# Powerline Double Yellow - Tmux Theme
|
||||||
|
# Created by Jim Myhrberg <contact@jimeh.me>.
|
||||||
|
#
|
||||||
|
# Inspired by vim-powerline: https://github.com/Lokaltog/powerline
|
||||||
|
#
|
||||||
|
# Requires terminal to be using a powerline compatible font, find one here:
|
||||||
|
# https://github.com/Lokaltog/powerline-fonts
|
||||||
|
#
|
||||||
|
|
||||||
|
# Status update interval
|
||||||
|
set -g status-interval 1
|
||||||
|
|
||||||
|
# Basic status bar colors
|
||||||
|
set -g status-style fg=colour240,bg=colour233
|
||||||
|
|
||||||
|
# Left side of status bar
|
||||||
|
set -g status-left-style bg=colour233,fg=colour243
|
||||||
|
set -g status-left-length 40
|
||||||
|
set -g status-left "#[fg=colour233,bg=colour227,bold] #S #[fg=colour227,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold]"
|
||||||
|
|
||||||
|
# Right side of status bar
|
||||||
|
set -g status-right-style bg=colour233,fg=colour243
|
||||||
|
set -g status-right-length 150
|
||||||
|
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %d-%b-%y #[fg=colour227,bg=colour240]#[fg=colour233,bg=colour227,bold] #H "
|
||||||
|
|
||||||
|
# Window status
|
||||||
|
set -g window-status-format " #I:#W#F "
|
||||||
|
set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour227,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]"
|
||||||
|
|
||||||
|
# Current window status
|
||||||
|
set -g window-status-current-style bg=colour227,fg=colour235
|
||||||
|
|
||||||
|
# Window with activity status
|
||||||
|
set -g window-status-activity-style bg=colour233,fg=colour245
|
||||||
|
|
||||||
|
# Window separator
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Window status alignment
|
||||||
|
set -g status-justify centre
|
||||||
|
|
||||||
|
# Pane border
|
||||||
|
set -g pane-border-style bg=default,fg=colour238
|
||||||
|
|
||||||
|
# Active pane border
|
||||||
|
set -g pane-active-border-style bg=default,fg=colour227
|
||||||
|
|
||||||
|
# Pane number indicator
|
||||||
|
set -g display-panes-colour colour233
|
||||||
|
set -g display-panes-active-colour colour245
|
||||||
|
|
||||||
|
# Clock mode
|
||||||
|
set -g clock-mode-colour colour227
|
||||||
|
set -g clock-mode-style 24
|
||||||
|
|
||||||
|
# Message
|
||||||
|
set -g message-style bg=colour227,fg=black
|
||||||
|
|
||||||
|
# Command message
|
||||||
|
set -g message-command-style bg=colour233,fg=black
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
set -g mode-style bg=colour227,fg=colour235
|
29
tmux/plugins/tmux-themepack/themepack.tmux
Executable file
29
tmux/plugins/tmux-themepack/themepack.tmux
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
theme_option="@themepack"
|
||||||
|
default_theme='basic'
|
||||||
|
|
||||||
|
get_tmux_option() {
|
||||||
|
local option="$1"
|
||||||
|
local default_value="$2"
|
||||||
|
local option_value="$(tmux show-option -gqv "$option")"
|
||||||
|
|
||||||
|
if [ -n "$option_value" ]; then
|
||||||
|
echo "$option_value"
|
||||||
|
else
|
||||||
|
echo "$default_value"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local theme="$(get_tmux_option "$theme_option" "$default_theme")"
|
||||||
|
if [ -f "$CURRENT_DIR/${theme}.tmuxtheme" ]; then
|
||||||
|
tmux source-file "$CURRENT_DIR/${theme}.tmuxtheme"
|
||||||
|
else
|
||||||
|
tmux source-file "$CURRENT_DIR/powerline/${theme}.tmuxtheme"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
9
tmux/plugins/tpm/.gitattributes
vendored
Normal file
9
tmux/plugins/tpm/.gitattributes
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# Force text files to have unix eols, so Windows/Cygwin does not break them
|
||||||
|
*.* eol=lf
|
||||||
|
|
||||||
|
# These files are unfortunately not recognized as text files so
|
||||||
|
# explicitly listing them here
|
||||||
|
tpm eol=lf
|
||||||
|
bin/* eol=lf
|
||||||
|
bindings/* eol=lf
|
||||||
|
tests/* eol=lf
|
4
tmux/plugins/tpm/.gitignore
vendored
Normal file
4
tmux/plugins/tpm/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
**/.vagrant/
|
||||||
|
run_tests
|
||||||
|
tests/run_tests_in_isolation
|
||||||
|
tests/helpers/helpers.sh
|
3
tmux/plugins/tpm/.gitmodules
vendored
Normal file
3
tmux/plugins/tpm/.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "lib/tmux-test"]
|
||||||
|
path = lib/tmux-test
|
||||||
|
url = https://github.com/tmux-plugins/tmux-test.git
|
19
tmux/plugins/tpm/.travis.yml
Normal file
19
tmux/plugins/tpm/.travis.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# generic packages and tmux
|
||||||
|
before_install:
|
||||||
|
- sudo apt-get update
|
||||||
|
- sudo apt-get install -y git-core expect
|
||||||
|
- sudo apt-get install -y python-software-properties software-properties-common
|
||||||
|
- sudo apt-get install -y libevent-dev libncurses-dev
|
||||||
|
- git clone https://github.com/tmux/tmux.git
|
||||||
|
- cd tmux
|
||||||
|
- git checkout 2.0
|
||||||
|
- sh autogen.sh
|
||||||
|
- ./configure && make && sudo make install
|
||||||
|
|
||||||
|
install:
|
||||||
|
- git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules
|
||||||
|
# manual `git clone` required for testing `tmux-test` plugin itself
|
||||||
|
- git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true
|
||||||
|
- lib/tmux-test/setup
|
||||||
|
|
||||||
|
script: ./tests/run_tests_in_isolation
|
83
tmux/plugins/tpm/CHANGELOG.md
Normal file
83
tmux/plugins/tpm/CHANGELOG.md
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
### master
|
||||||
|
- upgrade to new version of `tmux-test`
|
||||||
|
- bug: when using `emacs` copy mode, Enter does not quit screen after tpm
|
||||||
|
installation/update. Fix by making `Escape` the key for emacs mode.
|
||||||
|
- add a doc with troubleshooting instructions
|
||||||
|
- add `.gitattributes` file that forces linefeed characters (classic `\n`) as
|
||||||
|
line endings - helps with misconfigured git on windows/cygwin
|
||||||
|
- readme update: announce Cygwin support
|
||||||
|
- un-deprecate old plugin definition syntax: `set -g @tpm_plugins`
|
||||||
|
|
||||||
|
### v3.0.0, 2015-08-03
|
||||||
|
- refactor `shared_set_tpm_path_constant` function
|
||||||
|
- move all instructions to `docs/` dir
|
||||||
|
- add `bin/install_plugins` cli executable script
|
||||||
|
- improved test runner function
|
||||||
|
- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test)
|
||||||
|
framework
|
||||||
|
- add `bin/update_plugins` cli executable script
|
||||||
|
- refactor test `expect` scripts, make them simpler and ensure they properly
|
||||||
|
assert expectations
|
||||||
|
- refactor code that sets 'TMUX_PLUGIN_MANAGER_PATH' global env var
|
||||||
|
- stop using global variable for 'tpm path'
|
||||||
|
- support defining plugins via `set -g @plugin` in sourced files as well
|
||||||
|
|
||||||
|
### v2.0.0, 2015-07-07
|
||||||
|
- enable overriding default key bindings
|
||||||
|
- start using `C-c` to clear screen
|
||||||
|
- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil)
|
||||||
|
- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil)
|
||||||
|
- revert back to using `-g` flag in new plugin definition syntax
|
||||||
|
- permit leading whitespace with new plugin definition syntax (thanks @chilicuil)
|
||||||
|
- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash
|
||||||
|
- ensure old/deprecated plugin syntax `set -g @tpm_plugins` works alongside new
|
||||||
|
`set -g @plugin` syntax
|
||||||
|
|
||||||
|
### v1.2.2, 2015-02-08
|
||||||
|
- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update`
|
||||||
|
to ensure git does not prompt for username/password in any case
|
||||||
|
|
||||||
|
### v1.2.1, 2014-11-21
|
||||||
|
- change the way plugin name is expanded. It now uses the http username
|
||||||
|
and password by default, like this: `https://git::@github.com/`. This prevents
|
||||||
|
username and password prompt (and subsequently tmux install hanging) with old
|
||||||
|
git versions. Fixes #7.
|
||||||
|
|
||||||
|
### v1.2.0, 2014-11-20
|
||||||
|
- refactor tests so they can be used on travis
|
||||||
|
- add travis.yml, add travis badge to the readme
|
||||||
|
|
||||||
|
### v1.1.0, 2014-11-19
|
||||||
|
- if the plugin is not downloaded do not source it
|
||||||
|
- remove `PLUGINS.md`, an obsolete list of plugins
|
||||||
|
- update readme with instructions about uninstalling plugins
|
||||||
|
- tilde char and `$HOME` in `TMUX_SHARED_MANAGER_PATH` couldn't be used because
|
||||||
|
they are just plain strings. Fixing the problem by manually expanding them.
|
||||||
|
- bugfix: fragile `*.tmux` file globbing (@majutsushi)
|
||||||
|
|
||||||
|
### v1.0.0, 2014-08-05
|
||||||
|
- update readme because of github organization change to
|
||||||
|
[tmux-plugins](https://github.com/tmux-plugins)
|
||||||
|
- update tests to pass
|
||||||
|
- update README to suggest different first plugin
|
||||||
|
- update list of plugins in the README
|
||||||
|
- remove README 'about' section
|
||||||
|
- move key binding to the main file. Delete `key_binding.sh`.
|
||||||
|
- rename `display_message` -> `echo_message`
|
||||||
|
- installing plugins installs just new plugins. Already installed plugins aren't
|
||||||
|
updated.
|
||||||
|
- add 'update plugin' binding and functionality
|
||||||
|
- add test for updating a plugin
|
||||||
|
|
||||||
|
### v0.0.2, 2014-07-17
|
||||||
|
- run all *.tmux plugin files as executables
|
||||||
|
- fix all redirects to /dev/null
|
||||||
|
- fix bug: TPM shared path is created before sync (cloning plugins from github
|
||||||
|
is done)
|
||||||
|
- add test suite running in Vagrant
|
||||||
|
- add Tmux version check. `TPM` won't run if Tmux version is less than 1.9.
|
||||||
|
|
||||||
|
### v0.0.1, 2014-05-21
|
||||||
|
- get TPM up and running
|
2
tmux/plugins/tpm/HOW_TO_PLUGIN.md
Normal file
2
tmux/plugins/tpm/HOW_TO_PLUGIN.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Instructions moved to
|
||||||
|
[docs/how_to_create_plugin.md](docs/how_to_create_plugin.md).
|
20
tmux/plugins/tpm/LICENSE.md
Normal file
20
tmux/plugins/tpm/LICENSE.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
MIT license
|
||||||
|
Copyright (C) 2014 Bruno Sutic
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||||
|
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
113
tmux/plugins/tpm/README.md
Normal file
113
tmux/plugins/tpm/README.md
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
# Tmux Plugin Manager
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/tmux-plugins/tpm.svg?branch=master)](https://travis-ci.org/tmux-plugins/tpm)
|
||||||
|
|
||||||
|
Installs and loads `tmux` plugins.
|
||||||
|
|
||||||
|
Tested and working on Linux, OSX, and Cygwin.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Requirements: `tmux` version 1.9 (or higher), `git`, `bash`.
|
||||||
|
|
||||||
|
Clone TPM:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
```
|
||||||
|
|
||||||
|
Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf`
|
||||||
|
works too):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List of plugins
|
||||||
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
|
||||||
|
# Other examples:
|
||||||
|
# set -g @plugin 'github_username/plugin_name'
|
||||||
|
# set -g @plugin 'git@github.com/user/plugin'
|
||||||
|
# set -g @plugin 'git@bitbucket.com/user/plugin'
|
||||||
|
|
||||||
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
run -b '~/.tmux/plugins/tpm/tpm'
|
||||||
|
```
|
||||||
|
|
||||||
|
Reload TMUX environment so TPM is sourced:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# type this in terminal if tmux is already running
|
||||||
|
$ tmux source ~/.tmux.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it!
|
||||||
|
|
||||||
|
### Installing plugins
|
||||||
|
|
||||||
|
1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'`
|
||||||
|
2. Press `prefix` + <kbd>I</kbd> (capital i, as in **I**nstall) to fetch the plugin.
|
||||||
|
|
||||||
|
You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
|
||||||
|
|
||||||
|
### Uninstalling plugins
|
||||||
|
|
||||||
|
1. Remove (or comment out) plugin from the list.
|
||||||
|
2. Press `prefix` + <kbd>alt</kbd> + <kbd>u</kbd> (lowercase u as in **u**ninstall) to remove the plugin.
|
||||||
|
|
||||||
|
All the plugins are installed to `~/.tmux/plugins/` so alternatively you can
|
||||||
|
find plugin directory there and remove it.
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
|
||||||
|
`prefix` + <kbd>I</kbd>
|
||||||
|
- Installs new plugins from GitHub or any other git repository
|
||||||
|
- Refreshes TMUX environment
|
||||||
|
|
||||||
|
`prefix` + <kbd>U</kbd>
|
||||||
|
- updates plugin(s)
|
||||||
|
|
||||||
|
`prefix` + <kbd>alt</kbd> + <kbd>u</kbd>
|
||||||
|
- remove/uninstall plugins not on the plugin list
|
||||||
|
|
||||||
|
### More plugins
|
||||||
|
|
||||||
|
For more plugins, check [here](https://github.com/tmux-plugins).
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
|
||||||
|
- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions
|
||||||
|
|
||||||
|
More advanced features and instructions, regular users probably do not need
|
||||||
|
this:
|
||||||
|
|
||||||
|
- [How to create a plugin](docs/how_to_create_plugin.md). It's easy.
|
||||||
|
- [Managing plugins via the command line](docs/managing_plugins_via_cmd_line.md)
|
||||||
|
- [Changing plugins install dir](docs/changing_plugins_install_dir.md)
|
||||||
|
- [Automatic TPM installation on a new machine](docs/automatic_tpm_installation.md)
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm).
|
||||||
|
|
||||||
|
When run locally, [vagrant](https://www.vagrantup.com/) is required.
|
||||||
|
Run tests with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# within project directory
|
||||||
|
$ ./run_tests
|
||||||
|
```
|
||||||
|
|
||||||
|
### Other goodies
|
||||||
|
|
||||||
|
- [tmux-copycat](https://github.com/tmux-plugins/tmux-copycat) - a plugin for
|
||||||
|
regex searches in tmux and fast match selection
|
||||||
|
- [tmux-yank](https://github.com/tmux-plugins/tmux-yank) - enables copying
|
||||||
|
highlighted text to system clipboard
|
||||||
|
- [tmux-open](https://github.com/tmux-plugins/tmux-open) - a plugin for quickly
|
||||||
|
opening highlighted file or a url
|
||||||
|
- [tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) - automatic
|
||||||
|
restoring and continuous saving of tmux env
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
[MIT](LICENSE.md)
|
14
tmux/plugins/tpm/bin/clean_plugins
Executable file
14
tmux/plugins/tpm/bin/clean_plugins
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Script intended for use via the command line.
|
||||||
|
#
|
||||||
|
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
||||||
|
# but does not need to be started in order to run this script.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
"$SCRIPTS_DIR/clean_plugins.sh" # has correct exit code
|
||||||
|
}
|
||||||
|
main
|
14
tmux/plugins/tpm/bin/install_plugins
Executable file
14
tmux/plugins/tpm/bin/install_plugins
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Script intended for use via the command line.
|
||||||
|
#
|
||||||
|
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
||||||
|
# but does not need to be started in order to run this script.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
"$SCRIPTS_DIR/install_plugins.sh" # has correct exit code
|
||||||
|
}
|
||||||
|
main
|
24
tmux/plugins/tpm/bin/update_plugins
Executable file
24
tmux/plugins/tpm/bin/update_plugins
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Script intended for use via the command line.
|
||||||
|
#
|
||||||
|
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
||||||
|
# but does not need to be started in order to run this script.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
PROGRAM_NAME="$0"
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "usage:"
|
||||||
|
echo " $PROGRAM_NAME all update all plugins"
|
||||||
|
echo " $PROGRAM_NAME tmux-foo update plugin 'tmux-foo'"
|
||||||
|
echo " $PROGRAM_NAME tmux-bar tmux-baz update multiple plugins"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
main() {
|
||||||
|
"$SCRIPTS_DIR/update_plugin.sh" --shell-echo "$*" # has correct exit code
|
||||||
|
}
|
||||||
|
main "$*"
|
||||||
|
|
19
tmux/plugins/tpm/bindings/clean_plugins
Executable file
19
tmux/plugins/tpm/bindings/clean_plugins
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tmux key-binding script.
|
||||||
|
# Scripts intended to be used via the command line are in `bin/` directory.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
source "$HELPERS_DIR/tmux_utils.sh"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
reload_tmux_environment
|
||||||
|
"$SCRIPTS_DIR/clean_plugins.sh" --tmux-echo >/dev/null 2>&1
|
||||||
|
reload_tmux_environment
|
||||||
|
end_message
|
||||||
|
}
|
||||||
|
main
|
19
tmux/plugins/tpm/bindings/install_plugins
Executable file
19
tmux/plugins/tpm/bindings/install_plugins
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tmux key-binding script.
|
||||||
|
# Scripts intended to be used via the command line are in `bin/` directory.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
source "$HELPERS_DIR/tmux_utils.sh"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
reload_tmux_environment
|
||||||
|
"$SCRIPTS_DIR/install_plugins.sh" --tmux-echo >/dev/null 2>&1
|
||||||
|
reload_tmux_environment
|
||||||
|
end_message
|
||||||
|
}
|
||||||
|
main
|
49
tmux/plugins/tpm/bindings/update_plugins
Executable file
49
tmux/plugins/tpm/bindings/update_plugins
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tmux key-binding script.
|
||||||
|
# Scripts intended to be used via the command line are in `bin/` directory.
|
||||||
|
|
||||||
|
# This script:
|
||||||
|
# - shows a list of installed plugins
|
||||||
|
# - starts a prompt to enter the name of the plugin that will be updated
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
||||||
|
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
source "$HELPERS_DIR/tmux_utils.sh"
|
||||||
|
|
||||||
|
display_plugin_update_list() {
|
||||||
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
|
tmux_echo "Installed plugins:"
|
||||||
|
tmux_echo ""
|
||||||
|
|
||||||
|
for plugin in $plugins; do
|
||||||
|
# displaying only installed plugins
|
||||||
|
if plugin_already_installed "$plugin"; then
|
||||||
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
tmux_echo " $plugin_name"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
tmux_echo ""
|
||||||
|
tmux_echo "Type plugin name to update it."
|
||||||
|
tmux_echo ""
|
||||||
|
tmux_echo "- \"all\" - updates all plugins"
|
||||||
|
tmux_echo "- ENTER - cancels"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_plugin_prompt() {
|
||||||
|
tmux command-prompt -p 'plugin update:' " \
|
||||||
|
send-keys C-c; \
|
||||||
|
run-shell '$SCRIPTS_DIR/update_plugin_prompt_handler.sh %1'"
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
reload_tmux_environment
|
||||||
|
display_plugin_update_list
|
||||||
|
update_plugin_prompt
|
||||||
|
}
|
||||||
|
main
|
12
tmux/plugins/tpm/docs/automatic_tpm_installation.md
Normal file
12
tmux/plugins/tpm/docs/automatic_tpm_installation.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# Automatic tpm installation
|
||||||
|
|
||||||
|
One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed.
|
||||||
|
|
||||||
|
If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`:
|
||||||
|
|
||||||
|
```
|
||||||
|
if "test ! -d ~/.tmux/plugins/tpm" \
|
||||||
|
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
|
||||||
|
```
|
||||||
|
|
||||||
|
This useful tip was submitted by @acr4 and narfman0.
|
14
tmux/plugins/tpm/docs/changing_plugins_install_dir.md
Normal file
14
tmux/plugins/tpm/docs/changing_plugins_install_dir.md
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Changing plugins install dir
|
||||||
|
|
||||||
|
By default, TPM installs plugins to `~/.tmux/plugins/`.
|
||||||
|
|
||||||
|
You can change the install path by putting this in `.tmux.conf`:
|
||||||
|
|
||||||
|
set-environment -g TMUX_PLUGIN_MANAGER_PATH '/some/other/path/'
|
||||||
|
|
||||||
|
Tmux plugin manager initialization in `.tmux.conf` should also be updated:
|
||||||
|
|
||||||
|
# initializes TMUX plugin manager in a new path
|
||||||
|
run /some/other/path/tpm/tpm
|
||||||
|
|
||||||
|
Please make sure that the `run` line is at the very bottom of `.tmux.conf`.
|
108
tmux/plugins/tpm/docs/how_to_create_plugin.md
Normal file
108
tmux/plugins/tpm/docs/how_to_create_plugin.md
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
# How to create Tmux plugins
|
||||||
|
|
||||||
|
Creating a new plugin is easy.
|
||||||
|
|
||||||
|
For demonstration purposes we'll create a simple plugin that lists all
|
||||||
|
installed TPM plugins. Yes, a plugin that lists plugins :) We'll bind that to
|
||||||
|
`prefix + T`.
|
||||||
|
|
||||||
|
The source code for this example plugin can be found
|
||||||
|
[here](https://github.com/tmux-plugins/tmux-example-plugin).
|
||||||
|
|
||||||
|
### 1. create a new git project
|
||||||
|
|
||||||
|
TPM depends on git for downloading and updating plugins.
|
||||||
|
|
||||||
|
To create a new git project:
|
||||||
|
|
||||||
|
$ mkdir tmux_my_plugin
|
||||||
|
$ cd tmux_my_plugin
|
||||||
|
$ git init
|
||||||
|
|
||||||
|
### 2. create a `*.tmux` plugin run file
|
||||||
|
|
||||||
|
When it sources a plugin, TPM executes all `*.tmux` files in your plugins'
|
||||||
|
directory. That's how plugins are run.
|
||||||
|
|
||||||
|
Create a plugin run file in plugin directory:
|
||||||
|
|
||||||
|
$ touch my_plugin.tmux
|
||||||
|
$ chmod u+x my_plugin.tmux
|
||||||
|
|
||||||
|
You can have more than one `*.tmux` file, and all will get executed. However, usually
|
||||||
|
you'll need just one.
|
||||||
|
|
||||||
|
### 3. create a plugin key binding
|
||||||
|
|
||||||
|
We want the behavior of the plugin to trigger when a user hits `prefix + T`.
|
||||||
|
|
||||||
|
Key `T` is chosen because:
|
||||||
|
- it's "kind of" a mnemonic for `TPM`
|
||||||
|
- the key is not used by Tmux natively. Tmux man page, KEY BINDINGS section
|
||||||
|
contains a list of all the bindings Tmux uses. There's plenty of unused keys
|
||||||
|
and we don't want to override any of Tmux default key bindings.
|
||||||
|
|
||||||
|
Open the plugin run file in your favorite text editor:
|
||||||
|
|
||||||
|
$ vim my_plugin.tmux
|
||||||
|
# or
|
||||||
|
$ subl my_plugin.tmux
|
||||||
|
|
||||||
|
Put the following content in the file:
|
||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh"
|
||||||
|
|
||||||
|
As you can see, plugin run file is a simple bash script that sets up the binding.
|
||||||
|
|
||||||
|
When pressed, `prefix + T` will execute another shell script:
|
||||||
|
`tmux_list_plugins.sh`. That script should be in `scripts/` directory -
|
||||||
|
relative to the plugin run file.
|
||||||
|
|
||||||
|
|
||||||
|
### 4. listing plugins
|
||||||
|
|
||||||
|
Now that we have the binding, let's create a script that's invoked with
|
||||||
|
`prefix + T`.
|
||||||
|
|
||||||
|
$ mkdir scripts
|
||||||
|
$ touch scripts/tmux_list_plugins.sh
|
||||||
|
$ chmod u+x scripts/tmux_list_plugins.sh
|
||||||
|
|
||||||
|
And here's the script content:
|
||||||
|
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# fetching the directory where plugins are installed
|
||||||
|
plugin_path="$(tmux show-env -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)"
|
||||||
|
|
||||||
|
# listing installed plugins
|
||||||
|
ls -1 "$plugin_path"
|
||||||
|
|
||||||
|
### 5. try it out
|
||||||
|
|
||||||
|
To see if this works, execute the plugin run file:
|
||||||
|
|
||||||
|
$ ./my_plugin.tmux
|
||||||
|
|
||||||
|
That should set up the key binding. Now hit `prefix + T` and see if it works.
|
||||||
|
|
||||||
|
### 6. publish the plugin
|
||||||
|
|
||||||
|
When everything is ready, push the plugin to an online git repository,
|
||||||
|
preferably Github.
|
||||||
|
|
||||||
|
Other users can install your plugin by just adding plugin git URL to the
|
||||||
|
`@plugin` list in their `.tmux.conf`.
|
||||||
|
|
||||||
|
If the plugin is on Github, your users will be able to use the shorthand of
|
||||||
|
`github_username/repository`.
|
||||||
|
|
||||||
|
### Conclusion
|
||||||
|
|
||||||
|
Hopefully, that was easy. As you can see, it's mostly shell scripting.
|
||||||
|
|
||||||
|
You can use other scripting languages (ruby, python etc) but plain old shell
|
||||||
|
is preferred because of portability.
|
36
tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md
Normal file
36
tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
# Managing plugins via the command line
|
||||||
|
|
||||||
|
Aside from tmux key bindings, TPM provides shell interface for managing plugins
|
||||||
|
via scripts located in [bin/](../bin/) directory.
|
||||||
|
|
||||||
|
Tmux does not need to be started in order to run scripts (but it's okay if it
|
||||||
|
is). If you [changed tpm install dir](../docs/changing_plugins_install_dir.md)
|
||||||
|
in `.tmux.conf` that should work fine too.
|
||||||
|
|
||||||
|
Prerequisites:
|
||||||
|
|
||||||
|
- tmux installed on the system (doh)
|
||||||
|
- `.tmux.conf` set up for TPM
|
||||||
|
|
||||||
|
### Installing plugins
|
||||||
|
|
||||||
|
As usual, plugins need to be specified in `.tmux.conf`. Run the following
|
||||||
|
command to install plugins:
|
||||||
|
|
||||||
|
~/.tmux/plugins/tpm/bin/install_plugins
|
||||||
|
|
||||||
|
### Updating plugins
|
||||||
|
|
||||||
|
To update all installed plugins:
|
||||||
|
|
||||||
|
~/.tmux/plugins/tpm/bin/update_plugins all
|
||||||
|
|
||||||
|
or update a single plugin:
|
||||||
|
|
||||||
|
~/.tmux/plugins/tpm/bin/update_plugins tmux-sensible
|
||||||
|
|
||||||
|
### Removing plugins
|
||||||
|
|
||||||
|
To remove plugins not on the plugin list:
|
||||||
|
|
||||||
|
~/.tmux/plugins/tpm/bin/clean_plugins
|
96
tmux/plugins/tpm/docs/tpm_not_working.md
Normal file
96
tmux/plugins/tpm/docs/tpm_not_working.md
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
# Help, tpm not working!
|
||||||
|
|
||||||
|
Here's the list of issues users had with `tpm`:
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even
|
||||||
|
defined.
|
||||||
|
|
||||||
|
Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22)
|
||||||
|
|
||||||
|
- Do you have required `tmux` version to run `tpm`?<br/>
|
||||||
|
Check `tmux` version with `$ tmux -V` command and make sure it's higher or
|
||||||
|
equal to the required version for `tpm` as stated in the readme.
|
||||||
|
|
||||||
|
- ZSH tmux plugin might be causing issues.<br/>
|
||||||
|
If you have it installed, try disabling it and see if `tpm` works then.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf`
|
||||||
|
to start Tmux and for some reason plugins aren't loaded!?
|
||||||
|
|
||||||
|
Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57)
|
||||||
|
|
||||||
|
`tpm` has a known issue when using custom config file with `-f` option.
|
||||||
|
The solution is to use alternative plugin definition syntax. Here are the steps
|
||||||
|
to make it work:
|
||||||
|
|
||||||
|
1. remove all `set -g @plugin` lines from tmux config file
|
||||||
|
2. in the config file define the plugins in the following way:
|
||||||
|
|
||||||
|
# List of plugins
|
||||||
|
set -g @tpm_plugins ' \
|
||||||
|
tmux-plugins/tpm \
|
||||||
|
tmux-plugins/tmux-sensible \
|
||||||
|
tmux-plugins/tmux-resurrect \
|
||||||
|
'
|
||||||
|
|
||||||
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
run '~/.tmux/plugins/tpm/tpm'
|
||||||
|
|
||||||
|
3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf`
|
||||||
|
|
||||||
|
The plugins should now be working.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Weird sequence of characters show up when installing or updating plugins
|
||||||
|
|
||||||
|
Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25)
|
||||||
|
|
||||||
|
- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim)
|
||||||
|
plugin. Uninstall it and see if things work.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> "failed to connect to server" error when sourcing .tmux.conf
|
||||||
|
|
||||||
|
Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48)
|
||||||
|
|
||||||
|
- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin)
|
||||||
|
|
||||||
|
Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81)
|
||||||
|
|
||||||
|
This issue is most likely caused by Windows line endings. For example, if you
|
||||||
|
have git's `core.autocrlf` option set to `true`, git will automatically convert
|
||||||
|
all the files to Windows line endings which might cause a problem.
|
||||||
|
|
||||||
|
The solution is to convert all line ending to Unix newline characters. This
|
||||||
|
command handles that for all files under `.tmux/` dir (skips `.git`
|
||||||
|
subdirectories):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix
|
||||||
|
```
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew)
|
||||||
|
|
||||||
|
Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67)
|
||||||
|
|
||||||
|
This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in `/usr/local/bin` will not be found.
|
||||||
|
|
||||||
|
The solution is to insert the following line:
|
||||||
|
|
||||||
|
```
|
||||||
|
set-environment -g PATH "/usr/local/bin:/bin:/usr/bin"
|
||||||
|
```
|
||||||
|
|
||||||
|
before any `run-shell`/`run` commands in `~/.tmux.conf`.
|
2
tmux/plugins/tpm/lib/tmux-test/.gitignore
vendored
Normal file
2
tmux/plugins/tpm/lib/tmux-test/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
.vagrant/
|
||||||
|
lib/
|
19
tmux/plugins/tpm/lib/tmux-test/.travis.yml
Normal file
19
tmux/plugins/tpm/lib/tmux-test/.travis.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# generic packages and tmux
|
||||||
|
before_install:
|
||||||
|
- sudo apt-get update
|
||||||
|
- sudo apt-get install -y git-core expect
|
||||||
|
- sudo apt-get install -y python-software-properties software-properties-common
|
||||||
|
- sudo apt-get install -y libevent-dev libncurses-dev
|
||||||
|
- git clone https://github.com/tmux/tmux.git
|
||||||
|
- cd tmux
|
||||||
|
- git checkout 2.5
|
||||||
|
- sh autogen.sh
|
||||||
|
- ./configure && make && sudo make install
|
||||||
|
|
||||||
|
install:
|
||||||
|
- git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules
|
||||||
|
# manual `git clone` required for testing `tmux-test` plugin itself
|
||||||
|
- git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true
|
||||||
|
- lib/tmux-test/setup
|
||||||
|
|
||||||
|
script: ./tests/run_tests_in_isolation
|
46
tmux/plugins/tpm/lib/tmux-test/CHANGELOG.md
Normal file
46
tmux/plugins/tpm/lib/tmux-test/CHANGELOG.md
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
### master
|
||||||
|
- move `setup` task to `.travis.yml` for travis tests
|
||||||
|
- "merge" travis.yml and travis_for_plugins.yml files (no need to keep em
|
||||||
|
separate)
|
||||||
|
- add more useful helper functions
|
||||||
|
- remove tmux-test repo as a submodule from self, this causes issues with
|
||||||
|
`$ git submodule update --recursive --init` command that some users use for
|
||||||
|
managing other plugins
|
||||||
|
- add new helper `teardown_helper`
|
||||||
|
- add `run_tests` helper
|
||||||
|
- change CLI syntax for choosing vagrant machine to run the tests on
|
||||||
|
- enable running just a single test via `run_tests` cli interface
|
||||||
|
- add `--keep-running` cli option to continue running vagrant after the tests
|
||||||
|
are done executing
|
||||||
|
- start using tmux 2.0 for tests
|
||||||
|
- use tmux 2.5 for tests
|
||||||
|
|
||||||
|
### v0.2.0, 2015-02-22
|
||||||
|
- `setup` script gitignores `tests/helpers.sh`
|
||||||
|
- move `tests/helpers.sh` to `tests/helpers/helpers.sh`
|
||||||
|
- `setup` undo removes added lines from gitignore file
|
||||||
|
|
||||||
|
### v0.1.0, 2015-02-22
|
||||||
|
- changes so that 'tmux-test' can be included with tmux plugins
|
||||||
|
- do not gitignore submodules directory
|
||||||
|
- add installation and usage instructions
|
||||||
|
- copy `.travis.yml` to the project root when running `setup` script
|
||||||
|
- add a brief mention of travis CI to the readme
|
||||||
|
- add test helpers
|
||||||
|
- `setup` script symlinks helpers file to `tests/` directory
|
||||||
|
- `setup` script can undo most of its actions
|
||||||
|
- add a tmux scripting test
|
||||||
|
- `tmux-test` uses `tmux-test` to test itself
|
||||||
|
- update `tmux-test` submodule
|
||||||
|
- a different `travis.yml` for `tmux-test` and for plugins
|
||||||
|
|
||||||
|
### v0.0.1, 2015-02-21
|
||||||
|
- git init
|
||||||
|
- add vagrant provisioning scripts for ubuntu and debian
|
||||||
|
- add a ".travis.yml" file
|
||||||
|
- generic "run_tests" script
|
||||||
|
- "run_tests_in_isolation" script
|
||||||
|
- add "Vagrantfile"
|
||||||
|
- enable passing VM names as arguments to "run_tests" script
|
19
tmux/plugins/tpm/lib/tmux-test/LICENSE.md
Normal file
19
tmux/plugins/tpm/lib/tmux-test/LICENSE.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (C) Bruno Sutic
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||||
|
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
131
tmux/plugins/tpm/lib/tmux-test/README.md
Normal file
131
tmux/plugins/tpm/lib/tmux-test/README.md
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
# tmux-test
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/tmux-plugins/tmux-test.png?branch=master)](https://travis-ci.org/tmux-plugins/tmux-test)
|
||||||
|
|
||||||
|
A small framework for isolated testing of tmux plugins. Isolation is achieved by
|
||||||
|
running the tests in `Vagrant`. Works on [travis](travis-ci.org) too.
|
||||||
|
|
||||||
|
Extracted from [tmux plugin manager](https://github.com/tmux-plugins/tpm) and
|
||||||
|
[tmux-copycat](https://github.com/tmux-plugins/tmux-copycat).
|
||||||
|
|
||||||
|
Dependencies: `Vagrant` (not required when running on travis).
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
Let's say you made tmux plugin with the following file hierarchy:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/tmux-plugin
|
||||||
|
|-- plugin.tmux
|
||||||
|
`-- scripts
|
||||||
|
`-- plugin_script.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
From your project root directory (tmux-plugin/) execute the following shell
|
||||||
|
command to fetch `tmux-test` and add it as a submodule:
|
||||||
|
|
||||||
|
$ git submodule add https://github.com/tmux-plugins/tmux-test.git lib/tmux-test
|
||||||
|
|
||||||
|
Run the `setup` script:
|
||||||
|
|
||||||
|
$ lib/tmux-test/setup
|
||||||
|
|
||||||
|
The project directory will now look like this (additions have comments):
|
||||||
|
|
||||||
|
```text
|
||||||
|
/tmux-plugin
|
||||||
|
|-- plugin.tmux
|
||||||
|
|-- run_tests # symlink, gitignored
|
||||||
|
|-- .gitignore # 2 lines appended to gitignore
|
||||||
|
|-- .travis.yml # added
|
||||||
|
|-- lib/tmux-test/ # git submodule
|
||||||
|
|-- scripts
|
||||||
|
| `-- plugin_script.sh
|
||||||
|
`-- tests # dir to put the tests in
|
||||||
|
`-- run_tests_in_isolation.sh # symlink, gitignored
|
||||||
|
`-- helpers
|
||||||
|
`-- helpers.sh # symlinked bash helpers, gitignored
|
||||||
|
```
|
||||||
|
|
||||||
|
`tmux-test` is now set up. You are ok to commit the additions to the repo.
|
||||||
|
|
||||||
|
### Writing and running tests
|
||||||
|
|
||||||
|
A test is any executable with a name starting with `test_` in `tests/`
|
||||||
|
directory.
|
||||||
|
|
||||||
|
Now that you installed `tmux-test` let's create an example test.
|
||||||
|
|
||||||
|
- create a `tests/test_example.sh` file with the following content (it's a
|
||||||
|
`bash` script but it can be any executable):
|
||||||
|
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# bash helpers provided by 'tmux-test'
|
||||||
|
source $CURRENT_DIR/helpers/helpers.sh
|
||||||
|
|
||||||
|
# installs plugin from current repo in Vagrant (or on Travis)
|
||||||
|
install_tmux_plugin_under_test_helper
|
||||||
|
|
||||||
|
# start tmux in background (plugin under test is sourced)
|
||||||
|
tmux new -d
|
||||||
|
|
||||||
|
# get first session name
|
||||||
|
session_name="$(tmux list-sessions -F "#{session_name}")"
|
||||||
|
|
||||||
|
# fail the test if first session name is not "0"
|
||||||
|
if [ "$session_name" == "0" ]; then
|
||||||
|
# fail_helper is also provided by 'tmux-test'
|
||||||
|
fail_helper "First session name is not '0' by default"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sets the right script exit code ('tmux-test' helper)
|
||||||
|
exit_helper
|
||||||
|
|
||||||
|
- make the test file executable with `$ chmod +x tests/test_example.sh`
|
||||||
|
- run the test by executing `./run_tests` from the project root directory
|
||||||
|
- the first invocation might take some time because Vagrant's ubuntu virtual
|
||||||
|
machine is downloading. You should see `Success, tests pass!` message when it's
|
||||||
|
done.
|
||||||
|
|
||||||
|
Check out more example test scripts in this project's [tests/ directory](tests/).
|
||||||
|
|
||||||
|
### Continuous integration
|
||||||
|
|
||||||
|
The setup script (`lib/tmux-test/setup`) added a `.travis.yml` file to the
|
||||||
|
project root. To setup continuous integration, just add/enable the project on
|
||||||
|
[travis](travis-ci.org).
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
- The `tests/` directory for tests and `lib/tmux-test/` for cloning `tmux-test`
|
||||||
|
into cannot be changed currently
|
||||||
|
- Don't run `tests/run_tests_in_isolation` script on your local development
|
||||||
|
environment. That's an internal test runner meant to be executed in an
|
||||||
|
isolated environment like `vagrant` or `travis`.<br/>
|
||||||
|
Use `./run_tests` script.
|
||||||
|
- You can use `KEEP_RUNNING=true ./run_tests` for faster test running cycle.
|
||||||
|
If this case `Vagrant` will keep running even after the tests are done.
|
||||||
|
- You can use `VAGRANT_CWD=lib/tmux-test/ vagrant ssh ubuntu` for ssh login to
|
||||||
|
`Vagrant`.
|
||||||
|
|
||||||
|
### Running `tmux-test` framework tests
|
||||||
|
|
||||||
|
`tmux-test` uses itself to test itself. To run framework tests:
|
||||||
|
|
||||||
|
- clone this project `$ git clone git@github.com:tmux-plugins/tmux-test.git`
|
||||||
|
- `$ cd tmux-test`
|
||||||
|
- run `$ ./run_framework_tests`
|
||||||
|
|
||||||
|
### Other goodies
|
||||||
|
|
||||||
|
- [tmux-copycat](https://github.com/tmux-plugins/tmux-copycat) - a plugin for
|
||||||
|
regex searches in tmux and fast match selection
|
||||||
|
- [tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) - automatic
|
||||||
|
restoring and continuous saving of tmux env
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
[MIT](LICENSE.md)
|
17
tmux/plugins/tpm/lib/tmux-test/Vagrantfile
vendored
Normal file
17
tmux/plugins/tpm/lib/tmux-test/Vagrantfile
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
VAGRANTFILE_API_VERSION = "2"
|
||||||
|
|
||||||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
|
||||||
|
config.vm.synced_folder "../../", "/vagrant"
|
||||||
|
|
||||||
|
config.vm.define :ubuntu do |ubuntu|
|
||||||
|
ubuntu.vm.box = "hashicorp/precise64"
|
||||||
|
ubuntu.vm.provision "shell", path: "vagrant_ubuntu_provisioning.sh"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define :centos do |centos|
|
||||||
|
centos.vm.box = "chef/centos-6.5"
|
||||||
|
centos.vm.provision "shell", path: "vagrant_centos_provisioning.sh"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
17
tmux/plugins/tpm/lib/tmux-test/run_framework_tests
Executable file
17
tmux/plugins/tpm/lib/tmux-test/run_framework_tests
Executable file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This file is used to run "tmux-test" framework tests.
|
||||||
|
|
||||||
|
# "setup" script is needed to run the tests, but it overrides some working dir
|
||||||
|
# files. To address that, "setup" is run before the tests and its actions are
|
||||||
|
# undone after.
|
||||||
|
|
||||||
|
main() {
|
||||||
|
git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test
|
||||||
|
lib/tmux-test/setup
|
||||||
|
./run_tests
|
||||||
|
local exit_value=$?
|
||||||
|
lib/tmux-test/setup "undo"
|
||||||
|
exit "$exit_value"
|
||||||
|
}
|
||||||
|
main
|
93
tmux/plugins/tpm/lib/tmux-test/setup
Executable file
93
tmux/plugins/tpm/lib/tmux-test/setup
Executable file
|
@ -0,0 +1,93 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# invoke this script from your projects root directory
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# pass "undo" as a script arg to undo most of the setup actions
|
||||||
|
UNDO_SETUP="$1"
|
||||||
|
undo() {
|
||||||
|
[ "$UNDO_SETUP" == "undo" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
restore() {
|
||||||
|
local file="$1"
|
||||||
|
rm -f "$file"
|
||||||
|
git checkout -- "$file" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
gitignore() {
|
||||||
|
local file="$1"
|
||||||
|
grep -q "^${file}$" .gitignore 2>/dev/null || echo "$file" >> .gitignore
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_from_gitignore() {
|
||||||
|
local file="$1"
|
||||||
|
local escaped_filename="$(echo "$file" | sed "s,/,\\\/,g")"
|
||||||
|
sed -i"" "/^${escaped_filename}$/d" .gitignore
|
||||||
|
}
|
||||||
|
|
||||||
|
add_files_to_gitignore() {
|
||||||
|
if ! undo; then
|
||||||
|
gitignore "run_tests"
|
||||||
|
gitignore "tests/run_tests_in_isolation"
|
||||||
|
gitignore "tests/helpers/helpers.sh"
|
||||||
|
else
|
||||||
|
remove_from_gitignore "run_tests"
|
||||||
|
remove_from_gitignore "tests/run_tests_in_isolation"
|
||||||
|
remove_from_gitignore "tests/helpers/helpers.sh"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink_user_test_runner() {
|
||||||
|
local file="run_tests"
|
||||||
|
if ! undo; then
|
||||||
|
ln -sf "lib/tmux-test/${file}" "$file"
|
||||||
|
else
|
||||||
|
restore "$file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_directory_for_tests() {
|
||||||
|
if ! undo; then
|
||||||
|
mkdir -p tests/helpers/
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink_internal_test_runner() {
|
||||||
|
local file="tests/run_tests_in_isolation"
|
||||||
|
if ! undo; then
|
||||||
|
ln -sf "../lib/tmux-test/${file}" "$file"
|
||||||
|
else
|
||||||
|
restore "$file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink_test_helpers() {
|
||||||
|
local file="tests/helpers/helpers.sh"
|
||||||
|
if ! undo; then
|
||||||
|
ln -sf "../../lib/tmux-test/${file}" "$file"
|
||||||
|
else
|
||||||
|
restore "$file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_travis_yml() {
|
||||||
|
local file=".travis.yml"
|
||||||
|
if ! undo; then
|
||||||
|
cp "lib/tmux-test/${file}" "$file"
|
||||||
|
else
|
||||||
|
restore "$file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
add_files_to_gitignore
|
||||||
|
symlink_user_test_runner
|
||||||
|
create_directory_for_tests
|
||||||
|
symlink_internal_test_runner
|
||||||
|
symlink_test_helpers
|
||||||
|
copy_travis_yml
|
||||||
|
}
|
||||||
|
main
|
||||||
|
|
68
tmux/plugins/tpm/lib/tmux-test/tests/helpers/helpers.sh
Normal file
68
tmux/plugins/tpm/lib/tmux-test/tests/helpers/helpers.sh
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
# This file is a symlink from 'tmux-test' plugin.
|
||||||
|
# You probably don't want to edit it.
|
||||||
|
|
||||||
|
|
||||||
|
# Global variable that keeps the value of test status (success/fail).
|
||||||
|
# Suggested usage is via `fail_helper` and `exit_helper` functions.
|
||||||
|
TEST_STATUS="success"
|
||||||
|
|
||||||
|
# PRIVATE FUNCTIONS
|
||||||
|
|
||||||
|
_clone_the_plugin() {
|
||||||
|
local plugin_path="${HOME}/.tmux/plugins/tmux-plugin-under-test/"
|
||||||
|
rm -rf "$plugin_path"
|
||||||
|
git clone --recursive "${CURRENT_DIR}/../" "$plugin_path" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
_add_plugin_to_tmux_conf() {
|
||||||
|
set_tmux_conf_helper<<-HERE
|
||||||
|
run-shell '~/.tmux/plugins/tmux-plugin-under-test/*.tmux'
|
||||||
|
HERE
|
||||||
|
}
|
||||||
|
|
||||||
|
# PUBLIC HELPER FUNCTIONS
|
||||||
|
|
||||||
|
teardown_helper() {
|
||||||
|
rm -f ~/.tmux.conf
|
||||||
|
rm -rf ~/.tmux/
|
||||||
|
tmux kill-server >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
set_tmux_conf_helper() {
|
||||||
|
> ~/.tmux.conf # empty tmux.conf file
|
||||||
|
while read line; do
|
||||||
|
echo "$line" >> ~/.tmux.conf
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
fail_helper() {
|
||||||
|
local message="$1"
|
||||||
|
echo "$message" >&2
|
||||||
|
TEST_STATUS="fail"
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_helper() {
|
||||||
|
teardown_helper
|
||||||
|
if [ "$TEST_STATUS" == "fail" ]; then
|
||||||
|
echo "FAIL!"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "SUCCESS"
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_tmux_plugin_under_test_helper() {
|
||||||
|
_clone_the_plugin
|
||||||
|
_add_plugin_to_tmux_conf
|
||||||
|
}
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
# get all the functions starting with 'test_' and invoke them
|
||||||
|
for test in $(compgen -A function | grep "^test_"); do
|
||||||
|
"$test"
|
||||||
|
done
|
||||||
|
exit_helper
|
||||||
|
}
|
47
tmux/plugins/tpm/lib/tmux-test/tests/run_tests_in_isolation
Executable file
47
tmux/plugins/tpm/lib/tmux-test/tests/run_tests_in_isolation
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# This file is a symlink from 'tmux-test' plugin.
|
||||||
|
# You probably don't want to edit it.
|
||||||
|
|
||||||
|
# This script should be run within an isolated enviroment (Vagrant, travis).
|
||||||
|
# Depending on what the tests do, it might NOT be safe to run this script
|
||||||
|
# directly on the development machine.
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
EXIT_VALUE=0 # running a test suite is successful by default
|
||||||
|
|
||||||
|
all_test_files() {
|
||||||
|
ls -1 "$CURRENT_DIR" | # test files are in the current dir
|
||||||
|
\grep -i "^test" | # test file names start with "test"
|
||||||
|
xargs # file names in a single line
|
||||||
|
}
|
||||||
|
|
||||||
|
set_exit_val_to_false() {
|
||||||
|
EXIT_VALUE=1
|
||||||
|
}
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
local test_file tests_files
|
||||||
|
if [ "$#" -gt 0 ]; then
|
||||||
|
test_files="${@//tests\//}" # remove 'tests/' directory prefix
|
||||||
|
else
|
||||||
|
test_files="$(all_test_files)"
|
||||||
|
fi
|
||||||
|
for test_file in $test_files; do
|
||||||
|
echo "Running test: $test_file"
|
||||||
|
"${CURRENT_DIR}/${test_file}"
|
||||||
|
|
||||||
|
# handling exit value
|
||||||
|
local test_exit_value="$?"
|
||||||
|
if [ "$test_exit_value" -ne 0 ]; then
|
||||||
|
set_exit_val_to_false
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
run_tests "$@"
|
||||||
|
exit "$EXIT_VALUE"
|
||||||
|
}
|
||||||
|
main "$@"
|
3
tmux/plugins/tpm/lib/tmux-test/tests/test_basic_script_execution.sh
Executable file
3
tmux/plugins/tpm/lib/tmux-test/tests/test_basic_script_execution.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
exit 0
|
24
tmux/plugins/tpm/lib/tmux-test/tests/test_default_session_name.sh
Executable file
24
tmux/plugins/tpm/lib/tmux-test/tests/test_default_session_name.sh
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# bash helpers provided by 'tmux-test'
|
||||||
|
source $CURRENT_DIR/helpers/helpers.sh
|
||||||
|
|
||||||
|
# installs plugin from current repo in Vagrant (or on Travis)
|
||||||
|
install_tmux_plugin_under_test_helper
|
||||||
|
|
||||||
|
# start tmux in background (plugin under test is sourced)
|
||||||
|
tmux new -d
|
||||||
|
|
||||||
|
# get first session name
|
||||||
|
session_name="$(tmux list-sessions -F "#{session_name}")"
|
||||||
|
|
||||||
|
# fail the test if first session name is not "0"
|
||||||
|
if ! [ "$session_name" == "0" ]; then
|
||||||
|
# fail_helper is also provided by 'tmux-test'
|
||||||
|
fail_helper "First session name is not '0' by default"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sets the right script exit code ('tmux-test' helper)
|
||||||
|
exit_helper
|
24
tmux/plugins/tpm/lib/tmux-test/tests/test_tmux_scripting.sh
Executable file
24
tmux/plugins/tpm/lib/tmux-test/tests/test_tmux_scripting.sh
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
source $CURRENT_DIR/helpers/helpers.sh
|
||||||
|
|
||||||
|
number_of_windows() {
|
||||||
|
tmux list-windows |
|
||||||
|
wc -l |
|
||||||
|
sed "s/ //g"
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# start tmux in the background
|
||||||
|
tmux new -d
|
||||||
|
tmux new-window
|
||||||
|
|
||||||
|
local number_of_windows="$(number_of_windows)"
|
||||||
|
if ! [ "$number_of_windows" -eq 2 ]; then
|
||||||
|
fail_helper "Incorrect number of windows. Expected 2, got $number_of_windows"
|
||||||
|
fi
|
||||||
|
exit_helper
|
||||||
|
}
|
||||||
|
main
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# libevent2 installation instructions from here
|
||||||
|
# https://gist.github.com/rschuman/6168833
|
||||||
|
|
||||||
|
sudo su -
|
||||||
|
|
||||||
|
yum -y install gcc kernel-devel make automake autoconf ncurses-devel
|
||||||
|
yum -y install git-core expect vim ruby ruby-devel ruby-irb
|
||||||
|
|
||||||
|
# install libevent2 from source
|
||||||
|
curl http://sourceforge.net/projects/levent/files/latest/download?source=files -L -o libevent2.tar.gz -w 'Last URL was: %{url_effective}'
|
||||||
|
cd ~/downloads
|
||||||
|
tar zxvf libevent2.tar.gz
|
||||||
|
cd ./libevent-*
|
||||||
|
./configure --prefix=/usr/local
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
# compile tmux
|
||||||
|
git clone https://github.com/tmux/tmux.git ~/tmux_source
|
||||||
|
cd ~/tmux_source
|
||||||
|
git checkout 2.5
|
||||||
|
sh autogen.sh
|
||||||
|
LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" ./configure --prefix=/usr/local
|
||||||
|
make && sudo make install
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y git-core expect vim
|
||||||
|
sudo apt-get install -y python-software-properties software-properties-common
|
||||||
|
sudo apt-get install -y build-essential libtool autotools-dev autoconf
|
||||||
|
sudo apt-get install -y pkg-config libevent-dev libncurses-dev
|
||||||
|
sudo apt-get install -y man-db
|
||||||
|
|
||||||
|
# install tmux 2.5
|
||||||
|
git clone https://github.com/tmux/tmux.git ~/tmux_source
|
||||||
|
cd ~/tmux_source
|
||||||
|
git checkout 2.5
|
||||||
|
sh autogen.sh
|
||||||
|
./configure && make && sudo make install
|
78
tmux/plugins/tpm/scripts/check_tmux_version.sh
Executable file
78
tmux/plugins/tpm/scripts/check_tmux_version.sh
Executable file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
VERSION="$1"
|
||||||
|
UNSUPPORTED_MSG="$2"
|
||||||
|
|
||||||
|
get_tmux_option() {
|
||||||
|
local option=$1
|
||||||
|
local default_value=$2
|
||||||
|
local option_value=$(tmux show-option -gqv "$option")
|
||||||
|
if [ -z "$option_value" ]; then
|
||||||
|
echo "$default_value"
|
||||||
|
else
|
||||||
|
echo "$option_value"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ensures a message is displayed for 5 seconds in tmux prompt.
|
||||||
|
# Does not override the 'display-time' tmux option.
|
||||||
|
display_message() {
|
||||||
|
local message="$1"
|
||||||
|
|
||||||
|
# display_duration defaults to 5 seconds, if not passed as an argument
|
||||||
|
if [ "$#" -eq 2 ]; then
|
||||||
|
local display_duration="$2"
|
||||||
|
else
|
||||||
|
local display_duration="5000"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# saves user-set 'display-time' option
|
||||||
|
local saved_display_time=$(get_tmux_option "display-time" "750")
|
||||||
|
|
||||||
|
# sets message display time to 5 seconds
|
||||||
|
tmux set-option -gq display-time "$display_duration"
|
||||||
|
|
||||||
|
# displays message
|
||||||
|
tmux display-message "$message"
|
||||||
|
|
||||||
|
# restores original 'display-time' value
|
||||||
|
tmux set-option -gq display-time "$saved_display_time"
|
||||||
|
}
|
||||||
|
|
||||||
|
# this is used to get "clean" integer version number. Examples:
|
||||||
|
# `tmux 1.9` => `19`
|
||||||
|
# `1.9a` => `19`
|
||||||
|
get_digits_from_string() {
|
||||||
|
local string="$1"
|
||||||
|
local only_digits="$(echo "$string" | tr -dC '[:digit:]')"
|
||||||
|
echo "$only_digits"
|
||||||
|
}
|
||||||
|
|
||||||
|
tmux_version_int() {
|
||||||
|
local tmux_version_string=$(tmux -V)
|
||||||
|
echo "$(get_digits_from_string "$tmux_version_string")"
|
||||||
|
}
|
||||||
|
|
||||||
|
unsupported_version_message() {
|
||||||
|
if [ -n "$UNSUPPORTED_MSG" ]; then
|
||||||
|
echo "$UNSUPPORTED_MSG"
|
||||||
|
else
|
||||||
|
echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_if_unsupported_version() {
|
||||||
|
local current_version="$1"
|
||||||
|
local supported_version="$2"
|
||||||
|
if [ "$current_version" -lt "$supported_version" ]; then
|
||||||
|
display_message "$(unsupported_version_message)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local supported_version_int="$(get_digits_from_string "$VERSION")"
|
||||||
|
local current_version_int="$(tmux_version_int)"
|
||||||
|
exit_if_unsupported_version "$current_version_int" "$supported_version_int"
|
||||||
|
}
|
||||||
|
main
|
41
tmux/plugins/tpm/scripts/clean_plugins.sh
Executable file
41
tmux/plugins/tpm/scripts/clean_plugins.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
HELPERS_DIR="$CURRENT_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
source "$HELPERS_DIR/utility.sh"
|
||||||
|
|
||||||
|
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
else # shell output functions
|
||||||
|
source "$HELPERS_DIR/shell_echo_functions.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean_plugins() {
|
||||||
|
local plugins plugin plugin_directory
|
||||||
|
plugins="$(tpm_plugins_list_helper)"
|
||||||
|
|
||||||
|
for plugin_directory in "$(tpm_path)"/*; do
|
||||||
|
[ -d "${plugin_directory}" ] || continue
|
||||||
|
plugin="$(plugin_name_helper "${plugin_directory}")"
|
||||||
|
case "${plugins}" in
|
||||||
|
*"${plugin}"*) : ;;
|
||||||
|
*)
|
||||||
|
[ "${plugin}" = "tpm" ] && continue
|
||||||
|
echo_ok "Removing \"$plugin\""
|
||||||
|
rm -rf "${plugin_directory}" >/dev/null 2>&1
|
||||||
|
[ -d "${plugin_directory}" ] &&
|
||||||
|
echo_err " \"$plugin\" clean fail" ||
|
||||||
|
echo_ok " \"$plugin\" clean success"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
ensure_tpm_path_exists
|
||||||
|
clean_plugins
|
||||||
|
exit_value_helper
|
||||||
|
}
|
||||||
|
main
|
104
tmux/plugins/tpm/scripts/helpers/plugin_functions.sh
Normal file
104
tmux/plugins/tpm/scripts/helpers/plugin_functions.sh
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
# using @tpm_plugins is now deprecated in favor of using @plugin syntax
|
||||||
|
tpm_plugins_variable_name="@tpm_plugins"
|
||||||
|
|
||||||
|
# manually expanding tilde char or `$HOME` variable.
|
||||||
|
_manual_expansion() {
|
||||||
|
local path="$1"
|
||||||
|
local expanded_tilde="${path/#\~/$HOME}"
|
||||||
|
echo "${expanded_tilde/#\$HOME/$HOME}"
|
||||||
|
}
|
||||||
|
|
||||||
|
_tpm_path() {
|
||||||
|
local string_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)/"
|
||||||
|
_manual_expansion "$string_path"
|
||||||
|
}
|
||||||
|
|
||||||
|
_CACHED_TPM_PATH="$(_tpm_path)"
|
||||||
|
|
||||||
|
# Get the absolute path to the users configuration file of TMux.
|
||||||
|
# This includes a prioritized search on different locations.
|
||||||
|
#
|
||||||
|
_get_user_tmux_conf() {
|
||||||
|
# Define the different possible locations.
|
||||||
|
xdg_location="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||||
|
default_location="$HOME/.tmux.conf"
|
||||||
|
|
||||||
|
# Search for the correct configuration file by priority.
|
||||||
|
if [ -f "$xdg_location" ]; then
|
||||||
|
echo "$xdg_location"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "$default_location"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_tmux_conf_contents() {
|
||||||
|
user_config=$(_get_user_tmux_conf)
|
||||||
|
cat /etc/tmux.conf "$user_config" 2>/dev/null
|
||||||
|
if [ "$1" == "full" ]; then # also output content from sourced files
|
||||||
|
local file
|
||||||
|
for file in $(_sourced_files); do
|
||||||
|
cat $(_manual_expansion "$file") 2>/dev/null
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# return files sourced from tmux config files
|
||||||
|
_sourced_files() {
|
||||||
|
_tmux_conf_contents |
|
||||||
|
awk '/^[ \t]*source(-file)? +/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $2 }'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Want to be able to abort in certain cases
|
||||||
|
trap "exit 1" TERM
|
||||||
|
export TOP_PID=$$
|
||||||
|
|
||||||
|
_fatal_error_abort() {
|
||||||
|
echo >&2 "Aborting."
|
||||||
|
kill -s TERM $TOP_PID
|
||||||
|
}
|
||||||
|
|
||||||
|
# PUBLIC FUNCTIONS BELOW
|
||||||
|
|
||||||
|
tpm_path() {
|
||||||
|
if [ "$_CACHED_TPM_PATH" == "/" ]; then
|
||||||
|
echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf"
|
||||||
|
_fatal_error_abort
|
||||||
|
fi
|
||||||
|
echo "$_CACHED_TPM_PATH"
|
||||||
|
}
|
||||||
|
|
||||||
|
tpm_plugins_list_helper() {
|
||||||
|
# lists plugins from @tpm_plugins option
|
||||||
|
echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")"
|
||||||
|
|
||||||
|
# read set -g @plugin "tmux-plugins/tmux-example-plugin" entries
|
||||||
|
_tmux_conf_contents "full" |
|
||||||
|
awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allowed plugin name formats:
|
||||||
|
# 1. "git://github.com/user/plugin_name.git"
|
||||||
|
# 2. "user/plugin_name"
|
||||||
|
plugin_name_helper() {
|
||||||
|
local plugin="$1"
|
||||||
|
# get only the part after the last slash, e.g. "plugin_name.git"
|
||||||
|
local plugin_basename="$(basename "$plugin")"
|
||||||
|
# remove ".git" extension (if it exists) to get only "plugin_name"
|
||||||
|
local plugin_name="${plugin_basename%.git}"
|
||||||
|
echo "$plugin_name"
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin_path_helper() {
|
||||||
|
local plugin="$1"
|
||||||
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
echo "$(tpm_path)${plugin_name}/"
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin_already_installed() {
|
||||||
|
local plugin="$1"
|
||||||
|
local plugin_path="$(plugin_path_helper "$plugin")"
|
||||||
|
[ -d "$plugin_path" ] &&
|
||||||
|
cd "$plugin_path" &&
|
||||||
|
git remote >/dev/null 2>&1
|
||||||
|
}
|
7
tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh
Normal file
7
tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
echo_ok() {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_err() {
|
||||||
|
fail_helper "$*"
|
||||||
|
}
|
28
tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh
Normal file
28
tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
_has_emacs_mode_keys() {
|
||||||
|
$(tmux show -gw mode-keys | grep -q emacs)
|
||||||
|
}
|
||||||
|
|
||||||
|
tmux_echo() {
|
||||||
|
local message="$1"
|
||||||
|
tmux run-shell "echo '$message'"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_ok() {
|
||||||
|
tmux_echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo_err() {
|
||||||
|
tmux_echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
end_message() {
|
||||||
|
if _has_emacs_mode_keys; then
|
||||||
|
local continue_key="ESCAPE"
|
||||||
|
else
|
||||||
|
local continue_key="ENTER"
|
||||||
|
fi
|
||||||
|
tmux_echo ""
|
||||||
|
tmux_echo "TMUX environment reloaded."
|
||||||
|
tmux_echo ""
|
||||||
|
tmux_echo "Done, press $continue_key to continue."
|
||||||
|
}
|
3
tmux/plugins/tpm/scripts/helpers/tmux_utils.sh
Normal file
3
tmux/plugins/tpm/scripts/helpers/tmux_utils.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
reload_tmux_environment() {
|
||||||
|
tmux source-file ~/.tmux.conf >/dev/null 2>&1
|
||||||
|
}
|
17
tmux/plugins/tpm/scripts/helpers/utility.sh
Normal file
17
tmux/plugins/tpm/scripts/helpers/utility.sh
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
ensure_tpm_path_exists() {
|
||||||
|
mkdir -p "$(tpm_path)"
|
||||||
|
}
|
||||||
|
|
||||||
|
fail_helper() {
|
||||||
|
local message="$1"
|
||||||
|
echo "$message" >&2
|
||||||
|
FAIL="true"
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_value_helper() {
|
||||||
|
if [ "$FAIL" == "true" ]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
66
tmux/plugins/tpm/scripts/install_plugins.sh
Executable file
66
tmux/plugins/tpm/scripts/install_plugins.sh
Executable file
|
@ -0,0 +1,66 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
HELPERS_DIR="$CURRENT_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
source "$HELPERS_DIR/utility.sh"
|
||||||
|
|
||||||
|
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
else # shell output functions
|
||||||
|
source "$HELPERS_DIR/shell_echo_functions.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clone() {
|
||||||
|
local plugin="$1"
|
||||||
|
cd "$(tpm_path)" &&
|
||||||
|
GIT_TERMINAL_PROMPT=0 git clone --recursive "$plugin" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# tries cloning:
|
||||||
|
# 1. plugin name directly - works if it's a valid git url
|
||||||
|
# 2. expands the plugin name to point to a github repo and tries cloning again
|
||||||
|
clone_plugin() {
|
||||||
|
local plugin="$1"
|
||||||
|
clone "$plugin" ||
|
||||||
|
clone "https://git::@github.com/$plugin"
|
||||||
|
}
|
||||||
|
|
||||||
|
# clone plugin and produce output
|
||||||
|
install_plugin() {
|
||||||
|
local plugin="$1"
|
||||||
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
|
||||||
|
if plugin_already_installed "$plugin"; then
|
||||||
|
echo_ok "Already installed \"$plugin_name\""
|
||||||
|
else
|
||||||
|
echo_ok "Installing \"$plugin_name\""
|
||||||
|
clone_plugin "$plugin" &&
|
||||||
|
echo_ok " \"$plugin_name\" download success" ||
|
||||||
|
echo_err " \"$plugin_name\" download fail"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_plugins() {
|
||||||
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
|
for plugin in $plugins; do
|
||||||
|
install_plugin "$plugin"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_tpm_path_permissions() {
|
||||||
|
local path="$(tpm_path)"
|
||||||
|
# check the write permission flag for all users to ensure
|
||||||
|
# that we have proper access
|
||||||
|
[ -w "$path" ] ||
|
||||||
|
echo_err "$path is not writable!"
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
ensure_tpm_path_exists
|
||||||
|
verify_tpm_path_permissions
|
||||||
|
install_plugins
|
||||||
|
exit_value_helper
|
||||||
|
}
|
||||||
|
main
|
41
tmux/plugins/tpm/scripts/source_plugins.sh
Executable file
41
tmux/plugins/tpm/scripts/source_plugins.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
HELPERS_DIR="$CURRENT_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
|
||||||
|
plugin_dir_exists() {
|
||||||
|
[ -d "$1" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Runs all *.tmux files from the plugin directory.
|
||||||
|
# Files are ran as executables.
|
||||||
|
# No errors if the plugin dir does not exist.
|
||||||
|
silently_source_all_tmux_files() {
|
||||||
|
local plugin_path="$1"
|
||||||
|
local plugin_tmux_files="$plugin_path*.tmux"
|
||||||
|
if plugin_dir_exists "$plugin_path"; then
|
||||||
|
for tmux_file in $plugin_tmux_files; do
|
||||||
|
# if the glob didn't find any files this will be the
|
||||||
|
# unexpanded glob which obviously doesn't exist
|
||||||
|
[ -f "$tmux_file" ] || continue
|
||||||
|
# runs *.tmux file as an executable
|
||||||
|
$tmux_file >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
source_plugins() {
|
||||||
|
local plugin plugin_path
|
||||||
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
|
for plugin in $plugins; do
|
||||||
|
plugin_path="$(plugin_path_helper "$plugin")"
|
||||||
|
silently_source_all_tmux_files "$plugin_path"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
source_plugins
|
||||||
|
}
|
||||||
|
main
|
71
tmux/plugins/tpm/scripts/update_plugin.sh
Executable file
71
tmux/plugins/tpm/scripts/update_plugin.sh
Executable file
|
@ -0,0 +1,71 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# this script handles core logic of updating plugins
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
HELPERS_DIR="$CURRENT_DIR/helpers"
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
source "$HELPERS_DIR/utility.sh"
|
||||||
|
|
||||||
|
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
else # shell output functions
|
||||||
|
source "$HELPERS_DIR/shell_echo_functions.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# from now on ignore first script argument
|
||||||
|
shift
|
||||||
|
|
||||||
|
pull_changes() {
|
||||||
|
local plugin="$1"
|
||||||
|
local plugin_path="$(plugin_path_helper "$plugin")"
|
||||||
|
cd "$plugin_path" &&
|
||||||
|
GIT_TERMINAL_PROMPT=0 git pull &&
|
||||||
|
GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
local plugin="$1"
|
||||||
|
$(pull_changes "$plugin" > /dev/null 2>&1) &&
|
||||||
|
echo_ok " \"$plugin\" update success" ||
|
||||||
|
echo_err " \"$plugin\" update fail"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_all() {
|
||||||
|
echo_ok "Updating all plugins!"
|
||||||
|
echo_ok ""
|
||||||
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
|
for plugin in $plugins; do
|
||||||
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
# updating only installed plugins
|
||||||
|
if plugin_already_installed "$plugin_name"; then
|
||||||
|
update "$plugin_name" &
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
|
update_plugins() {
|
||||||
|
local plugins="$*"
|
||||||
|
for plugin in $plugins; do
|
||||||
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
if plugin_already_installed "$plugin_name"; then
|
||||||
|
update "$plugin_name" &
|
||||||
|
else
|
||||||
|
echo_err "$plugin_name not installed!" &
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
ensure_tpm_path_exists
|
||||||
|
if [ "$1" == "all" ]; then
|
||||||
|
update_all
|
||||||
|
else
|
||||||
|
update_plugins "$*"
|
||||||
|
fi
|
||||||
|
exit_value_helper
|
||||||
|
}
|
||||||
|
main "$*"
|
18
tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh
Executable file
18
tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
HELPERS_DIR="$CURRENT_DIR/helpers"
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
||||||
|
source "$HELPERS_DIR/tmux_utils.sh"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
"$CURRENT_DIR/update_plugin.sh" --tmux-echo "$*"
|
||||||
|
reload_tmux_environment
|
||||||
|
end_message
|
||||||
|
}
|
||||||
|
main "$*"
|
13
tmux/plugins/tpm/scripts/variables.sh
Normal file
13
tmux/plugins/tpm/scripts/variables.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
install_key_option="@tpm-install"
|
||||||
|
default_install_key="I"
|
||||||
|
|
||||||
|
update_key_option="@tpm-update"
|
||||||
|
default_update_key="U"
|
||||||
|
|
||||||
|
clean_key_option="@tpm-clean"
|
||||||
|
default_clean_key="M-u"
|
||||||
|
|
||||||
|
SUPPORTED_TMUX_VERSION="1.9"
|
||||||
|
|
||||||
|
DEFAULT_TPM_ENV_VAR_NAME="TMUX_PLUGIN_MANAGER_PATH"
|
||||||
|
DEFAULT_TPM_PATH="$HOME/.tmux/plugins/"
|
36
tmux/plugins/tpm/tests/expect_failed_plugin_download
Executable file
36
tmux/plugins/tpm/tests/expect_failed_plugin_download
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env expect
|
||||||
|
|
||||||
|
# disables script output
|
||||||
|
log_user 0
|
||||||
|
|
||||||
|
spawn tmux
|
||||||
|
|
||||||
|
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
||||||
|
# not work properly.
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# this is tmux prefix + I
|
||||||
|
send "I"
|
||||||
|
|
||||||
|
# cloning might take a while
|
||||||
|
set timeout 20
|
||||||
|
|
||||||
|
expect_after {
|
||||||
|
timeout { exit 1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Installing \"non-existing-plugin\""
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"\"non-existing-plugin\" download fail"
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Done, press ENTER to continue" {
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 1
|
35
tmux/plugins/tpm/tests/expect_successful_clean_plugins
Executable file
35
tmux/plugins/tpm/tests/expect_successful_clean_plugins
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env expect
|
||||||
|
|
||||||
|
# disables script output
|
||||||
|
log_user 0
|
||||||
|
|
||||||
|
spawn tmux
|
||||||
|
|
||||||
|
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
||||||
|
# not work properly.
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# this is tmux prefix + alt + u
|
||||||
|
send "u"
|
||||||
|
|
||||||
|
set timeout 5
|
||||||
|
|
||||||
|
expect_after {
|
||||||
|
timeout { exit 1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Removing \"tmux-example-plugin\""
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"\"tmux-example-plugin\" clean success"
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Done, press ENTER to continue." {
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 1
|
44
tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download
Executable file
44
tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env expect
|
||||||
|
|
||||||
|
# disables script output
|
||||||
|
log_user 0
|
||||||
|
|
||||||
|
spawn tmux
|
||||||
|
|
||||||
|
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
||||||
|
# not work properly.
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# this is tmux prefix + I
|
||||||
|
send "I"
|
||||||
|
|
||||||
|
# cloning might take a while
|
||||||
|
set timeout 15
|
||||||
|
|
||||||
|
expect_after {
|
||||||
|
timeout { exit 1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Installing \"tmux-example-plugin\""
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"\"tmux-example-plugin\" download success"
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Installing \"tmux-copycat\""
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"\"tmux-copycat\" download success"
|
||||||
|
}
|
||||||
|
|
||||||
|
expect {
|
||||||
|
"Done, press ENTER to continue." {
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 1
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue