From 004162c05e42a2f2645ca06702567967b1d88961 Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Wed, 16 Dec 2020 02:12:41 +0100 Subject: . --- alacritty/alacritty.yml | 2 +- bash/.bashrc | 11 ---- bash/.profile | 14 ----- bspwm/bspwmrc | 8 ++- bspwm/terminal.py | 46 --------------- bspwm/terminal.sh | 3 +- fish/config.fish | 0 fish/fish_variables | 33 ----------- fish/functions/br.fish | 1 - fish/functions/fish_prompt.fish | 83 -------------------------- install.sh | 30 ++++++---- shell/.profile | 12 ++++ shell/bash/.bashrc | 1 + shell/fish/config.fish | 0 shell/fish/fish_variables | 33 +++++++++++ shell/fish/functions/fish_prompt.fish | 83 ++++++++++++++++++++++++++ shell/zsh/.zshrc | 12 ++++ shell/zsh/zsh-git-prompt/LICENSE.md | 21 +++++++ shell/zsh/zsh-git-prompt/README.md | 93 +++++++++++++++++++++++++++++ shell/zsh/zsh-git-prompt/gitstatus.py | 65 ++++++++++++++++++++ shell/zsh/zsh-git-prompt/zshrc.sh | 108 ++++++++++++++++++++++++++++++++++ subl3/Preferences.sublime-settings | 10 +++- sxhkd/sxhkdrc.bspwm | 54 ----------------- sxhkd/terminal_bspwm.py | 46 --------------- tmux/.tmux.conf | 2 +- vim/.vimrc | 20 +++++-- 26 files changed, 477 insertions(+), 314 deletions(-) delete mode 100644 bash/.bashrc delete mode 100644 bash/.profile delete mode 100644 bspwm/terminal.py delete mode 100644 fish/config.fish delete mode 100644 fish/fish_variables delete mode 120000 fish/functions/br.fish delete mode 100644 fish/functions/fish_prompt.fish create mode 100644 shell/.profile create mode 100644 shell/bash/.bashrc create mode 100644 shell/fish/config.fish create mode 100644 shell/fish/fish_variables create mode 100644 shell/fish/functions/fish_prompt.fish create mode 100644 shell/zsh/.zshrc create mode 100644 shell/zsh/zsh-git-prompt/LICENSE.md create mode 100644 shell/zsh/zsh-git-prompt/README.md create mode 100755 shell/zsh/zsh-git-prompt/gitstatus.py create mode 100644 shell/zsh/zsh-git-prompt/zshrc.sh delete mode 100644 sxhkd/sxhkdrc.bspwm delete mode 100644 sxhkd/terminal_bspwm.py diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml index 6c08e4a..5edccde 100644 --- a/alacritty/alacritty.yml +++ b/alacritty/alacritty.yml @@ -374,7 +374,7 @@ key_bindings: - { key: Insert, mods: Shift, action: PasteSelection } - { key: Key0, mods: Control, action: ResetFontSize } - { key: Equals, mods: Control, action: IncreaseFontSize } - - { key: Subtract, mods: Control, action: DecreaseFontSize } + - { key: Minus, mods: Control, action: DecreaseFontSize } - { key: Home, chars: "\x1bOH", mode: AppCursor } - { key: Home, chars: "\x1b[H", mode: ~AppCursor } - { key: End, chars: "\x1bOF", mode: AppCursor } diff --git a/bash/.bashrc b/bash/.bashrc deleted file mode 100644 index f5f7011..0000000 --- a/bash/.bashrc +++ /dev/null @@ -1,11 +0,0 @@ -# -# ~/.bashrc -# - -# If not running interactively, don't do anything -[[ $- != *i* ]] && return - -alias ls='ls --color=auto' -PS1='[\u@\h \W]\$ ' - -source /home/bozo/.config/broot/launcher/bash/br diff --git a/bash/.profile b/bash/.profile deleted file mode 100644 index ed34427..0000000 --- a/bash/.profile +++ /dev/null @@ -1,14 +0,0 @@ -export PATH=~/python/bin:~/programs:~/programs/chicken/bin:~/.gem/ruby/2.7.0/bin:~/.cabal/bin:$PATH -export CHICKEN_REPOSITORY=~/programs/chicken_repository -export ATOM_NODE_URL=http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist -export QT_QPA_PLATFORMTHEME=qt5ct -export VISUAL=nvim -#export WLR_DRM_NO_MODIFIERS=1 -#export QT_QPA_PLATFORM=wayland -#export SDL_VIDEODRIVER=wayland -#export GDK_BACKEND=wayland -#export QT_AUTO_SCREEN_SCALE_FACTOR=1 -#export QT_ENABLE_HIGHDPI_SCALING=1 -#export QT_WAYLAND_FORCE_DPI=120 - -source /home/bozo/.config/broot/launcher/bash/br diff --git a/bspwm/bspwmrc b/bspwm/bspwmrc index f6d3a99..99cc457 100755 --- a/bspwm/bspwmrc +++ b/bspwm/bspwmrc @@ -2,10 +2,14 @@ sxhkd -c ~/.config/bspwm/sxhkdrc & ~/.config/polybar/launch.sh & +wmname compiz -bspc monitor primary -d 1 2 3 4 term -[ $(xrandr --listactivemonitors | wc -l) -gt 2 ] && \ +if [ $(xrandr --listactivemonitors | wc -l) -gt 2 ]; then + bspc monitor primary -d 1 2 3 4 term bspc monitor primary#next -d a s d f +else + bspc monitor primary -d 1 2 3 4 a s d f term +fi bspc config border_width 4 bspc config window_gap 0 diff --git a/bspwm/terminal.py b/bspwm/terminal.py deleted file mode 100644 index eee7875..0000000 --- a/bspwm/terminal.py +++ /dev/null @@ -1,46 +0,0 @@ -import subprocess - - -desktop_name = 'term' -instance_name = 'tmux_term' - - -def is_term_running(): - p = subprocess.run(['xdo', 'id', '-n', instance_name]) - return p.returncode == 0 - - -def run_term(): - subprocess.Popen(['alacritty', '--class', instance_name, - '-e', 'tmux', 'new-session', '-A', '-s', 'default']) - - -def get_focused_desktop(): - p = subprocess.run(['bspc', 'query', '-D', '--names', '-d', 'focused'], - capture_output=True, - check=True) - return p.stdout.decode('utf-8').strip() - - -def hide_term(): - subprocess.run(['bspc', 'desktop', '-f', 'last.local'], check=True) - - -def show_term(): - subprocess.run(['bspc', 'desktop', 'term', '-m', 'focused']) - subprocess.run(['bspc', 'desktop', '-f', 'term'], check=True) - - -def main(): - if not is_term_running(): - run_term() - - focused_desktop = get_focused_desktop() - if focused_desktop == desktop_name: - hide_term() - else: - show_term() - - -if __name__ == '__main__': - main() diff --git a/bspwm/terminal.sh b/bspwm/terminal.sh index 8cd5418..6dcce6e 100755 --- a/bspwm/terminal.sh +++ b/bspwm/terminal.sh @@ -1,4 +1,4 @@ - +#!/bin/sh DESKTOP=term INSTANCE=tmux_term @@ -8,7 +8,6 @@ INSTANCE=tmux_term tmux new-session -A -s default if [ $(bspc query -D --names -d focused) = $DESKTOP ]; then - echo "sakrit" bspc desktop -f last.local else bspc desktop $DESKTOP -m focused diff --git a/fish/config.fish b/fish/config.fish deleted file mode 100644 index e69de29..0000000 diff --git a/fish/fish_variables b/fish/fish_variables deleted file mode 100644 index 9395dfc..0000000 --- a/fish/fish_variables +++ /dev/null @@ -1,33 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR __fish_init_2_3_0:\x1d -SETUVAR __fish_initialized:3100 -SETUVAR fish_color_autosuggestion:586e75 -SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:normal -SETUVAR fish_color_comment:586e75 -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:268bd2 -SETUVAR fish_color_error:dc322f -SETUVAR fish_color_escape:00a6b2 -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue -SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:00a6b2 -SETUVAR fish_color_param:normal -SETUVAR fish_color_quote:657b83 -SETUVAR fish_color_redirection:6c71c4 -SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dblack -SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_status:red -SETUVAR fish_color_user:brgreen -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_greeting: -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_completion:B3A06D -SETUVAR fish_pager_color_description:B3A06D -SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/fish/functions/br.fish b/fish/functions/br.fish deleted file mode 120000 index f2aec65..0000000 --- a/fish/functions/br.fish +++ /dev/null @@ -1 +0,0 @@ -/home/bozo/.local/share/broot/launcher/fish/br.fish \ No newline at end of file diff --git a/fish/functions/fish_prompt.fish b/fish/functions/fish_prompt.fish deleted file mode 100644 index 47cedee..0000000 --- a/fish/functions/fish_prompt.fish +++ /dev/null @@ -1,83 +0,0 @@ -function fish_prompt - - set -l last_status $status - - set -l color_host $fish_color_host - set -l color_cwd $fish_color_cwd - set -l suffix '$' - - if set -q SSH_TTY - set color_host $fish_color_host_remote - end - - if test "$USER" = "root" - set color_cwd $fish_color_cwd_root - set suffix '#' - end - - if not set -q __fish_git_prompt_show_informative_status - set -g __fish_git_prompt_show_informative_status 1 - end - if not set -q __fish_git_prompt_hide_untrackedfiles - set -g __fish_git_prompt_hide_untrackedfiles 1 - end - - if not set -q __fish_git_prompt_color_branch - set -g __fish_git_prompt_color_branch magenta --bold - end - if not set -q __fish_git_prompt_showupstream - set -g __fish_git_prompt_showupstream "informative" - end - if not set -q __fish_git_prompt_char_upstream_ahead - set -g __fish_git_prompt_char_upstream_ahead "↑" - end - if not set -q __fish_git_prompt_char_upstream_behind - set -g __fish_git_prompt_char_upstream_behind "↓" - end - if not set -q __fish_git_prompt_char_upstream_prefix - set -g __fish_git_prompt_char_upstream_prefix "" - end - - if not set -q __fish_git_prompt_char_stagedstate - set -g __fish_git_prompt_char_stagedstate "● " - end - if not set -q __fish_git_prompt_char_dirtystate - set -g __fish_git_prompt_char_dirtystate "✚ " - end - if not set -q __fish_git_prompt_char_untrackedfiles - set -g __fish_git_prompt_char_untrackedfiles "…" - end - if not set -q __fish_git_prompt_char_invalidstate - set -g __fish_git_prompt_char_invalidstate "✖" - end - if not set -q __fish_git_prompt_char_cleanstate - set -g __fish_git_prompt_char_cleanstate "✔" - end - - if not set -q __fish_git_prompt_color_dirtystate - set -g __fish_git_prompt_color_dirtystate blue - end - if not set -q __fish_git_prompt_color_stagedstate - set -g __fish_git_prompt_color_stagedstate yellow - end - if not set -q __fish_git_prompt_color_invalidstate - set -g __fish_git_prompt_color_invalidstate red - end - if not set -q __fish_git_prompt_color_untrackedfiles - set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal - end - if not set -q __fish_git_prompt_color_cleanstate - set -g __fish_git_prompt_color_cleanstate green --bold - end - - echo -n -s \ - (set_color normal) "[" \ - (set_color $fish_color_user) "$USER" \ - (set_color normal) @ \ - (set_color $color_host) (hostname) \ - (set_color normal) " " \ - (set_color $color_cwd) (prompt_pwd) \ - (set_color normal) (__fish_vcs_prompt) \ - (set_color normal) "]" $suffix " " - -end diff --git a/install.sh b/install.sh index 8ce7320..f40a4d2 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,8 @@ -#!/usr/bin/env bash +#!/bin/sh set -e -ln -sf -T $(realpath $(dirname ${BASH_SOURCE[0]})) ~/.dotfiles + +ln -sf -T $(cd $(dirname "$0"); pwd) ~/.dotfiles # alacritty ln -sf -T ~/.dotfiles/alacritty ~/.config/alacritty @@ -13,17 +14,9 @@ ln -sf ~/.dotfiles/atom/init.coffee ~/.atom/init.coffee ln -sf ~/.dotfiles/atom/keymap.cson ~/.atom/keymap.cson ln -sf ~/.dotfiles/atom/styles.less ~/.atom/styles.less -# bash -ln -sf ~/.dotfiles/bash/.profile ~/.profile -ln -sf ~/.dotfiles/bash/.bashrc ~/.bashrc -ln -sf ~/.profile ~/.bash_profile - # bspwm ln -sf -T ~/.dotfiles/bspwm ~/.config/bspwm -# fish -ln -sf -T ~/.dotfiles/fish ~/.config/fish - # git ln -sf ~/.dotfiles/git/.gitconfig ~/.gitconfig @@ -51,6 +44,20 @@ ln -sf ~/.dotfiles/qutebrowser/autoconfig.yml ~/.config/qutebrowser/autoconfig.y mkdir -p ~/.config/ranger ln -sf ~/.dotfiles/ranger/rc.conf ~/.config/ranger/rc.conf +# shell +ln -sf ~/.dotfiles/shell/.profile ~/.profile + +# shell - bash +ln -sf ~/.dotfiles/shell/bash/.bashrc ~/.bashrc +ln -sf ~/.profile ~/.bash_profile + +# shell - fish +ln -sf -T ~/.dotfiles/shell/fish ~/.config/fish + +# shell - zsh +ln -sf ~/.dotfiles/shell/zsh/.zshrc ~/.zshrc +ln -sf ~/.profile ~/.zprofile + # sublime mkdir -p ~/.config/sublime-text-3/Packages/User ln -sf "~/.dotfiles/subl3/Package Control.sublime-settings" \ @@ -67,9 +74,6 @@ done # sway ln -sf -T ~/.dotfiles/sway ~/.config/sway -# sxhkd -ln -sf -T ~/.dotfiles/sxhkd ~/.config/sxhkd - # tmux ln -sf ~/.dotfiles/tmux/.tmux.conf ~/.tmux.conf diff --git a/shell/.profile b/shell/.profile new file mode 100644 index 0000000..9a9d26e --- /dev/null +++ b/shell/.profile @@ -0,0 +1,12 @@ +export ATOM_NODE_URL=http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist +export CHICKEN_REPOSITORY=~/programs/chicken_repository +export PATH=~/python/bin:~/programs:~/programs/chicken/bin:~/.gem/ruby/2.7.0/bin:~/.cabal/bin:$PATH +export QT_QPA_PLATFORMTHEME=qt5ct +export VISUAL=nvim +#export GDK_BACKEND=wayland +#export QT_AUTO_SCREEN_SCALE_FACTOR=1 +#export QT_ENABLE_HIGHDPI_SCALING=1 +#export QT_QPA_PLATFORM=wayland +#export QT_WAYLAND_FORCE_DPI=120 +#export SDL_VIDEODRIVER=wayland +#export WLR_DRM_NO_MODIFIERS=1 diff --git a/shell/bash/.bashrc b/shell/bash/.bashrc new file mode 100644 index 0000000..267c279 --- /dev/null +++ b/shell/bash/.bashrc @@ -0,0 +1 @@ +PS1='[\u@\h \W]\$ ' diff --git a/shell/fish/config.fish b/shell/fish/config.fish new file mode 100644 index 0000000..e69de29 diff --git a/shell/fish/fish_variables b/shell/fish/fish_variables new file mode 100644 index 0000000..9395dfc --- /dev/null +++ b/shell/fish/fish_variables @@ -0,0 +1,33 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_init_2_3_0:\x1d +SETUVAR __fish_initialized:3100 +SETUVAR fish_color_autosuggestion:586e75 +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:normal +SETUVAR fish_color_comment:586e75 +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:268bd2 +SETUVAR fish_color_error:dc322f +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:normal +SETUVAR fish_color_quote:657b83 +SETUVAR fish_color_redirection:6c71c4 +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_greeting: +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:B3A06D +SETUVAR fish_pager_color_description:B3A06D +SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/shell/fish/functions/fish_prompt.fish b/shell/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..47cedee --- /dev/null +++ b/shell/fish/functions/fish_prompt.fish @@ -0,0 +1,83 @@ +function fish_prompt + + set -l last_status $status + + set -l color_host $fish_color_host + set -l color_cwd $fish_color_cwd + set -l suffix '$' + + if set -q SSH_TTY + set color_host $fish_color_host_remote + end + + if test "$USER" = "root" + set color_cwd $fish_color_cwd_root + set suffix '#' + end + + if not set -q __fish_git_prompt_show_informative_status + set -g __fish_git_prompt_show_informative_status 1 + end + if not set -q __fish_git_prompt_hide_untrackedfiles + set -g __fish_git_prompt_hide_untrackedfiles 1 + end + + if not set -q __fish_git_prompt_color_branch + set -g __fish_git_prompt_color_branch magenta --bold + end + if not set -q __fish_git_prompt_showupstream + set -g __fish_git_prompt_showupstream "informative" + end + if not set -q __fish_git_prompt_char_upstream_ahead + set -g __fish_git_prompt_char_upstream_ahead "↑" + end + if not set -q __fish_git_prompt_char_upstream_behind + set -g __fish_git_prompt_char_upstream_behind "↓" + end + if not set -q __fish_git_prompt_char_upstream_prefix + set -g __fish_git_prompt_char_upstream_prefix "" + end + + if not set -q __fish_git_prompt_char_stagedstate + set -g __fish_git_prompt_char_stagedstate "● " + end + if not set -q __fish_git_prompt_char_dirtystate + set -g __fish_git_prompt_char_dirtystate "✚ " + end + if not set -q __fish_git_prompt_char_untrackedfiles + set -g __fish_git_prompt_char_untrackedfiles "…" + end + if not set -q __fish_git_prompt_char_invalidstate + set -g __fish_git_prompt_char_invalidstate "✖" + end + if not set -q __fish_git_prompt_char_cleanstate + set -g __fish_git_prompt_char_cleanstate "✔" + end + + if not set -q __fish_git_prompt_color_dirtystate + set -g __fish_git_prompt_color_dirtystate blue + end + if not set -q __fish_git_prompt_color_stagedstate + set -g __fish_git_prompt_color_stagedstate yellow + end + if not set -q __fish_git_prompt_color_invalidstate + set -g __fish_git_prompt_color_invalidstate red + end + if not set -q __fish_git_prompt_color_untrackedfiles + set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal + end + if not set -q __fish_git_prompt_color_cleanstate + set -g __fish_git_prompt_color_cleanstate green --bold + end + + echo -n -s \ + (set_color normal) "[" \ + (set_color $fish_color_user) "$USER" \ + (set_color normal) @ \ + (set_color $color_host) (hostname) \ + (set_color normal) " " \ + (set_color $color_cwd) (prompt_pwd) \ + (set_color normal) (__fish_vcs_prompt) \ + (set_color normal) "]" $suffix " " + +end diff --git a/shell/zsh/.zshrc b/shell/zsh/.zshrc new file mode 100644 index 0000000..6d0d4ef --- /dev/null +++ b/shell/zsh/.zshrc @@ -0,0 +1,12 @@ +HISTFILE=~/.zsh_history +HISTSIZE=1000 +SAVEHIST=1000 + +bindkey -v + +autoload -Uz compinit +compinit + +. ~/.dotfiles/shell/zsh/zsh-git-prompt/zshrc.sh + +PROMPT='[%F{green}%n%f@%m %F{green}%~%f $(git_super_status)]$ ' diff --git a/shell/zsh/zsh-git-prompt/LICENSE.md b/shell/zsh/zsh-git-prompt/LICENSE.md new file mode 100644 index 0000000..cba6fbc --- /dev/null +++ b/shell/zsh/zsh-git-prompt/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Olivier Verdier + +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. diff --git a/shell/zsh/zsh-git-prompt/README.md b/shell/zsh/zsh-git-prompt/README.md new file mode 100644 index 0000000..668726c --- /dev/null +++ b/shell/zsh/zsh-git-prompt/README.md @@ -0,0 +1,93 @@ +# Informative git prompt for zsh + +[![Build Status](https://travis-ci.org/olivierverdier/zsh-git-prompt.svg)](https://travis-ci.org/olivierverdier/zsh-git-prompt) + +A `zsh` prompt that displays information about the current git repository. In particular the branch name, difference with remote branch, number of files staged, changed, etc. + +(an original idea from this [blog post][]). + +## Examples + +The prompt may look like the following: + +- `(master↑3|✚1)`: on branch `master`, ahead of remote by 3 commits, 1 file changed but not staged +- `(status|●2)`: on branch `status`, 2 files staged +- `(master|✚7…)`: on branch `master`, 7 files changed, some files untracked +- `(master|✖2✚3)`: on branch `master`, 2 conflicts, 3 files changed +- `(experimental↓2↑3|✔)`: on branch `experimental`; your branch has diverged by 3 commits, remote by 2 commits; the repository is otherwise clean +- `(:70c2952|✔)`: not on any branch; parent commit has hash `70c2952`; + the repository is otherwise clean + +Here is how it could look like when you are ahead by 4 commits, behind by 5 commits, and have 1 staged files, 1 changed but unstaged file, and some untracked files, on branch `dev`: + + + + + +## Prompt Structure + +By default, the general appearance of the prompt is: + +``` +(|) +``` + +The symbols are as follows: + +### Local Status Symbols + +|Symbol|Meaning +|------|------| +|✔ | repository clean +|●n | there are `n` staged files +|✖n | there are `n` unmerged files +|✚n | there are `n` changed but *unstaged* files +|… | there are some untracked files + + +### Branch Tracking Symbols + +Symbol | Meaning +-------|------- +↑n | ahead of remote by `n` commits +↓n | behind remote by `n` commits +↓m↑n | branches diverged, other by `m` commits, yours by `n` commits + +### Branch Symbol + +When the branch name starts with a colon `:`, it means it’s actually a hash, not a branch (although it should be pretty clear, unless you name your branches like hashes :-) + +## Install + +1. Clone this repository somewhere on your hard drive. +2. Source the file `zshrc.sh` from your `~/.zshrc` config file, and + configure your prompt. So, somewhere in `~/.zshrc`, you should have: + + ```sh + source path/to/zshrc.sh + # an example prompt + PROMPT='%B%m%~%b$(git_super_status) %# ' + ``` +3. Go in a git repository and test it! + +### Haskell (optional) + +There is now a Haskell implementation as well, which can be four to six times faster than the Python one. The reason is not that Haskell is faster in itself (although it is), but that this implementation calls `git` only once. To install, do the following: + +1. Make sure [Haskell's stack](http://docs.haskellstack.org/en/stable/README.html#how-to-install) is installed on your system +2. `cd` to this folder +2. Run `stack setup` to install the Haskell compiler, if it is not already there +3. Run `stack build && stack install` (don't worry, the executable is only “installed” in this folder, not on your system) +4. Define the variable `GIT_PROMPT_EXECUTABLE="haskell"` somewhere in + your `.zshrc` + +## Customisation + +- You may redefine the function `git_super_status` (after the `source` statement) to adapt it to your needs (to change the order in which the information is displayed). +- Define the variable `ZSH_THEME_GIT_PROMPT_CACHE` in order to enable caching. +- You may also change a number of variables (which name start with `ZSH_THEME_GIT_PROMPT_`) to change the appearance of the prompt. Take a look in the file `zshrc.sh` to see how the function `git_super_status` is defined, and what variables are available. + +**Enjoy!** + + [blog post]: http://sebastiancelis.com/2009/nov/16/zsh-prompt-git-users/ + diff --git a/shell/zsh/zsh-git-prompt/gitstatus.py b/shell/zsh/zsh-git-prompt/gitstatus.py new file mode 100755 index 0000000..d944fd4 --- /dev/null +++ b/shell/zsh/zsh-git-prompt/gitstatus.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python +from __future__ import print_function + +# change this symbol to whatever you prefer +prehash = ':' + +from subprocess import Popen, PIPE + +import sys +gitsym = Popen(['git', 'symbolic-ref', 'HEAD'], stdout=PIPE, stderr=PIPE) +branch, error = gitsym.communicate() + +error_string = error.decode('utf-8') + +if 'fatal: Not a git repository' in error_string: + sys.exit(0) + +branch = branch.decode("utf-8").strip()[11:] + +res, err = Popen(['git','diff','--name-status'], stdout=PIPE, stderr=PIPE).communicate() +err_string = err.decode('utf-8') +if 'fatal' in err_string: + sys.exit(0) +changed_files = [namestat[0] for namestat in res.decode("utf-8").splitlines()] +staged_files = [namestat[0] for namestat in Popen(['git','diff', '--staged','--name-status'], stdout=PIPE).communicate()[0].splitlines()] +nb_changed = len(changed_files) - changed_files.count('U') +nb_U = staged_files.count('U') +nb_staged = len(staged_files) - nb_U +staged = str(nb_staged) +conflicts = str(nb_U) +changed = str(nb_changed) +nb_untracked = len([0 for status in Popen(['git','status','--porcelain',],stdout=PIPE).communicate()[0].decode("utf-8").splitlines() if status.startswith('??')]) +untracked = str(nb_untracked) + +ahead, behind = 0,0 + +if not branch: # not on any branch + branch = prehash + Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0].decode("utf-8")[:-1] +else: + remote_name = Popen(['git','config','branch.%s.remote' % branch], stdout=PIPE).communicate()[0].decode("utf-8").strip() + if remote_name: + merge_name = Popen(['git','config','branch.%s.merge' % branch], stdout=PIPE).communicate()[0].decode("utf-8").strip() + if remote_name == '.': # local + remote_ref = merge_name + else: + remote_ref = 'refs/remotes/%s/%s' % (remote_name, merge_name[11:]) + revgit = Popen(['git', 'rev-list', '--left-right', '%s...HEAD' % remote_ref],stdout=PIPE, stderr=PIPE) + revlist = revgit.communicate()[0] + if revgit.poll(): # fallback to local + revlist = Popen(['git', 'rev-list', '--left-right', '%s...HEAD' % merge_name],stdout=PIPE, stderr=PIPE).communicate()[0] + behead = revlist.decode("utf-8").splitlines() + ahead = len([x for x in behead if x[0]=='>']) + behind = len(behead) - ahead + +out = ' '.join([ + branch, + str(ahead), + str(behind), + staged, + conflicts, + changed, + untracked, + ]) +print(out, end='') + diff --git a/shell/zsh/zsh-git-prompt/zshrc.sh b/shell/zsh/zsh-git-prompt/zshrc.sh new file mode 100644 index 0000000..d4010c1 --- /dev/null +++ b/shell/zsh/zsh-git-prompt/zshrc.sh @@ -0,0 +1,108 @@ +# To install source this file from your .zshrc file + +# see documentation at http://linux.die.net/man/1/zshexpn +# A: finds the absolute path, even if this is symlinked +# h: equivalent to dirname +export __GIT_PROMPT_DIR=${0:A:h} + +export GIT_PROMPT_EXECUTABLE=${GIT_PROMPT_EXECUTABLE:-"python"} + +# Initialize colors. +autoload -U colors +colors + +# Allow for functions in the prompt. +setopt PROMPT_SUBST + +autoload -U add-zsh-hook + +add-zsh-hook chpwd chpwd_update_git_vars +add-zsh-hook preexec preexec_update_git_vars +add-zsh-hook precmd precmd_update_git_vars + +## Function definitions +function preexec_update_git_vars() { + case "$2" in + git*|hub*|gh*|stg*) + __EXECUTED_GIT_COMMAND=1 + ;; + esac +} + +function precmd_update_git_vars() { + if [ -n "$__EXECUTED_GIT_COMMAND" ] || [ ! -n "$ZSH_THEME_GIT_PROMPT_CACHE" ]; then + update_current_git_vars + unset __EXECUTED_GIT_COMMAND + fi +} + +function chpwd_update_git_vars() { + update_current_git_vars +} + +function update_current_git_vars() { + unset __CURRENT_GIT_STATUS + + if [[ "$GIT_PROMPT_EXECUTABLE" == "python" ]]; then + local gitstatus="$__GIT_PROMPT_DIR/gitstatus.py" + _GIT_STATUS=`python ${gitstatus} 2>/dev/null` + fi + if [[ "$GIT_PROMPT_EXECUTABLE" == "haskell" ]]; then + _GIT_STATUS=`git status --porcelain --branch &> /dev/null | $__GIT_PROMPT_DIR/src/.bin/gitstatus` + fi + __CURRENT_GIT_STATUS=("${(@s: :)_GIT_STATUS}") + GIT_BRANCH=$__CURRENT_GIT_STATUS[1] + GIT_AHEAD=$__CURRENT_GIT_STATUS[2] + GIT_BEHIND=$__CURRENT_GIT_STATUS[3] + GIT_STAGED=$__CURRENT_GIT_STATUS[4] + GIT_CONFLICTS=$__CURRENT_GIT_STATUS[5] + GIT_CHANGED=$__CURRENT_GIT_STATUS[6] + GIT_UNTRACKED=$__CURRENT_GIT_STATUS[7] +} + + +git_super_status() { + precmd_update_git_vars + if [ -n "$__CURRENT_GIT_STATUS" ]; then + STATUS="$ZSH_THEME_GIT_PROMPT_PREFIX$ZSH_THEME_GIT_PROMPT_BRANCH$GIT_BRANCH%{${reset_color}%}" + if [ "$GIT_BEHIND" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_BEHIND$GIT_BEHIND%{${reset_color}%}" + fi + if [ "$GIT_AHEAD" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_AHEAD$GIT_AHEAD%{${reset_color}%}" + fi + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_SEPARATOR" + if [ "$GIT_STAGED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_STAGED$GIT_STAGED%{${reset_color}%}" + fi + if [ "$GIT_CONFLICTS" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CONFLICTS$GIT_CONFLICTS%{${reset_color}%}" + fi + if [ "$GIT_CHANGED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CHANGED$GIT_CHANGED%{${reset_color}%}" + fi + if [ "$GIT_UNTRACKED" -ne "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED%{${reset_color}%}" + fi + if [ "$GIT_CHANGED" -eq "0" ] && [ "$GIT_CONFLICTS" -eq "0" ] && [ "$GIT_STAGED" -eq "0" ] && [ "$GIT_UNTRACKED" -eq "0" ]; then + STATUS="$STATUS$ZSH_THEME_GIT_PROMPT_CLEAN" + fi + STATUS="$STATUS%{${reset_color}%}$ZSH_THEME_GIT_PROMPT_SUFFIX" + echo "$STATUS" + fi +} + +# Default values for the appearance of the prompt. Configure at will. +ZSH_THEME_GIT_PROMPT_PREFIX="(" +ZSH_THEME_GIT_PROMPT_SUFFIX=")" +ZSH_THEME_GIT_PROMPT_SEPARATOR="|" +ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_bold[magenta]%}" +ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}%{●%G%}" +ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{✖%G%}" +ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}" +ZSH_THEME_GIT_PROMPT_BEHIND="%{↓%G%}" +ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{…%G%}" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{✔%G%}" + + diff --git a/subl3/Preferences.sublime-settings b/subl3/Preferences.sublime-settings index 9bdb33b..6fcd102 100644 --- a/subl3/Preferences.sublime-settings +++ b/subl3/Preferences.sublime-settings @@ -38,18 +38,24 @@ ], "color_scheme": "Packages/Color Scheme - Default/Monokai.sublime-color-scheme", "default_line_ending": "unix", + "detect_indentation": false, "ensure_newline_at_eof_on_save": true, "file_exclude_patterns": [ ], "font_face": "Roboto Mono", - "font_size": 11, + "font_size": 12, "highlight_line": true, "highlight_modified_tabs": true, "ignored_packages": [ + "AutoWrap", + "Compare Side-By-Side", + "PackageResourceViewer", "Python", - "Vintage" + "SublimeLinter-eslint", + "Vintage", + "Zig Language" ], "line_padding_bottom": 1, "line_padding_top": 1, diff --git a/sxhkd/sxhkdrc.bspwm b/sxhkd/sxhkdrc.bspwm deleted file mode 100644 index aaeb018..0000000 --- a/sxhkd/sxhkdrc.bspwm +++ /dev/null @@ -1,54 +0,0 @@ -F12 - python ~/.config/sxhkd/terminal_bspwm.py - -mod4 + Return - alacritty -mod4 + space - rofi -show drun -#mod4 + backslash -# i3-msg "split h" -#mod4 + minus -# i3-msg "split v" -#mod4 + Tab -# i3-msg "layout toggle split" -#mod4 + p -# i3-msg "focus parent" -#mod4 + r -# i3-msg "mode resize" - - -mod4 + {1, 2, 3, 4, a, s, d, f} - bspc desktop -f {1, 2, 3, 4, a, s, d, f} - -mod4 + shift + {1, 2, 3, 4, a, s, d, f} - bspc node -d {1, 2, 3, 4, a, s, d, f} - - -mod4 + shift + r - bspc wm -r -mod4 + shift + e - bspc quit -mod4 + shift + q - bspc node -c -mod4 + shift + space - bspc node -t ~floating -mod4 + shift + Return - bspc node -t ~fullscreen - -mod4 + {h, Left} - bspc node -f west -mod4 + {j, Down} - bspc node -f south -mod4 + {k, Up} - bspc node -f north -mod4 + {l, Right} - bspc node -f east - -mod4 + shift + {h, Left} - bspc node -s west -mod4 + shift + {j, Down} - bspc node -s west -mod4 + shift + {k, Up} - bspc node -s west -mod4 + shift + {l, Right} - bspc node -s west diff --git a/sxhkd/terminal_bspwm.py b/sxhkd/terminal_bspwm.py deleted file mode 100644 index eee7875..0000000 --- a/sxhkd/terminal_bspwm.py +++ /dev/null @@ -1,46 +0,0 @@ -import subprocess - - -desktop_name = 'term' -instance_name = 'tmux_term' - - -def is_term_running(): - p = subprocess.run(['xdo', 'id', '-n', instance_name]) - return p.returncode == 0 - - -def run_term(): - subprocess.Popen(['alacritty', '--class', instance_name, - '-e', 'tmux', 'new-session', '-A', '-s', 'default']) - - -def get_focused_desktop(): - p = subprocess.run(['bspc', 'query', '-D', '--names', '-d', 'focused'], - capture_output=True, - check=True) - return p.stdout.decode('utf-8').strip() - - -def hide_term(): - subprocess.run(['bspc', 'desktop', '-f', 'last.local'], check=True) - - -def show_term(): - subprocess.run(['bspc', 'desktop', 'term', '-m', 'focused']) - subprocess.run(['bspc', 'desktop', '-f', 'term'], check=True) - - -def main(): - if not is_term_running(): - run_term() - - focused_desktop = get_focused_desktop() - if focused_desktop == desktop_name: - hide_term() - else: - show_term() - - -if __name__ == '__main__': - main() diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf index 10820d5..31af636 100644 --- a/tmux/.tmux.conf +++ b/tmux/.tmux.conf @@ -1,5 +1,5 @@ -set -g default-command "fish" +#set -g default-command "fish" set -g escape-time 0 diff --git a/vim/.vimrc b/vim/.vimrc index 1dc12af..1ca8ab2 100644 --- a/vim/.vimrc +++ b/vim/.vimrc @@ -30,6 +30,7 @@ Plug 'thaerkh/vim-indentguides' Plug 'scrooloose/nerdtree' Plug 'scrooloose/nerdcommenter' Plug 'Xuyuanp/nerdtree-git-plugin' +Plug 'mileszs/ack.vim' Plug 'bling/vim-airline' Plug 'tpope/vim-fireplace' @@ -76,11 +77,11 @@ autocmd FileType make set tabstop=4 shiftwidth=8 softtabstop=0 noexpandtab " gui settings set linespace=4 -set guifont=Droid\ Sans\ Mono:h12 -if exists('g:GuiLoaded') - GuiTabline 0 -endif -autocmd UIEnter * GuiTabline 0 +set guifont=Droid\ Sans\ Mono-20 +"if exists('g:GuiLoaded') + "GuiTabline 0 +"endif +"autocmd UIEnter * GuiTabline 0 " reload vimrc on change augroup reload_vimrc @@ -91,6 +92,7 @@ augroup END " airline configuration set laststatus=2 let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#ale#enabled = 1 " display tabs and trailing spaces set list @@ -141,6 +143,10 @@ set mouse=a let g:ale_linters = { \ 'python': ['flake8'] \ } +let g:ale_completion_enabled = 1 +let g:ale_echo_msg_error_str = 'E' +let g:ale_echo_msg_warning_str = 'W' +let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' " YouCompleteMe configuration "let g:ycm_auto_trigger = 0 @@ -148,6 +154,10 @@ let g:ale_linters = { " completion options set completeopt=menuone +set omnifunc=ale#completion#OmniFunc + +" use ack.vim with ag +let g:ackprg = 'ag --vimgrep' " disable conceal autocmd FileType json set conceallevel=0 -- cgit v1.2.3-70-g09d2