Compare commits
4 Commits
4f3efc79fe
...
1d8adffa30
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d8adffa30 | ||
|
|
a619e6589e | ||
|
|
7f859e74aa | ||
|
|
ffd7845f61 |
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
[submodule "tmux/.config/tmux/oh-my-tmux"]
|
||||
path = tmux/.config/tmux/oh-my-tmux
|
||||
url = https://github.com/gpakosz/.tmux.git
|
||||
[submodule "nvim/nvim"]
|
||||
path = nvim/nvim
|
||||
url = https://git.publicmatt.com/public/nvim.git
|
||||
22
Makefile
22
Makefile
@@ -1,6 +1,11 @@
|
||||
.PHONY: nvim git shell
|
||||
.PHONY: all nvim git shell tmux submodules p10k
|
||||
|
||||
all: nvim git shell
|
||||
ZSH_CUSTOM ?= ${HOME}/.oh-my-zsh/custom
|
||||
|
||||
all: submodules nvim git shell tmux
|
||||
|
||||
submodules:
|
||||
git submodule update --init --recursive
|
||||
|
||||
git:
|
||||
stow git -t ${HOME}
|
||||
@@ -8,5 +13,16 @@ git:
|
||||
nvim:
|
||||
stow nvim -t ${HOME}/.config/
|
||||
|
||||
shell:
|
||||
shell: p10k
|
||||
stow shell -t ${HOME}
|
||||
|
||||
tmux: submodules
|
||||
stow tmux -t ${HOME}
|
||||
|
||||
p10k:
|
||||
@if [ ! -d ${ZSH_CUSTOM}/themes/powerlevel10k ]; then \
|
||||
echo "installing powerlevel10k -> ${ZSH_CUSTOM}/themes/powerlevel10k"; \
|
||||
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM}/themes/powerlevel10k; \
|
||||
else \
|
||||
echo "powerlevel10k already installed"; \
|
||||
fi
|
||||
|
||||
59
README.md
Normal file
59
README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# dotfiles
|
||||
|
||||
Personal config, deployed with [GNU Stow](https://www.gnu.org/software/stow/).
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
.
|
||||
├── git/ -> $HOME (.gitconfig)
|
||||
├── nvim/ -> $HOME/.config/ (nvim/)
|
||||
├── shell/ -> $HOME (.zshrc, .mattrc, .musicrc)
|
||||
└── tmux/ -> $HOME (.config/tmux/{tmux.conf,tmux.conf.local,oh-my-tmux/})
|
||||
```
|
||||
|
||||
Each subdirectory mirrors the target tree; `stow` symlinks its contents into
|
||||
the right destination.
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
# prerequisite
|
||||
brew install stow
|
||||
|
||||
git clone --recurse-submodules https://github.com/publicmatt/dotfiles ~/dotfiles
|
||||
cd ~/dotfiles
|
||||
make # init submodules + deploy everything
|
||||
make tmux # or a single package
|
||||
```
|
||||
|
||||
To remove links: `stow -D <pkg> -t <target>`.
|
||||
|
||||
## tmux
|
||||
|
||||
Uses [gpakosz/.tmux](https://github.com/gpakosz/.tmux) (oh-my-tmux), vendored
|
||||
as a git submodule at `tmux/.config/tmux/oh-my-tmux/`. Customizations live in
|
||||
`tmux/.config/tmux/tmux.conf.local`.
|
||||
|
||||
Notable features from the local overrides:
|
||||
|
||||
- default `C-b` prefix (stock bindings preserved)
|
||||
- splits inherit current path; new windows start at `$HOME`
|
||||
- vi copy-mode, selections piped to `pbcopy`
|
||||
- `prefix m` toggles mouse
|
||||
- `F12` toggles prefix off (pass-through for nested tmux / ssh)
|
||||
- powerline status bar with uptime, battery, hostname
|
||||
|
||||
Update upstream:
|
||||
|
||||
```bash
|
||||
git submodule update --remote tmux/.config/tmux/oh-my-tmux
|
||||
```
|
||||
|
||||
Before first `make tmux`, remove the existing `~/.config/tmux/` so stow can
|
||||
take over:
|
||||
|
||||
```bash
|
||||
mv ~/.config/tmux ~/.config/tmux.bak
|
||||
make tmux
|
||||
```
|
||||
Submodule nvim/nvim updated: 4b31f8ef9e...43f116fe2c
16
shell/.allenairc.example
Normal file
16
shell/.allenairc.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# Copy to ~/.allenairc. Never commit. Prefer SSO/keychain over plaintext.
|
||||
|
||||
# AWS
|
||||
export AWS_REGION=us-west-2
|
||||
# export AWS_ACCESS_KEY_ID=...
|
||||
# export AWS_SECRET_ACCESS_KEY=...
|
||||
# export AWS_PROFILE=...
|
||||
|
||||
# Repos
|
||||
# export HF_TOKEN=...
|
||||
# export GITHUB_TOKEN=...
|
||||
|
||||
# Services
|
||||
# export CORPUS_DATABASE_URL=..
|
||||
# export FIRS2_DATABASE_URL=..
|
||||
# export S2_PUBLIC_KEY=...
|
||||
82
shell/.mattrc
Normal file
82
shell/.mattrc
Normal file
@@ -0,0 +1,82 @@
|
||||
########################################################################
|
||||
#
|
||||
# Personal sh stuff
|
||||
#
|
||||
########################################################################
|
||||
|
||||
bt() {
|
||||
echo "powering on"
|
||||
bluetoothctl power on
|
||||
device=$1
|
||||
echo "connecting to $device";
|
||||
bluetoothctl devices | awk -v device="$device" '$0 ~ device {print $2}' | xargs -I{} bluetoothctl connect {}
|
||||
}
|
||||
|
||||
grab() {
|
||||
out=$1
|
||||
echo "pasting clipboard to $out"
|
||||
xclip -sel clipboard -t image/png -o > $out
|
||||
}
|
||||
|
||||
# save a youtube video as audio file
|
||||
yt() {
|
||||
youtube-dl $1 -x --audio-format mp3
|
||||
}
|
||||
|
||||
# tm - create new tmux session, or switch to existing one. Works from within tmux too.
|
||||
# `tm` lists sessions via fzf, or prompts for a new session name when none exist.
|
||||
# `tm irc` attaches to the irc session (creating it if needed).
|
||||
tm() {
|
||||
local change session sessions
|
||||
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
tmux $change -t "$1" 2>/dev/null || { tmux new-session -d -s "$1" && tmux $change -t "$1"; }
|
||||
return
|
||||
fi
|
||||
|
||||
sessions=$(tmux list-sessions -F "#{session_name}" 2>/dev/null)
|
||||
if [[ -n "$sessions" ]]; then
|
||||
session=$(echo "$sessions" | fzf --prompt="Select tmux session: " --height=40% --reverse --exit-0)
|
||||
[[ -n "$session" ]] && tmux $change -t "$session"
|
||||
else
|
||||
read "session?Enter new session name: "
|
||||
[[ -n "$session" ]] && tmux new-session -s "$session"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# PATH additions
|
||||
#
|
||||
########################################################################
|
||||
alias vi=nvim
|
||||
export VISUAL=nvim
|
||||
export EDITOR="$VISUAL"
|
||||
export PLAN_BASE_PATH="$HOME/.plan"
|
||||
alias act="source .venv/bin/activate"
|
||||
alias deact="deactivate"
|
||||
|
||||
# prepend: tools that should win over system equivalents
|
||||
[[ -d /opt/homebrew/bin ]] && export PATH="/opt/homebrew/bin:$PATH"
|
||||
[[ -d /opt/homebrew/opt/libpq/bin ]] && export PATH="/opt/homebrew/opt/libpq/bin:$PATH"
|
||||
|
||||
# append: user-installed binaries
|
||||
[[ -d "$HOME/.local/bin" ]] && export PATH="$PATH:$HOME/.local/bin"
|
||||
[[ -d "$HOME/go/bin" ]] && export PATH="$PATH:$HOME/go/bin"
|
||||
[[ -d "$HOME/.claude/local" ]] && export PATH="$PATH:$HOME/.claude/local"
|
||||
[[ -d /usr/local/lib/nodejs/bin ]] && export PATH="$PATH:/usr/local/lib/nodejs/bin"
|
||||
[[ -d /opt/nvim/bin ]] && export PATH="$PATH:/opt/nvim/bin"
|
||||
|
||||
# env sourcers
|
||||
[[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env"
|
||||
[[ -f "$HOME/.local/bin/env" ]] && source "$HOME/.local/bin/env"
|
||||
|
||||
# mise (runtime version manager) — must run after PATH so its shim wins
|
||||
command -v mise >/dev/null && eval "$(mise activate zsh)"
|
||||
|
||||
# personal aliases (separate file)
|
||||
[[ -f "$HOME/.aliases" ]] && source "$HOME/.aliases"
|
||||
|
||||
alias d="sudo docker"
|
||||
1
shell/.stow-local-ignore
Normal file
1
shell/.stow-local-ignore
Normal file
@@ -0,0 +1 @@
|
||||
.+\.example$
|
||||
@@ -1,53 +0,0 @@
|
||||
########################################################################
|
||||
#
|
||||
# PERSONAL sh stuff
|
||||
#
|
||||
########################################################################
|
||||
|
||||
bt() {
|
||||
echo "powering on"
|
||||
bluetoothctl power on
|
||||
device=$1
|
||||
echo "connecting to $device";
|
||||
bluetoothctl devices | awk -v device="$device" '$0 ~ device {print $2}' | xargs -I{} bluetoothctl connect {}
|
||||
}
|
||||
|
||||
grab() {
|
||||
out=$1
|
||||
echo "pasting clipboard to $out"
|
||||
xclip -sel clipboard -t image/png -o > $out
|
||||
}
|
||||
|
||||
# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man)
|
||||
# `tm` will allow you to select your tmux session via fzf.
|
||||
# `tm irc` will attach to the irc session (if it exists), else it will create it.
|
||||
|
||||
tm() {
|
||||
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
|
||||
if [ $1 ]; then
|
||||
tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return
|
||||
fi
|
||||
session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0) && tmux $change -t "$session" || echo "No sessions found."
|
||||
}
|
||||
|
||||
# save a youtube video as audio file
|
||||
yt() {
|
||||
youtube-dl $1 -x --audio-format mp3
|
||||
}
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# PATH additions
|
||||
#
|
||||
########################################################################
|
||||
alias vi=nvim
|
||||
export VISUAL=nvim
|
||||
export EDITOR="$VISUAL"
|
||||
|
||||
source "$HOME/.cargo/env"
|
||||
export PATH="$PATH:$HOME/.local/bin"
|
||||
export PATH="$PATH:/usr/local/lib/nodejs/bin"
|
||||
export PATH="$PATH:/opt/nvim/bin"
|
||||
|
||||
alias d="sudo docker"
|
||||
135
shell/.zshrc
135
shell/.zshrc
@@ -1,125 +1,30 @@
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
# confirmations, etc.) must go above this block; everything else may go below.
|
||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
fi
|
||||
# p10k instant prompt — keep near top
|
||||
[[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]] \
|
||||
&& source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||
|
||||
# If you come from bash you might have to change your $PATH.
|
||||
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||
|
||||
# Path to your oh-my-zsh installation.
|
||||
# oh-my-zsh
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time oh-my-zsh is loaded, in which case,
|
||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||
|
||||
# Set list of themes to pick from when loading at random
|
||||
# Setting this variable when ZSH_THEME=random will cause zsh to load
|
||||
# a theme from this variable instead of looking in $ZSH/themes/
|
||||
# If set to an empty array, this variable will have no effect.
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion.
|
||||
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment one of the following lines to change the auto-update behavior
|
||||
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# zstyle ':omz:update' frequency 13
|
||||
|
||||
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# You can also set it to another string to have that shown instead of the default red dots.
|
||||
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# You can set one of the optional three formats:
|
||||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# or set a custom format using the strftime function format specifications,
|
||||
# see 'man strftime' for details.
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load?
|
||||
# Standard plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git)
|
||||
[[ -f "$ZSH/oh-my-zsh.sh" ]] && source "$ZSH/oh-my-zsh.sh"
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
# p10k config
|
||||
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh
|
||||
|
||||
# User configuration
|
||||
# personal rc files
|
||||
[[ -f ~/.mattrc ]] && source ~/.mattrc
|
||||
[[ -f ~/.musicrc ]] && source ~/.musicrc
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
# work / sensitive overrides (gitignored, not in repo)
|
||||
[[ -f ~/.allenairc ]] && source ~/.allenairc
|
||||
[[ -f ~/.wwurc ]] && source ~/.wwurc
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
|
||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||
|
||||
source ~/.userrc
|
||||
source ~/.musicrc
|
||||
source ~/.wwurc
|
||||
|
||||
|
||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||
|
||||
# bun completions
|
||||
[ -s "/home/user/.bun/_bun" ] && source "/home/user/.bun/_bun"
|
||||
# fzf
|
||||
[[ -f ~/.fzf.zsh ]] && source ~/.fzf.zsh
|
||||
|
||||
# bun
|
||||
export BUN_INSTALL="$HOME/.bun"
|
||||
export PATH="$BUN_INSTALL/bin:$PATH"
|
||||
[[ -d "$HOME/.bun" ]] && {
|
||||
export BUN_INSTALL="$HOME/.bun"
|
||||
export PATH="$BUN_INSTALL/bin:$PATH"
|
||||
[[ -s "$BUN_INSTALL/_bun" ]] && source "$BUN_INSTALL/_bun"
|
||||
}
|
||||
|
||||
1
tmux/.config/tmux/oh-my-tmux
Submodule
1
tmux/.config/tmux/oh-my-tmux
Submodule
Submodule tmux/.config/tmux/oh-my-tmux added at 124f5fc36d
1
tmux/.config/tmux/tmux.conf
Symbolic link
1
tmux/.config/tmux/tmux.conf
Symbolic link
@@ -0,0 +1 @@
|
||||
oh-my-tmux/.tmux.conf
|
||||
537
tmux/.config/tmux/tmux.conf.local
Normal file
537
tmux/.config/tmux/tmux.conf.local
Normal file
@@ -0,0 +1,537 @@
|
||||
# : << 'EOF'
|
||||
# Oh my tmux!
|
||||
# 💛🩷💙🖤❤️🤍
|
||||
# https://github.com/gpakosz/.tmux
|
||||
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license,
|
||||
# without any warranty.
|
||||
# Copyright 2012— Gregory Pakosz (@gpakosz).
|
||||
|
||||
|
||||
# -- bindings ------------------------------------------------------------------
|
||||
|
||||
# preserve tmux stock bindings,
|
||||
# while adding bindings that don't conflict with these stock bindings
|
||||
# /!\ this disables some of Oh my tmux! bindings described in README.md
|
||||
# - true
|
||||
# - false (default)
|
||||
tmux_conf_preserve_stock_bindings=false
|
||||
|
||||
|
||||
# -- session creation ----------------------------------------------------------
|
||||
|
||||
# prompt for session name when creating a new session, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled (do not modify new-session bindings)
|
||||
tmux_conf_new_session_prompt=false
|
||||
|
||||
# new session retains current path, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled (do not modify new-session bindings)
|
||||
tmux_conf_new_session_retain_current_path=false
|
||||
|
||||
|
||||
# -- windows & pane creation ---------------------------------------------------
|
||||
|
||||
# new window retains current path, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled (do not modify new-window bindings)
|
||||
tmux_conf_new_window_retain_current_path=false
|
||||
|
||||
# new window tries to reconnect ssh sessions, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled (do not modify new-window bindings)
|
||||
tmux_conf_new_window_reconnect_ssh=false
|
||||
|
||||
# new pane retains current path, possible values are:
|
||||
# - true (default)
|
||||
# - false
|
||||
# - disabled (do not modify split-window bindings)
|
||||
tmux_conf_new_pane_retain_current_path=true
|
||||
|
||||
# new pane tries to reconnect ssh sessions, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled (do not modify split-window bindings)
|
||||
tmux_conf_new_pane_reconnect_ssh=false
|
||||
|
||||
|
||||
# -- display -------------------------------------------------------------------
|
||||
|
||||
# RGB 24-bit colour support, possible values are:
|
||||
# - true
|
||||
# - false
|
||||
# - auto (default)
|
||||
#
|
||||
# automatic detection relies on the COLORTERM environment variable being defined
|
||||
# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216'
|
||||
# see https://github.com/termstandard/colors
|
||||
tmux_conf_24b_colour=auto
|
||||
|
||||
|
||||
# -- theming -------------------------------------------------------------------
|
||||
|
||||
# enable or disable theming:
|
||||
# - enabled (default)
|
||||
# - disabled
|
||||
# when disabled, all tmux_conf_theme_xxx variables are ignored except:
|
||||
# - tmux_conf_theme_pairing
|
||||
# - tmux_conf_theme_prefix
|
||||
# - tmux_conf_theme_mouse
|
||||
# - tmux_conf_theme_root
|
||||
# - tmux_conf_theme_synchronized
|
||||
tmux_conf_theme=enabled
|
||||
|
||||
# default theme
|
||||
tmux_conf_theme_colour_1="#080808" # dark gray
|
||||
tmux_conf_theme_colour_2="#303030" # gray
|
||||
tmux_conf_theme_colour_3="#8a8a8a" # light gray
|
||||
tmux_conf_theme_colour_4="#00afff" # light blue
|
||||
tmux_conf_theme_colour_5="#ffff00" # yellow
|
||||
tmux_conf_theme_colour_6="#080808" # dark gray
|
||||
tmux_conf_theme_colour_7="#e4e4e4" # white
|
||||
tmux_conf_theme_colour_8="#080808" # dark gray
|
||||
tmux_conf_theme_colour_9="#ffff00" # yellow
|
||||
tmux_conf_theme_colour_10="#ff00af" # pink
|
||||
tmux_conf_theme_colour_11="#5fff00" # green
|
||||
tmux_conf_theme_colour_12="#8a8a8a" # light gray
|
||||
tmux_conf_theme_colour_13="#e4e4e4" # white
|
||||
tmux_conf_theme_colour_14="#080808" # dark gray
|
||||
tmux_conf_theme_colour_15="#080808" # dark gray
|
||||
tmux_conf_theme_colour_16="#d70000" # red
|
||||
tmux_conf_theme_colour_17="#e4e4e4" # white
|
||||
|
||||
# default theme (ansi)
|
||||
#tmux_conf_theme_colour_1="colour0"
|
||||
#tmux_conf_theme_colour_2="colour8"
|
||||
#tmux_conf_theme_colour_3="colour8"
|
||||
#tmux_conf_theme_colour_4="colour14"
|
||||
#tmux_conf_theme_colour_5="colour11"
|
||||
#tmux_conf_theme_colour_6="colour0"
|
||||
#tmux_conf_theme_colour_7="colour15"
|
||||
#tmux_conf_theme_colour_8="colour0"
|
||||
#tmux_conf_theme_colour_9="colour11"
|
||||
#tmux_conf_theme_colour_10="colour13"
|
||||
#tmux_conf_theme_colour_11="colour10"
|
||||
#tmux_conf_theme_colour_12="colour8"
|
||||
#tmux_conf_theme_colour_13="colour15"
|
||||
#tmux_conf_theme_colour_14="colour0"
|
||||
#tmux_conf_theme_colour_15="colour0"
|
||||
#tmux_conf_theme_colour_16="colour1"
|
||||
#tmux_conf_theme_colour_17="colour15"
|
||||
|
||||
# window style
|
||||
tmux_conf_theme_window_fg="default"
|
||||
tmux_conf_theme_window_bg="default"
|
||||
|
||||
# highlight focused pane, possible values are:
|
||||
# - true
|
||||
# - false (default)
|
||||
tmux_conf_theme_highlight_focused_pane=false
|
||||
|
||||
# focused pane colours:
|
||||
tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_2"
|
||||
|
||||
# pane border style, possible values are:
|
||||
# - thin (default)
|
||||
# - fat
|
||||
tmux_conf_theme_pane_border_style=thin
|
||||
|
||||
# pane borders colours:
|
||||
tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2"
|
||||
tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4"
|
||||
%if #{>=:#{version},3.2}
|
||||
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$tmux_conf_theme_colour_9,#{?synchronize-panes,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_4}}"
|
||||
%endif
|
||||
|
||||
# pane indicator colours (when you hit <prefix> + q)
|
||||
tmux_conf_theme_pane_indicator="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4"
|
||||
|
||||
# status line style
|
||||
tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_message_attr="bold"
|
||||
|
||||
# status line command style (<prefix> : Escape)
|
||||
tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_message_command_attr="bold"
|
||||
|
||||
# window modes style
|
||||
tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_mode_attr="bold"
|
||||
|
||||
# status line style
|
||||
tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3"
|
||||
tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_status_attr="none"
|
||||
|
||||
# terminal title
|
||||
# - built-in variables are:
|
||||
# - #{circled_window_index}
|
||||
# - #{circled_session_name}
|
||||
# - #{hostname}
|
||||
# - #{hostname_ssh}
|
||||
# - #{hostname_full}
|
||||
# - #{hostname_full_ssh}
|
||||
# - #{username}
|
||||
# - #{username_ssh}
|
||||
tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
|
||||
|
||||
# window status style
|
||||
# - built-in variables are:
|
||||
# - #{circled_window_index}
|
||||
# - #{circled_session_name}
|
||||
# - #{hostname}
|
||||
# - #{hostname_ssh}
|
||||
# - #{hostname_full}
|
||||
# - #{hostname_full_ssh}
|
||||
# - #{username}
|
||||
# - #{username_ssh}
|
||||
tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3"
|
||||
tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_window_status_attr="none"
|
||||
tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
#tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||
|
||||
# window current status style
|
||||
# - built-in variables are:
|
||||
# - #{circled_window_index}
|
||||
# - #{circled_session_name}
|
||||
# - #{hostname}
|
||||
# - #{hostname_ssh}
|
||||
# - #{hostname_full}
|
||||
# - #{hostname_full_ssh}
|
||||
# - #{username}
|
||||
# - #{username_ssh}
|
||||
tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1"
|
||||
tmux_conf_theme_window_status_current_bg="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_window_status_current_attr="bold"
|
||||
tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||
#tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||
|
||||
# window activity status style
|
||||
tmux_conf_theme_window_status_activity_fg="default"
|
||||
tmux_conf_theme_window_status_activity_bg="default"
|
||||
tmux_conf_theme_window_status_activity_attr="underscore"
|
||||
|
||||
# window bell status style
|
||||
tmux_conf_theme_window_status_bell_fg="$tmux_conf_theme_colour_5"
|
||||
tmux_conf_theme_window_status_bell_bg="default"
|
||||
tmux_conf_theme_window_status_bell_attr="blink,bold"
|
||||
|
||||
# window last status style
|
||||
tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2"
|
||||
tmux_conf_theme_window_status_last_attr="none"
|
||||
|
||||
# status left/right sections separators
|
||||
tmux_conf_theme_left_separator_main=""
|
||||
tmux_conf_theme_left_separator_sub="|"
|
||||
tmux_conf_theme_right_separator_main=""
|
||||
tmux_conf_theme_right_separator_sub="|"
|
||||
#tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline
|
||||
#tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with
|
||||
#tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
|
||||
#tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
|
||||
|
||||
# status left/right content:
|
||||
# - separate main sections with "|"
|
||||
# - separate subsections with ","
|
||||
# - built-in variables are:
|
||||
# - #{battery_bar}
|
||||
# - #{battery_hbar}
|
||||
# - #{battery_percentage}
|
||||
# - #{battery_status}
|
||||
# - #{battery_vbar}
|
||||
# - #{circled_session_name}
|
||||
# - #{hostname_ssh}
|
||||
# - #{hostname}
|
||||
# - #{hostname_full}
|
||||
# - #{hostname_full_ssh}
|
||||
# - #{loadavg}
|
||||
# - #{mouse}
|
||||
# - #{pairing}
|
||||
# - #{prefix}
|
||||
# - #{root}
|
||||
# - #{synchronized}
|
||||
# - #{uptime_y}
|
||||
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
|
||||
# - #{uptime_h}
|
||||
# - #{uptime_m}
|
||||
# - #{uptime_s}
|
||||
# - #{username}
|
||||
# - #{username_ssh}
|
||||
tmux_conf_theme_status_left=" ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} "
|
||||
#tmux_conf_theme_status_left=" ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} | #{pretty_pane_current_path} "
|
||||
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized}#{?battery_status,#{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} "
|
||||
|
||||
# status left style
|
||||
tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8"
|
||||
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11"
|
||||
tmux_conf_theme_status_left_attr="bold,none,none"
|
||||
|
||||
# status right style
|
||||
tmux_conf_theme_status_right_fg="$tmux_conf_theme_colour_12,$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_14"
|
||||
tmux_conf_theme_status_right_bg="$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17"
|
||||
tmux_conf_theme_status_right_attr="none,none,bold"
|
||||
|
||||
# pairing indicator
|
||||
tmux_conf_theme_pairing="⚇" # U+2687
|
||||
tmux_conf_theme_pairing_fg="none"
|
||||
tmux_conf_theme_pairing_bg="none"
|
||||
tmux_conf_theme_pairing_attr="none"
|
||||
|
||||
# prefix indicator
|
||||
tmux_conf_theme_prefix="⌨" # U+2328
|
||||
tmux_conf_theme_prefix_fg="none"
|
||||
tmux_conf_theme_prefix_bg="none"
|
||||
tmux_conf_theme_prefix_attr="none"
|
||||
|
||||
# mouse indicator
|
||||
tmux_conf_theme_mouse="↗" # U+2197
|
||||
tmux_conf_theme_mouse_fg="none"
|
||||
tmux_conf_theme_mouse_bg="none"
|
||||
tmux_conf_theme_mouse_attr="none"
|
||||
|
||||
# root indicator
|
||||
tmux_conf_theme_root="!"
|
||||
tmux_conf_theme_root_fg="none"
|
||||
tmux_conf_theme_root_bg="none"
|
||||
tmux_conf_theme_root_attr="bold,blink"
|
||||
|
||||
# synchronized indicator
|
||||
tmux_conf_theme_synchronized="⚏" # U+268F
|
||||
tmux_conf_theme_synchronized_fg="none"
|
||||
tmux_conf_theme_synchronized_bg="none"
|
||||
tmux_conf_theme_synchronized_attr="none"
|
||||
|
||||
# battery bar symbols
|
||||
tmux_conf_battery_bar_symbol_full="◼"
|
||||
tmux_conf_battery_bar_symbol_empty="◻"
|
||||
#tmux_conf_battery_bar_symbol_full="♥"
|
||||
#tmux_conf_battery_bar_symbol_empty="·"
|
||||
|
||||
# battery bar length (in number of symbols), possible values are:
|
||||
# - auto
|
||||
# - a number, e.g. 5
|
||||
tmux_conf_battery_bar_length="auto"
|
||||
|
||||
# battery bar palette, possible values are:
|
||||
# - gradient (default)
|
||||
# - heat
|
||||
# - "colour_full_fg,colour_empty_fg,colour_bg"
|
||||
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||
tmux_conf_battery_bar_palette="gradient"
|
||||
#tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black
|
||||
#tmux_conf_battery_bar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||
|
||||
# battery hbar palette, possible values are:
|
||||
# - gradient (default)
|
||||
# - heat
|
||||
# - "colour_low,colour_half,colour_full"
|
||||
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||
tmux_conf_battery_hbar_palette="gradient"
|
||||
#tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
|
||||
#tmux_conf_battery_hbar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||
|
||||
# battery vbar palette, possible values are:
|
||||
# - gradient (default)
|
||||
# - heat
|
||||
# - "colour_low,colour_half,colour_full"
|
||||
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||
tmux_conf_battery_vbar_palette="gradient"
|
||||
#tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
|
||||
#tmux_conf_battery_vbar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||
|
||||
# symbols used to indicate whether battery is charging or discharging
|
||||
tmux_conf_battery_status_charging="↑" # U+2191
|
||||
tmux_conf_battery_status_discharging="↓" # U+2193
|
||||
#tmux_conf_battery_status_charging="🔌" # U+1F50C
|
||||
#tmux_conf_battery_status_discharging="🔋" # U+1F50B
|
||||
|
||||
# clock style (when you hit <prefix> + t)
|
||||
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
|
||||
tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4"
|
||||
tmux_conf_theme_clock_style="24"
|
||||
|
||||
|
||||
# -- clipboard -----------------------------------------------------------------
|
||||
|
||||
# in copy mode, copying selection also copies to the OS clipboard
|
||||
# - true
|
||||
# - false (default)
|
||||
# - disabled
|
||||
# on Linux, this requires xsel, xclip or wl-copy
|
||||
tmux_conf_copy_to_os_clipboard=true
|
||||
|
||||
|
||||
# -- urlscan -------------------------------------------------------------------
|
||||
|
||||
# options passed to urlscan
|
||||
tmux_conf_urlscan_options="--compact --dedupe"
|
||||
|
||||
|
||||
# -- user customizations -------------------------------------------------------
|
||||
|
||||
# this is the place to override or undo settings
|
||||
|
||||
# increase history size
|
||||
#set -g history-limit 10000
|
||||
|
||||
# start with mouse mode enabled
|
||||
set -g mouse on
|
||||
|
||||
# -- nested tmux: F12 toggles outer keybindings off so the inner session
|
||||
# receives the prefix and all bindings. Press F12 again to take control back.
|
||||
# Status bar dims while "off" so it's obvious which tmux is live.
|
||||
bind -T root F12 \
|
||||
set prefix None \;\
|
||||
set key-table off \;\
|
||||
set status-style "fg=colour245,bg=colour238" \;\
|
||||
set window-status-current-style "fg=colour245,bg=colour238" \;\
|
||||
set window-status-current-format "#I:#W" \;\
|
||||
if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
|
||||
refresh-client -S
|
||||
|
||||
bind -T off F12 \
|
||||
set -u prefix \;\
|
||||
set -u key-table \;\
|
||||
set -u status-style \;\
|
||||
set -u window-status-current-style \;\
|
||||
set -u window-status-current-format \;\
|
||||
refresh-client -S
|
||||
|
||||
# force Vi mode
|
||||
# really you should export VISUAL or EDITOR environment variable, see manual
|
||||
set -g status-keys vi
|
||||
set -g mode-keys vi
|
||||
|
||||
# replace C-b by C-a instead of using both prefixes
|
||||
# set -gu prefix2
|
||||
# unbind C-a
|
||||
# unbind C-b
|
||||
# set -g prefix C-a
|
||||
# bind C-a send-prefix
|
||||
|
||||
# if you don't want Oh my tmux! to alter a binding or a setting, use #!important
|
||||
# bind c new-window -c '#{pane_current_path}' #!important
|
||||
|
||||
# display a message after toggling mouse support
|
||||
bind m run "cut -c3- '#{TMUX_CONF}' | sh -s _toggle_mouse" \; display 'mouse #{?#{mouse},on,off}'
|
||||
|
||||
# rename current window (override Oh my tmux! reload-on-r)
|
||||
bind r command-prompt -I "#W" "rename-window '%%'" #!important
|
||||
|
||||
# reload configuration on R instead of r
|
||||
bind R run "sh -c '\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} source \"\$TMUX_CONF\"'" \; display "#{TMUX_CONF} sourced"
|
||||
|
||||
# copy to clipboard on mouse drag release
|
||||
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"
|
||||
|
||||
# move status line to top
|
||||
#set -g status-position top
|
||||
|
||||
|
||||
# -- tpm -----------------------------------------------------------------------
|
||||
|
||||
# while I don't use tpm myself, many people requested official support so here
|
||||
# is a seamless integration that automatically installs plugins in parallel
|
||||
|
||||
# whenever a plugin introduces a variable to be used in 'status-left' or
|
||||
# 'status-right', you can use it in 'tmux_conf_theme_status_left' and
|
||||
# 'tmux_conf_theme_status_right' variables.
|
||||
|
||||
# by default, launching tmux will update tpm and all plugins
|
||||
# - true (default)
|
||||
# - false
|
||||
tmux_conf_update_plugins_on_launch=true
|
||||
|
||||
# by default, reloading the configuration will update tpm and all plugins
|
||||
# - true (default)
|
||||
# - false
|
||||
tmux_conf_update_plugins_on_reload=true
|
||||
|
||||
# by default, reloading the configuration will uninstall tpm and plugins when no
|
||||
# plugins are enabled
|
||||
# - true (default)
|
||||
# - false
|
||||
tmux_conf_uninstall_plugins_on_reload=true
|
||||
|
||||
# /!\ the tpm bindings differ slightly from upstream:
|
||||
# - installing plugins: <prefix> + I
|
||||
# - uninstalling plugins: <prefix> + Alt + u
|
||||
# - updating plugins: <prefix> + u
|
||||
|
||||
# /!\ do not add set -g @plugin 'tmux-plugins/tpm'
|
||||
# /!\ do not add run '~/.tmux/plugins/tpm/tpm'
|
||||
|
||||
# to enable a plugin, use the 'set -g @plugin' syntax:
|
||||
# visit https://github.com/tmux-plugins for available plugins
|
||||
#set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||
#set -g @plugin 'tmux-plugins/tmux-cpu'
|
||||
#set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
#set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
#set -g @continuum-restore 'on'
|
||||
|
||||
|
||||
# -- custom variables ----------------------------------------------------------
|
||||
|
||||
# to define a custom #{foo} variable, define a POSIX shell function between the
|
||||
# '# EOF' and the '# "$@"' lines. Please note that the opening brace { character
|
||||
# must be on the same line as the function name otherwise the parse won't detect
|
||||
# it.
|
||||
#
|
||||
# then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the
|
||||
# 'tmux_conf_theme_status_right' variables.
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# # /!\ do not remove the following line
|
||||
# EOF
|
||||
#
|
||||
# # /!\ do not "uncomment" the functions: the leading "# " characters are needed
|
||||
#
|
||||
# # usage: #{weather}
|
||||
# weather() { # see https://github.com/chubin/wttr.in#one-line-output
|
||||
# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed
|
||||
# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval
|
||||
# }
|
||||
#
|
||||
# # usage: #{online}
|
||||
# online() {
|
||||
# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘'
|
||||
# }
|
||||
#
|
||||
# # usage: #{wan_ip_v4}
|
||||
# wan_ip_v4() {
|
||||
# curl -f -s -m 2 -4 ifconfig.me
|
||||
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||
# }
|
||||
#
|
||||
# # usage: #{wan_ip_v6}
|
||||
# wan_ip_v6() {
|
||||
# curl -f -s -m 2 -6 ifconfig.me
|
||||
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||
# }
|
||||
#
|
||||
# # usage: #{github_stars}, #{github_stars tmux/tmux}, ...
|
||||
# github_stars() {
|
||||
# repository=${1##*https://github.com/}
|
||||
# repository=${repository%% *}
|
||||
# repository=${repository%%.git}
|
||||
# url="https://api.github.com/repos/${repository:-gpakosz/.tmux}"
|
||||
# curl -s "$url" | perl -MJSON::PP=decode_json -CO -0777 -E '$response = decode_json(readline *STDIN); say ($response->{stargazers_count})'
|
||||
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||
# }
|
||||
#
|
||||
# "$@"
|
||||
# # /!\ do not remove the previous line
|
||||
# # do not write below this line
|
||||
Reference in New Issue
Block a user