diff --git a/.gitignore b/.gitignore index dc4f3ea4..b614c9ea 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ !/.gitconfig !/.inputrc !/.nvidia-xinitrc +!/.oh-my-zsh !/.password-store !/.tmux.conf !/.xinitrc @@ -15,6 +16,7 @@ !/README.md !/.config/ +!/.zsh/ !/.gnupg/gpg-agent.conf !/.gnupg/gpg.conf diff --git a/.gitmodules b/.gitmodules index cb3ec05f..772d8f2b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,15 @@ [submodule ".config/nvim"] path = .config/nvim url = git@github.com:DustVoice/nvim.git +[submodule ".zsh/plugins/zsh-vim-mode"] + path = .zsh/plugins/zsh-vim-mode + url = https://github.com/softmoth/zsh-vim-mode +[submodule ".zsh/plugins/zsh-autosuggestions"] + path = .zsh/plugins/zsh-autosuggestions + url = https://github.com/zsh-users/zsh-autosuggestions +[submodule ".zsh/plugins/zsh-syntax-highlighting"] + path = .zsh/plugins/zsh-syntax-highlighting + url = https://github.com/zsh-users/zsh-syntax-highlighting +[submodule ".oh-my-zsh"] + path = .oh-my-zsh + url = https://github.com/ohmyzsh/ohmyzsh.git diff --git a/.oh-my-zsh b/.oh-my-zsh new file mode 160000 index 00000000..4e45e12d --- /dev/null +++ b/.oh-my-zsh @@ -0,0 +1 @@ +Subproject commit 4e45e12dc355e3ba34e7e40ce4936fb222f0155c diff --git a/.zsh/plugins/zsh-autosuggestions b/.zsh/plugins/zsh-autosuggestions new file mode 160000 index 00000000..ae315ded --- /dev/null +++ b/.zsh/plugins/zsh-autosuggestions @@ -0,0 +1 @@ +Subproject commit ae315ded4dba10685dbbafbfa2ff3c1aefeb490d diff --git a/.zsh/plugins/zsh-syntax-highlighting b/.zsh/plugins/zsh-syntax-highlighting new file mode 160000 index 00000000..e2e97dde --- /dev/null +++ b/.zsh/plugins/zsh-syntax-highlighting @@ -0,0 +1 @@ +Subproject commit e2e97dde9c92bf27d8222482a08e2b77d66ac334 diff --git a/.zsh/plugins/zsh-vim-mode b/.zsh/plugins/zsh-vim-mode new file mode 160000 index 00000000..d0a53168 --- /dev/null +++ b/.zsh/plugins/zsh-vim-mode @@ -0,0 +1 @@ +Subproject commit d0a53168fb448894b7a33befa30e489ef77c81d2 diff --git a/.zsh/themes/dustvoice.zsh-theme b/.zsh/themes/dustvoice.zsh-theme new file mode 100644 index 00000000..bd46431b --- /dev/null +++ b/.zsh/themes/dustvoice.zsh-theme @@ -0,0 +1,10 @@ +# user, host, full path, and time/date +# on two lines for easier vgrepping +# entry in a nice long thread on the Arch Linux forums: https://bbs.archlinux.org/viewtopic.php?pid=521888#p521888 +PROMPT=$'%b%{$fg[yellow]%}%n@%{$fg[magenta]%}%M %{$fg[green]%}%~ $(git_prompt_info) +%{$fg_bold[white]%}%(!.#.$)%{$reset_color%} ' + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[blue]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%} %{$fg[red]%}X" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}" diff --git a/.zshrc b/.zshrc index 00972000..a21ff729 100644 --- a/.zshrc +++ b/.zshrc @@ -1,52 +1,118 @@ -HISTFILE=~/.histfile -HISTSIZE=1000 -SAVEHIST=10000 -setopt appendhistory +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" -bindkey -v +# Would you like to use another custom folder than $ZSH/custom? +ZSH_CUSTOM="$HOME/.zsh" -terminfo_down_sc=$terminfo[cud1]$terminfo[cud1]$terminfo[cuu1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]$terminfo[cud1] -#terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1] +# 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="dustvoice" -function insert-mode () { echo "%S%F{cyan} -- INSERT -- %f%s" } -function normal-mode () { echo "%S%F{green} -- NORMAL -- %f%s" } +# 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 ~/.oh-my-zsh/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) -precmd () { - PS1="%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%F{magenta}%n%f@%F{yellow}%m%f %F{green}%~%f %(!.#.$) " -} +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" -function zle-keymap-select () { - VI_KEYMAP=$KEYMAP +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" - case ${VI_KEYMAP} in - (vicmd) VI_MODE="$(normal-mode)" ;; - (main|viins) VI_MODE="$(insert-mode)" ;; - (*) VI_MODE="$(insert-mode)" ;; - esac +# Uncomment the following line to disable bi-weekly auto-update checks. +DISABLE_AUTO_UPDATE="true" - PS1="%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%F{magenta}%n%f@%F{yellow}%m%f %B%F{cyan}%~%f%b %(!.#.$) " +# Uncomment the following line to automatically update without prompting. +# DISABLE_UPDATE_PROMPT="true" - zle reset-prompt - zle -R -} +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 -function zle-line-init() { - zle -K viins -} +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS=true -preexec () { print -rn -- $terminfo[el]; } +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" -zle -N zle-line-init -zle -N zle-keymap-select +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" -export KEYTIMEOUT=1 +# Uncomment the following line to enable command auto-correction. +ENABLE_CORRECTION="true" -alias ll='ls -alhF' -alias la='ls -A' -alias l='ls -CF' +# Uncomment the following line to display red dots whilst waiting for completion. +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="yyyy-mm-dd" + +HISTSIZE=1000000 +SAVEHIST=$HISTSIZE + +setopt HIST_EXPIRE_DUPS_FIRST +setopt HIST_IGNORE_DUPS +setopt HIST_IGNORE_ALL_DUPS + +ZSH_AUTOSUGGEST_USE_ASYNC="true" +ZSH_AUTOSUGGEST_STRATEGY=(history) + +MODE_CURSOR_DEFAULT="white blinking bar" +MODE_CURSOR_VICMD="magenta steady block" +MODE_CURSOR_VIINS="white blinking bar" +MODE_CURSOR_SEARCH="cyan steady underline" +MODE_CURSOR_REPLACE="red steady underline" +MODE_CURSOR_VISUAL="magenta steady block" + +# Which plugins would you like to load? +# Standard plugins can be found in ~/.oh-my-zsh/plugins/* +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +# plugins=(git) +plugins=(colored-man-pages colorize command-not-found git zsh-autosuggestions zsh-syntax-highlighting history-substring-search zsh-vim-mode) + +source $ZSH/oh-my-zsh.sh + +bindkey -M vicmd 'K' history-substring-search-up +bindkey -M vicmd 'J' history-substring-search-down + +bindkey -M vicmd 'L' autosuggest-accept +bindkey -M vicmd 'H' autosuggest-clear +bindkey -M vicmd '$' autosuggest-accept +bindkey -M vicmd '0' autosuggest-clear + +# User configuration + +export MANPATH="/usr/local/man:$MANPATH" # You may need to manually set your language environment -# export LANG=en_US.UTF-8 +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 + +export EDITOR='nvim' + +# 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 @@ -64,7 +130,7 @@ gpg-connect-agent updatestartuptty /bye export EDITOR=nvim export TERMINAL=gnome-terminal -export PATH=$HOME/bin:$HOME/.local/bin:$PATH:~/JUCE +export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH:~/JUCE export JUCE_PATH=~/JUCE export FRUT_PATH=~/FRUT @@ -72,3 +138,13 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH export CXXFLAGS='-std=c++14' export LIBGL_ALWAYS_INDIRECT=1 + +alias la='ls -lahF' +alias ll='ls -lhF' +alias ls='ls -F --color=tty' +alias lsa='ls -aF' +alias layout='xkblayout-state print "%s %v"' +alias picom-default='picom -bGC --backend glx --unredir-if-possible-delay 1000 --vsync' +alias screenkey-obs='screenkey --no-systray -t 2 -p fixed -s small -g 960x36+960+4 --key-mode composed --bak-mode full --mods-mode normal --scr 0 -f Hack' +alias tmate-obs='tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice' +alias xfce-polkit='/usr/lib/xfce-polkit/xfce-polkit'