Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
|
32c6947516 | ||
|
e7aad58047 |
89 changed files with 715 additions and 7678 deletions
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,13 +1,3 @@
|
|||
git_user
|
||||
|
||||
vim/.netrwhist
|
||||
vim/bundle/*
|
||||
vim/cache/*
|
||||
|
||||
config/kitty/.local.conf
|
||||
config/mpv/watch_later
|
||||
config/nvim/.netrwhist
|
||||
|
||||
src/*
|
||||
!src/Makefile
|
||||
!src/*.*
|
||||
git_user
|
||||
|
|
6
.gitmodules
vendored
6
.gitmodules
vendored
|
@ -1,9 +1,3 @@
|
|||
[submodule "fast-syntax-highlighting"]
|
||||
path = fast-syntax-highlighting
|
||||
url = https://github.com/zdharma/fast-syntax-highlighting
|
||||
[submodule "themes/base16-kitty"]
|
||||
path = themes/base16-kitty
|
||||
url = https://github.com/kdrag0n/base16-kitty
|
||||
[submodule "zsh-autosuggestions"]
|
||||
path = zsh-autosuggestions
|
||||
url = https://github.com/zsh-users/zsh-autosuggestions
|
||||
|
|
59
aliases
59
aliases
|
@ -2,53 +2,28 @@
|
|||
# Aliases #
|
||||
###########
|
||||
|
||||
# Detect if we have GNU coreutils or BSD
|
||||
if date --version > /dev/null 2>&1 ;then
|
||||
alias acs='apt-cache search'
|
||||
alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars -h'
|
||||
alias lh='ls -trhgGN --color=always | cut -d" " -f3-' # List files in chronological order
|
||||
alias diff='diff --color'
|
||||
alias ll='ls -lha'
|
||||
alias l='sl'
|
||||
alias lll='sl'
|
||||
alias less='less --quiet'
|
||||
alias df='df --human-readable'
|
||||
alias du='du --human-readable'
|
||||
alias diff='diff -u --color'
|
||||
# alias mutt='mutt -y'
|
||||
alias upgrade='sudo apt-get update && sudo apt-get -dy dist-upgrade && sudo apt-get dist-upgrade'
|
||||
alias feh='feh --auto-rotate'
|
||||
# alias -g GP='|grep '
|
||||
alias grep="grep --color"
|
||||
alias ssh='ssh -A'
|
||||
# alias -s txt=cat
|
||||
alias rm='rm -I'
|
||||
alias ip='ip --color'
|
||||
alias ipa='ip route && echo && ip --brief address'
|
||||
alias ipr='ip --brief address && echo && ip route'
|
||||
alias cal='cal -m -3'
|
||||
else
|
||||
alias ls='ls -FGh'
|
||||
alias ipa='ip address'
|
||||
alias ipa='ip route'
|
||||
fi
|
||||
if which sl > /dev/null 2>&1; then
|
||||
alias l='sl'
|
||||
alias lll='sl'
|
||||
fi
|
||||
if which nvim > /dev/null 2>&1; then
|
||||
alias vim='nvim'
|
||||
fi
|
||||
if [ -f "$HOME/howto/how_to" ]; then
|
||||
alias howto="vim $HOME/howto/how_to"
|
||||
fi
|
||||
case $(uname -s) in
|
||||
Arch)
|
||||
alias redwm='cd ~/aur/dwm-git; updpkgsums; makepkg -fi --noconfirm; killall dwm'
|
||||
alias upgrade='sudo pacman -Syu';;
|
||||
Debian|Ubuntu)
|
||||
alias upgrade='sudo apt-get update && sudo apt-get -dy dist-upgrade && sudo apt-get dist-upgrade';;
|
||||
VoidLinux)
|
||||
alias upgrade='sudo xbps-install -Su';;
|
||||
Darwin)
|
||||
if which mvim > /dev/null 2>&1; then
|
||||
alias vim='mvim -v'
|
||||
fi;;
|
||||
esac
|
||||
alias ll='ls -lha'
|
||||
alias df='df -h'
|
||||
alias diff='diff -u'
|
||||
alias du='du -h'
|
||||
alias feh="feh -. --auto-rotate --action1 'dragon -x %F'"
|
||||
alias which='which -a'
|
||||
# The infamous cd ...etc
|
||||
# Le fameux cd ...etc
|
||||
alias -g ...='../..'
|
||||
alias -g ....='../../..'
|
||||
alias -g .....='../../../..'
|
||||
|
@ -57,13 +32,15 @@ alias -g .......='../../../../../..'
|
|||
alias -g ........='../../../../../../..'
|
||||
# Hackish tweaks
|
||||
alias steam-wine="WINEDEBUG=-all wine $WINEPREFIX/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe -no-dwrite -no-cef-sandbox &"
|
||||
alias minecraft='prismlauncher'
|
||||
alias pacaur='AURDEST=$HOME/aur pacaur'
|
||||
alias redwm='cd ~/aur/dwm-git; updpkgsums; makepkg -fi --noconfirm; killall dwm'
|
||||
alias minecraft='java -jar $HOME/.minecraft/launcher.jar'
|
||||
alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"
|
||||
alias shuffle='mpv --shuffle --display-tags= --no-audio-display'
|
||||
alias steam="LD_PRELOAD='/usr/\$LIB/libstdc++.so.6 /usr/\$LIB/libgcc_s.so.1 /usr/\$LIB/libxcb.so.1 /usr/\$LIB/libgpg-error.so' /usr/bin/steam"
|
||||
alias surftor='http_proxy=socks5://127.0.0.1:9050/ surf'
|
||||
alias ytmp3='youtube-dl -x --audio-format mp3 --no-playlist -o "%(title)s.%(ext)s" "$(xsel -ob)"'
|
||||
# Fix for archlinux
|
||||
# Fix pour archlinux
|
||||
alias zbarcam='LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so zbarcam'
|
||||
|
||||
# vim: ft=zsh
|
||||
|
|
103
bin/cliplumber
103
bin/cliplumber
|
@ -1,103 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Load helper functions
|
||||
source "$(dirname "$(rreadlink "$0")")/../lib/utils.sh"
|
||||
|
||||
# TODO: detect term or set it globally
|
||||
TERM_EMU="kitty"
|
||||
|
||||
if ! check_exists wl-paste && [ ! -z "$WAYLAND_DISPLAY" ]; then
|
||||
die "Wayland detected and wl-paste not found"
|
||||
elif ! check_exists xsel && [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
die "xsel not found"
|
||||
fi
|
||||
|
||||
# TODO check for xsel/wl-clipboard presence ?
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
clip="$(xsel -b -o)"
|
||||
else
|
||||
clip="$(wl-paste)"
|
||||
fi
|
||||
|
||||
urls="$(echo $clip | grep -o 'https\?://[a-zA-Z0-9~#%&_+=,.?@/-]\+')"
|
||||
|
||||
# Check the requirements for every option
|
||||
opts="fav|rot13"
|
||||
check_exists "$TERM_EMU" "mpv" "yt-dlp" &&
|
||||
opts="audio-search|$opts"
|
||||
check_exists "dragon" &&
|
||||
opts="drag-n-drop|$opts"
|
||||
# Enable additional features when the clipboard contains an URL
|
||||
if [ -n "$urls" ] && check_exists "yt-dlp"; then
|
||||
if echo "$urls" | grep -qF "scribblehub.com"; then
|
||||
check_exists "lncrawl" && opts="crawl|$opts"
|
||||
else
|
||||
check_exists "mpv" && opts="play|low-play|$opts"
|
||||
check_exists "mpc" && opts="queue|$opts"
|
||||
opts="download|$opts"
|
||||
fi
|
||||
fi
|
||||
# Load default choice last
|
||||
check_exists "qrencode" "feh" &&
|
||||
opts="qr|$opts"
|
||||
|
||||
# Split into multiple lines for dmenu
|
||||
opts="$(printf "%s" "$opts" | sed 's/|/\n/g')"
|
||||
|
||||
choice="$(printf "%s" "$opts" | dmenu -p "$(printf "%s" "$clip" | cut -c 1-48)")"
|
||||
case "$choice" in
|
||||
"qr")
|
||||
printf "%s" "$clip" | qrencode -o - | feh -. -Z --force-aliasing --geometry 400x400 -
|
||||
;;
|
||||
# Download supports optional folder target
|
||||
"download"*)
|
||||
path="$HOME/mus/$(printf "%s" "$choice" | cut -d " " -f 2-)"
|
||||
mp3dl -d "$path" "$urls"
|
||||
;;
|
||||
"crawl")
|
||||
path="$HOME/books/"
|
||||
[ -d "$path" ] || mkdir -p "$path"
|
||||
cd "$path" || exit
|
||||
out="$(lncrawl --single --all --format epub --filename-only --suppress -s "$urls" | grep -vFe "Input is suppressed" -e "Namespace(")"
|
||||
errors="$(printf "%s" "$out" | grep -Fe " ❗ ")"
|
||||
if [ -n "$errors" ]; then
|
||||
printf "%s" "$errors" | notify_err
|
||||
else
|
||||
printf "%s" "$out" | sed -ne '/^NOVEL: /s/NOVEL: \(.*\)/Successfully crawled "\1"/p' | xargs -0 -n1 notify-send
|
||||
fi
|
||||
;;
|
||||
"drag-n-drop")
|
||||
dragon -x "$clip"
|
||||
;;
|
||||
"play")
|
||||
playvideo "$clip"
|
||||
;;
|
||||
"low-play")
|
||||
playvideo -l "$clip"
|
||||
;;
|
||||
"queue")
|
||||
out="$(mpdurlqueue "$urls" 2>&1)" && notify-send "cliplumber" "stream queued"
|
||||
printf "%s" "$out" | grep "ERROR:" | notify_err
|
||||
;;
|
||||
"audio-search")
|
||||
"$TERM_EMU" --single-instance mpv --ytdl-format=bestaudio ytdl://ytsearch:"$clip"
|
||||
;;
|
||||
"rot13")
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
xsel -b -o | tr 'A-Za-z' 'N-ZA-Mn-za-m' | xsel -b -i
|
||||
else
|
||||
wl-copy -n "$(wl-paste | tr 'A-Za-z' 'N-ZA-Mn-za-m')"
|
||||
fi
|
||||
;;
|
||||
# Optional argument to set a description for the fav
|
||||
"f"*)
|
||||
desc="$(printf "%s" "$choice" | cut -d " " -s -f 2-)"
|
||||
if [ -n "$desc" ]; then
|
||||
printf "# %s\n" "$desc" >> "$HOME/favs"
|
||||
fi
|
||||
printf "%s\n" "$urls" >> "$HOME/favs"
|
||||
;;
|
||||
*)
|
||||
printf 'Nope\n'
|
||||
;;
|
||||
esac
|
BIN
bin/detectbepo
BIN
bin/detectbepo
Binary file not shown.
11
bin/dragon
11
bin/dragon
|
@ -1,11 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# We use a script instead of an alias because we want this utility in our path,
|
||||
# usable from dmenu
|
||||
|
||||
# Load helper functions
|
||||
source "$(dirname "$(rreadlink "$0")")/../lib/utils.sh"
|
||||
|
||||
assert_exists dragon-drag-and-drop
|
||||
|
||||
dragon-drag-and-drop "$@"
|
|
@ -1,19 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Inspired from https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
|
||||
|
||||
# usage: import-gsettings
|
||||
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
|
||||
if [ ! -f "$config" ]; then exit 1; fi
|
||||
|
||||
gnome_schema="org.gnome.desktop.interface"
|
||||
|
||||
gtk_theme="$(sed -nE '/^gtk-theme-name/s/^gtk-theme-name\s*=\s*//p' "$config")"
|
||||
icon_theme="$(sed -nE '/^gtk-icon-theme-name/s/^gtk-icon-theme-name\s*=\s*//p' "$config")"
|
||||
cursor_theme="$(sed -nE '/^gtk-cursor-theme-name/s/^gtk-cursor-theme-name\s*=\s*//p' "$config")"
|
||||
font_theme="$(sed -nE '/^gtk-font-name/s/^gtk-font-name\s*=\s*//p' "$config")"
|
||||
|
||||
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
|
||||
gsettings set "$gnome_schema" icon-theme "$icon_theme"
|
||||
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
|
||||
gsettings set "$gnome_schema" font-name "$font_name"
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ -z "$2" ]; then
|
||||
>&2 echo "Usage: $0 <source maildir> <archive maildir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
src="$1"
|
||||
arch="$2"
|
||||
begin="2010"
|
||||
|
||||
if ! [ -d "$arch/cur" ]; then
|
||||
>&2 echo "Folder $arch does not appear to be a maildir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
umask 700
|
||||
|
||||
for y in $(seq "$begin" "$(date '+%Y')" | sort -r); do
|
||||
mkdir -p "$arch/$y/cur" "$arch/$y/new" "$arch/$y/tmp"
|
||||
mails=$(mlist "$src" | mpick -t "date <= \"$y-12-31\" && date >= \"$y-01-01\" && date < \"-180d\"" 2> /dev/null)
|
||||
>&2 printf 'The year is %s. %s emails to sort\n' "$y" "$(echo "$mails" | wc -l)"
|
||||
echo "$mails" | mrefile "$arch/$y"
|
||||
done
|
37
bin/mailsync
37
bin/mailsync
|
@ -1,37 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
die () {
|
||||
2>&1 echo "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
maildir=~/mail
|
||||
mailboxes=$(find "$maildir" -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '%f\n')
|
||||
|
||||
LOCKFILE="/tmp/.mailsync.$USER.lock"
|
||||
# https://stackoverflow.com/questions/185451/quick-and-dirty-way-to-ensure-only-one-instance-of-a-shell-script-is-running-at
|
||||
# /!\ locking method is susceptible to race condition
|
||||
# Should be fine for cron job
|
||||
if [ -e "$LOCKFILE" ] && kill -0 "$(cat "$LOCKFILE")"; then
|
||||
echo "mailsync is already running"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# make sure the lockfile is removed when we exit and then claim it
|
||||
trap "rm -f '$LOCKFILE'; exit" INT TERM EXIT
|
||||
echo $$ > "$LOCKFILE"
|
||||
|
||||
# Try a single short sync to test password availability
|
||||
mbsync "$(echo "$mailboxes" | head -n 1)" || die "Please unlock password database"
|
||||
|
||||
for m in $(echo "$mailboxes" | tail -n+2); do
|
||||
mbsync "$m" &
|
||||
sleep 1
|
||||
done
|
||||
|
||||
wait
|
||||
|
||||
fdm fetch
|
||||
notmuch new
|
||||
|
||||
rm -f "$LOCKFILE"
|
45
bin/mp3dl
45
bin/mp3dl
|
@ -1,45 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
# Load helper functions
|
||||
source "$(dirname "$(rreadlink "$0")")/../lib/utils.sh"
|
||||
|
||||
usage() {
|
||||
>&2 echo "Usage: $0 [-d folder_dest] <video url>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
dest="$HOME/mus/download/"
|
||||
url=""
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
arg="$1"
|
||||
case $arg in
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
-d)
|
||||
dest="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
url="$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$url" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
check_exists yt-dlp || die "yt-dlp not found"
|
||||
|
||||
[ -d "$dest" ] || mkdir -p "$dest"
|
||||
|
||||
notify-send -t 3000 "mp3dl" "Downloading $url..."
|
||||
|
||||
yt-dlp -x --audio-format mp3 --no-playlist --add-metadata -o "$dest/%(title)s.%(ext)s" "$url" 2>&1 \
|
||||
| grep 'ERROR:' \
|
||||
| notify_err
|
|
@ -1,61 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
A simple script to pipe URIs through yt-dlp and mpd
|
||||
|
||||
Credit: https://gist.github.com/phaer/86bdcc3fb59cd3fcd9534bfe84d9fe5f
|
||||
"""
|
||||
import sys
|
||||
import mpd
|
||||
import yt_dlp
|
||||
|
||||
mpd_host = ('localhost', 6600)
|
||||
ydl_opts = {
|
||||
'format': 'bestaudio/audio',
|
||||
'quiet': True,
|
||||
}
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) != 2:
|
||||
print("usage: {} <url>".format(sys.argv[0]), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
source_url = sys.argv[1]
|
||||
client = mpd.MPDClient()
|
||||
|
||||
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
|
||||
try:
|
||||
info = ydl.extract_info(source_url, process=False, download=False)
|
||||
except yt_dlp.utils.DownloadError:
|
||||
# Don't print anything, yt-dlp is already on it
|
||||
sys.exit(1)
|
||||
|
||||
if info.get("_type") is not None and info.get("_type") == "playlist":
|
||||
print("Queuing playlists not supported yet.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
info = ydl.process_ie_result(info, download=False)
|
||||
url = info.get('url')
|
||||
title = info.get('title')
|
||||
source = info.get('extractor_key')
|
||||
|
||||
# This info is only available for songs
|
||||
# that have been tagged as such on youtube
|
||||
artist = info.get('artist')
|
||||
|
||||
if not (url and title and source):
|
||||
print("youtube-dl error.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
client.connect(*mpd_host)
|
||||
|
||||
# Get current playing song index and then append the stream just after
|
||||
# This is analogous to `mpc insert <song>`
|
||||
pos = int(client.status()["song"])
|
||||
song_id = client.addid(url, pos + 1)
|
||||
|
||||
client.addtagid(song_id, 'title', title)
|
||||
client.addtagid(song_id, 'album', source)
|
||||
if artist is not None:
|
||||
client.addtagid(song_id, 'artist', artist)
|
||||
|
||||
client.disconnect()
|
114
bin/mutt_bgrun
114
bin/mutt_bgrun
|
@ -1,114 +0,0 @@
|
|||
#!/bin/sh
|
||||
# @(#) mutt_bgrun $Revision: 1.4 $
|
||||
|
||||
# mutt_bgrun - run an attachment viewer from mutt in the background
|
||||
# Copyright (C) 1999-2002 Gary A. Johnson
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# SYNOPSIS
|
||||
# mutt_bgrun viewer [viewer options] file
|
||||
#
|
||||
# DESCRIPTION
|
||||
# Mutt invokes external attachment viewers by writing the
|
||||
# attachment to a temporary file, executing the pipeline specified
|
||||
# for that attachment type in the mailcap file, waiting for the
|
||||
# pipeline to terminate, writing nulls over the temporary file,
|
||||
# then deleting it. This causes problems when using graphical
|
||||
# viewers such as qvpview and acroread to view attachments.
|
||||
#
|
||||
# If qvpview, for example, is executed in the foreground, the mutt
|
||||
# user interface is hung until qvpview exits, so the user can't do
|
||||
# anything else with mutt until he or she finishes reading the
|
||||
# attachment and exits qvpview. This is especially annoying when
|
||||
# a message contains several MS Office attachments--one would like
|
||||
# to have them all open at once.
|
||||
#
|
||||
# If qvpview is executed in the background, it must be given
|
||||
# enough time to completely read the file before returning control
|
||||
# to mutt, since mutt will then obliterate the file. Qvpview is
|
||||
# so slow that this time can exceed 20 seconds, and the bound is
|
||||
# unknown. So this is again annoying.
|
||||
#
|
||||
# The solution provided here is to invoke the specified viewer
|
||||
# from this script after first copying mutt's temporary file to
|
||||
# another temporary file. This script can then quickly return
|
||||
# control to mutt while the viewer can take as much time as it
|
||||
# needs to read and render the attachment.
|
||||
#
|
||||
# EXAMPLE
|
||||
# To use qvpview to view MS Office attachments from mutt, add the
|
||||
# following lines to mutt's mailcap file.
|
||||
#
|
||||
# application/msword; mutt_bgrun qvpview %s
|
||||
# application/vnd.ms-excel; mutt_bgrun qvpview %s
|
||||
# application/vnd.ms-powerpoint; mutt_bgrun qvpview %s
|
||||
#
|
||||
# AUTHOR
|
||||
# Gary A. Johnson
|
||||
# <garyjohn@spk.agilent.com>
|
||||
#
|
||||
# ACKNOWLEDGEMENTS
|
||||
# My thanks to the people who have commented on this script and
|
||||
# offered solutions to shortcomings and bugs, especially Edmund
|
||||
# GRIMLEY EVANS <edmundo@rano.org> and Andreas Somogyi
|
||||
# <aso@somogyi.nu>.
|
||||
|
||||
prog=${0##*/}
|
||||
|
||||
# Check the arguments first.
|
||||
|
||||
if [ "$#" -lt "2" ]
|
||||
then
|
||||
echo "usage: $prog viewer [viewer options] file" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Separate the arguments. Assume the first is the viewer, the last is
|
||||
# the file, and all in between are options to the viewer.
|
||||
|
||||
viewer="$1"
|
||||
shift
|
||||
|
||||
while [ "$#" -gt "1" ]
|
||||
do
|
||||
options="$options $1"
|
||||
shift
|
||||
done
|
||||
|
||||
file=$1
|
||||
|
||||
# Create a temporary directory for our copy of the temporary file.
|
||||
#
|
||||
# This is more secure than creating a temporary file in an existing
|
||||
# directory.
|
||||
|
||||
tmpdir=/tmp/$LOGNAME$$
|
||||
umask 077
|
||||
mkdir "$tmpdir" || exit 1
|
||||
tmpfile="$tmpdir/${file##*/}"
|
||||
|
||||
# Copy mutt's temporary file to our temporary directory so that we can
|
||||
# let mutt overwrite and delete it when we exit.
|
||||
|
||||
cp "$file" "$tmpfile"
|
||||
|
||||
# Run the viewer in the background and delete the temporary files when done.
|
||||
|
||||
(
|
||||
"$viewer" $options "$tmpfile"
|
||||
rm -f "$tmpfile"
|
||||
rmdir "$tmpdir"
|
||||
) &
|
136
bin/notify.py
136
bin/notify.py
|
@ -1,136 +0,0 @@
|
|||
# Copyright (C) 2009 www.stani.be
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see http://www.gnu.org/licenses/
|
||||
|
||||
# Follows PEP8
|
||||
|
||||
APP_NAME = 'notify.py'
|
||||
|
||||
from sys import stderr
|
||||
|
||||
# Notify (linux)
|
||||
try:
|
||||
# import Notify
|
||||
# import gobject
|
||||
# gobject.threads_init()
|
||||
import gi
|
||||
gi.require_version('Notify', '0.7')
|
||||
from gi.repository import Notify
|
||||
except (ImportError, ValueError):
|
||||
Notify = None
|
||||
|
||||
# Growl (Mac Os X)
|
||||
if Notify:
|
||||
Growl = None
|
||||
else:
|
||||
try:
|
||||
import Growl
|
||||
except ImportError:
|
||||
Growl = None
|
||||
|
||||
# Toasterbox (Windows)
|
||||
if Notify or Growl:
|
||||
TB = None
|
||||
else:
|
||||
try:
|
||||
import wx
|
||||
import other.pyWx.toasterbox as TB
|
||||
except ImportError:
|
||||
TB = None
|
||||
|
||||
|
||||
def register(app_name):
|
||||
global APP_NAME
|
||||
APP_NAME = app_name
|
||||
|
||||
|
||||
def init(app_name, icon=None):
|
||||
print("Warning: couldn't find any notification API", file=stderr)
|
||||
register(app_name)
|
||||
|
||||
if Notify:
|
||||
|
||||
def init(app_name, icon=None):
|
||||
register(app_name)
|
||||
Notify.init(app_name)
|
||||
|
||||
def send(title, message, icon='gtk-dialog-info', wxicon=None,
|
||||
urgent=False, timeout=None):
|
||||
n = Notify.Notification.new(title, message, icon)
|
||||
if urgent:
|
||||
n.set_urgency(2)
|
||||
if timeout:
|
||||
n.set_timeout(timeout)
|
||||
n.show()
|
||||
|
||||
elif Growl:
|
||||
|
||||
def init(app_name, icon=None):
|
||||
"""Create a growl notifier with appropriate icon if specified.
|
||||
The notification classes default to [APP_NAME]. The user can
|
||||
enable/disable notifications based on this class name."""
|
||||
global growl
|
||||
register(app_name)
|
||||
if icon is None:
|
||||
icon = {}
|
||||
else:
|
||||
icon = {'applicationIcon': Growl.Image.imageFromPath(icon)}
|
||||
growl = Growl.GrowlNotifier(APP_NAME, [APP_NAME], **icon)
|
||||
|
||||
def send(title, message, icon='gtk-dialog-info', wxicon=None,
|
||||
urgent=False, timeout=None):
|
||||
global growl
|
||||
growl.notify(APP_NAME, title, message)
|
||||
|
||||
elif TB:
|
||||
|
||||
def send(title, message, icon='gtk-dialog-info',
|
||||
wxicon=None, urgent=False, timeout=None):
|
||||
if wxicon == None:
|
||||
wxicon = wx.ArtProvider_GetBitmap(wx.ART_INFORMATION,
|
||||
wx.ART_OTHER, (48, 48))
|
||||
tb = TB.ToasterBox(wx.GetApp().GetTopWindow(),
|
||||
TB.TB_COMPLEX, TB.DEFAULT_TB_STYLE, TB.TB_ONTIME)
|
||||
tb.SetPopupSize((300, 80))
|
||||
tb.SetPopupPauseTime(5000)
|
||||
tb.SetPopupScrollSpeed(8)
|
||||
tb.SetPopupPositionByInt(3)
|
||||
|
||||
#wx controls
|
||||
tbpanel = tb.GetToasterBoxWindow()
|
||||
panel = wx.Panel(tbpanel, -1)
|
||||
panel.SetBackgroundColour(wx.WHITE)
|
||||
wxicon = wx.StaticBitmap(panel, -1, wxicon)
|
||||
title = wx.StaticText(panel, -1, title)
|
||||
message = wx.StaticText(panel, -1, message)
|
||||
|
||||
# wx layout controls
|
||||
ver_sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
ver_sizer.Add(title, 0, wx.ALL, 4)
|
||||
ver_sizer.Add(message, 0, wx.ALL, 4)
|
||||
|
||||
hor_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
hor_sizer.Add(wxicon, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL \
|
||||
| wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 4)
|
||||
hor_sizer.Add(ver_sizer, 1, wx.EXPAND)
|
||||
hor_sizer.Layout()
|
||||
panel.SetSizer(hor_sizer)
|
||||
|
||||
tb.AddPanel(panel)
|
||||
tb.Play()
|
||||
|
||||
else:
|
||||
|
||||
def send(*args, **keyw):
|
||||
pass
|
|
@ -1,20 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Load helper functions
|
||||
source "$(dirname "$(rreadlink "$0")")/../lib/utils.sh"
|
||||
|
||||
if [ "$1" = "-h" ] || [ "$#" -lt "1" ]; then
|
||||
>&2 echo "Usage: $0 [-l] <video url>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
quality=720
|
||||
|
||||
if [ "$1" = "-l" ]; then
|
||||
shift
|
||||
quality=360
|
||||
fi
|
||||
|
||||
# https://github.com/mpv-player/mpv/issues/4241
|
||||
#mpv --ytdl-format="bestvideo[height<=?$quality]+bestaudio/best" "$@" 2>&1 | grep 'ERROR:' | notify_err
|
||||
mpv --ytdl-format="bestvideo[height<=?$quality][fps<=?30][vcodec!=?vp9]+bestaudio/best[height<=?$quality]" "$@" 2>&1 | grep 'ERROR:' | notify_err
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
zbarcam --raw --oneshot -q | tee /dev/fd/2 | xsel -bi
|
|
@ -1,55 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Function by mklement0
|
||||
# https://stackoverflow.com/a/29835459/5309963
|
||||
# The following, POSIX-compliant shell function implements what
|
||||
# GNU's readlink -e does and is a reasonably robust solution
|
||||
# that only fails in two rare edge cases:
|
||||
# - paths with embedded newlines (very rare)
|
||||
# - filenames containing literal string -> (also rare)
|
||||
|
||||
( # Execute the function in a *subshell* to localize variables and the effect of `cd`.
|
||||
|
||||
target=$1 fname= targetDir= CDPATH=
|
||||
|
||||
# Try to make the execution environment as predictable as possible:
|
||||
# All commands below are invoked via `command`, so we must make sure that `command`
|
||||
# itself is not redefined as an alias or shell function.
|
||||
# (Note that command is too inconsistent across shells, so we don't use it.)
|
||||
# `command` is a *builtin* in bash, dash, ksh, zsh, and some platforms do not even have
|
||||
# an external utility version of it (e.g, Ubuntu).
|
||||
# `command` bypasses aliases and shell functions and also finds builtins
|
||||
# in bash, dash, and ksh. In zsh, option POSIX_BUILTINS must be turned on for that
|
||||
# to happen.
|
||||
{ \unalias command; \unset -f command; } >/dev/null 2>&1
|
||||
[ -n "$ZSH_VERSION" ] && options[POSIX_BUILTINS]=on # make zsh find *builtins* with `command` too.
|
||||
|
||||
while :; do # Resolve potential symlinks until the ultimate target is found.
|
||||
[ -L "$target" ] || [ -e "$target" ] || { command printf '%s\n' "ERROR: '$target' does not exist." >&2; return 1; }
|
||||
command cd "$(command dirname -- "$target")" # Change to target dir; necessary for correct resolution of target path.
|
||||
fname=$(command basename -- "$target") # Extract filename.
|
||||
[ "$fname" = '/' ] && fname='' # !! curiously, `basename /` returns '/'
|
||||
if [ -L "$fname" ]; then
|
||||
# Extract [next] target path, which may be defined
|
||||
# *relative* to the symlink's own directory.
|
||||
# Note: We parse `ls -l` output to find the symlink target
|
||||
# which is the only POSIX-compliant, albeit somewhat fragile, way.
|
||||
target=$(command ls -l "$fname")
|
||||
target=${target#* -> }
|
||||
continue # Resolve [next] symlink target.
|
||||
fi
|
||||
break # Ultimate target reached.
|
||||
done
|
||||
targetDir=$(command pwd -P) # Get canonical dir. path
|
||||
# Output the ultimate target's canonical path.
|
||||
# Note that we manually resolve paths ending in /. and /.. to make sure we have a normalized path.
|
||||
if [ "$fname" = '.' ]; then
|
||||
command printf '%s\n' "${targetDir%/}"
|
||||
elif [ "$fname" = '..' ]; then
|
||||
# Caveat: something like /var/.. will resolve to /private (assuming /var@ -> /private/var), i.e. the '..' is applied
|
||||
# AFTER canonicalization.
|
||||
command printf '%s\n' "$(command dirname -- "${targetDir}")"
|
||||
else
|
||||
command printf '%s\n' "${targetDir%/}/$fname"
|
||||
fi
|
||||
)
|
26
bin/shot
26
bin/shot
|
@ -1,26 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Load helper functions
|
||||
bin_path="$(dirname "$(rreadlink "$0")")"
|
||||
source "$bin_path/../lib/utils.sh"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
NAME="shot_$(date '+%Y%m%d%H%M%S').png"
|
||||
else
|
||||
NAME="$1"
|
||||
fi
|
||||
|
||||
SCREEN_DIR="$HOME/img/screenshots"
|
||||
mkdir -p "$SCREEN_DIR"
|
||||
# Let's try to detect Wayland running
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
assert_exists "maim"
|
||||
maim --hidecursor --select "$SCREEN_DIR/$NAME"
|
||||
# Fail silently if xsel isn't installed, the clipboard feature isn't critical
|
||||
echo "$SCREEN_DIR/$NAME" | xsel --clipboard --input > /dev/null 2>&1
|
||||
else
|
||||
assert_exists "grim" "slop"
|
||||
slop | awk -F '[x+]' '{printf "%s,%s %sx%s",$3,$4,$1,$2}' | grim -g - "$SCREEN_DIR/$NAME"
|
||||
# Same as xsel
|
||||
wl-copy -n "$SCREEN_DIR/$NAME" > /dev/null 2>&1
|
||||
fi
|
167
bin/volcont
167
bin/volcont
|
@ -1,167 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# finds the active sink for pulse audio and increments the volume. useful when you have multiple audio outputs and have a key bound to vol-up and down
|
||||
# Taken from http://customlinux.blogspot.fr/2013/02/pavolumesh-control-active-sink-volume.html
|
||||
# and slightly adapted by lhark to work with notify-send
|
||||
|
||||
notify='dunst' # no/yes/dunst
|
||||
notiftime='400'
|
||||
notifid='42'
|
||||
inc='2'
|
||||
capvol='yes'
|
||||
maxvol='200'
|
||||
autosync='no'
|
||||
|
||||
icon_up='audio-volume-high-symbolic'
|
||||
icon_down='audio-volume-low-symbolic'
|
||||
icon_mute='audio-volume-muted-symbolic'
|
||||
|
||||
main_sink=$(pacmd list-sinks |awk '/* index:/{print $3}')
|
||||
active_sinks=$(pacmd list-sinks |awk '/index:/{print $NF}' | tr '\n' ' ' | sed 's/ $/\n/g')
|
||||
limit=$((100 - inc))
|
||||
maxlimit=$((maxvol - inc))
|
||||
|
||||
updateSinks () {
|
||||
active_sinks=$(pacmd list-sinks |awk '/index:/{print $NF}' | tr '\n' ' ' | sed 's/ $/\n/g')
|
||||
}
|
||||
|
||||
|
||||
volUp () {
|
||||
updateSinks
|
||||
getCurVol
|
||||
|
||||
for sink in ${active_sinks}; do
|
||||
if [ ${capvol} = 'yes' ]; then
|
||||
if [ "${curVol}" -le 100 ] && [ "${curVol}" -ge ${limit} ]; then
|
||||
pactl set-sink-volume "${sink}" 100%
|
||||
elif [ "${curVol}" -lt ${limit} ]; then
|
||||
pactl set-sink-volume "${sink}" +${inc}%
|
||||
fi
|
||||
elif [ "${curVol}" -le ${maxvol} ] && [ "${curVol}" -ge ${maxlimit} ]; then
|
||||
pactl set-sink-volume "${sink}" ${maxvol}%
|
||||
elif [ "${curVol}" -lt ${maxlimit} ]; then
|
||||
pactl set-sink-volume "${sink}" +${inc}%
|
||||
fi
|
||||
done
|
||||
|
||||
getCurVol
|
||||
|
||||
if [ ${notify} = 'yes' ]; then
|
||||
notify-send "Volume : ${curVol}%" -t ${notiftime}
|
||||
elif [ "$notify" = 'dunst' ]; then
|
||||
dunstify -r "$notifid" -t "$notiftime" -i "$icon_up" "Volume: $curVol%"
|
||||
fi
|
||||
|
||||
if [ ${autosync} = 'yes' ]; then
|
||||
volSync
|
||||
fi
|
||||
}
|
||||
|
||||
volDown () {
|
||||
updateSinks
|
||||
for sink in ${active_sinks}; do
|
||||
pactl set-sink-volume "${sink}" -${inc}%
|
||||
done
|
||||
getCurVol
|
||||
|
||||
if [ ${notify} = 'yes' ]; then
|
||||
notify-send "Volume : ${curVol}%" -t ${notiftime}
|
||||
elif [ "$notify" = 'dunst' ]; then
|
||||
dunstify -r "$notifid" -t "$notiftime" -i "$icon_down" "Volume: $curVol%"
|
||||
fi
|
||||
|
||||
if [ ${autosync} = 'yes' ]; then
|
||||
volSync
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
volSync () {
|
||||
updateSinks
|
||||
getCurVol
|
||||
|
||||
for each in ${active_sinks}; do
|
||||
pactl set-sink-volume "${each}" "${curVol}"%
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
getCurVol () {
|
||||
curVol=$(pacmd list-sinks |grep -A 15 'index: '"${main_sink}"'' |grep 'volume:' |egrep -v 'base volume:' |awk -F : '{print $3}' |grep -o -P '.{0,3}%'|sed s/.$// | tr -d ' ')
|
||||
}
|
||||
|
||||
|
||||
volMute () {
|
||||
case "$1" in
|
||||
mute)
|
||||
for sink in ${active_sinks}; do
|
||||
pactl set-sink-mute "${sink}" 1
|
||||
done
|
||||
curVol=0
|
||||
status=1
|
||||
;;
|
||||
unmute)
|
||||
for sink in ${active_sinks}; do
|
||||
pactl set-sink-mute "${sink}" 0
|
||||
done
|
||||
getCurVol
|
||||
status=0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ${notify} = 'yes' ]; then
|
||||
notify-send "$([ "${status}" = 1 ] && echo "Sound muted" || echo "Sound unmuted")" -t ${notiftime}
|
||||
elif [ "$notify" = 'dunst' ]; then
|
||||
[ "$status" = 1 ] && icon="$icon_mute" || icon="$icon_up"
|
||||
dunstify -r "$notifid" -t "$notiftime" -i "$icon" "$([ "${status}" = 1 ] && echo "Sound muted" || echo "Sound unmuted")"
|
||||
fi
|
||||
}
|
||||
|
||||
volMuteStatus () {
|
||||
curStatus=$(pacmd list-sinks |grep -A 15 'index: '"${main_sink}"'' |awk '/muted/{ print $2}')
|
||||
|
||||
if [ "${curStatus}" = 'yes' ]; then
|
||||
volMute unmute
|
||||
else
|
||||
volMute mute
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
volHelp () {
|
||||
echo "Finds the active sink for pulse audio and manages the volume."
|
||||
echo "Options :"
|
||||
echo ""
|
||||
echo " --down"
|
||||
echo " --help"
|
||||
echo " --mute"
|
||||
echo " --sync Sync all sinks volumes"
|
||||
echo " --toggle"
|
||||
echo " --unmute"
|
||||
echo " --up"
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
--up)
|
||||
volUp
|
||||
;;
|
||||
--down)
|
||||
volDown
|
||||
;;
|
||||
--toggle)
|
||||
volMuteStatus
|
||||
;;
|
||||
--help)
|
||||
volHelp
|
||||
;;
|
||||
--mute)
|
||||
volMute mute
|
||||
;;
|
||||
--unmute)
|
||||
volMute unmute
|
||||
;;
|
||||
--sync)
|
||||
volSync
|
||||
;;
|
||||
esac
|
296
bin/work
296
bin/work
|
@ -1,296 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import argparse
|
||||
import notify
|
||||
from signal import signal, SIGINT
|
||||
import sys
|
||||
from time import sleep
|
||||
from os.path import expanduser, join
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
TIME_FILE = join(expanduser("~"), "timekeeping.csv")
|
||||
TODAY_FILE = join(expanduser("~"), ".timekeeping")
|
||||
|
||||
is_on_break = False
|
||||
today_fields = []
|
||||
start_time = datetime.now()
|
||||
|
||||
|
||||
def die(*args):
|
||||
print("Error: {}".format(*args), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def log(*args):
|
||||
print(*args, file=sys.stderr)
|
||||
|
||||
|
||||
def signal_handler(signal, frame):
|
||||
global today_fields
|
||||
now = datetime.now()
|
||||
hour = now.strftime("%H:%M")
|
||||
if not is_on_break:
|
||||
sys.exit(0)
|
||||
else:
|
||||
break_time = now - start_time
|
||||
log("\nBreak ended at {} and lasted {}".format(
|
||||
hour, td_format(break_time)))
|
||||
today_fields.append(start_time.strftime("%H:%M"))
|
||||
today_fields.append(hour)
|
||||
with open(TODAY_FILE, "w") as f:
|
||||
f.write(",".join(today_fields))
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def td_format(td):
|
||||
prefix = ""
|
||||
if td < timedelta(0):
|
||||
td = -td
|
||||
prefix = "-"
|
||||
hours, remainder = divmod(td.total_seconds(), 3600)
|
||||
minutes, seconds = divmod(remainder, 60)
|
||||
|
||||
return '{}{:d}:{:02d}'.format(prefix, int(hours), int(minutes))
|
||||
|
||||
|
||||
def get_today_fields():
|
||||
try:
|
||||
with open(TODAY_FILE, "r") as f:
|
||||
line_count = 0
|
||||
for line in f:
|
||||
line_count += 1
|
||||
if line_count > 1:
|
||||
log("Warning: incomplete day leftover in {}".format(TODAY_FILE))
|
||||
if line.startswith(start_time.strftime("%Y-%m-%d")):
|
||||
return line.strip().split(",")
|
||||
except FileNotFoundError:
|
||||
return []
|
||||
return []
|
||||
|
||||
|
||||
def work(args):
|
||||
total_delta = timedelta()
|
||||
month_delta = timedelta()
|
||||
count = 0
|
||||
month_count = 0
|
||||
with open(TIME_FILE, "r") as f:
|
||||
for line in f:
|
||||
fields = line.strip().split(",", 5)
|
||||
date = datetime.strptime(fields[0], "%Y-%m-%d")
|
||||
t = datetime.strptime(fields[4], "%H:%M")
|
||||
delta = timedelta(hours=t.hour, minutes=t.minute)
|
||||
if date.month == start_time.month:
|
||||
month_delta += delta
|
||||
month_count += 1
|
||||
total_delta += delta
|
||||
count += 1
|
||||
eight_h = timedelta(hours=8) * count
|
||||
mean_time = total_delta / count if count > 0 else total_delta
|
||||
minutes = total_delta - eight_h
|
||||
month_mean_time = month_delta / month_count if month_count > 0 else month_delta
|
||||
month_min = month_delta - timedelta(hours=(8 * month_count))
|
||||
print("stats: {}, {}".format(
|
||||
td_format(mean_time),
|
||||
td_format(minutes)))
|
||||
print("month stats: {}, {}".format(
|
||||
td_format(month_mean_time),
|
||||
td_format(month_min)))
|
||||
|
||||
# Try to calculate remaining time
|
||||
fields = get_today_fields()
|
||||
hour = start_time.strftime("%H:%M")
|
||||
if not fields:
|
||||
print("No work ongoing")
|
||||
return
|
||||
fields.append(hour)
|
||||
# Test for even number of timestamp (but fields[0] is the date)
|
||||
if len(fields) < 3:
|
||||
die("not enough fields in {}".format(TODAY_FILE))
|
||||
elif len(fields) % 2 == 0:
|
||||
# Break in progress
|
||||
log("Break in progress")
|
||||
return
|
||||
begin_time = None
|
||||
worked_time = timedelta()
|
||||
for field in fields[1:]:
|
||||
try:
|
||||
if begin_time is None:
|
||||
begin_time = datetime.strptime(field, "%H:%M")
|
||||
else:
|
||||
end_time = datetime.strptime(field, "%H:%M")
|
||||
worked_time += end_time - begin_time
|
||||
begin_time = None
|
||||
except ValueError:
|
||||
die("couldn't parse field '{}' in {}".format(
|
||||
field, TODAY_FILE))
|
||||
day_start = datetime.strptime(fields[1], "%H:%M")
|
||||
day_end = datetime.strptime(fields[-1], "%H:%M")
|
||||
total_time = day_end - day_start
|
||||
break_time = total_time - worked_time
|
||||
day_end_estimation = day_start + timedelta(hours=8) + break_time
|
||||
print("Worked {} already today. Estimated leave at {}".format(
|
||||
td_format(worked_time),
|
||||
day_end_estimation.strftime("%H:%M")))
|
||||
|
||||
|
||||
|
||||
def work_start(args):
|
||||
fields = get_today_fields()
|
||||
try:
|
||||
hour = datetime.strptime(args.time, "%H:%M")
|
||||
except ValueError:
|
||||
die("Error: {} is not a valid time".format(args.time))
|
||||
if fields:
|
||||
die("You already started working")
|
||||
with open(TODAY_FILE, "a") as f:
|
||||
f.write("{},{}".format(
|
||||
start_time.strftime("%Y-%m-%d"),
|
||||
hour.strftime("%H:%M")))
|
||||
log("Started working at {}".format(hour.strftime("%H:%M")))
|
||||
|
||||
|
||||
def work_pause(args):
|
||||
global is_on_break
|
||||
global today_fields
|
||||
is_on_break = True
|
||||
today_fields = get_today_fields()
|
||||
hour = start_time.strftime("%H:%M")
|
||||
if not today_fields:
|
||||
die("no work to take a break from")
|
||||
log("Taking a break at {}".format(hour))
|
||||
|
||||
notify.init("work")
|
||||
# Wait to be stopped by a Ctrl-C
|
||||
reminder_interval = 5 # In minutes
|
||||
count = 0
|
||||
while True:
|
||||
sleep(reminder_interval * 60)
|
||||
count += 1
|
||||
notify.send("Pause reminder",
|
||||
"It has now been {} minutes".format(count * reminder_interval))
|
||||
|
||||
|
||||
def work_end(args):
|
||||
fields = get_today_fields()
|
||||
hour = start_time.strftime("%H:%M")
|
||||
if not fields:
|
||||
die("Why try to leave when you haven't even started")
|
||||
fields.append(hour)
|
||||
if len(fields) < 3:
|
||||
die("not enough fields in {}".format(TODAY_FILE))
|
||||
# Test for even number of timestamp (but fields[0] is the date)
|
||||
elif len(fields) % 2 == 0:
|
||||
die("odd number of timestamps in {}".format(TODAY_FILE))
|
||||
begin_time = None
|
||||
worked_time = timedelta()
|
||||
for field in fields[1:]:
|
||||
try:
|
||||
if begin_time is None:
|
||||
begin_time = datetime.strptime(field, "%H:%M")
|
||||
else:
|
||||
end_time = datetime.strptime(field, "%H:%M")
|
||||
worked_time += end_time - begin_time
|
||||
begin_time = None
|
||||
except ValueError:
|
||||
die("couldn't parse field '{}' in {}".format(
|
||||
field, TODAY_FILE))
|
||||
day_start = datetime.strptime(fields[1], "%H:%M")
|
||||
day_end = datetime.strptime(fields[-1], "%H:%M")
|
||||
total_time = day_end - day_start
|
||||
break_time = total_time - worked_time
|
||||
with open(TIME_FILE, "a") as f:
|
||||
f.write('{},{},{},{},{},"{}"\n'.format(
|
||||
fields[0],
|
||||
day_start.strftime("%H:%M"),
|
||||
start_time.strftime("%H:%M"),
|
||||
td_format(break_time),
|
||||
td_format(worked_time),
|
||||
args.description))
|
||||
# Erase TODAY_FILE
|
||||
with open(TODAY_FILE, "w") as f:
|
||||
f.write("")
|
||||
f.flush()
|
||||
log("Finished working at {} after working {}".format(
|
||||
hour, td_format(worked_time)))
|
||||
|
||||
|
||||
def work_export(args):
|
||||
print("export")
|
||||
|
||||
|
||||
def work_parse(args):
|
||||
new_lines = []
|
||||
try:
|
||||
with open(args.file, "r") as f:
|
||||
for line in f:
|
||||
fields = line.strip().split(",")
|
||||
if len(fields) < 6:
|
||||
log("Record: '{}' hasn't got enough fields ({})".format(line, len(fields)))
|
||||
continue
|
||||
times = []
|
||||
for field in fields[1:]:
|
||||
try:
|
||||
time = datetime.strptime(field, "%H:%M")
|
||||
times.append(time)
|
||||
except ValueError:
|
||||
break
|
||||
if len(times) % 2 != 0:
|
||||
die("Error: uneven number of timestamps ({}) in line '{}'".format(len(times), line))
|
||||
|
||||
desc = ','.join(fields[len(times)+1:]).strip()
|
||||
|
||||
worked_time = timedelta()
|
||||
for i in range(int(len(times) / 2)):
|
||||
worked_time += times[i * 2 + 1] - times[i * 2]
|
||||
|
||||
morning = times[0]
|
||||
evening = times[-1]
|
||||
full_day = evening - morning
|
||||
break_time = full_day - worked_time
|
||||
new_lines.append('{},{},{},{},{},{}'.format(
|
||||
fields[0],
|
||||
morning.strftime("%H:%M"),
|
||||
evening.strftime("%H:%M"),
|
||||
td_format(break_time),
|
||||
td_format(worked_time),
|
||||
desc))
|
||||
except FileNotFoundError:
|
||||
die("file not found: {}".format(args.file))
|
||||
# TODO do sanity checking, like if a day already exists
|
||||
with open(TIME_FILE, "a") as f:
|
||||
for line in new_lines:
|
||||
f.write("{}\n".format(line))
|
||||
log("Written {} new entries to {}".format(len(new_lines), TIME_FILE))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Handle Ctrl-C
|
||||
signal(SIGINT, signal_handler)
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.set_defaults(func=work)
|
||||
commands = parser.add_subparsers(dest="command")
|
||||
|
||||
start_parser = commands.add_parser("start")
|
||||
pause_parser = commands.add_parser("pause")
|
||||
end_parser = commands.add_parser("end")
|
||||
export_parser = commands.add_parser("export")
|
||||
parse_parser = commands.add_parser("parse")
|
||||
|
||||
start_parser.set_defaults(func=work_start)
|
||||
start_parser.add_argument("time", nargs="?", default=datetime.now().strftime("%H:%M"))
|
||||
pause_parser.set_defaults(func=work_pause)
|
||||
end_parser.set_defaults(func=work_end)
|
||||
end_parser.add_argument("description")
|
||||
export_parser.set_defaults(func=work_export)
|
||||
parse_parser.set_defaults(func=work_parse)
|
||||
parse_parser.add_argument("file")
|
||||
|
||||
args = parser.parse_args()
|
||||
args.func(args)
|
||||
|
||||
#now = datetime.now()
|
||||
#with open(TIME_FILE, "r") as f:
|
||||
# for line in f:
|
||||
# print(line.strip())
|
71
bin/work.old
71
bin/work.old
|
@ -1,71 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
TIMEFILE="$HOME/timekeeping.csv"
|
||||
|
||||
usage () {
|
||||
>&2 printf "usage:\n\t%s <start|pause|end>" "$(basename "$0")"
|
||||
exit 0
|
||||
}
|
||||
|
||||
die () {
|
||||
>&2 echo "Error: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
from_ts () {
|
||||
if ! date --version >/dev/null 2>&1; then # BSD
|
||||
date -r "$1" '+%H:%M'
|
||||
else # GNU
|
||||
date -d "@$1" '+%H:%M'
|
||||
fi
|
||||
}
|
||||
|
||||
pause_end () {
|
||||
if [ "$ACTION" = "pause" ]; then
|
||||
now="$(date '+%s')"
|
||||
printf "%s," "$((now - START))" >> "$TIMEFILE"
|
||||
>&2 printf "\nYou took a %d minutes pause\n" "$(( (now - START) / 60))"
|
||||
fi
|
||||
}
|
||||
|
||||
trap pause_end INT
|
||||
|
||||
test -z "$1" && usage
|
||||
test -e "$TIMEFILE" || touch "$TIMEFILE"
|
||||
|
||||
TODAY="$(date '+%Y-%m-%d')"
|
||||
START="$(date '+%s')"
|
||||
ACTION="$1"
|
||||
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
grep -qE "^$TODAY" "$TIMEFILE" && die "you already started your day"
|
||||
printf "%s,%s," "$TODAY" "$(date '+%s')" >> "$TIMEFILE"
|
||||
>&2 printf "Started work at %s\n" "$(date '+%H:%M')";;
|
||||
pause)
|
||||
grep -qE "^$TODAY" "$TIMEFILE" || die "You haven't even started your day!"
|
||||
awk -F, "/^$TODAY/"'{if (NF > 4) exit 1}' "$TIMEFILE" || die "You're already done for the day"
|
||||
awk -F, "/^$TODAY/"'{if (NF > 2) exit 1}' "$TIMEFILE" || die "You've already expanded your daily break allowance"
|
||||
>&2 echo "Taking a break..."
|
||||
sleep 9999999;;
|
||||
end)
|
||||
test -z "$2" && die "Tell me what you did today"
|
||||
grep -qE "^$TODAY" "$TIMEFILE" || die "You haven't even started your day!"
|
||||
start_hour="$(from_ts "$(tail -n1 "$TIMEFILE" | cut -f 2 -d ,)")"
|
||||
end_hour="$(date '+%H:%M')"
|
||||
shift 1
|
||||
msg="$(printf "%s" "$*" | sed 's/"/""/g')"
|
||||
line="$(awk -F ',' -v now="$START" -v start="$start_hour" -v end="$end_hour" -v msg="$msg" \
|
||||
"/^$TODAY/"'{
|
||||
total=now-$2-$3;
|
||||
h=int(total/3600);
|
||||
m=int(total/60%60);
|
||||
ph=int($3/3600);
|
||||
pm=int($3/60%60);
|
||||
printf "%s,%s,%s,%s:%s,%s:%s,\"%s\"",$1,start,end,ph,pm,h,m,msg;
|
||||
}' \
|
||||
"$TIMEFILE")"
|
||||
printf "\$d\nw\n\q" | ed "$TIMEFILE" > /dev/null 2>&1
|
||||
printf "%s\n" "$line" >> "$TIMEFILE";;
|
||||
esac
|
|
@ -1,348 +0,0 @@
|
|||
[global]
|
||||
### Display ###
|
||||
|
||||
# Which monitor should the notifications be displayed on.
|
||||
monitor = 0
|
||||
|
||||
# Display notification on focused monitor. Possible modes are:
|
||||
# mouse: follow mouse pointer
|
||||
# keyboard: follow window with keyboard focus
|
||||
# none: don't follow anything
|
||||
#
|
||||
# "keyboard" needs a window manager that exports the
|
||||
# _NET_ACTIVE_WINDOW property.
|
||||
# This should be the case for almost all modern window managers.
|
||||
#
|
||||
# If this option is set to mouse or keyboard, the monitor option
|
||||
# will be ignored.
|
||||
follow = mouse
|
||||
|
||||
# The geometry of the window:
|
||||
# [{width}]x{height}[+/-{x}+/-{y}]
|
||||
# The geometry of the message window.
|
||||
# The height is measured in number of notifications everything else
|
||||
# in pixels. If the width is omitted but the height is given
|
||||
# ("-geometry x2"), the message window expands over the whole screen
|
||||
# (dmenu-like). If width is 0, the window expands to the longest
|
||||
# message displayed. A positive x is measured from the left, a
|
||||
# negative from the right side of the screen. Y is measured from
|
||||
# the top and down respectively.
|
||||
# The width can be negative. In this case the actual width is the
|
||||
# screen width minus the width defined in within the geometry option.
|
||||
geometry = "400x5-40+60"
|
||||
|
||||
# Show how many messages are currently hidden (because of geometry).
|
||||
indicate_hidden = yes
|
||||
|
||||
# Shrink window if it's smaller than the width. Will be ignored if
|
||||
# width is 0.
|
||||
shrink = yes
|
||||
|
||||
# The transparency of the window. Range: [0; 100].
|
||||
# This option will only work if a compositing window manager is
|
||||
# present (e.g. xcompmgr, compiz, etc.).
|
||||
transparency = 20
|
||||
|
||||
# The height of the entire notification. If the height is smaller
|
||||
# than the font height and padding combined, it will be raised
|
||||
# to the font height and padding.
|
||||
notification_height = 0
|
||||
|
||||
# Draw a line of "separator_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 8
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 8
|
||||
|
||||
# Defines width in pixels of frame around the notification window.
|
||||
# Set to 0 to disable.
|
||||
frame_width = 3
|
||||
|
||||
# Defines color of the frame around the notification window.
|
||||
# Base16 theme : gruvbox-dark-pale
|
||||
frame_color = "#dab997"
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = yes
|
||||
|
||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||
# for longer than idle_threshold seconds.
|
||||
# Set to 0 to disable.
|
||||
# Transient notifications ignore this setting.
|
||||
idle_threshold = 120
|
||||
|
||||
### Text ###
|
||||
|
||||
font = Hack 12
|
||||
|
||||
# The spacing between lines. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
line_height = 0
|
||||
|
||||
# Possible values are:
|
||||
# full: Allow a small subset of html markup in notifications:
|
||||
# <b>bold</b>
|
||||
# <i>italic</i>
|
||||
# <s>strikethrough</s>
|
||||
# <u>underline</u>
|
||||
#
|
||||
# For a complete reference see
|
||||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
||||
#
|
||||
# strip: This setting is provided for compatibility with some broken
|
||||
# clients that send markup even though it's not enabled on the
|
||||
# server. Dunst will try to strip the markup but the parsing is
|
||||
# simplistic so using this option outside of matching rules for
|
||||
# specific applications *IS GREATLY DISCOURAGED*.
|
||||
#
|
||||
# no: Disable markup parsing, incoming notifications will be treated as
|
||||
# plain text. Dunst will not advertise that it has the body-markup
|
||||
# capability if this is set as a global setting.
|
||||
#
|
||||
# It's important to note that markup inside the format option will be parsed
|
||||
# regardless of what this is set to.
|
||||
markup = full
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# %n progress value if set without any extra characters
|
||||
# %% Literal %
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = left
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = 60
|
||||
|
||||
# Split notifications into multiple lines if they don't fit into
|
||||
# geometry.
|
||||
word_wrap = yes
|
||||
|
||||
# When word_wrap is set to no, specify where to ellipsize long lines.
|
||||
# Possible values are "start", "middle" and "end".
|
||||
ellipsize = middle
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Merge multiple notifications with the same content
|
||||
stack_duplicates = true
|
||||
|
||||
# Hide the count of merged notifications with the same content
|
||||
hide_duplicate_count = false
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = yes
|
||||
|
||||
### Icons ###
|
||||
|
||||
# Align icons left/right/off
|
||||
icon_position = left
|
||||
|
||||
# Scale larger icons down to this size, set to 0 to disable
|
||||
max_icon_size = 64
|
||||
|
||||
# Paths to default icons.
|
||||
icon_path = /usr/share/icons/gruvbox-dark-icons-gtk/symbolic/status/
|
||||
|
||||
### History ###
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 20
|
||||
|
||||
### Misc/Advanced ###
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
|
||||
# Browser for opening urls in context menu.
|
||||
browser = /usr/bin/xdg-open
|
||||
|
||||
# Always run rule-defined scripts, even if the notification is suppressed
|
||||
always_run_script = true
|
||||
|
||||
# Define the title of the windows spawned by dunst
|
||||
title = Dunst
|
||||
|
||||
# Define the class of the windows spawned by dunst
|
||||
class = Dunst
|
||||
|
||||
# Print a notification on startup.
|
||||
# This is mainly for error detection, since dbus (re-)starts dunst
|
||||
# automatically after a crash.
|
||||
startup_notification = false
|
||||
|
||||
### Legacy
|
||||
|
||||
# Use the Xinerama extension instead of RandR for multi-monitor support.
|
||||
# This setting is provided for compatibility with older nVidia drivers that
|
||||
# do not support RandR and using it on systems that support RandR is highly
|
||||
# discouraged.
|
||||
#
|
||||
# By enabling this setting dunst will not be able to detect when a monitor
|
||||
# is connected or disconnected which might break follow mode if the screen
|
||||
# layout changes.
|
||||
force_xinerama = false
|
||||
|
||||
# Experimental features that may or may not work correctly. Do not expect them
|
||||
# to have a consistent behaviour across releases.
|
||||
[experimental]
|
||||
# Calculate the dpi to use on a per-monitor basis.
|
||||
# If this setting is enabled the Xft.dpi value will be ignored and instead
|
||||
# dunst will attempt to calculate an appropriate dpi value for each monitor
|
||||
# using the resolution and physical size. This might be useful in setups
|
||||
# where there are multiple screens with very different dpi values.
|
||||
per_monitor_dpi = false
|
||||
|
||||
[shortcuts]
|
||||
|
||||
# Shortcuts are specified as [modifier+][modifier+]...key
|
||||
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
|
||||
# "mod3" and "mod4" (windows-key).
|
||||
# Xev might be helpful to find names for keys.
|
||||
|
||||
# Close notification.
|
||||
close = ctrl+space
|
||||
|
||||
# Close all notifications.
|
||||
close_all = ctrl+shift+space
|
||||
|
||||
# Redisplay last message(s).
|
||||
# On the US keyboard layout "grave" is normally above TAB and left
|
||||
# of "1". Make sure this key actually exists on your keyboard layout,
|
||||
# e.g. check output of 'xmodmap -pke'
|
||||
history = ctrl+grave
|
||||
|
||||
# Context menu.
|
||||
context = ctrl+shift+period
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
background = "#222222"
|
||||
foreground = "#888888"
|
||||
timeout = 10
|
||||
# Icon for notifications with low urgency, uncomment to enable
|
||||
#icon = /path/to/icon
|
||||
|
||||
[urgency_normal]
|
||||
background = "#285577"
|
||||
foreground = "#ffffff"
|
||||
timeout = 10
|
||||
# Icon for notifications with normal urgency, uncomment to enable
|
||||
#icon = /path/to/icon
|
||||
|
||||
[urgency_critical]
|
||||
background = "#900000"
|
||||
foreground = "#ffffff"
|
||||
frame_color = "#ff0000"
|
||||
timeout = 0
|
||||
# Icon for notifications with critical urgency, uncomment to enable
|
||||
#icon = /path/to/icon
|
||||
|
||||
# Base16 theme : gruvbox-dark-pale
|
||||
# https://github.com/khamer/base16-dunst/blob/master/themes/base16-gruvbox-dark-pale.dunstrc
|
||||
[base16_low]
|
||||
msg_urgency = low
|
||||
background = "#3a3a3a"
|
||||
foreground = "#8a8a8a"
|
||||
|
||||
[base16_normal]
|
||||
msg_urgency = normal
|
||||
background = "#4e4e4e"
|
||||
foreground = "#dab997"
|
||||
|
||||
[base16_critical]
|
||||
msg_urgency = critical
|
||||
background = "#d75f5f"
|
||||
foreground = "#d5c4a1"
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
# Messages can be matched by "appname", "summary", "body", "icon", "category",
|
||||
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
|
||||
# "background", "new_icon" and "format".
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: if you don't want a notification to be displayed, set the format
|
||||
# to "".
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
[dino]
|
||||
appname = "Dino"
|
||||
timeout = 10
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# format = ""
|
||||
|
||||
#[history-ignore]
|
||||
# # This notification will not be saved in history
|
||||
# summary = "foobar"
|
||||
# history_ignore = yes
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
# vim: ft=cfg
|
|
@ -1,24 +0,0 @@
|
|||
if status --is-login
|
||||
# Do login stuff
|
||||
end
|
||||
|
||||
set --export EDITOR /usr/bin/vim
|
||||
|
||||
# # Vi mode, fixing ctrl-c to cancel the line instead of exiting insert mode
|
||||
# function fish_vi_key_bindings_local
|
||||
# fish_vi_key_bindings
|
||||
# bind -e -M insert \cc
|
||||
# bind -M insert -m insert \cc 'commandline ""'
|
||||
# end
|
||||
# set -g fish_key_bindings fish_vi_key_bindings_local
|
||||
|
||||
function hybrid_bindings --description "Vi-style bindings that inherit emacs-style bindings in all modes"
|
||||
for mode in default insert visual
|
||||
fish_default_key_bindings -M $mode
|
||||
end
|
||||
fish_vi_key_bindings --no-erase
|
||||
bind -e -M insert \cc
|
||||
bind -M insert -m insert \cc 'commandline ""'
|
||||
end
|
||||
set -g fish_key_bindings hybrid_bindings
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export MOZ_ENABLE_WAYLAND:1
|
||||
SETUVAR __fish_init_2_39_8:\x1d
|
||||
SETUVAR __fish_init_2_3_0:\x1d
|
||||
SETUVAR __fish_init_3_x:\x1d
|
||||
SETUVAR fish_color_autosuggestion:555\x1ebrblack
|
||||
SETUVAR fish_color_cancel:\x2dr
|
||||
SETUVAR fish_color_command:green
|
||||
SETUVAR fish_color_comment:990000
|
||||
SETUVAR fish_color_cwd:green
|
||||
SETUVAR fish_color_cwd_root:red
|
||||
SETUVAR fish_color_end:009900
|
||||
SETUVAR fish_color_error:ff0000
|
||||
SETUVAR fish_color_escape:00a6b2
|
||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||
SETUVAR fish_color_host:normal
|
||||
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
||||
SETUVAR fish_color_normal:normal
|
||||
SETUVAR fish_color_operator:00a6b2
|
||||
SETUVAR fish_color_param:00afff
|
||||
SETUVAR fish_color_quote:999900
|
||||
SETUVAR fish_color_redirection:00afff
|
||||
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
|
||||
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:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell
|
||||
SETUVAR fish_key_bindings:fish_vi_key_bindings
|
||||
SETUVAR fish_pager_color_completion:\x1d
|
||||
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
|
||||
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
|
@ -1,91 +0,0 @@
|
|||
set -g fish_color_git_normal blue
|
||||
|
||||
set -g fish_color_git_ahead green
|
||||
set -g fish_color_git_behind red
|
||||
set -g fish_color_git_diverged magenta
|
||||
set -g fish_color_git_staged green
|
||||
set -g fish_color_git_unstaged yellow
|
||||
set -g fish_color_git_untracked red
|
||||
set -g fish_color_git_unmerged red
|
||||
|
||||
set -g fish_prompt_git_status_ahead '▲'
|
||||
set -g fish_prompt_git_status_behind '▼'
|
||||
set -g fish_prompt_git_status_diverged '⯁'
|
||||
set -g fish_prompt_git_status_staged '●'
|
||||
set -g fish_prompt_git_status_unstaged '●'
|
||||
set -g fish_prompt_git_status_untracked '●'
|
||||
set -g fish_prompt_git_status_unmerged 'M'
|
||||
set -g fish_prompt_git_status_stashed 'S'
|
||||
|
||||
set -g fish_prompt_git_status_order ahead behind diverged staged unstaged untracked unmerged stashed
|
||||
|
||||
# Useful chars
|
||||
# '✓'
|
||||
# '⚡'
|
||||
# '✚'
|
||||
# '●'
|
||||
# '▾'
|
||||
# '✖'
|
||||
# '➜'
|
||||
# '⇒'
|
||||
# '➤'
|
||||
|
||||
function __plaid_git_prompt --description 'Write out the git prompt'
|
||||
# If git isn't installed, there's nothing we can do
|
||||
# Return 1 so the calling prompt can deal with it
|
||||
if not command -sq git
|
||||
return 1
|
||||
end
|
||||
set -l branch (git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||
if test -z $branch
|
||||
return
|
||||
end
|
||||
|
||||
set -l index (git status --porcelain -b 2>/dev/null)
|
||||
set -l rst (set_color normal)
|
||||
|
||||
if test -z "$index"
|
||||
printf '%s[%s]%s' (set_color $fish_color_git_normal) $branch $rst
|
||||
return
|
||||
end
|
||||
|
||||
set -l gs
|
||||
|
||||
printf '%s[%s ' (set_color $fish_color_git_normal) $branch
|
||||
for i in $index
|
||||
if echo $i | grep '^[AMRCD]' >/dev/null
|
||||
set -a gs staged
|
||||
end
|
||||
if echo $i | grep '^.\{1\}[AMRCD]' >/dev/null
|
||||
set -a gs unstaged
|
||||
end
|
||||
if echo $i | grep '^??' >/dev/null
|
||||
set -a gs untracked
|
||||
end
|
||||
if echo $i | grep '^[ADU*][ADU*]' >/dev/null
|
||||
set -a gs unmerged
|
||||
end
|
||||
if echo $i | grep '^## .*ahead' >/dev/null
|
||||
set -a gs ahead
|
||||
end
|
||||
if echo $i | grep '^## .*behind' >/dev/null
|
||||
set -a gs behind
|
||||
end
|
||||
if echo $i | grep '^## .*diverged' >/dev/null
|
||||
set -a gs diverged
|
||||
end
|
||||
if git rev-parse --verify refs/stash >/dev/null 2>&1
|
||||
set -a gs stashed
|
||||
end
|
||||
end
|
||||
|
||||
for i in $fish_prompt_git_status_order
|
||||
if contains $i in $gs
|
||||
set -l color_name fish_color_git_$i
|
||||
set -l status_name fish_prompt_git_status_$i
|
||||
printf '%s%s' (set_color $$color_name) $$status_name
|
||||
end
|
||||
end
|
||||
|
||||
printf '%s]%s' (set_color $fish_color_git_normal) $rst
|
||||
end
|
|
@ -1,47 +0,0 @@
|
|||
set -g fish_color_user cyan
|
||||
set -g fish_color_host green
|
||||
set -g fish_color_cwd yellow
|
||||
set -g fish_prompt_pwd_dir_length 0
|
||||
|
||||
function fish_prompt --description 'Write out the prompt'
|
||||
set -l last_status $status
|
||||
set -l rst (set_color normal)
|
||||
|
||||
# User
|
||||
set -l user (set_color --bold $fish_color_user)(whoami)$rst
|
||||
|
||||
# Host
|
||||
set -l host (set_color --bold $fish_color_host)(prompt_hostname)$rst
|
||||
|
||||
# PWD
|
||||
set -l ppwd (set_color $fish_color_cwd)(prompt_pwd)$rst
|
||||
|
||||
# Git
|
||||
set -l pgit (__plaid_git_prompt)
|
||||
# __fish_hg_prompt
|
||||
|
||||
printf '%s@%s:%s %s\n' $user $host $ppwd $pgit
|
||||
|
||||
switch $fish_bind_mode
|
||||
case default
|
||||
set_color --bold --background red black
|
||||
echo -n '<N>'
|
||||
case insert
|
||||
set_color --bold green
|
||||
echo -n '<I>'
|
||||
case replace_one
|
||||
set_color --bold --background yellow black
|
||||
echo -n '<R>'
|
||||
case visual
|
||||
set_color --bold --background magenta black
|
||||
echo -n '<V>'
|
||||
end
|
||||
set_color normal
|
||||
|
||||
if not test $last_status -eq 0
|
||||
set_color $fish_color_error
|
||||
end
|
||||
|
||||
printf ' '
|
||||
set_color normal
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function ll --description 'List contents of directory using long format'
|
||||
ls -lha $argv
|
||||
end
|
|
@ -1,19 +0,0 @@
|
|||
## Base16 Gruvbox dark, pale
|
||||
# Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
|
||||
|
||||
set $base00 #262626
|
||||
set $base01 #3a3a3a
|
||||
set $base02 #4e4e4e
|
||||
set $base03 #8a8a8a
|
||||
set $base04 #949494
|
||||
set $base05 #dab997
|
||||
set $base06 #d5c4a1
|
||||
set $base07 #ebdbb2
|
||||
set $base08 #d75f5f
|
||||
set $base09 #ff8700
|
||||
set $base0A #ffaf00
|
||||
set $base0B #afaf00
|
||||
set $base0C #85ad85
|
||||
set $base0D #83adad
|
||||
set $base0E #d485ad
|
||||
set $base0F #d65d0e
|
|
@ -1 +0,0 @@
|
|||
base16-gruvbox-dark-pale
|
264
config/i3/common
264
config/i3/common
|
@ -1,264 +0,0 @@
|
|||
#########################
|
||||
# i3/sway common config #
|
||||
#########################
|
||||
|
||||
### Variables
|
||||
#
|
||||
# Logo key. Use Mod1 for Alt, Mod4 for Super
|
||||
set $mod Mod1
|
||||
# Home row direction keys, like vim
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
# keycodes for number keys
|
||||
set $key1 10
|
||||
set $key2 11
|
||||
set $key3 12
|
||||
set $key4 13
|
||||
set $key5 14
|
||||
set $key6 15
|
||||
set $key7 16
|
||||
set $key8 17
|
||||
set $key9 18
|
||||
set $key0 19
|
||||
# Workspaces names. Format: "index:name"
|
||||
set $ws1 "1:mail"
|
||||
set $ws2 "2:web"
|
||||
set $ws3 "3:3"
|
||||
set $ws4 "4:4"
|
||||
set $ws5 "5:5"
|
||||
set $ws6 "6:6"
|
||||
set $ws7 "7:7"
|
||||
set $ws8 "8:8"
|
||||
set $ws9 "9:9"
|
||||
set $ws10 "10:10"
|
||||
# Your preferred terminal emulator
|
||||
set $term kitty --single-instance --instance-group i3
|
||||
|
||||
# Other utilities
|
||||
set $backlightinc light -A 5
|
||||
set $backlightdec light -U 5
|
||||
set $volinc volcont --up
|
||||
set $voldec volcont --down
|
||||
set $voltog volcont --toggle
|
||||
set $cliplumber cliplumber
|
||||
set $mpdtoggle mpc toggle
|
||||
set $mpdnext mpc next
|
||||
set $mpdprev mpc prev
|
||||
|
||||
# Font for window titles and bar
|
||||
font pango:Hack 8
|
||||
|
||||
# Remove borders
|
||||
hide_edge_borders smart
|
||||
# Remove window title
|
||||
default_border pixel 1
|
||||
# Default to vertical split (vim :sp)
|
||||
|
||||
# Base16 color config
|
||||
include ./colorscheme
|
||||
# Property Name Border BG Text Indicator Child Border
|
||||
client.focused $base05 $base0D $base00 $base0D $base0D
|
||||
client.focused_inactive $base01 $base01 $base05 $base03 $base01
|
||||
client.unfocused $base01 $base00 $base05 $base01 $base01
|
||||
client.urgent $base08 $base08 $base00 $base08 $base08
|
||||
client.placeholder $base00 $base00 $base05 $base00 $base00
|
||||
client.background $base07
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
|
||||
# exit i3/sway
|
||||
bindsym $mod+Shift+q exec $exit
|
||||
|
||||
# lock session
|
||||
bindsym Mod4+l exec $lock
|
||||
|
||||
# application launcher
|
||||
bindsym $mod+r exec $menu
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# call clipboard plumber
|
||||
bindsym $mod+v exec $cliplumber
|
||||
|
||||
# volume control
|
||||
bindsym XF86AudioRaiseVolume exec $volinc
|
||||
bindsym XF86AudioLowerVolume exec $voldec
|
||||
bindsym XF86AudioMute exec $voltog
|
||||
|
||||
# MPD control
|
||||
bindsym $mod+greater exec $mpdnext
|
||||
bindsym $mod+less exec $mpdprev
|
||||
bindsym $mod+p exec $mpdtoggle
|
||||
bindsym XF86AudioNext exec $mpdnext
|
||||
bindsym XF86AudioPrev exec $mpdprev
|
||||
bindsym XF86AudioPlay exec $mpdtoggle
|
||||
|
||||
# brightness control (using Super because MSI weirdness)
|
||||
bindsym Mod4+Up exec $backlightinc
|
||||
bindsym Mod4+Down exec $backlightdec
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+r reload
|
||||
|
||||
# restart i3/sway inplace (preserves your layout/session)
|
||||
bindsym $mod+Shift+x restart
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+c kill
|
||||
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# _move_ the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# switch to workspace
|
||||
bindcode $mod+$key1 workspace $ws1
|
||||
bindcode $mod+$key2 workspace $ws2
|
||||
bindcode $mod+$key3 workspace $ws3
|
||||
bindcode $mod+$key4 workspace $ws4
|
||||
bindcode $mod+$key5 workspace $ws5
|
||||
bindcode $mod+$key6 workspace $ws6
|
||||
bindcode $mod+$key7 workspace $ws7
|
||||
bindcode $mod+$key8 workspace $ws8
|
||||
bindcode $mod+$key9 workspace $ws9
|
||||
bindcode $mod+$key0 workspace $ws10
|
||||
# move focused container to workspace
|
||||
bindcode $mod+Shift+$key1 move container to workspace $ws1
|
||||
bindcode $mod+Shift+$key2 move container to workspace $ws2
|
||||
bindcode $mod+Shift+$key3 move container to workspace $ws3
|
||||
bindcode $mod+Shift+$key4 move container to workspace $ws4
|
||||
bindcode $mod+Shift+$key5 move container to workspace $ws5
|
||||
bindcode $mod+Shift+$key6 move container to workspace $ws6
|
||||
bindcode $mod+Shift+$key7 move container to workspace $ws7
|
||||
bindcode $mod+Shift+$key8 move container to workspace $ws8
|
||||
bindcode $mod+Shift+$key9 move container to workspace $ws9
|
||||
bindcode $mod+Shift+$key0 move container to workspace $ws10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
#bindsym $mod+b splith
|
||||
#bindsym $mod+v splitv
|
||||
bindsym $mod+shift+v splith
|
||||
bindsym $mod+ctrl+shift+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
#bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
#bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
# ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
# Mnemonic: Dimension
|
||||
bindsym $mod+d mode "resize"
|
||||
|
||||
# Fast resize
|
||||
bindsym $mod+Ctrl+$left resize shrink width 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$down resize grow height 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$up resize shrink height 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$right resize grow width 5 px or 5 ppt
|
||||
|
||||
# App specific settings
|
||||
for_window [class="mpv"] floating enable
|
||||
|
||||
### Status Bar
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
position top
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
#status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done
|
||||
status_command i3status
|
||||
|
||||
# Base16 colors for the statusbar
|
||||
colors {
|
||||
background $base00
|
||||
separator $base04
|
||||
statusline $base05
|
||||
|
||||
# State Border BG Text
|
||||
focused_workspace $base0D $base0D $base00
|
||||
active_workspace $base03 $base03 $base00
|
||||
inactive_workspace $base01 $base01 $base05
|
||||
urgent_workspace $base0F $base0F $base00
|
||||
binding_mode $base0A $base0A $base00
|
||||
}
|
||||
|
||||
separator_symbol " | "
|
||||
strip_workspace_numbers yes
|
||||
}
|
279
config/i3/config
279
config/i3/config
|
@ -1,279 +0,0 @@
|
|||
#########################
|
||||
# i3/sway common config #
|
||||
#########################
|
||||
|
||||
### Variables
|
||||
#
|
||||
# Logo key. Use Mod1 for Alt.
|
||||
set $mod Mod4
|
||||
# Home row direction keys, like vim
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
# keycodes for number keys
|
||||
set $key1 10
|
||||
set $key2 11
|
||||
set $key3 12
|
||||
set $key4 13
|
||||
set $key5 14
|
||||
set $key6 15
|
||||
set $key7 16
|
||||
set $key8 17
|
||||
set $key9 18
|
||||
set $key0 19
|
||||
# Workspaces names. Format: "index:name"
|
||||
set $ws1 "1:mail"
|
||||
set $ws2 "2:web"
|
||||
set $ws3 "3:3"
|
||||
set $ws4 "4:4"
|
||||
set $ws5 "5:5"
|
||||
set $ws6 "6:6"
|
||||
set $ws7 "7:7"
|
||||
set $ws8 "8:8"
|
||||
set $ws9 "9:9"
|
||||
set $ws10 "10:10"
|
||||
# Your preferred terminal emulator
|
||||
set $term kitty --single-instance
|
||||
|
||||
# Font for window titles and bar
|
||||
font pango:Hack 8
|
||||
|
||||
# Remove borders
|
||||
hide_edge_borders smart
|
||||
# Remove window title
|
||||
default_border pixel 1
|
||||
# Default to vertical split (vim :sp)
|
||||
|
||||
## Base16 Gruvbox dark, pale
|
||||
# Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
|
||||
|
||||
set $base00 #262626
|
||||
set $base01 #3a3a3a
|
||||
set $base02 #4e4e4e
|
||||
set $base03 #8a8a8a
|
||||
set $base04 #949494
|
||||
set $base05 #dab997
|
||||
set $base06 #d5c4a1
|
||||
set $base07 #ebdbb2
|
||||
set $base08 #d75f5f
|
||||
set $base09 #ff8700
|
||||
set $base0A #ffaf00
|
||||
set $base0B #afaf00
|
||||
set $base0C #85ad85
|
||||
set $base0D #83adad
|
||||
set $base0E #d485ad
|
||||
set $base0F #d65d0e
|
||||
# Property Name Border BG Text Indicator Child Border
|
||||
client.focused $base05 $base0D $base00 $base0D $base0D
|
||||
client.focused_inactive $base01 $base01 $base05 $base03 $base01
|
||||
client.unfocused $base01 $base00 $base05 $base01 $base01
|
||||
client.urgent $base08 $base08 $base00 $base08 $base08
|
||||
client.placeholder $base00 $base00 $base05 $base00 $base00
|
||||
client.background $base07
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
|
||||
# exit i3/sway
|
||||
bindsym $mod+Shift+e exec $exit
|
||||
|
||||
# lock session
|
||||
bindsym Ctrl+Mod1+l exec $lock
|
||||
|
||||
# application launcher
|
||||
bindsym $mod+r exec $menu
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# call clipboard plumber
|
||||
bindsym $mod+v exec cliplumber
|
||||
|
||||
# volume control
|
||||
bindsym XF86AudioRaiseVolume exec amixer -q set Master 1%+ unmute
|
||||
bindsym XF86AudioLowerVolume exec amixer -q set Master 1%- unmute
|
||||
bindsym XF86AudioMute exec amixer -q set Master toggle
|
||||
|
||||
# music control
|
||||
bindsym $mod+p exec mpc toggle
|
||||
bindsym $mod+less exec mpc prev
|
||||
bindsym $mod+Shift+less exec mpc next
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+r reload
|
||||
|
||||
# restart i3/sway inplace (preserves your layout/session)
|
||||
bindsym $mod+Shift+x restart
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+c kill
|
||||
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod
|
||||
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# _move_ the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# switch to workspace
|
||||
bindcode $mod+$key1 workspace $ws1
|
||||
bindcode $mod+$key2 workspace $ws2
|
||||
bindcode $mod+$key3 workspace $ws3
|
||||
bindcode $mod+$key4 workspace $ws4
|
||||
bindcode $mod+$key5 workspace $ws5
|
||||
bindcode $mod+$key6 workspace $ws6
|
||||
bindcode $mod+$key7 workspace $ws7
|
||||
bindcode $mod+$key8 workspace $ws8
|
||||
bindcode $mod+$key9 workspace $ws9
|
||||
bindcode $mod+$key0 workspace $ws10
|
||||
# move focused container to workspace
|
||||
bindcode $mod+Shift+$key1 move container to workspace $ws1
|
||||
bindcode $mod+Shift+$key2 move container to workspace $ws2
|
||||
bindcode $mod+Shift+$key3 move container to workspace $ws3
|
||||
bindcode $mod+Shift+$key4 move container to workspace $ws4
|
||||
bindcode $mod+Shift+$key5 move container to workspace $ws5
|
||||
bindcode $mod+Shift+$key6 move container to workspace $ws6
|
||||
bindcode $mod+Shift+$key7 move container to workspace $ws7
|
||||
bindcode $mod+Shift+$key8 move container to workspace $ws8
|
||||
bindcode $mod+Shift+$key9 move container to workspace $ws9
|
||||
bindcode $mod+Shift+$key0 move container to workspace $ws10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
#bindsym $mod+b splith
|
||||
#bindsym $mod+v splitv
|
||||
bindsym $mod+shift+v splith
|
||||
bindsym $mod+ctrl+shift+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
#bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
#bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
# ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
# Mnemonic: Dimension
|
||||
bindsym $mod+d mode "resize"
|
||||
|
||||
# Fast resize
|
||||
bindsym $mod+Ctrl+$left resize shrink width 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$down resize grow height 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$up resize shrink height 5 px or 5 ppt
|
||||
bindsym $mod+Ctrl+$right resize grow width 5 px or 5 ppt
|
||||
|
||||
### Status Bar
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
position top
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
#status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done
|
||||
status_command i3status
|
||||
|
||||
# Base16 colors for the statusbar
|
||||
colors {
|
||||
background $base00
|
||||
separator $base04
|
||||
statusline $base05
|
||||
|
||||
# State Border BG Text
|
||||
focused_workspace $base0D $base0D $base00
|
||||
active_workspace $base03 $base03 $base00
|
||||
inactive_workspace $base01 $base01 $base05
|
||||
urgent_workspace $base0F $base0F $base00
|
||||
binding_mode $base0A $base0A $base00
|
||||
}
|
||||
|
||||
separator_symbol " | "
|
||||
strip_workspace_numbers yes
|
||||
}
|
||||
#
|
||||
###############################################
|
||||
# i3 config file (v4) #
|
||||
# Manual https://i3wm.org/docs/userguide.html #
|
||||
###############################################
|
||||
# Quick and dirty hack because i3 doesn't have includes
|
||||
|
||||
# exit i3 (logs you out of your X session)
|
||||
set $exit i3-msg exit
|
||||
#set $exit "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# Screen locker
|
||||
set $lock i3lock -c 000000
|
||||
|
||||
# Application launcher
|
||||
set $menu dmenu_run
|
||||
|
||||
# App specific settings
|
||||
for_window [class="mpv"] floating enable
|
|
@ -1,65 +0,0 @@
|
|||
# i3status configuration file.
|
||||
# see "man i3status" for documentation.
|
||||
|
||||
# It is important that this file is edited as UTF-8.
|
||||
# The following line should contain a sharp s:
|
||||
# ß
|
||||
# If the above line is not correctly displayed, fix your editor first!
|
||||
|
||||
general {
|
||||
colors = true
|
||||
interval = 5
|
||||
|
||||
# Base16 gruvbox-dark-pale
|
||||
color_good = "#afaf00"
|
||||
color_degraded = "#ffaf00"
|
||||
color_bad = "#d65d0e"
|
||||
}
|
||||
|
||||
order += "ipv6"
|
||||
order += "wireless _first_"
|
||||
order += "ethernet _first_"
|
||||
order += "battery all"
|
||||
order += "disk /"
|
||||
order += "load"
|
||||
order += "memory"
|
||||
order += "tztime local"
|
||||
|
||||
ipv6 {
|
||||
format_down = ""
|
||||
}
|
||||
|
||||
wireless _first_ {
|
||||
format_up = "W: (%quality at %essid) %ip"
|
||||
format_down = "W: down"
|
||||
}
|
||||
|
||||
ethernet _first_ {
|
||||
format_up = "E: %ip (%speed)"
|
||||
format_down = "E: down"
|
||||
}
|
||||
|
||||
battery all {
|
||||
format = "%status %percentage %remaining"
|
||||
format_down = ""
|
||||
}
|
||||
|
||||
disk "/" {
|
||||
format = "%avail"
|
||||
low_threshold = "5"
|
||||
threshold_type = "percentage_free"
|
||||
}
|
||||
|
||||
load {
|
||||
format = "%1min"
|
||||
}
|
||||
|
||||
memory {
|
||||
format = "%used:%available"
|
||||
threshold_degraded = "1G"
|
||||
format_degraded = "MEMORY < %available"
|
||||
}
|
||||
|
||||
tztime local {
|
||||
format = "%Y-%m-%d %H:%M"
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
../../themes/base16-kitty/colors
|
|
@ -1,70 +0,0 @@
|
|||
font_family hack
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
font_size 14
|
||||
|
||||
background_opacity 0.85
|
||||
|
||||
include colors/base16-gruvbox-dark-pale-256.conf
|
||||
|
||||
enable_audio_bell no
|
||||
|
||||
include .local.conf
|
||||
|
||||
##################################
|
||||
# Nice alternative base16 themes #
|
||||
##################################
|
||||
|
||||
#include colors/base16-3024-256.conf
|
||||
#include colors/base16-gruvbox-dark-hard-256.conf
|
||||
#include colors/base16-atelier-dune-256.conf
|
||||
#include colors/base16-atelier-forest-256.conf
|
||||
#include colors/base16-bespin-256.conf
|
||||
#include colors/base16-brewer-256.conf
|
||||
#include colors/base16-bright-256.conf
|
||||
#include colors/base16-hopscotch-256.conf
|
||||
#include colors/base16-irblack-256.conf
|
||||
#include colors/base16-isotope-256.conf
|
||||
#include colors/base16-macintosh-256.conf
|
||||
#include colors/base16-materia-256.conf
|
||||
#include colors/base16-monokai-256.conf
|
||||
#include colors/base16-spacemacs-256.conf
|
||||
#include colors/base16-woodland-256.conf
|
||||
|
||||
#########################
|
||||
# Old kitty conf backup #
|
||||
#########################
|
||||
|
||||
# background #002b36
|
||||
# foreground #839496
|
||||
# background_opacity 0.85
|
||||
# cursor #93a1a1
|
||||
# cursor_text_color #586e75
|
||||
# selection_foreground #93a1a1
|
||||
# selection_background #586e75
|
||||
#
|
||||
# color0 #073642
|
||||
# color1 #dc322f
|
||||
# color2 #859900
|
||||
# color3 #b58900
|
||||
# color4 #268bd2
|
||||
# color5 #d33682
|
||||
# color6 #2aa198
|
||||
# color7 #eee8d5
|
||||
# color9 #cb4b16
|
||||
# color8 #002b36
|
||||
# color10 #586e75
|
||||
# color11 #657b83
|
||||
# color12 #839496
|
||||
# color13 #6c71c4
|
||||
# color14 #93a1a1
|
||||
# color15 #fdf6e3
|
||||
#
|
||||
# enable_audio_bell no
|
||||
#
|
||||
# map ctrl+shift+equal change_font_size all +1.0
|
||||
# map ctrl+shift+minus change_font_size all -1.0
|
||||
#
|
||||
# font_size 10.0
|
||||
# font_family Hack
|
|
@ -1,3 +0,0 @@
|
|||
# Download current video as mp3 using youtube-dl
|
||||
g-d run mp3dl ${path}
|
||||
#y-y run yank url
|
|
@ -1 +0,0 @@
|
|||
screenshot-directory=~/img/screenshots/mpv/
|
2
config/neomutt/.gitignore
vendored
2
config/neomutt/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
*.mail
|
||||
*.pw.gpg
|
|
@ -1,15 +0,0 @@
|
|||
set my_account = "accountname"
|
||||
set realname = "Rey"
|
||||
set from = "rey@millenium.falcon"
|
||||
alternates "^rey.*@millenium\\.falcon$"
|
||||
set hostname = "millenium.falcon"
|
||||
|
||||
source 'account.rc'
|
||||
|
||||
set crypt_autosign
|
||||
set crypt_opportunistic_encrypt
|
||||
set pgp_default_key = D1D400EBE283A278E72A6ED40FDA27891A60E157
|
||||
|
||||
color status blue default
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,11 +0,0 @@
|
|||
set sendmail = "/usr/bin/msmtp $my_msmtp_conf -a $my_account"
|
||||
set spoolfile = "+$my_account/Inbox"
|
||||
set record = "+$my_account/Sent"
|
||||
set postponed = "+$my_account/Draft"
|
||||
set trash = "+$my_account/Trash"
|
||||
|
||||
macro index,pager gs "<shell-escape>mbsync $my_mbsync_conf $my_account<enter>" "IMAP sync account"
|
||||
macro index,pager gi "<shell-escape>mbsync $my_mbsync_conf $my_account:INBOX<enter>" "IMAP sync Inbox"
|
||||
macro index,pager gf "<shell-escape>fdm fetch -a $my_account<enter>" "fdm filter mailbox"
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,92 +0,0 @@
|
|||
# color OBJECT FOREGROUND BACKGROUND
|
||||
|
||||
#########
|
||||
# INDEX #
|
||||
#########
|
||||
color index brightcyan default ~N
|
||||
color index brightyellow default ~F
|
||||
color index black green ~T
|
||||
color index brightred default ~D
|
||||
mono index bold ~N
|
||||
mono index bold ~F
|
||||
mono index bold ~T
|
||||
mono index bold ~D
|
||||
|
||||
##############
|
||||
# HIGHLIGHTS #
|
||||
##############
|
||||
color body brightgreen default "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
|
||||
color body brightgreen default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
|
||||
color body brightgreen default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
|
||||
mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
|
||||
mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
|
||||
mono body bold "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
|
||||
|
||||
###########
|
||||
# HEADERS #
|
||||
###########
|
||||
color header green default "^from:"
|
||||
color header green default "^to:"
|
||||
color header green default "^cc:"
|
||||
color header green default "^date:"
|
||||
color header yellow default "^newsgroups:"
|
||||
color header yellow default "^reply-to:"
|
||||
color header brightcyan default "^subject:"
|
||||
color header red default "^x-spam-rule:"
|
||||
color header yellow default "^message-id:"
|
||||
color header yellow default "^Organization:"
|
||||
color header yellow default "^Organisation:"
|
||||
color header yellow default "^User-Agent:"
|
||||
color header yellow default "^x-mailer:"
|
||||
color header yellow default "^message-id: .*pine"
|
||||
color header yellow default "^X-Fnord:"
|
||||
color header yellow default "^X-WebTV-Stationery:"
|
||||
color header yellow default "^X-Message-Flag:"
|
||||
color header yellow default "^X-Spam-Status:"
|
||||
color header yellow default "^X-SpamProbe:"
|
||||
color header red default "^X-SpamProbe: SPAM"
|
||||
|
||||
##########
|
||||
# QUOTES #
|
||||
##########
|
||||
color quoted cyan default
|
||||
color quoted1 yellow default
|
||||
color quoted2 red default
|
||||
color quoted3 green default
|
||||
color quoted4 cyan default
|
||||
color quoted5 yellow default
|
||||
color quoted6 red default
|
||||
color quoted7 green default
|
||||
|
||||
|
||||
###########
|
||||
# SIDEBAR #
|
||||
###########
|
||||
color sidebar_highlight black green # Highlighted, not open
|
||||
color sidebar_divider default default # divider bar
|
||||
color sidebar_flagged red default # mailboxes containing flagged mail
|
||||
color sidebar_new green default # mailboxes containing new mail
|
||||
color sidebar_ordinary color245 default # normal mailboxes
|
||||
|
||||
|
||||
# Default color definitions
|
||||
#color hdrdefault white green
|
||||
color signature brightmagenta default
|
||||
color indicator black cyan
|
||||
color attachment black green
|
||||
color error red default
|
||||
color message white default
|
||||
color search brightwhite magenta
|
||||
color status brightyellow blue
|
||||
color tree brightblue default
|
||||
color normal white default
|
||||
color tilde green default
|
||||
color bold brightyellow default
|
||||
#color underline magenta default
|
||||
color markers brightcyan default
|
||||
# Colour definitions when on a mono screen
|
||||
mono bold bold
|
||||
mono underline underline
|
||||
mono indicator reverse
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,93 +0,0 @@
|
|||
set copy # See also $record
|
||||
unmailboxes *
|
||||
source "~/.config/neomutt/mailboxes.sh $folder|"
|
||||
|
||||
# Load external configs
|
||||
source sidebar.rc
|
||||
source colors.rc
|
||||
source gpg.rc
|
||||
source keys.rc
|
||||
|
||||
# Accounts
|
||||
source "~/.config/neomutt/folder-hooks.sh $folder|"
|
||||
|
||||
# Basic options
|
||||
unset wait_key # Only wait if command exited != 0
|
||||
set delete # delete messages for real
|
||||
unset confirmappend # don't ask when adding to a mailbox
|
||||
set quit #default; <quit> exits neomutt
|
||||
unset move #default; don't move read messages
|
||||
unset mark_old # don't mark unread mail as old when exiting mailbox
|
||||
set beep_new # Hope your term bell is set to something sensible :P
|
||||
unset pipe_decode # decode and weed headers before <pipe-message>, urlscan seems to require it unset
|
||||
set thorough_search #default; decode mail before searching ~b and ~h
|
||||
set sleep_time = 0 # Speed up folder opening
|
||||
set change_folder_next # Default to next folder in list
|
||||
set mail_check = 5 #default; look for new mail every 'n' seconds
|
||||
set mail_check_stats # Allow mail stats gathering
|
||||
set mail_check_stats_interval = 10 # Mail stats calc interval
|
||||
|
||||
# Status bar
|
||||
set status_chars = " *%A" # mailbox unchanged/changed/RO/attach-msg mode
|
||||
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
|
||||
|
||||
#########
|
||||
# Index #
|
||||
#########
|
||||
set date_format = "%d/%m/%y %H:%M"
|
||||
set index_format = "[%Z] %D - %-20.20F %s"
|
||||
set sort = threads
|
||||
set sort_aux = last-date-received
|
||||
set uncollapse_jump # Jump to unread when unfolding
|
||||
set sort_re #default; useful for mailbox sort in sidebar
|
||||
unset narrow_tree #default; compact thread tree arrows
|
||||
|
||||
#########
|
||||
# Pager #
|
||||
#########
|
||||
set pager_index_lines = 10 # lines aboves the pager
|
||||
set pager_context = 3 # lines of context around selected msg in index
|
||||
set pager_stop # don't jump to next msg when scrolling past the end
|
||||
set menu_scroll # don't skip to next page when reaching bottom
|
||||
set tilde # pad blank lines with '~'
|
||||
unset markers # remove '+' on wrapped lines
|
||||
set smart_wrap #default; wrap at word boundaries
|
||||
set quote_regex = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||
# Prefer plaintext and process html through mailcap
|
||||
alternative_order text/plain text/enriched text/html
|
||||
auto_view text/html
|
||||
# Prune headers
|
||||
ignore *
|
||||
unignore From To Reply-To Cc Bcc Subject Date
|
||||
unignore Organization X-Label X-Mailer User-Agent
|
||||
|
||||
###########
|
||||
# Compose #
|
||||
###########
|
||||
# https://www.zigg.com/2018/natalie-nguyen.html
|
||||
my_hdr X-Clacks-Overhead: GNU Elise Nodel, Laura, Natalie Nguyen, Terry Pratchett
|
||||
set use_from # set a From: header
|
||||
set use_envelope_from # which from?
|
||||
set sig_dashes # dashes before sig
|
||||
set edit_headers # show headers when composing
|
||||
set fast_reply # skip to compose when replying
|
||||
set askcc # ask for CC:
|
||||
set fcc_attach # save attachments with the body
|
||||
unset mime_forward # forward attachments as part of body
|
||||
set forward_format = "Fwd: %s" # format of subject when forwarding
|
||||
set forward_decode # decode when forwarding
|
||||
set attribution = "On %d, %n wrote:" # format of quoting header
|
||||
set reply_to # reply to Reply to: field
|
||||
set reverse_name # reply as whomever it was to
|
||||
set include # include message in replies
|
||||
set forward_quote # include message in forwards
|
||||
set send_charset = utf-8
|
||||
set sendmail_wait = 0 # wait for msmtp to finish sending
|
||||
set abort_noattach = ask-yes # warn for missing attachment
|
||||
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
|
||||
|
||||
set editor = "vim -c 'set tw=70 et wrap' '+/^$' "
|
||||
|
||||
set mask = ".*" # Which files to match
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,75 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
text="$(cat)"
|
||||
|
||||
# The Mime Format emails we're trying to parse have the following layout
|
||||
#
|
||||
# To: mail@example.org
|
||||
# ... <misc headers>
|
||||
#
|
||||
# Content-Type: multipart/mixed;
|
||||
# boundary="=_c4f4c8bf54a05b2b47ef558c3c61e418"
|
||||
# ...<more headers>
|
||||
#
|
||||
# This is a message in Mime Format. If you see this, your mail reader does not support this format.
|
||||
#
|
||||
# --=_c4f4c8bf54a05b2b47ef558c3c61e418
|
||||
# Content-Type: multipart/alternative;
|
||||
# boundary="=_935b3ef6db1361fbfde9e3eb2b1debe5"
|
||||
# Content-Transfer-Encoding: 8bit
|
||||
#
|
||||
#
|
||||
# --=_935b3ef6db1361fbfde9e3eb2b1debe5
|
||||
# Content-Type: text/plain; charset=iso-8859-1
|
||||
# Content-Transfer-Encoding: quoted-printable
|
||||
#
|
||||
# ...<text content, if any>
|
||||
#
|
||||
# --=_935b3ef6db1361fbfde9e3eb2b1debe5
|
||||
# Content-Type: text/html; charset=iso-8859-1
|
||||
# Content-Transfer-Encoding: quoted-printable
|
||||
#
|
||||
# <html>=0A <head>=0A <meta http-equiv=3D"Content-Type" content=3D"text/=
|
||||
# html; charset=3DISO-8859-1">=09=0A <link rel=3D"stylesheet" href=3D=
|
||||
# ...<and more quoted-printable html>
|
||||
# ...<and misc eventual attachment parts>
|
||||
# --=_c4f4c8bf54a05b2b47ef558c3c61e418--
|
||||
|
||||
# We're only interested in the text/html part of the multipart email
|
||||
# TODO parse actual encoding instead of defaulting to iso-8859-1
|
||||
mailto="$(printf "%s" "$text" \
|
||||
| awk '
|
||||
boundary {
|
||||
if ($0 ~ boundary) {
|
||||
boundary = "";
|
||||
next
|
||||
}
|
||||
print $0
|
||||
}
|
||||
|
||||
/Content-Type: text\/html;/ {
|
||||
boundary=line
|
||||
}
|
||||
|
||||
{
|
||||
line=$0
|
||||
}' \
|
||||
| qprint -d \
|
||||
| iconv -f iso-8859-1 -t utf-8 \
|
||||
| grep -Eo '<a href="mailto:.*?</a>')"
|
||||
|
||||
to="$(printf "%s" "$mailto" | sed -En 's/.*mailto:(.*?)\?subject=.*/\1/p')"
|
||||
subject="$(printf "%s" "$mailto" | sed -En 's/.*\?subject=(.*?)" .*/\1/p')"
|
||||
# TODO extract original To: to emulate use_envelope_from
|
||||
|
||||
datadir="${XDG_DATA_HOME:-"$HOME/.local/share"}/neomutt"
|
||||
mkdir -p "$datadir"
|
||||
|
||||
format_str="unmy_hdr To: Subject:
|
||||
my_hdr To: \"%s\"
|
||||
my_hdr Subject: \"%s\"
|
||||
echo \`rm \"%s\"\`"
|
||||
|
||||
printf "$format_str" "$to" "$subject" "$datadir/info.rc" > "$datadir/info.rc"
|
|
@ -1,47 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
>&2 echo "$0 <mutt \$folder>"
|
||||
>&2 echo " Generate mutt folder hooks for every maildir account in \$folder"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
acc_dir="$HOME/.config/neomutt/accounts/"
|
||||
mail_dir="$1"
|
||||
|
||||
# Select default account
|
||||
#default="$(find "$acc_dir" -name "*.mail" -printf "source '%p'\n" -quit)"
|
||||
|
||||
#if [ -z "$default" ]; then
|
||||
# >&2 echo "No mail accounts found in $acc_dir"
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
# Order of the keys to use for the account switch macro
|
||||
chars="1234567890azertyuiopqsdfghjklmwxcvbn"
|
||||
i=1
|
||||
|
||||
# Setup folder hooks for all the accounts
|
||||
for f in "$acc_dir"*.mail; do
|
||||
account="$(basename -s '.mail' "$f")"
|
||||
if [ ! -d "$mail_dir/$account" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ -z "$default" ]; then
|
||||
default="source '$f'"
|
||||
fi
|
||||
inbox="$(find "$mail_dir/$account" -maxdepth 1 -iname "inbox" -type d -printf "%f" -quit)"
|
||||
printf 'folder-hook =%s '\''source %s'\''\n' "$account" "$f"
|
||||
key="$(printf '%s' "$chars" | cut -c "$i")"
|
||||
printf 'macro index,pager <Esc>%s "<change-folder>=%s/%s<Return>" "Change to %s Inbox"\n' \
|
||||
"$key" "$account" "$inbox" "$account"
|
||||
i=$((i+1))
|
||||
done
|
||||
|
||||
if [ ! -z "$default" ]; then
|
||||
printf '%s\n' "$default"
|
||||
fi
|
|
@ -1,15 +0,0 @@
|
|||
# Use GPGME
|
||||
set crypt_use_gpgme
|
||||
|
||||
set crypt_replysign
|
||||
set crypt_replyencrypt
|
||||
set crypt_replysignencrypted
|
||||
set crypt_verify_sig
|
||||
set crypt_opportunistic_encrypt
|
||||
|
||||
set pgp_self_encrypt
|
||||
set smime_self_encrypt
|
||||
|
||||
unset pgp_sign_as # Should be set by the accounts
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,97 +0,0 @@
|
|||
###########
|
||||
# GENERAL #
|
||||
###########
|
||||
bind index,pager N search-opposite
|
||||
bind generic,index,pager \Cu half-up
|
||||
bind generic,index,pager \Cd half-down
|
||||
bind generic,index,pager g noop # required to define multikeys binds
|
||||
bind generic,index gg first-entry
|
||||
bind generic,index G last-entry
|
||||
|
||||
bind index,pager <tab> sync-mailbox
|
||||
|
||||
macro index,pager ga "<shell-escape>mailsync<enter>" "Sync all IMAP mailboxes"
|
||||
|
||||
###########
|
||||
# SIDEBAR #
|
||||
###########
|
||||
bind index,pager \Cj sidebar-next # Highlight next
|
||||
bind index,pager \Ck sidebar-prev # Highlight previous
|
||||
bind index,pager \Cl sidebar-open # Open highlighted
|
||||
# For non vim users, up/down/right also work
|
||||
bind index,pager B sidebar-toggle-visible # Toggle sidebar
|
||||
# See also <sidebar-{page-up,page-down,next-new,prev-new}>
|
||||
|
||||
#########
|
||||
# INDEX #
|
||||
#########
|
||||
bind index h noop # display-toggle-weed is rubbish in index view
|
||||
bind index l display-message
|
||||
bind index p recall-message
|
||||
bind index R group-reply
|
||||
bind index <space> collapse-thread
|
||||
bind index p recall-message
|
||||
|
||||
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
||||
|
||||
# Saner copy/move/cd dialogs
|
||||
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
|
||||
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
|
||||
macro index c "<change-folder>?<toggle-mailboxes>" "move a message to a mailbox"
|
||||
|
||||
#########
|
||||
# PAGER #
|
||||
#########
|
||||
bind pager h exit
|
||||
bind pager K previous-undeleted
|
||||
bind pager J next-undeleted
|
||||
bind pager k previous-line
|
||||
bind pager j next-line
|
||||
bind pager gg top
|
||||
bind pager G bottom
|
||||
|
||||
bind pager R group-reply
|
||||
bind pager gh display-toggle-weed
|
||||
bind pager ge extract-keys
|
||||
|
||||
macro pager gu "<pipe-message> urlscan <enter>"
|
||||
# Answer emails with a reply address in the body
|
||||
# https://unix.stackexchange.com/a/586010/248368
|
||||
macro pager gr "<pipe-message> ~/.config/neomutt/extract-reply.sh <enter>\
|
||||
<enter-command>source ~/.local/share/neomutt/info.rc <enter>\
|
||||
<mail><enter><enter><enter>"
|
||||
# Use a hook to reset sender and subject just after creating the reply
|
||||
send-hook . 'unmy_hdr To: Subject:'
|
||||
|
||||
##########
|
||||
# ATTACH #
|
||||
##########
|
||||
bind attach l view-text # Force viewing as text
|
||||
|
||||
###########
|
||||
# NOTMUCH #
|
||||
###########
|
||||
# https://a3nm.net/git/myconfig/file/mutt/muttrc.html
|
||||
bind index,pager \Cf vfolder-from-query
|
||||
bind index,pager z entire-thread
|
||||
# Addresses autocompetion using notmuch
|
||||
# https://github.com/neomutt/neomutt/issues/629
|
||||
# https://github.com/neomutt/neomutt/issues/1333
|
||||
set query_command = "echo '' && notmuch address from:%s"
|
||||
bind editor <Tab> complete-query
|
||||
bind editor ^T complete
|
||||
set query_format="%4c %t %-70.70a %-70.70n %?e?(%e)?"
|
||||
|
||||
###########
|
||||
# COMPOSE #
|
||||
###########
|
||||
bind compose p postpone-message
|
||||
bind compose P pgp-menu
|
||||
|
||||
###########
|
||||
# Browser #
|
||||
###########
|
||||
bind browser l descend-directory
|
||||
bind browser h goto-parent
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,29 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
>&2 echo "$0 <maildirs \$folder>"
|
||||
>&2 echo " Generate neomutt mailboxes & named-mailboxes for every maildir in \$folder"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
maildir="$1"
|
||||
|
||||
mailboxes=$(find "$maildir" -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch | sort)
|
||||
|
||||
# Order of the keys to use for the account switch macro
|
||||
chars="1234567890azertyuiopqsdfghjklmwxcvbn"
|
||||
i=1
|
||||
|
||||
for m in $mailboxes; do
|
||||
inbox="$(find "$m" -maxdepth 1 -iname "inbox" -type d -printf "%f" -quit)"
|
||||
key="$(printf '%s' "$chars" | cut -c "$i")"
|
||||
printf "named-mailboxes '[%s] %s' '%s'\n" "$key" "$(basename "$m")" "$m/$inbox"
|
||||
printf "sidebar_whitelist '%s'\n" "$m/$inbox"
|
||||
printf "mailboxes "
|
||||
find "$m" -mindepth 1 -type d ! -name cur ! -name tmp ! -name new -printf '"%p"\0' | xargs -0
|
||||
i=$((i+1))
|
||||
done
|
|
@ -1,6 +0,0 @@
|
|||
# Default config
|
||||
set mbox_type = Maildir
|
||||
set folder = "~/mail"
|
||||
set my_msmtp_conf = "" # Leave empty for default
|
||||
set my_mbsync_conf = "" # Leave empty for default
|
||||
source common.rc
|
|
@ -1,21 +0,0 @@
|
|||
set sidebar_visible
|
||||
set mail_check_stats # update unread/flagged/total counts
|
||||
set sidebar_format = '%D%?F? [%!]?%* %?N?%N/?%?S?%S?'
|
||||
set sidebar_width = 32 # Note: some chars take two columns (chinese)
|
||||
set sidebar_short_path # Keep only end of mailbox path
|
||||
set sidebar_component_depth = 1 # nb of parent subdirs to hide
|
||||
set sidebar_delim_chars = '/.' # mailbox path sep, '.' is used with IMAP
|
||||
set sidebar_divider_char = '|' # UI separator bar char
|
||||
set sidebar_folder_indent # indent according to path tree
|
||||
set sidebar_indent_string = ' '
|
||||
set sidebar_new_mail_only # Only display mailbox with new/flagged mail
|
||||
unset sidebar_next_new_wrap # wrap <sidebar-{next,prev}-new> to beginning
|
||||
unset sidebar_on_right # keep bar on the left
|
||||
set sidebar_sort_method = 'path' # sort by mailbox path alphabetically
|
||||
|
||||
# Override sidebar_new_mail_only
|
||||
sidebar_whitelist `find $folder -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%f"\0' | xargs -0`
|
||||
sidebar_whitelist `find $folder -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%p"\0' | xargs -0`
|
||||
sidebar_whitelist `find $folder -mindepth 1 -type d -iname inbox -printf '"%p"\0' | xargs -0`
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,14 +0,0 @@
|
|||
# Work config
|
||||
set mbox_type = Maildir
|
||||
set folder = "~/work/mail"
|
||||
set my_msmtp_conf = "-C $folder/msmtprc" # Leave empty for default
|
||||
set my_mbsync_conf = "-c $folder/mbsyncrc" # Leave empty for default
|
||||
source common.rc
|
||||
|
||||
# Override sidebar_new_mail_only
|
||||
# Move back to sidebar.rc once the issue is resolved
|
||||
# https://github.com/neomutt/neomutt/issues/2208
|
||||
sidebar_whitelist `find ~/work/mail -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%p"\0' | xargs -0`
|
||||
sidebar_whitelist `find ~/work/mail -mindepth 1 -type d -iname inbox -printf '"%p"\0' | xargs -0`
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,4 +0,0 @@
|
|||
" http://vimcasts.org/episodes/meet-neovim/
|
||||
set runtimepath^=~/.vim runtimepath+=~/.vim/after
|
||||
let &packpath=&runtimepath
|
||||
source ~/.vimrc
|
7
config/pipe-viewer/.gitignore
vendored
7
config/pipe-viewer/.gitignore
vendored
|
@ -1,7 +0,0 @@
|
|||
cli-history.txt
|
||||
gtk-history.txt
|
||||
instances.json
|
||||
session.dat
|
||||
users.txt
|
||||
playlists
|
||||
watched.txt
|
|
@ -1,91 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# GTK+ Pipe Viewer 0.0.5 - configuration file
|
||||
|
||||
our $CONFIG = {
|
||||
active_channel_type_combobox => 0,
|
||||
active_more_options_expander => 0,
|
||||
active_panel_account_combobox => 0,
|
||||
active_resolution_combobox => 4,
|
||||
active_subscriptions_order_combobox => 0,
|
||||
api_host => "auto",
|
||||
audio_only => 0,
|
||||
auto_captions => 0,
|
||||
autoscroll_to_end => 0,
|
||||
cache_dir => "$ENV{HOME}/.cache/pipe-viewer",
|
||||
clear_search_list => 1,
|
||||
clear_text_entries_on_click => 0,
|
||||
comments_order => "top",
|
||||
comments_width => 80,
|
||||
cookie_file => undef,
|
||||
dash => 1,
|
||||
debug => 0,
|
||||
default_notebook_page => 1,
|
||||
downloads_dir => ".",
|
||||
entry_completion_limit => 10,
|
||||
env_proxy => 1,
|
||||
fullscreen => 0,
|
||||
get_captions => 1,
|
||||
hfr => 1,
|
||||
history => 1,
|
||||
history_file => "$ENV{HOME}/.config/pipe-viewer/gtk-history.txt",
|
||||
history_limit => 100000,
|
||||
hpaned_position => 1152,
|
||||
hpaned_width => 250,
|
||||
http_proxy => undef,
|
||||
ignore_av1 => 0,
|
||||
m4a_audio => 1,
|
||||
mainw_centered => 0,
|
||||
mainw_fullscreen => 0,
|
||||
mainw_maximized => 0,
|
||||
mainw_size => "1920x1061",
|
||||
maxResults => 10,
|
||||
pipe_viewer => "/usr/bin/pipe-viewer",
|
||||
pipe_viewer_args => [],
|
||||
prefer_av1 => 0,
|
||||
prefer_fork => 0,
|
||||
prefer_mp4 => 0,
|
||||
recent_history => 10,
|
||||
region => undef,
|
||||
remember_session => 1,
|
||||
remember_session_depth => 10,
|
||||
resolution => 720,
|
||||
save_titles_to_history => 0,
|
||||
show_thumbs => 1,
|
||||
split_videos => 1,
|
||||
srt_languages => ["en", "fr"],
|
||||
terminal => "/usr/bin/fbterm",
|
||||
terminal_exec => "-e '%s'",
|
||||
thousand_separator => ",",
|
||||
thumbnail_type => "medium",
|
||||
timeout => undef,
|
||||
tooltip_max_len => 512,
|
||||
tooltips => 1,
|
||||
user_agent => undef,
|
||||
video_player_selected => "mpv",
|
||||
video_players => {
|
||||
mpv => {
|
||||
arg => "--really-quiet --force-media-title=*TITLE* --no-ytdl *VIDEO*",
|
||||
audio => "--audio-file=*AUDIO*",
|
||||
cmd => "/usr/bin/mpv",
|
||||
fs => "--fullscreen",
|
||||
srt => "--sub-file=*SUB*",
|
||||
},
|
||||
vlc => {
|
||||
arg => "--quiet --play-and-exit --no-video-title-show --input-title-format=*TITLE* *VIDEO*",
|
||||
audio => "--input-slave=*AUDIO*",
|
||||
cmd => "vlc",
|
||||
fs => "--fullscreen",
|
||||
srt => "--sub-file=*SUB*",
|
||||
},
|
||||
},
|
||||
videoDimension => undef,
|
||||
videoLicense => undef,
|
||||
web_browser => undef,
|
||||
youtube_channel_url => "https://www.youtube.com/channel/%s",
|
||||
youtube_playlist_url => "https://www.youtube.com/playlist?list=%s",
|
||||
youtube_users_file => "$ENV{HOME}/.config/pipe-viewer/users.txt",
|
||||
youtube_video_url => "https://www.youtube.com/watch?v=%s",
|
||||
ytdl => 1,
|
||||
ytdl_cmd => "/usr/bin/youtube-dl",
|
||||
}
|
|
@ -1,132 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# CLI Pipe Viewer 0.4.5 - configuration file
|
||||
|
||||
use utf8;
|
||||
|
||||
our $CONFIG = {
|
||||
api_host => "auto",
|
||||
audio_quality => "best",
|
||||
auto_captions => 0,
|
||||
autoplay_mode => 0,
|
||||
bypass_age_gate_native => 0,
|
||||
bypass_age_gate_with_proxy => 0,
|
||||
cache_dir => "$ENV{HOME}/.cache/pipe-viewer",
|
||||
colors => 1,
|
||||
comments_order => "top",
|
||||
confirm => 0,
|
||||
convert_cmd => "ffmpeg -i *IN* *OUT*",
|
||||
convert_to => undef,
|
||||
cookie_file => undef,
|
||||
copy_caption => 0,
|
||||
custom_channel_layout_format => [
|
||||
{ align => "right", color => "bold", text => "*NO*.", width => 3 },
|
||||
{ align => "left", color => "bold blue", text => "*AUTHOR*", width => "55%" },
|
||||
{ align => "right", color => "green", text => "*VIDEOS* videos", width => 14 },
|
||||
{
|
||||
align => "right",
|
||||
color => "green",
|
||||
text => "*SUBS_SHORT* subs",
|
||||
width => 10,
|
||||
},
|
||||
],
|
||||
custom_layout_format => [
|
||||
{ align => "right", color => "bold", text => "*NO*.", width => 3 },
|
||||
{ align => "left", color => "bold blue", text => "*TITLE*", width => "55%" },
|
||||
{ align => "left", color => "yellow", text => "*AUTHOR*", width => "15%" },
|
||||
{ align => "right", color => "green", text => "*AGE_SHORT*", width => 3 },
|
||||
{ align => "right", color => "green", text => "*VIEWS_SHORT*", width => 5 },
|
||||
{ align => "right", color => "blue", text => "*TIME*", width => 8 },
|
||||
],
|
||||
custom_playlist_layout_format => [
|
||||
{ align => "right", color => "bold", text => "*NO*.", width => 3 },
|
||||
{ align => "left", color => "bold blue", text => "*TITLE*", width => "55%" },
|
||||
{ align => "right", color => "green", text => "*ITEMS* videos", width => 14 },
|
||||
{ align => "left", color => "magenta", text => "*AUTHOR*", width => "20%" },
|
||||
],
|
||||
dash => 1,
|
||||
date => undef,
|
||||
debug => 0,
|
||||
download_and_play => 0,
|
||||
download_with_wget => 1,
|
||||
download_with_ytdl => 1,
|
||||
downloads_dir => ".",
|
||||
env_proxy => 1,
|
||||
fat32safe => 0,
|
||||
features => [],
|
||||
ffmpeg_cmd => "/usr/bin/ffmpeg",
|
||||
force_fallback => 0,
|
||||
fullscreen => 0,
|
||||
get_captions => 1,
|
||||
get_subscriptions_in_parallel => 0,
|
||||
get_term_width => 1,
|
||||
hfr => 1,
|
||||
highlight_color => "bold",
|
||||
highlight_watched => 1,
|
||||
history => 1,
|
||||
history_file => "$ENV{HOME}/.config/pipe-viewer/cli-history.txt",
|
||||
history_limit => 100000,
|
||||
http_proxy => undef,
|
||||
ignore_av1 => 0,
|
||||
ignored_projections => [],
|
||||
interactive => 1,
|
||||
keep_original_video => 0,
|
||||
local_playlist_limit => -1,
|
||||
maxResults => 20,
|
||||
merge_into_mkv => 1,
|
||||
merge_into_mkv_args => "-loglevel warning -c:s srt -c:v copy -c:a copy -disposition:s forced",
|
||||
merge_with_captions => 1,
|
||||
order => undef,
|
||||
page => 1,
|
||||
prefer_av1 => 0,
|
||||
prefer_invidious => 0,
|
||||
prefer_m4a => 0,
|
||||
prefer_mp4 => 0,
|
||||
region => undef,
|
||||
remove_played_file => 0,
|
||||
resolution => "720p",
|
||||
saved_channels_file => "$ENV{HOME}/.config/pipe-viewer/users.txt",
|
||||
show_video_info => 1,
|
||||
skip_if_exists => 1,
|
||||
skip_watched => 0,
|
||||
split_videos => 1,
|
||||
srt_languages => ["en", "fr"],
|
||||
subscribed_channels_file => "$ENV{HOME}/.config/pipe-viewer/subscribed_channels.txt",
|
||||
subscriptions_lifetime => 600,
|
||||
subscriptions_limit => 10000,
|
||||
thousand_separator => ",",
|
||||
timeout => undef,
|
||||
user_agent => undef,
|
||||
video_filename_format => "*FTITLE* - *ID*.*FORMAT*",
|
||||
video_player_selected => "mpv",
|
||||
video_players => {
|
||||
mpv => {
|
||||
arg => "--really-quiet --force-media-title=*TITLE* --no-ytdl *VIDEO*",
|
||||
audio => "--audio-file=*AUDIO*",
|
||||
cmd => "/usr/bin/mpv",
|
||||
fs => "--fullscreen",
|
||||
novideo => "--no-video",
|
||||
srt => "--sub-file=*SUB*",
|
||||
},
|
||||
vlc => {
|
||||
arg => "--quiet --play-and-exit --no-video-title-show --input-title-format=*TITLE* *VIDEO*",
|
||||
audio => "--input-slave=*AUDIO*",
|
||||
cmd => "vlc",
|
||||
fs => "--fullscreen",
|
||||
novideo => "--intf=dummy --novideo",
|
||||
srt => "--sub-file=*SUB*",
|
||||
},
|
||||
},
|
||||
videoDuration => undef,
|
||||
watch_history => 1,
|
||||
watch_history_file => "$ENV{HOME}/.config/pipe-viewer/watched.txt",
|
||||
wget_cmd => "/usr/bin/wget",
|
||||
youtube_channel_url => "https://www.youtube.com/channel/%s",
|
||||
youtube_playlist_url => "https://www.youtube.com/playlist?list=%s",
|
||||
youtube_video_url => "https://www.youtube.com/watch?v=%s",
|
||||
ytdl => 1,
|
||||
ytdl_cmd => "/usr/bin/yt-dlp",
|
||||
ytdlp_comments => 0,
|
||||
ytdlp_max_comments => 10,
|
||||
ytdlp_max_replies => 3,
|
||||
}
|
4
config/qutebrowser/.gitignore
vendored
4
config/qutebrowser/.gitignore
vendored
|
@ -1,4 +0,0 @@
|
|||
local.py
|
||||
qsettings
|
||||
bookmarks
|
||||
quickmarks
|
|
@ -1,20 +0,0 @@
|
|||
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
|
||||
# Base16 qutebrowser template by theova
|
||||
# Gruvbox dark, medium scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
|
||||
|
||||
base00 = "#282828"
|
||||
base01 = "#3c3836"
|
||||
base02 = "#504945"
|
||||
base03 = "#665c54"
|
||||
base04 = "#bdae93"
|
||||
base05 = "#d5c4a1"
|
||||
base06 = "#ebdbb2"
|
||||
base07 = "#fbf1c7"
|
||||
base08 = "#fb4934"
|
||||
base09 = "#fe8019"
|
||||
base0A = "#fabd2f"
|
||||
base0B = "#b8bb26"
|
||||
base0C = "#8ec07c"
|
||||
base0D = "#83a598"
|
||||
base0E = "#d3869b"
|
||||
base0F = "#d65d0e"
|
|
@ -1,381 +0,0 @@
|
|||
import base16_gruvbox_dark_medium as b16
|
||||
from local import GPG_KEY, NOTIF_GRANTS
|
||||
|
||||
# pylint: disable=C0111
|
||||
c = c # noqa: F821 pylint: disable=E0602,C0103
|
||||
config = config # noqa: F821 pylint: disable=E0602,C0103
|
||||
|
||||
config.load_autoconfig(False)
|
||||
|
||||
########
|
||||
# Misc #
|
||||
########
|
||||
|
||||
config.set("auto_save.session", True)
|
||||
config.set("colors.webpage.preferred_color_scheme", "dark")
|
||||
config.set("content.autoplay", False)
|
||||
config.set("content.default_encoding", "utf-8")
|
||||
config.set("content.pdfjs", False)
|
||||
config.set("content.plugins", False)
|
||||
config.set("downloads.location.directory", "~/dl")
|
||||
config.set("session.lazy_restore", True)
|
||||
config.set("tabs.background", True)
|
||||
config.set("tabs.last_close", "close")
|
||||
config.set("tabs.mousewheel_switching", False)
|
||||
config.set("tabs.new_position.unrelated", "next")
|
||||
config.set("tabs.position", "left")
|
||||
config.set("tabs.show", "multiple")
|
||||
config.set("tabs.width", "10%")
|
||||
|
||||
##############
|
||||
# Privileges #
|
||||
##############
|
||||
|
||||
# Cookies
|
||||
config.set("content.cookies.accept", "never", "*://*.medium.com/*")
|
||||
|
||||
# Media capture
|
||||
config.set("content.media.audio_capture", True, "*://discord.com/*")
|
||||
config.set("content.media.audio_video_capture", True, "*://discord.com/*")
|
||||
config.set("content.media.video_capture", True, "*://discord.com/*")
|
||||
|
||||
# Notifications
|
||||
for pattern in NOTIF_GRANTS:
|
||||
config.set("content.notifications.enabled", True, pattern)
|
||||
config.set("content.notifications.enabled", True, "*://app.slack.com/*")
|
||||
config.set("content.notifications.enabled", True, "*://discord.com/*")
|
||||
config.set("content.notifications.enabled", False, "*://*.reddit.com/*")
|
||||
|
||||
############
|
||||
# Bindings #
|
||||
############
|
||||
|
||||
# Hinting
|
||||
config.bind("F", "hint all tab-bg")
|
||||
config.bind(";p", "hint links spawn cliplumber {hint-url}")
|
||||
config.bind(";v", "hint links spawn playvideo {hint-url}")
|
||||
config.bind(";i", "hint images download")
|
||||
|
||||
config.bind("wi", "devtools window")
|
||||
|
||||
# Keepass autotype
|
||||
config.bind("<Alt-Shift-u>",
|
||||
"spawn --userscript qute-keepassxc --key " + GPG_KEY,
|
||||
mode="insert")
|
||||
config.bind("pw",
|
||||
"spawn --userscript qute-keepassxc --key " + GPG_KEY,
|
||||
mode="normal")
|
||||
|
||||
# Toggle socks proxy
|
||||
config.bind("gp",
|
||||
(
|
||||
'config-cycle -t -p content.proxy '
|
||||
'"socks://127.0.0.1:8080/" '
|
||||
'"system"'
|
||||
))
|
||||
|
||||
# Gruvbox dark theme hotswappable on demand
|
||||
config.bind("<Ctrl-R>",
|
||||
(
|
||||
'config-cycle -t content.user_stylesheets '
|
||||
'"~/.config/qutebrowser/css/gruvbox-all-sites.css" '
|
||||
'""'
|
||||
))
|
||||
|
||||
##############
|
||||
# Adblocking #
|
||||
##############
|
||||
|
||||
config.set("content.blocking.enabled", True)
|
||||
config.set("content.blocking.method", "adblock")
|
||||
|
||||
config.set(
|
||||
"content.blocking.adblock.lists",
|
||||
[
|
||||
str(config.configdir) + "/custom-block.txt",
|
||||
"https://easylist.to/easylist/easylist.txt",
|
||||
"https://easylist.to/easylist/easyprivacy.txt",
|
||||
# "https://easylist.to/easylist/fanboy-annoyance.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt",
|
||||
"https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt",
|
||||
],
|
||||
)
|
||||
|
||||
###############
|
||||
# Color theme #
|
||||
###############
|
||||
|
||||
# Text color of the completion widget. May be a single color to use for
|
||||
# all columns or a list of three colors, one for each column.
|
||||
c.colors.completion.fg = b16.base05
|
||||
|
||||
# Background color of the completion widget for odd rows.
|
||||
c.colors.completion.odd.bg = b16.base03
|
||||
|
||||
# Background color of the completion widget for even rows.
|
||||
c.colors.completion.even.bg = b16.base00
|
||||
|
||||
# Foreground color of completion widget category headers.
|
||||
c.colors.completion.category.fg = b16.base0A
|
||||
|
||||
# Background color of the completion widget category headers.
|
||||
c.colors.completion.category.bg = b16.base00
|
||||
|
||||
# Top border color of the completion widget category headers.
|
||||
c.colors.completion.category.border.top = b16.base00
|
||||
|
||||
# Bottom border color of the completion widget category headers.
|
||||
c.colors.completion.category.border.bottom = b16.base00
|
||||
|
||||
# Foreground color of the selected completion item.
|
||||
c.colors.completion.item.selected.fg = b16.base01
|
||||
|
||||
# Background color of the selected completion item.
|
||||
c.colors.completion.item.selected.bg = b16.base0A
|
||||
|
||||
# Top border color of the selected completion item.
|
||||
c.colors.completion.item.selected.border.top = b16.base0A
|
||||
|
||||
# Bottom border color of the selected completion item.
|
||||
c.colors.completion.item.selected.border.bottom = b16.base0A
|
||||
|
||||
# Foreground color of the matched text in the selected completion item.
|
||||
c.colors.completion.item.selected.match.fg = b16.base08
|
||||
|
||||
# Foreground color of the matched text in the completion.
|
||||
c.colors.completion.match.fg = b16.base0B
|
||||
|
||||
# Color of the scrollbar handle in the completion view.
|
||||
c.colors.completion.scrollbar.fg = b16.base05
|
||||
|
||||
# Color of the scrollbar in the completion view.
|
||||
c.colors.completion.scrollbar.bg = b16.base00
|
||||
|
||||
# Background color of the context menu. If set to null, the Qt default is used.
|
||||
c.colors.contextmenu.menu.bg = b16.base00
|
||||
|
||||
# Foreground color of the context menu. If set to null, the Qt default is used.
|
||||
c.colors.contextmenu.menu.fg = b16.base05
|
||||
|
||||
# Background color of the context menu’s selected item.
|
||||
# If set to null, the Qt default is used.
|
||||
c.colors.contextmenu.selected.bg = b16.base0A
|
||||
|
||||
# Foreground color of the context menu’s selected item.
|
||||
# If set to null, the Qt default is used.
|
||||
c.colors.contextmenu.selected.fg = b16.base01
|
||||
|
||||
# Background color for the download bar.
|
||||
c.colors.downloads.bar.bg = b16.base00
|
||||
|
||||
# Color gradient start for download text.
|
||||
c.colors.downloads.start.fg = b16.base00
|
||||
|
||||
# Color gradient start for download backgrounds.
|
||||
c.colors.downloads.start.bg = b16.base0D
|
||||
|
||||
# Color gradient end for download text.
|
||||
c.colors.downloads.stop.fg = b16.base00
|
||||
|
||||
# Color gradient stop for download backgrounds.
|
||||
c.colors.downloads.stop.bg = b16.base0C
|
||||
|
||||
# Foreground color for downloads with errors.
|
||||
c.colors.downloads.error.fg = b16.base08
|
||||
|
||||
# Font color for hints.
|
||||
c.colors.hints.fg = b16.base00
|
||||
|
||||
# Background color for hints. Note that you can use a `rgba(...)` value
|
||||
# for transparency.
|
||||
c.colors.hints.bg = b16.base0A
|
||||
|
||||
# Font color for the matched part of hints.
|
||||
c.colors.hints.match.fg = b16.base05
|
||||
|
||||
# Text color for the keyhint widget.
|
||||
c.colors.keyhint.fg = b16.base05
|
||||
|
||||
# Highlight color for keys to complete the current keychain.
|
||||
c.colors.keyhint.suffix.fg = b16.base05
|
||||
|
||||
# Background color of the keyhint widget.
|
||||
c.colors.keyhint.bg = b16.base00
|
||||
|
||||
# Foreground color of an error message.
|
||||
c.colors.messages.error.fg = b16.base00
|
||||
|
||||
# Background color of an error message.
|
||||
c.colors.messages.error.bg = b16.base08
|
||||
|
||||
# Border color of an error message.
|
||||
c.colors.messages.error.border = b16.base08
|
||||
|
||||
# Foreground color of a warning message.
|
||||
c.colors.messages.warning.fg = b16.base00
|
||||
|
||||
# Background color of a warning message.
|
||||
c.colors.messages.warning.bg = b16.base0E
|
||||
|
||||
# Border color of a warning message.
|
||||
c.colors.messages.warning.border = b16.base0E
|
||||
|
||||
# Foreground color of an info message.
|
||||
c.colors.messages.info.fg = b16.base05
|
||||
|
||||
# Background color of an info message.
|
||||
c.colors.messages.info.bg = b16.base00
|
||||
|
||||
# Border color of an info message.
|
||||
c.colors.messages.info.border = b16.base00
|
||||
|
||||
# Foreground color for prompts.
|
||||
c.colors.prompts.fg = b16.base05
|
||||
|
||||
# Border used around UI elements in prompts.
|
||||
c.colors.prompts.border = b16.base00
|
||||
|
||||
# Background color for prompts.
|
||||
c.colors.prompts.bg = b16.base00
|
||||
|
||||
# Background color for the selected item in filename prompts.
|
||||
c.colors.prompts.selected.bg = b16.base0A
|
||||
|
||||
# Foreground color of the statusbar.
|
||||
c.colors.statusbar.normal.fg = b16.base0B
|
||||
|
||||
# Background color of the statusbar.
|
||||
c.colors.statusbar.normal.bg = b16.base00
|
||||
|
||||
# Foreground color of the statusbar in insert mode.
|
||||
c.colors.statusbar.insert.fg = b16.base00
|
||||
|
||||
# Background color of the statusbar in insert mode.
|
||||
c.colors.statusbar.insert.bg = b16.base0D
|
||||
|
||||
# Foreground color of the statusbar in passthrough mode.
|
||||
c.colors.statusbar.passthrough.fg = b16.base00
|
||||
|
||||
# Background color of the statusbar in passthrough mode.
|
||||
c.colors.statusbar.passthrough.bg = b16.base0C
|
||||
|
||||
# Foreground color of the statusbar in private browsing mode.
|
||||
c.colors.statusbar.private.fg = b16.base00
|
||||
|
||||
# Background color of the statusbar in private browsing mode.
|
||||
c.colors.statusbar.private.bg = b16.base03
|
||||
|
||||
# Foreground color of the statusbar in command mode.
|
||||
c.colors.statusbar.command.fg = b16.base05
|
||||
|
||||
# Background color of the statusbar in command mode.
|
||||
c.colors.statusbar.command.bg = b16.base00
|
||||
|
||||
# Foreground color of the statusbar in private browsing + command mode.
|
||||
c.colors.statusbar.command.private.fg = b16.base05
|
||||
|
||||
# Background color of the statusbar in private browsing + command mode.
|
||||
c.colors.statusbar.command.private.bg = b16.base00
|
||||
|
||||
# Foreground color of the statusbar in caret mode.
|
||||
c.colors.statusbar.caret.fg = b16.base00
|
||||
|
||||
# Background color of the statusbar in caret mode.
|
||||
c.colors.statusbar.caret.bg = b16.base0E
|
||||
|
||||
# Foreground color of the statusbar in caret mode with a selection.
|
||||
c.colors.statusbar.caret.selection.fg = b16.base00
|
||||
|
||||
# Background color of the statusbar in caret mode with a selection.
|
||||
c.colors.statusbar.caret.selection.bg = b16.base0D
|
||||
|
||||
# Background color of the progress bar.
|
||||
c.colors.statusbar.progress.bg = b16.base0D
|
||||
|
||||
# Default foreground color of the URL in the statusbar.
|
||||
c.colors.statusbar.url.fg = b16.base05
|
||||
|
||||
# Foreground color of the URL in the statusbar on error.
|
||||
c.colors.statusbar.url.error.fg = b16.base08
|
||||
|
||||
# Foreground color of the URL in the statusbar for hovered links.
|
||||
c.colors.statusbar.url.hover.fg = b16.base05
|
||||
|
||||
# Foreground color of the URL in the statusbar on successful load
|
||||
# (http).
|
||||
c.colors.statusbar.url.success.http.fg = b16.base0C
|
||||
|
||||
# Foreground color of the URL in the statusbar on successful load
|
||||
# (https).
|
||||
c.colors.statusbar.url.success.https.fg = b16.base0B
|
||||
|
||||
# Foreground color of the URL in the statusbar when there's a warning.
|
||||
c.colors.statusbar.url.warn.fg = b16.base0E
|
||||
|
||||
# Background color of the tab bar.
|
||||
c.colors.tabs.bar.bg = b16.base00
|
||||
|
||||
# Color gradient start for the tab indicator.
|
||||
c.colors.tabs.indicator.start = b16.base0D
|
||||
|
||||
# Color gradient end for the tab indicator.
|
||||
c.colors.tabs.indicator.stop = b16.base0C
|
||||
|
||||
# Color for the tab indicator on errors.
|
||||
c.colors.tabs.indicator.error = b16.base08
|
||||
|
||||
# Foreground color of unselected odd tabs.
|
||||
c.colors.tabs.odd.fg = b16.base05
|
||||
|
||||
# Background color of unselected odd tabs.
|
||||
c.colors.tabs.odd.bg = b16.base03
|
||||
|
||||
# Foreground color of unselected even tabs.
|
||||
c.colors.tabs.even.fg = b16.base05
|
||||
|
||||
# Background color of unselected even tabs.
|
||||
c.colors.tabs.even.bg = b16.base00
|
||||
|
||||
# Background color of pinned unselected even tabs.
|
||||
c.colors.tabs.pinned.even.bg = b16.base0C
|
||||
|
||||
# Foreground color of pinned unselected even tabs.
|
||||
c.colors.tabs.pinned.even.fg = b16.base07
|
||||
|
||||
# Background color of pinned unselected odd tabs.
|
||||
c.colors.tabs.pinned.odd.bg = b16.base0B
|
||||
|
||||
# Foreground color of pinned unselected odd tabs.
|
||||
c.colors.tabs.pinned.odd.fg = b16.base07
|
||||
|
||||
# Background color of pinned selected even tabs.
|
||||
c.colors.tabs.pinned.selected.even.bg = b16.base05
|
||||
|
||||
# Foreground color of pinned selected even tabs.
|
||||
c.colors.tabs.pinned.selected.even.fg = b16.base00
|
||||
|
||||
# Background color of pinned selected odd tabs.
|
||||
c.colors.tabs.pinned.selected.odd.bg = b16.base05
|
||||
|
||||
# Foreground color of pinned selected odd tabs.
|
||||
c.colors.tabs.pinned.selected.odd.fg = b16.base0E
|
||||
|
||||
# Foreground color of selected odd tabs.
|
||||
c.colors.tabs.selected.odd.fg = b16.base00
|
||||
|
||||
# Background color of selected odd tabs.
|
||||
c.colors.tabs.selected.odd.bg = b16.base05
|
||||
|
||||
# Foreground color of selected even tabs.
|
||||
c.colors.tabs.selected.even.fg = b16.base00
|
||||
|
||||
# Background color of selected even tabs.
|
||||
c.colors.tabs.selected.even.bg = b16.base05
|
||||
|
||||
# Background color for webpages if unset (or empty to use the theme's
|
||||
# color).
|
||||
# c.colors.webpage.bg = b16.base00
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
|||
||*.youtube.com
|
||||
||tweetdeck.twitter.com
|
||||
||twitter.com
|
|
@ -1,332 +0,0 @@
|
|||
// ==UserScript==
|
||||
// @name Direct links out
|
||||
// @name:ru Прямые ссылки наружу
|
||||
// @description Removes all "You are leaving our site" and redirection stuff from links
|
||||
// @description:ru Убирает "Бла-бла-бла, Вы покидаете наш сайт" и переадресации из ссылок
|
||||
// @namespace https://github.com/nokeya
|
||||
// @author nokeya
|
||||
// @update https://github.com/nokeya/direct-links-out/raw/master/direct-links-out.user.js
|
||||
// @icon https://raw.githubusercontent.com/nokeya/direct-links-out/master/icon.png
|
||||
// @version 2.19
|
||||
// @grant none
|
||||
//google
|
||||
// @include *://google.*
|
||||
// @include *://www.google.*
|
||||
// @include *://encrypted.google.*
|
||||
//yandex
|
||||
// @match *://yandex.ru/*
|
||||
// @match *://yandex.ua/*
|
||||
// @match *://yandex.by/*
|
||||
// @match *://yandex.kz/*
|
||||
// @match *://yandex.com.tr/*
|
||||
// @match *://yandex.com/*
|
||||
// @match *://*.yandex.ru/*
|
||||
// @match *://*.yandex.ua/*
|
||||
// @match *://*.yandex.by/*
|
||||
// @match *://*.yandex.kz/*
|
||||
// @match *://*.yandex.com.tr/*
|
||||
// @match *://*.yandex.com/*
|
||||
//youtube
|
||||
// @match *://youtube.com/*
|
||||
// @match *://*.youtube.com/*
|
||||
//wikimapia
|
||||
// @match *://wikimapia.org/*
|
||||
//deviantart
|
||||
// @match *://deviantart.com/*
|
||||
// @match *://*.deviantart.com/*
|
||||
//joyreactor
|
||||
// @match *://joyreactor.cc/*
|
||||
// @match *://*.joyreactor.cc/*
|
||||
// @match *://reactor.cc/*
|
||||
// @match *://*.reactor.cc/*
|
||||
// @match *://joyreactor.com/*
|
||||
// @match *://*.joyreactor.com/*
|
||||
//vk
|
||||
// @match *://vk.com/*
|
||||
// @match *://*.vk.com/*
|
||||
//ok
|
||||
// @match *://ok.ru/*
|
||||
// @match *://*.ok.ru/*
|
||||
//steam
|
||||
// @match *://steamcommunity.com/*
|
||||
// @match *://*.steamcommunity.com/*
|
||||
//fb
|
||||
// @match *://facebook.com/*
|
||||
// @match *://*.facebook.com/*
|
||||
//twitter
|
||||
// @match *://twitter.com/*
|
||||
// @match *://*.twitter.com/*
|
||||
//4pda
|
||||
// @match *://4pda.ru/*
|
||||
// @match *://*.4pda.ru/*
|
||||
//kickass
|
||||
// @match *://kat.cr/*
|
||||
// @match *://kickassto.co/*
|
||||
// @match *://katproxy.is/*
|
||||
// @match *://thekat.tv/*
|
||||
// @match *://*.kat.cr/*
|
||||
// @match *://*.kickassto.co/*
|
||||
// @match *://*.katproxy.is/*
|
||||
// @match *://*.thekat.tv/*
|
||||
//AMO
|
||||
// @match *://addons.mozilla.org/*
|
||||
//pixiv
|
||||
// @match *://pixiv.net/*
|
||||
// @match *://*.pixiv.net/*
|
||||
//tumblr
|
||||
// @match *://tumblr.com/*
|
||||
// @match *://*.tumblr.com/*
|
||||
//danieldefo
|
||||
// @match *://danieldefo.ru/*
|
||||
// @match *://*.danieldefo.ru/*
|
||||
//yaplakal
|
||||
// @match *://yaplakal.com/*
|
||||
// @match *://*.yaplakal.com/*
|
||||
//soundcloud
|
||||
// @match *://soundcloud.com/*
|
||||
// @match *://*.soundcloud.com/*
|
||||
//upwork
|
||||
// @match *://upwork.com/*
|
||||
// @match *://*.upwork.com/*
|
||||
//picarto
|
||||
// @match *://picarto.tv/*
|
||||
// @match *://*.picarto.tv/*
|
||||
//taker
|
||||
// @match *://taker.im/*
|
||||
// @match *://*.taker.im/*
|
||||
//forumavia
|
||||
// @match *://*.forumavia.ru/*
|
||||
//slack
|
||||
// @match *://*.slack.com/*
|
||||
//instagram
|
||||
// @match *://instagram.com/*
|
||||
// @match *://*.instagram.com/*
|
||||
|
||||
// ==/UserScript==
|
||||
(function() {
|
||||
// anchors and functions
|
||||
var anchor;
|
||||
var after;
|
||||
var rwLink = function(){};
|
||||
var rwAll = function(){};
|
||||
var retTrue = function() { return true; }; //dummy function to always return true
|
||||
|
||||
// simple rewrite link - based on anchors
|
||||
function rwSimple(link){
|
||||
if (anchor){
|
||||
var ndx = link.href.indexOf(anchor);
|
||||
if (ndx != -1){
|
||||
var newlink = link.href.substring(ndx + anchor.length);
|
||||
if (after){
|
||||
ndx = newlink.indexOf(after);
|
||||
if (ndx != -1)
|
||||
newlink = newlink.substring(0, ndx);
|
||||
}
|
||||
link.href = unescape(newlink);
|
||||
}
|
||||
}
|
||||
}
|
||||
function rwaSimple(){
|
||||
var links = document.getElementsByTagName('a');
|
||||
for (var i = 0; i < links.length; ++i)
|
||||
rwLink(links[i]);
|
||||
}
|
||||
// vk
|
||||
function rwVK(link){
|
||||
if (link.className === 'page_media_link_thumb')
|
||||
{
|
||||
var parent = link.parentNode;
|
||||
link.href = parent.getAttribute("href");
|
||||
parent.removeAttribute('href');
|
||||
parent.removeAttribute('onclick');
|
||||
link.removeAttribute('onclick');
|
||||
}
|
||||
|
||||
var ndx = link.href.indexOf(anchor);
|
||||
if (ndx != -1){
|
||||
var newlink = link.href.substring(ndx + anchor.length);
|
||||
var afterArr = ['&post=', '&el=snippet', '&cc_key='];
|
||||
for (var i = 0; i < afterArr.length; ++i){
|
||||
ndx = newlink.indexOf(afterArr[i]);
|
||||
if (ndx != -1)
|
||||
newlink = newlink.substring(0, ndx);
|
||||
}
|
||||
link.href = unescape(newlink);
|
||||
}
|
||||
}
|
||||
// twitter
|
||||
function rwTwitter(link){
|
||||
if (link.hasAttribute('data-expanded-url')){
|
||||
link.href = link.getAttribute('data-expanded-url');
|
||||
link.removeAttribute('data-expanded-url');
|
||||
}
|
||||
}
|
||||
function rwaTwitter(){
|
||||
var links = document.getElementsByClassName('twitter-timeline-link');
|
||||
for (var i = 0; i < links.length; ++i)
|
||||
rwLink(links[i]);
|
||||
}
|
||||
// kickass
|
||||
function rwKickass(link){
|
||||
var ndx = link.href.indexOf(anchor);
|
||||
if (ndx != -1){
|
||||
link.href = window.atob(unescape(link.href.substring(ndx + anchor.length, link.href.length - 1)));
|
||||
link.className = '';
|
||||
}
|
||||
}
|
||||
// youtube
|
||||
function rwYoutube(link){
|
||||
if (/redirect/i.test(link.className))
|
||||
link.setAttribute('data-redirect-href-updated', 'true');
|
||||
rwSimple(link);
|
||||
}
|
||||
// facebook
|
||||
function rwFacebook(link){
|
||||
if (/referrer_log/i.test(link.onclick)){
|
||||
link.removeAttribute('onclick');
|
||||
link.removeAttribute('onmouseover');
|
||||
}
|
||||
rwSimple(link);
|
||||
}
|
||||
// google
|
||||
function rwGoogle(link){
|
||||
// replace global rwt script
|
||||
if (window.rwt && window.rwt != retTrue){
|
||||
delete window.rwt;
|
||||
Object.defineProperty(window, 'rwt', { value: retTrue, writable: false });
|
||||
}
|
||||
|
||||
// main search
|
||||
if (link.hasAttribute('onmousedown'))
|
||||
link.removeAttribute('onmousedown');
|
||||
// images
|
||||
if (link.hasAttribute('jsaction')){
|
||||
var tmp = link.getAttribute('jsaction');
|
||||
if (tmp)
|
||||
link.setAttribute('jsaction', tmp.replace(/(mousedown:irc.rl|keydown:irc.rlk)/g,''));
|
||||
}
|
||||
}
|
||||
|
||||
// yandex
|
||||
function rwYandex(link){
|
||||
// main search
|
||||
if (link.hasAttribute('onmousedown'))
|
||||
link.removeAttribute('onmousedown');
|
||||
// images
|
||||
anchor = '&img_url=';
|
||||
after = '&pos=';
|
||||
rwSimple(link);
|
||||
}
|
||||
//mozilla addons store
|
||||
function rwAMO(link){
|
||||
if (/outgoing.prod.mozaws.net/i.test(link.href)){
|
||||
var tmp = link.href;
|
||||
link.href = "#";
|
||||
// we have to fight mozilla's replacing of direct redirect string with jquery events
|
||||
setTimeout(function(){ link.href = unescape(tmp.replace(/(http|https):\/\/outgoing.prod.mozaws.net\/v1\/[0-9a-zA-Z]+\//i,'')); }, 100);
|
||||
}
|
||||
}
|
||||
|
||||
// daniueldefo
|
||||
function rwDanielDefo(link){
|
||||
if (link.hasAttribute('data-proxy-href'))
|
||||
link.removeAttribute('data-proxy-href');
|
||||
}
|
||||
|
||||
// slack
|
||||
function rwSlack(link){
|
||||
link.removeAttribute('onclick');
|
||||
link.removeAttribute('onmouseover');
|
||||
}
|
||||
|
||||
// determine anchors, functions and listeners
|
||||
(function ()
|
||||
{
|
||||
rwLink = rwSimple;
|
||||
rwAll = rwaSimple;
|
||||
|
||||
var loc = window.location.hostname;
|
||||
if (/google/i.test(loc))
|
||||
rwLink = rwGoogle;
|
||||
else if (/youtube/i.test(loc)){
|
||||
anchor = 'redirect?q=';
|
||||
after = '&redir_token=';
|
||||
rwLink = rwYoutube;
|
||||
}
|
||||
else if (/facebook/i.test(loc)){
|
||||
anchor = 'u=';
|
||||
after = '&h=';
|
||||
rwLink = rwFacebook;
|
||||
}
|
||||
else if (/instagram/i.test(loc)){
|
||||
anchor = 'u=';
|
||||
after = '&e=';
|
||||
}
|
||||
else if (/twitter/i.test(loc)){
|
||||
rwLink = rwTwitter;
|
||||
rwAll = rwaTwitter;
|
||||
}
|
||||
else if (/yandex/i.test(loc))
|
||||
rwLink = rwYandex;
|
||||
else if (/vk/i.test(loc)){
|
||||
anchor = 'to=';
|
||||
rwLink = rwVK;
|
||||
}
|
||||
else if (/ok/i.test(loc)){
|
||||
anchor = 'st.link=';
|
||||
after = '&st.name=';
|
||||
}
|
||||
else if (/pixiv/i.test(loc))
|
||||
anchor = 'jump.php?';
|
||||
else if (/tumblr/i.test(loc)){
|
||||
anchor = "redirect?z=";
|
||||
after = "&t=";
|
||||
}
|
||||
else if (/deviantart/i.test(loc))
|
||||
anchor = 'outgoing?';
|
||||
else if (/(steam|reactor)/i.test(loc))
|
||||
anchor = 'url=';
|
||||
else if (/(kat|kickass)/i.test(loc)){
|
||||
anchor = 'confirm/url/';
|
||||
rwLink = rwKickass;
|
||||
}
|
||||
else if (/soundcloud/i.test(loc))
|
||||
anchor = "exit.sc/?url=";
|
||||
else if (/upwork/i.test(loc))
|
||||
anchor = 'leaving-odesk?ref=';
|
||||
else if (/4pda/i.test(loc)){
|
||||
anchor = 'go/?u=';
|
||||
after = '&e=';
|
||||
}
|
||||
else if (/mozilla/i.test(loc))
|
||||
rwLink = rwAMO;
|
||||
else if (/danieldefo/i.test(loc))
|
||||
rwLink = rwDanielDefo;
|
||||
else if (/yaplakal/i.test(loc))
|
||||
anchor = "go/?";
|
||||
else if (/wikimapia.org/i.test(loc))
|
||||
anchor = 'external_link?url=';
|
||||
else if (/forumavia.ru/i.test(loc))
|
||||
anchor = '/e/?l=';
|
||||
else if (/picarto/i.test(loc)){
|
||||
anchor = "referrer?go=";
|
||||
after = "&ref=";
|
||||
}
|
||||
else if (/taker/i.test(loc))
|
||||
anchor = "phpBB2/goto/";
|
||||
else if (/slack/i.test(loc))
|
||||
rwLink = rwSlack;
|
||||
|
||||
document.addEventListener('DOMNodeInserted', function(event){
|
||||
if (!event || !event.target || !(event.target instanceof HTMLElement))
|
||||
return;
|
||||
var node = event.target;
|
||||
if (node instanceof HTMLAnchorElement)
|
||||
rwLink(node);
|
||||
var links = node.getElementsByTagName('a');
|
||||
for (var i = 0; i < links.length; ++i)
|
||||
rwLink(links[i]);
|
||||
}, false);
|
||||
})();
|
||||
rwAll();
|
||||
})();
|
|
@ -1,79 +0,0 @@
|
|||
// https://github.com/joeywatts/disable-autogain-control-extension/blob/master/disableAutogain.js
|
||||
(function() {
|
||||
function setLegacyChromeConstraint(constraint, name, value) {
|
||||
if (constraint.mandatory && name in constraint.mandatory) {
|
||||
constraint.mandatory[name] = value;
|
||||
return;
|
||||
}
|
||||
if (constraint.optional) {
|
||||
const element = constraint.optional.find(opt => name in opt);
|
||||
if (element) {
|
||||
element[name] = value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
// `mandatory` options throw errors for unknown keys, so avoid that by
|
||||
// setting it under optional.
|
||||
if (!constraint.optional) {
|
||||
constraint.optional = [];
|
||||
}
|
||||
constraint.optional.push({ [name]: value });
|
||||
}
|
||||
function setConstraint(constraint, name, value) {
|
||||
if (constraint.advanced) {
|
||||
const element = constraint.advanced.find(opt => name in opt);
|
||||
if (element) {
|
||||
element[name] = value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
constraint[name] = value;
|
||||
}
|
||||
function disableAutogain(constraints) {
|
||||
console.log("Automatically unsetting gain!", constraints);
|
||||
if (constraints && constraints.audio) {
|
||||
if (typeof constraints.audio !== "object") {
|
||||
constraints.audio = {};
|
||||
}
|
||||
if (constraints.audio.optional || constraints.audio.mandatory) {
|
||||
setLegacyChromeConstraint(constraints.audio, "googAutoGainControl", false);
|
||||
setLegacyChromeConstraint(constraints.audio, "googAutoGainControl2", false);
|
||||
} else {
|
||||
setConstraint(constraints.audio, "autoGainControl", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function patchFunction(object, name, createNewFunction) {
|
||||
if (name in object) {
|
||||
var original = object[name];
|
||||
object[name] = createNewFunction(original);
|
||||
}
|
||||
}
|
||||
|
||||
patchFunction(navigator.mediaDevices, "getUserMedia", function (original) {
|
||||
return function getUserMedia(constraints) {
|
||||
disableAutogain(constraints);
|
||||
return original.call(this, constraints);
|
||||
};
|
||||
});
|
||||
function patchDeprecatedGetUserMedia(original) {
|
||||
return function getUserMedia(constraints, success, error) {
|
||||
disableAutogain(constraints);
|
||||
return original.call(this, constraints, success, error);
|
||||
};
|
||||
}
|
||||
patchFunction(navigator, "getUserMedia", patchDeprecatedGetUserMedia);
|
||||
patchFunction(navigator, "mozGetUserMedia", patchDeprecatedGetUserMedia);
|
||||
patchFunction(navigator, "webkitGetUserMedia", patchDeprecatedGetUserMedia);
|
||||
patchFunction(MediaStreamTrack.prototype, "applyConstraints", function (original) {
|
||||
return function applyConstraints(constraints) {
|
||||
disableAutogain(constraints);
|
||||
return original.call(this, constraints);
|
||||
};
|
||||
});
|
||||
console.log(
|
||||
"Disable Autogain by Joey Watts!",
|
||||
navigator.mediaDevices.getUserMedia
|
||||
);
|
||||
})();
|
|
@ -1,15 +0,0 @@
|
|||
// ==UserScript==
|
||||
// @name Nitter redirector
|
||||
// @namespace https://gist.github.com/bitraid/d1901de54382532a03b9b22a207f0417
|
||||
// @version 1.0
|
||||
// @description reddit to teddit
|
||||
// @match *://*.twitter.com/*
|
||||
// @match *://twitter.com/*
|
||||
// @grant none
|
||||
// @run-at document-start
|
||||
// ==/UserScript==
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
top.location.hostname = "nitter.privacydev.net";
|
||||
})();
|
|
@ -1,7 +0,0 @@
|
|||
GPG_KEY = "D1D400EBE283A278E72A6ED40FDA27891A60E157"
|
||||
NOTIF_GRANTS = [
|
||||
"*://example.com/*",
|
||||
"*://cool.website/*",
|
||||
]
|
||||
|
||||
# vim: syntax=python
|
|
@ -1,69 +0,0 @@
|
|||
####################
|
||||
# sway config file #
|
||||
# `man 5 sway` #
|
||||
####################
|
||||
|
||||
# i3/sway common config
|
||||
include ../i3/common
|
||||
|
||||
# exit sway (logs you out of your Wayland session)
|
||||
set $exit swaymsg exit
|
||||
|
||||
# Screen locker
|
||||
set $lock swaylock -f -c 000000
|
||||
|
||||
# Application launcher
|
||||
# Note: it's recommended that you pass the final command to sway
|
||||
set $menu dmenu_path | bemenu | xargs swaymsg exec --
|
||||
|
||||
# App specific settings
|
||||
for_window [app_id="mpv"] floating enable
|
||||
|
||||
# Default wallpaper
|
||||
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
|
||||
|
||||
# Apps autostart (run on each config reload)
|
||||
exec_always {
|
||||
import-gsettings
|
||||
}
|
||||
|
||||
# Set keyboard layout
|
||||
input * xkb_layout fr,ru,fr
|
||||
input * xkb_variant oss,phonetic,bepo
|
||||
input * xkb_options grp:shift_caps_toggle
|
||||
input * xkb_numlock enable
|
||||
|
||||
# Configure touchpad (man 5 sway-input)
|
||||
input type:touchpad {
|
||||
tap enabled
|
||||
tap_button_map lmr
|
||||
}
|
||||
|
||||
############
|
||||
# Examples #
|
||||
############
|
||||
|
||||
# Output config
|
||||
# output HDMI-A-1 resolution 1920x1080 position 1920,0
|
||||
# Get outputs names
|
||||
# swaymsg -t get_outputs
|
||||
|
||||
# Idle config
|
||||
# exec swayidle -w \
|
||||
# timeout 300 'swaylock -f -c 000000' \
|
||||
# timeout 600 'swaymsg "output * dpms off"' \
|
||||
# resume 'swaymsg "output * dpms on"' \
|
||||
# before-sleep 'swaylock -f -c 000000'
|
||||
|
||||
# Input configuration (man 5 sway-input)
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
#
|
||||
# Get inputs names
|
||||
# swaymsg -t get_inputs
|
||||
|
||||
include /etc/sway/config.d/*
|
|
@ -1,57 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# trizen configuration file
|
||||
|
||||
our $CONFIG = {
|
||||
ask_for_retry => 1, # bool -- When `makepkg` fails to build a package, offer the option for trying again.
|
||||
aur_results_last_modified => 1, # bool -- Show the date when the packages were last updated in AUR results.
|
||||
aur_results_popularity => 1, # bool -- Show the popularity score in AUR results.
|
||||
aur_results_show_installed => 1, # bool -- Show when a package is installed in AUR results.
|
||||
aur_results_sort_by => "name", # str -- Sort the AUR results by "name", "votes", "popularity" or "date".
|
||||
aur_results_sort_order => "ascending", # str -- Sort the AUR results in "ascending" or "descending" order.
|
||||
aur_results_votes => 1, # bool -- Show the number of votes in AUR results.
|
||||
clone_dir => "$ENV{HOME}/aur", # str -- Absolute path to the directory where to clone and build packages.
|
||||
color_code_dependencies => 1, # bool -- Display the dependencies of a package in specific colors (green = installed; cyan = in repo; purple = in AUR).
|
||||
debug => 0, # bool -- Verbose mode.
|
||||
flip_indices => 0, # bool -- In search+install mode, show the indices of packages in reverse order.
|
||||
flip_results => 0, # bool -- Show the search results in reverse order.
|
||||
forcecolors => 0, # bool -- Force output colors even when not writing to STDOUT.
|
||||
git_clone_depth => 0, # int -- Pass the `--depth int` flag to `git clone`. (0 means no limit)
|
||||
lwp_env_proxy => 1, # bool -- Use proxy settings defined in `env` (if any).
|
||||
lwp_show_progress => 0, # bool -- Show the HTTPS requests made by LWP::UserAgent to the AUR servers.
|
||||
lwp_timeout => 60, # int -- Seconds after which an HTTPS connection is aborted.
|
||||
makepkg_command => "/usr/bin/makepkg -scf", # str -- The `makepkg` command that is used internally in building a package.
|
||||
movepkg => 0, # bool -- Move built packages in the directory `movepkg_dir`.
|
||||
movepkg_dir => "/var/cache/pacman/pkg", # str -- Absolute path to the directory where to move built packages (with `movepkg`).
|
||||
nocolors => 0, # bool -- Disable output colors for `trizen`.
|
||||
noedit => 0, # bool -- Do not prompt to edit files when installing an AUR package.
|
||||
noinfo => 0, # bool -- Do not display package information when installing an AUR package.
|
||||
noinstall => 0, # bool -- Do not install built packages -- builds only.
|
||||
nopull => 0, # bool -- Do not `git pull` new changes from the AUR git server.
|
||||
one_line_edit => 0, # bool -- Select one or more build files to view/edit with one-line prompt.
|
||||
packages_in_stats => 5, # int -- The number of packages to display in `--stats`
|
||||
pacman_command => "/usr/bin/pacman", # str -- The `pacman` command that is used internally for pacman operations.
|
||||
pacman_local_dir => "/var/lib/pacman/local", # str -- Absolute path to the pacman's local directory.
|
||||
pager_mode => 0, # bool -- Show the build files in pager mode using pager.
|
||||
recompute_deps => 1, # bool -- Recompute the dependencies of a package (after its build files are inspected / edited).
|
||||
show_build_files_content => 1, # bool -- Show the content of the build files of a package before building it.
|
||||
show_comments => 0, # int -- Show the `n` most recent AUR comments for a package before building it. (max: 10)
|
||||
show_diff_only => 0, # bool -- When the build files of a package already exist locally, show the diff only.
|
||||
show_inexistent => 1, # bool -- Warn about packages that do not exist in AUR, during -Su.
|
||||
show_ood => 0, # bool -- Warn about out-of-date marked packages, during -Su.
|
||||
show_unmaintained => 1, # bool -- Warn about unmaintained packages, during -Su.
|
||||
skipinteg => 0, # bool -- Pass the `--skipinteg` argument to `makepkg`.
|
||||
split_packages => 1, # bool -- Ask about installing the other parts of a split package.
|
||||
ssl_verify_hostname => 1, # bool -- Ensure LWP::UserAgent connects to servers that have a valid certificate.
|
||||
su_command => "/usr/bin/su -c", # str -- Command used when special permissions are required and `use_sudo` is set to 0.
|
||||
sudo_autorepeat => 0, # bool -- Automatically repeat `sudo -v` in the background after a `sudo` command was first executed.
|
||||
sudo_autorepeat_at_runtime => 0, # bool -- Execute `sudo -v` when `trizen` is first executed and apply the behavior of `sudo_autorepeat`.
|
||||
sudo_autorepeat_interval => 180, # int -- Interval, in seconds, after which `sudo -v` is executed in background (with `sudo_autorepeat`).
|
||||
sudo_command => "/usr/bin/sudo", # str -- Command used when special permissions are required and `use_sudo` is set to 1.
|
||||
sudo_remove_timestamp => 1, # bool -- Remove the cached sudo credentials before `makepkg` is executed (`sudo --remove-timestamp`).
|
||||
syntax_highlighting => 1, # bool -- Syntax highlighting of the build files, using the `highlight` tool from [community].
|
||||
syntax_highlighting_cmd => "/usr/bin/highlight -O ansi", # str -- The `highlight` command used in highlighting the syntax of the build files (with `syntax_highlighting`).
|
||||
use_github_api => 1, # bool -- Check GitHub sources for updates using GitHub's API. (during `--devel --needed`)
|
||||
use_gitlab_api => 1, # bool -- Check GitLab sources for updates using GitLab's API. (during `--devel --needed`)
|
||||
use_sudo => 1, # bool -- Use the `sudo` command when special permissions are required.
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
partial alphanumeric_keys
|
||||
xkb_symbols "fr_oss_ansi" {
|
||||
// Brings < and > to ANSI keyboards
|
||||
|
||||
include "fr(oss)"
|
||||
|
||||
name[Group1]="French (alt., ansi)";
|
||||
|
||||
key <AB01> { [w, W, less, guillemotleft ] }; // w W < «
|
||||
key <AB02> { [x, X, greater, guillemotright ] }; // x X > »
|
||||
};
|
||||
|
||||
partial alphanumeric_keys
|
||||
xkb_symbols "fr_afnor" {
|
||||
// new AFNOR azerty adapted for programming and use with an ANSI keyboard
|
||||
include "fr(afnor)"
|
||||
|
||||
key <AE07> {[ leftsinglequotemark, 7, grave, dead_macron ]}; // ‘ 7 `
|
||||
key <AE12> {[ circumflex, dead_diaeresis, dead_circumflex, dead_caron ]}; // ^
|
||||
key <AB06> {[ n, N, tilde, dead_tilde ]}; // n N ~
|
||||
|
||||
key <AD04> {[ r, R, registered, copyright ]}; // r R ® ©
|
||||
|
||||
key <AB01> { [w, W, less, lessthanequal ] }; // w W < ≤
|
||||
key <AB02> { [x, X, greater, greaterthanequal ] }; // x X > ≥
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
# General
|
||||
set statusbar-h-padding 0
|
||||
set statusbar-v-padding 0
|
||||
set window-title-basename "true"
|
||||
set selection-clipboard "clipboard"
|
||||
|
||||
|
||||
#Appearance
|
||||
|
||||
set font "Hack 10"
|
||||
|
||||
set notification-error-bg "#282828" # bg
|
||||
set notification-error-fg "#fb4934" # bright:red
|
||||
set notification-warning-bg "#282828" # bg
|
||||
set notification-warning-fg "#fabd2f" # bright:yellow
|
||||
set notification-bg "#282828" # bg
|
||||
set notification-fg "#b8bb26" # bright:green
|
||||
|
||||
set completion-bg "#504945" # bg2
|
||||
set completion-fg "#ebdbb2" # fg
|
||||
set completion-group-bg "#3c3836" # bg1
|
||||
set completion-group-fg "#928374" # gray
|
||||
set completion-highlight-bg "#83a598" # bright:blue
|
||||
set completion-highlight-fg "#504945" # bg2
|
||||
|
||||
# Define the color in index mode
|
||||
set index-bg "#504945" # bg2
|
||||
set index-fg "#ebdbb2" # fg
|
||||
set index-active-bg "#83a598" # bright:blue
|
||||
set index-active-fg "#504945" # bg2
|
||||
|
||||
set inputbar-bg "#282828" # bg
|
||||
set inputbar-fg "#ebdbb2" # fg
|
||||
|
||||
set statusbar-bg "#504945" # bg2
|
||||
set statusbar-fg "#ebdbb2" # fg
|
||||
|
||||
set highlight-color "#fabd2f" # bright:yellow
|
||||
set highlight-active-color "#fe8019" # bright:orange
|
||||
|
||||
set default-bg "#282828" # bg
|
||||
set default-fg "#ebdbb2" # fg
|
||||
set render-loading true
|
||||
set render-loading-bg "#282828" # bg
|
||||
set render-loading-fg "#ebdbb2" # fg
|
||||
|
||||
# Recolor book content's color
|
||||
set recolor-lightcolor "#282828" # bg
|
||||
set recolor-darkcolor "#ebdbb2" # fg
|
||||
set recolor "true"
|
||||
set recolor-reverse-video "true" # Keep original image colors
|
||||
set recolor-keephue "true"
|
|
@ -1,3 +0,0 @@
|
|||
¯\_(ツ)_/¯ whatever, shrug
|
||||
¯\\_(ツ)_/¯ whatever, shrug
|
||||
✽-(ˆ▽ˆ)/✽ cheerleader, pom-pom
|
|
|
@ -1 +1 @@
|
|||
Subproject commit a47b5088636c3678c7baa22710d10b0c45bc9265
|
||||
Subproject commit edf7ac5c1e61c505201385846361fe3c2b69b31b
|
47
fsh_theme.zsh
Normal file
47
fsh_theme.zsh
Normal file
|
@ -0,0 +1,47 @@
|
|||
zstyle :plugin:fast-syntax-highlighting theme "default"
|
||||
typeset -g FAST_THEME_NAME="default"
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultdefault]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultunknown-token]:=fg=red,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultreserved-word]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultalias]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultsuffix-alias]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultbuiltin]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultfunction]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcommand]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultprecommand]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcommandseparator]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaulthashed-command]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultpath]:=fg=white,underline}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultpath_pathseparator]:=}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultglobbing]:=fg=blue,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaulthistory-expansion]:=fg=blue,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultsingle-hyphen-option]:=fg=cyan}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultdouble-hyphen-option]:=fg=cyan}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultback-quoted-argument]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultsingle-quoted-argument]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultdouble-quoted-argument]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultdollar-quoted-argument]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultback-or-dollar-double-quoted-argument]:=fg=cyan}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultback-dollar-quoted-argument]:=fg=cyan}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultassign]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultredirection]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcomment]:=fg=black,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultvariable]:=fg=113}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultmathvar]:=fg=blue,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultmathnum]:=fg=magenta}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultmatherr]:=fg=red}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultassign-array-bracket]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultfor-loop-variable]:=none}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultfor-loop-number]:=fg=magenta}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultfor-loop-operator]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultfor-loop-separator]:=fg=yellow,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultexec-descriptor]:=fg=yellow,bold}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaulthere-string-tri]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaulthere-string-word]:=bg=blue}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultsecondary]:=}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcase-input]:=fg=green}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcase-parentheses]:=fg=yellow}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcase-condition]:=bg=blue}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultcorrect-subtle]:=bg=blue}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultincorrect-subtle]:=fg=red}
|
||||
: ${FAST_HIGHLIGHT_STYLES[defaultsubtle-bg]:=bg=blue}
|
38
functions
38
functions
|
@ -1,9 +1,7 @@
|
|||
#############
|
||||
################################################################################
|
||||
# Debugging #
|
||||
#############
|
||||
################################################################################
|
||||
|
||||
# Detect if we have GNU coreutils or BSD
|
||||
if date --version > /dev/null 2>&1 ;then
|
||||
# Global counter that can be used to diagnose duplicated calls
|
||||
printf "0" > /dev/shm/debug_counter
|
||||
debug_counter_inc() {
|
||||
|
@ -14,22 +12,21 @@ if date --version > /dev/null 2>&1 ;then
|
|||
debug_counter_print(){
|
||||
printf "%d" "$(cat /dev/shm/debug_counter)"
|
||||
}
|
||||
fi
|
||||
|
||||
###################
|
||||
################################################################################
|
||||
# Update checking #
|
||||
###################
|
||||
################################################################################
|
||||
|
||||
check_rc_update () {
|
||||
# Get rc dir path
|
||||
RC_PATH=$(dirname "$(realpath -- "${(%):-%x}")")
|
||||
RC_PATH=$(dirname "$(readlink -f ${(%):-%x})")
|
||||
|
||||
CUR_DIR="$(pwd)"
|
||||
CUR_DIR=`pwd`
|
||||
cd $RC_PATH
|
||||
|
||||
# In case the network is down, don't lock the terminal
|
||||
GIT_SSH_COMMAND='ssh -oBatchMode=yes' GIT_TERMINAL_PROMPT=0 timeout 6 git fetch > /dev/null 2>&1
|
||||
|
||||
timeout 6 git fetch > /dev/null 2>&1
|
||||
#
|
||||
# Timeout returns 124 on timeout
|
||||
if [ "$?" -ge "124" ]; then
|
||||
echo 'git_network_unreachable' >> /dev/shm/prompt_msg
|
||||
|
@ -37,9 +34,9 @@ check_rc_update () {
|
|||
|
||||
# Check if the repo is clean
|
||||
git_st=$(command git status --porcelain -b 2> /dev/null)
|
||||
if $(echo "$git_st" | grep '^## .*ahead' > /dev/null 2>&1); then
|
||||
if $(echo "$git_st" | grep '^## .*ahead' &> /dev/null); then
|
||||
echo 'git_unpushed' >> /dev/shm/prompt_msg
|
||||
elif $(echo "$git_st" | grep '^## .*behind' > /dev/null 2>&1); then
|
||||
elif $(echo "$git_st" | grep '^## .*behind' &> /dev/null); then
|
||||
echo 'update_rc' >> /dev/shm/prompt_msg
|
||||
fi
|
||||
|
||||
|
@ -48,7 +45,7 @@ check_rc_update () {
|
|||
|
||||
check_sys_update () {
|
||||
case $(lsb_release -i | awk -F ':\t' '/Distributor ID/{print $2}') in
|
||||
Arch|Artix)
|
||||
Arch)
|
||||
nb_maj=$(checkupdates | wc -l);;
|
||||
Debian|Ubuntu)
|
||||
nb_maj=$(aptitude search '~U' | wc -l);;
|
||||
|
@ -60,9 +57,9 @@ check_sys_update () {
|
|||
fi
|
||||
}
|
||||
|
||||
############
|
||||
################################################################################
|
||||
# Commands #
|
||||
############
|
||||
################################################################################
|
||||
|
||||
# Do the update
|
||||
uprc () {
|
||||
|
@ -97,13 +94,4 @@ ssh_kitty () {
|
|||
kitty +kitten ssh "$@"
|
||||
}
|
||||
|
||||
mp4togif() {
|
||||
if [ "$1" = "-h" ] || [ "$#" -ne "2" ]; then
|
||||
>&2 echo "Usage: $0 <input.mp4> <output.gif>"
|
||||
return 1
|
||||
fi
|
||||
|
||||
ffmpeg -i "$1" -vf "fps=10,scale=320:-1:flags=lanczos,split[x][z];[z]palettegen[y];[x][y]paletteuse" -loop 0 "$2"
|
||||
}
|
||||
|
||||
# vim: ft=zsh
|
||||
|
|
23
gitconfig
23
gitconfig
|
@ -1,9 +1,5 @@
|
|||
[init]
|
||||
defaultBranch = dev
|
||||
[core]
|
||||
excludesfile = ~/.gitignore_global
|
||||
[user]
|
||||
useConfigOnly = true
|
||||
[include]
|
||||
path = ~/.git_user
|
||||
[master]
|
||||
|
@ -17,18 +13,13 @@
|
|||
conflictstyle = diff3
|
||||
[alias]
|
||||
# Basics
|
||||
am = commit --amend
|
||||
br = branch
|
||||
c = commit
|
||||
ck = checkout
|
||||
st = status -s
|
||||
cl = clone
|
||||
cm = commit -m
|
||||
cma = commit -am
|
||||
ds = diff --staged
|
||||
g = grep -En
|
||||
gf = grep -Fn --
|
||||
gi = grep -iFn --
|
||||
st = status -s
|
||||
ck = checkout
|
||||
br = branch
|
||||
gr = grep -I
|
||||
|
||||
# Tweak defaults
|
||||
bra = branch -ra
|
||||
|
@ -39,13 +30,9 @@
|
|||
# Pretty branch graph
|
||||
lg = log --oneline --abbrev-commit --all --graph --decorate --color
|
||||
# Graph with additional info (author, date)
|
||||
lga = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset) %C(bold red)%d%C(reset) %C(blue)[%an]%C(reset) %C(green)(%ai)%C(reset) - %C(white)%s%C(reset)' --all
|
||||
lga = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset) %C(bold red)%d%C(reset) %C(blue)[%an]%C(reset) %C(green)(%ar)%C(reset) - %C(white)%s%C(reset)' --all
|
||||
# Same but also list modified files
|
||||
lf = log --oneline --name-status --all --graph --decorate --color
|
||||
|
||||
# pull rebase
|
||||
prb = pull --rebase
|
||||
[status]
|
||||
submoduleSummary = true
|
||||
[pull]
|
||||
rebase = false
|
||||
|
|
37
install.sh
37
install.sh
|
@ -1,43 +1,30 @@
|
|||
#!/bin/sh
|
||||
|
||||
#SCRIPT=$(readlink -f "$0")
|
||||
#RC_PATH=$(dirname "$SCRIPT")
|
||||
RC_PATH=$(cd "$(dirname "$0")"; pwd)
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||
HOST=$(hostname)
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
||||
|
||||
# List of the config files to install
|
||||
FILES="vimrc zshrc gitconfig vim gitignore_global git_user ctags.d mailcap xinitrc"
|
||||
CONF_DIR="config"
|
||||
DATA_DIR="data"
|
||||
FILES="vimrc zshrc gitconfig vim gitignore_global git_user ctags.d"
|
||||
|
||||
if [ ! -e "$HOME/.git_user" ]; then
|
||||
cp "$RC_PATH/git_user.def" "$RC_PATH/git_user"
|
||||
sed -i -e "s/{username}/$USER/" "$RC_PATH/git_user"
|
||||
sed -i -e "s/{email}/$USER@$HOST/" "$RC_PATH/git_user"
|
||||
cp "$SCRIPTPATH/git_user.def" "$SCRIPTPATH/git_user"
|
||||
sed -i -e "s/{username}/$USER/" "$SCRIPTPATH/git_user"
|
||||
sed -i -e "s/{email}/$USER@$HOST/" "$SCRIPTPATH/git_user"
|
||||
fi
|
||||
|
||||
# Init or update submodules
|
||||
cd "$RC_PATH" || exit
|
||||
cd "$SCRIPTPATH"
|
||||
git submodule update --init --recursive
|
||||
cd - > /dev/null || exit
|
||||
cd -
|
||||
|
||||
# Setup fast-syntax-highlighting theme customization
|
||||
cp "$SCRIPTPATH/fsh_theme.zsh" "$SCRIPTPATH/fast-syntax-highlighting/current_theme.zsh"
|
||||
|
||||
# Create symbolic links in the user's home dir
|
||||
for file in $FILES
|
||||
do
|
||||
if [ ! -e "$HOME/.${file}" ]; then
|
||||
ln -s "${RC_PATH}/${file}" "$HOME/.${file}"
|
||||
# Only warn if an actual file exist, else we suppose it is from a previous install
|
||||
elif [ ! -L "$HOME/.$file" ]; then
|
||||
>&2 echo "File $HOME/.$file exists. Keeping old version."
|
||||
ln -s "${SCRIPTPATH}/${file}" "$HOME/.${file}"
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p "$XDG_CONFIG_HOME"
|
||||
mkdir -p "$XDG_DATA_HOME"
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2156
|
||||
find "$RC_PATH/$CONF_DIR" -mindepth 1 -maxdepth 1 -type d \
|
||||
-exec sh -c 'ln -s "$2" "$1" 2> /dev/null || ( link="$1/$(basename "$2")"; test -L "$link" || >&2 echo "Folder $link exists. Keeping old version.")' _ "$XDG_CONFIG_HOME" '{}' \;
|
||||
find "$RC_PATH/$DATA_DIR" -mindepth 1 -maxdepth 1 -type d \
|
||||
-exec sh -c 'ln -s "$2" "$1" 2> /dev/null || ( link="$1/$(basename "$2")"; test -L "$link" || >&2 echo "Folder $link exists. Keeping old version.")' _ "$XDG_DATA_HOME" '{}' \;
|
||||
|
|
24
lib/utils.sh
24
lib/utils.sh
|
@ -1,24 +0,0 @@
|
|||
die() {
|
||||
# Use notify-send to send errors when not in a terminal
|
||||
# [ -t 0 ] only works outside of pipes
|
||||
[ -t 0 ] || notify-send "$@" && >&2 echo "$@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Output error to stderr and to graphical notification
|
||||
notify_err() {
|
||||
tee /dev/fd/2 | xargs -r -n1 -d "\n" notify-send
|
||||
}
|
||||
|
||||
assert_exists() {
|
||||
for c in $@; do
|
||||
which "$c" > /dev/null 2>&1 || die "$c doesn't appear to be installed"
|
||||
done
|
||||
}
|
||||
|
||||
check_exists() {
|
||||
for c in $@; do
|
||||
which "$c" > /dev/null 2>&1 || return 1
|
||||
done
|
||||
}
|
||||
|
40
mailcap
40
mailcap
|
@ -1,40 +0,0 @@
|
|||
text/html; unshare -n -r w3m -I %{charset} -T text/html; copiousoutput;
|
||||
image/*; mutt_bgrun /usr/bin/feh -. %s; test=test -n "$DISPLAY"
|
||||
application/pdf; mutt_bgrun /usr/bin/zathura %s; test=test -n "$DISPLAY"
|
||||
|
||||
# Fichiers LibreOffice, Word, Excel et PowerPoint
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.template; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.template; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
|
||||
application/msword; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.msword; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
|
||||
application/excel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/msexcel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/x-excel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/x-msexcel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/vnd.ms-excel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/ms-Excel; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
|
||||
application/vnd.ms-powerpoint; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/x-mspowerpoint; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
application/ppt; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
|
||||
application/rtf; mutt_bgrun libreoffice --nologo '%s'; test=test -n "$DISPLAY"
|
||||
|
||||
# # MS documents to txt
|
||||
# application/msword; tika -t %s | less;
|
||||
# application/vnd.msword; tika -t %s | less;
|
||||
# application/excel; tika %s | less;
|
||||
# application/msexcel; tika %s | less;
|
||||
# application/x-excel; tika %s | less;
|
||||
# application/x-msexcel; tika %s | less;
|
||||
# application/vnd.ms-excel; tika %s | less;
|
||||
# application/ms-Excel; tika %s | less;
|
||||
# application/vnd.ms-powerpoint; tika %s | w3m -dump -T text/html | less;
|
||||
# application/x-mspowerpoint; tika %s | w3m -dump -T text/html | less;
|
||||
# application/ppt; tika %s | w3m -dump -T text/html | less;
|
||||
# application/rtf; tika %s | w3m -dump -T text/html | less;
|
48
prompt
48
prompt
|
@ -6,29 +6,27 @@
|
|||
# and changes the color of the username
|
||||
color_username () {
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo "%{$fg_no_bold[red]%}%n"
|
||||
echo "%{$fg_bold[red]%}%n"
|
||||
else
|
||||
echo "%{$fg_no_bold[blue]%}%n"
|
||||
echo "%{$fg_bold[green]%}%n"
|
||||
fi
|
||||
}
|
||||
|
||||
color_prompt_char () {
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo "%{$fg_no_bold[red]%G#$reset_color%}"
|
||||
echo "%{$fg_no_bold[red]%}#%{$reset_color%}"
|
||||
else
|
||||
echo "%{$fg_no_bold[blue]%G\$$reset_color%}"
|
||||
echo "%{$fg_no_bold[green]%}$%{$reset_color%}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Host coloring, personalise to your own taste
|
||||
# Host coloring, specific to Rezometz
|
||||
color_host () {
|
||||
local couleur_hote=""
|
||||
case $HOST in
|
||||
TwelveYearsAndStillGoingStrong|lharkinateur|BecauseROSThatSWhy|lharktop|blieuxor)
|
||||
couleur_hote=green;;
|
||||
pixie)
|
||||
couleur_hote=cyan;;
|
||||
chimay|orval|serenity)
|
||||
chimay|orval)
|
||||
couleur_hote=magenta;;
|
||||
babel|taima|era|vidar|okami|athena)
|
||||
couleur_hote=red;;
|
||||
|
@ -45,7 +43,7 @@ last_status () {
|
|||
}
|
||||
|
||||
virtual_env() {
|
||||
local prefix="%{$fg_bold[green]%}(%{%b%}"
|
||||
local prefix="%{$fg_bold[green]%}(%{%b$fg[green]%}"
|
||||
local suffix="%{$reset_color$fg_bold[green]%})%{$reset_color%}"
|
||||
[[ -n ${VIRTUAL_ENV} ]] || return
|
||||
printf '%s' "${prefix}${VIRTUAL_ENV:t}${suffix}"
|
||||
|
@ -54,9 +52,9 @@ virtual_env() {
|
|||
prompt_chars() {
|
||||
local git_char=''
|
||||
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
|
||||
local git_char="%{$fg_no_bold[blue]%G±$reset_color%}"
|
||||
local git_char="%{$fg_no_bold[blue]%}±%{$reset_color%}"
|
||||
fi
|
||||
printf '%s' "$(last_status) $(color_prompt_char)"
|
||||
printf '%s' "${_GIT_CHAR}$(last_status) $(color_prompt_char)"
|
||||
}
|
||||
|
||||
charge_batterie() {
|
||||
|
@ -118,8 +116,8 @@ prompt_msg () {
|
|||
# Display vim mode while using zle line editing
|
||||
# https://dougblack.io/words/zsh-vi-mode.html
|
||||
vim_mode () {
|
||||
VIM_NORMAL="%{$fg_bold[red]%}[N]"
|
||||
VIM_INSERT="%{$fg_bold[blue]%}[I]"
|
||||
VIM_NORMAL="%{$fg_bold[red]%}[% N]% "
|
||||
VIM_INSERT="%{$fg_bold[green]%}[% I]% "
|
||||
VIM_PROMPT="${${KEYMAP/vicmd/$VIM_NORMAL}/(main|viins)/$VIM_INSERT}"
|
||||
echo "$VIM_PROMPT%{$reset_color%}"
|
||||
}
|
||||
|
@ -129,24 +127,24 @@ vim_mode () {
|
|||
# %S - path in the repository
|
||||
# %a - action (e.g. rebase-i)
|
||||
# %b - branchname
|
||||
# %c - stagedstr (see below)
|
||||
# %c - stangedstr (see below)
|
||||
# %i - The current revision number or identifier.
|
||||
# %m - Misc. In case of Git, show information about stashes
|
||||
# %r - The name of the root directory of the repository
|
||||
# %s - The current version control system, like git or svn
|
||||
# %u - unstagedstr (see below)
|
||||
fmt_branch="%b%{$reset_color%} %u%c%m%{$reset_color%}" # e.g. master¹²
|
||||
fmt_action="%{$fg[red]%}%a%{$reset_color%}" # e.g. (rebase-i)
|
||||
fmt_pre="%{$fg_bold[blue]%G[$reset_color$fg[blue]%}"
|
||||
fmt_post="%{$fg_bold[blue]%G]$reset_color%}"
|
||||
fmt_action="(%{$fg[red]%}%a%{$reset_color%})" # e.g. (rebase-i)
|
||||
fmt_pre="%{$fg_bold[blue]%}[%{$reset_color%}%{$fg[blue]%}"
|
||||
fmt_post="%{$fg_bold[blue]%}]%{$reset_color%}"
|
||||
|
||||
# check-for-changes can be really slow.
|
||||
# you should disable it, if you work with large repositories
|
||||
zstyle ':vcs_info:*' enable git cvs svn
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:*' unstagedstr "%{$fg_no_bold[yellow]%G●%}"
|
||||
zstyle ':vcs_info:*' stagedstr "%{$fg_no_bold[green]%G●%}"
|
||||
zstyle ':vcs_info:*' actionformats "${fmt_pre}${fmt_branch}|${fmt_action}${fmt_post}"
|
||||
zstyle ':vcs_info:*' unstagedstr "%{$fg_no_bold[yellow]%}●"
|
||||
zstyle ':vcs_info:*' stagedstr "%{$fg_no_bold[green]%}●"
|
||||
zstyle ':vcs_info:*' actionformats "${fmt_pre}${fmt_branch}${fmt_action}${fmt_post} "
|
||||
zstyle ':vcs_info:*' formats "${fmt_pre}${fmt_branch}${fmt_post} "
|
||||
zstyle ':vcs_info:*' nvcsformats ""
|
||||
zstyle ':vcs_info:*+*:*' debug false # Set to true to see which hooks are being run
|
||||
|
@ -161,7 +159,7 @@ zstyle ':vcs_info:git*+set-message:*' hooks git-st git-untracked
|
|||
# If instead you want to show the marker only if there are untracked
|
||||
# files in $PWD, use:
|
||||
#[[ -n $(git ls-files --others --exclude-standard) ]] ; then
|
||||
hook_com[unstaged]="%{$fg_no_bold[red]%G●$reset_color%}"$hook_com[unstaged]
|
||||
hook_com[unstaged]="%{$fg_no_bold[red]%}●%{$reset_color%}"$hook_com[unstaged]
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -173,12 +171,12 @@ zstyle ':vcs_info:git*+set-message:*' hooks git-st git-untracked
|
|||
# for git prior to 1.7
|
||||
# ahead=$(git rev-list origin/${hook_com[branch]}..HEAD | wc -l)
|
||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||
(( $ahead )) && gitstatus+="%{$fg_no_bold[cyan]%G▴$reset_color%}"
|
||||
(( $ahead )) && gitstatus+="%{$fg_no_bold[cyan]%}▴%{$reset_color%}"
|
||||
|
||||
# for git prior to 1.7
|
||||
# behind=$(git rev-list HEAD..origin/${hook_com[branch]} | wc -l)
|
||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||
(( $behind )) && gitstatus+="%{$fg_no_bold[magenta]%G▾$reset_color%}"
|
||||
(( $behind )) && gitstatus+="%{$fg_no_bold[magenta]%}▾%{$reset_color%}"
|
||||
|
||||
hook_com[misc]+=${gitstatus}
|
||||
}
|
||||
|
@ -209,13 +207,13 @@ prompt_create zle-line-init zle-keymap-select () {
|
|||
PROMPT+="%{$fg[red]%} $(prompt_msg)"
|
||||
|
||||
# Change the background for the whole line and line feed
|
||||
PROMPT+=$'\n'
|
||||
PROMPT+="%{$fg_bold[green]%}%E"$'\n'
|
||||
|
||||
# Prompt characters for virtualenv, git and zsh
|
||||
PROMPT+="$(virtual_env)$(prompt_chars) %{$reset_color%}"
|
||||
|
||||
# Right prompt with current repo informations
|
||||
RPROMPT="${vcs_info_msg_0_}%E"
|
||||
RPROMPT="${vcs_info_msg_0_}%E%{$reset_color%}"
|
||||
|
||||
zle reset-prompt
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
detectbepo: detectbepo.c
|
||||
${CC} -I/usr/include $^ -lX11 -lxkbfile -o $@
|
||||
cp $@ ../bin/
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -f detectbepo
|
|
@ -1,53 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <X11/XKBlib.h>
|
||||
#include <X11/extensions/XKBrules.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
Display *dpy = XOpenDisplay(NULL);
|
||||
|
||||
if (dpy == NULL) {
|
||||
fprintf(stderr, "Cannot open display\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
XkbStateRec state;
|
||||
XkbGetState(dpy, XkbUseCoreKbd, &state);
|
||||
|
||||
XkbDescPtr desc = XkbGetKeyboard(dpy, XkbAllComponentsMask, XkbUseCoreKbd);
|
||||
char *group = XGetAtomName(dpy, desc->names->groups[state.group]);
|
||||
//printf("Full name: %s\n", group);
|
||||
|
||||
XkbRF_VarDefsRec vd;
|
||||
XkbRF_GetNamesProp(dpy, NULL, &vd);
|
||||
|
||||
char *layout = strtok(vd.layout, ",");
|
||||
|
||||
for (int i = 0; i < state.group; i++) {
|
||||
layout = strtok(NULL, ",");
|
||||
if (layout == NULL) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
//printf("Layout name: %s\n", tok);
|
||||
if (strcmp(layout, "fr"))
|
||||
return 1;
|
||||
|
||||
char *variant = strtok(vd.variant, ",");
|
||||
|
||||
for (int i = 0; i < state.group; i++) {
|
||||
variant = strtok(NULL, ",");
|
||||
if (variant == NULL) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
//printf("Variant name: %s\n", variant);
|
||||
if (strcmp(variant, "bepo"))
|
||||
return 1;
|
||||
|
||||
printf("Bépo détecté\n");
|
||||
return 0;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 858b3e36549e0415623218caa6f0a8d7a1f5edab
|
|
@ -1,2 +0,0 @@
|
|||
" Additional shader extensions
|
||||
autocmd! BufNewFile,BufRead *.fsh,*.vsh set filetype=glsl
|
|
@ -4,4 +4,3 @@ setlocal shiftwidth=4
|
|||
setlocal expandtab
|
||||
setlocal autoindent
|
||||
setlocal fileformat=unix
|
||||
setlocal colorcolumn=80
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
setlocal tw=79
|
||||
setlocal tabstop=4
|
||||
setlocal softtabstop=4
|
||||
setlocal shiftwidth=4
|
||||
setlocal expandtab
|
||||
setlocal autoindent
|
|
@ -1,41 +0,0 @@
|
|||
let s:base00 = [ '#181818', 0 ] " black
|
||||
let s:base01 = [ '#282828', 18 ]
|
||||
let s:base02 = [ '#383838', 19 ]
|
||||
let s:base03 = [ '#585858', 8 ]
|
||||
let s:base04 = [ '#b8b8b8', 20 ]
|
||||
let s:base05 = [ '#d8d8d8', 7 ]
|
||||
let s:base06 = [ '#e8e8e8', 21 ]
|
||||
let s:base07 = [ '#f8f8f8', 15 ] " white
|
||||
|
||||
let s:base08 = [ '#ab4642', 1 ] " red
|
||||
let s:base09 = [ '#dc9656', 16 ] " orange
|
||||
let s:base0A = [ '#f7ca88', 3 ] " yellow
|
||||
let s:base0B = [ '#a1b56c', 2 ] " green
|
||||
let s:base0C = [ '#86c1b9', 6 ] " teal
|
||||
let s:base0D = [ '#7cafc2', 4 ] " blue
|
||||
let s:base0E = [ '#ba8baf', 5 ] " pink
|
||||
let s:base0F = [ '#a16946', 17 ] " brown
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
let s:p.normal.left = [ [ s:base00, s:base0D ], [ s:base05, s:base02 ] ]
|
||||
let s:p.insert.left = [ [ s:base01, s:base0B ], [ s:base05, s:base02 ] ]
|
||||
let s:p.visual.left = [ [ s:base00, s:base09 ], [ s:base05, s:base02 ] ]
|
||||
let s:p.replace.left = [ [ s:base00, s:base08 ], [ s:base05, s:base02 ] ]
|
||||
let s:p.inactive.left = [ [ s:base02, s:base00 ] ]
|
||||
|
||||
let s:p.normal.middle = [ [ s:base07, s:base01 ] ]
|
||||
let s:p.inactive.middle = [ [ s:base01, s:base00 ] ]
|
||||
|
||||
let s:p.normal.right = [ [ s:base01, s:base03 ], [ s:base06, s:base02 ] ]
|
||||
let s:p.inactive.right = [ [ s:base01, s:base00 ] ]
|
||||
|
||||
let s:p.normal.error = [ [ s:base07, s:base08 ] ]
|
||||
let s:p.normal.warning = [ [ s:base07, s:base09 ] ]
|
||||
|
||||
let s:p.tabline.left = [ [ s:base05, s:base02 ] ]
|
||||
let s:p.tabline.middle = [ [ s:base05, s:base01 ] ]
|
||||
let s:p.tabline.right = [ [ s:base05, s:base02 ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:base02, s:base0A ] ]
|
||||
|
||||
let g:lightline#colorscheme#base16_default_dark#palette = lightline#colorscheme#flatten(s:p)
|
|
@ -1,41 +0,0 @@
|
|||
let s:base00 = [ '#f8f8f8', 0 ] " black
|
||||
let s:base01 = [ '#e8e8e8', 18 ]
|
||||
let s:base02 = [ '#d8d8d8', 19 ]
|
||||
let s:base03 = [ '#b8b8b8', 8 ]
|
||||
let s:base04 = [ '#585858', 20 ]
|
||||
let s:base05 = [ '#383838', 7 ]
|
||||
let s:base06 = [ '#282828', 21 ]
|
||||
let s:base07 = [ '#181818', 15 ] " white
|
||||
|
||||
let s:base08 = [ '#ab4642', 1 ] " red
|
||||
let s:base09 = [ '#dc9656', 16 ] " orange
|
||||
let s:base0A = [ '#f7ca88', 3 ] " yellow
|
||||
let s:base0B = [ '#a1b56c', 2 ] " green
|
||||
let s:base0C = [ '#86c1b9', 6 ] " teal
|
||||
let s:base0D = [ '#7cafc2', 4 ] " blue
|
||||
let s:base0E = [ '#ba8baf', 5 ] " pink
|
||||
let s:base0F = [ '#a16946', 17 ] " brown
|
||||
|
||||
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
|
||||
|
||||
let s:p.normal.left = [ [ s:base00, s:base0D ], [ s:base05, s:base02 ] ]
|
||||
let s:p.insert.left = [ [ s:base01, s:base0B ], [ s:base05, s:base02 ] ]
|
||||
let s:p.visual.left = [ [ s:base00, s:base09 ], [ s:base05, s:base02 ] ]
|
||||
let s:p.replace.left = [ [ s:base00, s:base08 ], [ s:base05, s:base02 ] ]
|
||||
let s:p.inactive.left = [ [ s:base02, s:base00 ] ]
|
||||
|
||||
let s:p.normal.middle = [ [ s:base07, s:base01 ] ]
|
||||
let s:p.inactive.middle = [ [ s:base01, s:base00 ] ]
|
||||
|
||||
let s:p.normal.right = [ [ s:base01, s:base03 ], [ s:base06, s:base02 ] ]
|
||||
let s:p.inactive.right = [ [ s:base01, s:base00 ] ]
|
||||
|
||||
let s:p.normal.error = [ [ s:base07, s:base08 ] ]
|
||||
let s:p.normal.warning = [ [ s:base07, s:base09 ] ]
|
||||
|
||||
let s:p.tabline.left = [ [ s:base05, s:base02 ] ]
|
||||
let s:p.tabline.middle = [ [ s:base05, s:base01 ] ]
|
||||
let s:p.tabline.right = [ [ s:base05, s:base02 ] ]
|
||||
let s:p.tabline.tabsel = [ [ s:base02, s:base0A ] ]
|
||||
|
||||
let g:lightline#colorscheme#base16_default_light#palette = lightline#colorscheme#flatten(s:p)
|
83
vim/bepo.vim
83
vim/bepo.vim
|
@ -1,83 +0,0 @@
|
|||
" From https://bepo.fr/wiki/Vim
|
||||
"
|
||||
" {W} -> [É]
|
||||
" ——————————
|
||||
" On remappe W sur É :
|
||||
noremap é w
|
||||
noremap É W
|
||||
" Corollaire: on remplace les text objects aw, aW, iw et iW
|
||||
" pour effacer/remplacer un mot quand on n’est pas au début (daé / laé).
|
||||
onoremap aé aw
|
||||
onoremap aÉ aW
|
||||
onoremap ié iw
|
||||
onoremap iÉ iW
|
||||
" Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W :
|
||||
noremap w <C-w>
|
||||
noremap W <C-w><C-w>
|
||||
|
||||
" [HJKL] -> {CTSR}
|
||||
" ————————————————
|
||||
" {cr} = « gauche / droite »
|
||||
noremap c h
|
||||
noremap r l
|
||||
" {ts} = « haut / bas »
|
||||
map t j
|
||||
map s k
|
||||
" {CR} = « haut / bas de l'écran »
|
||||
noremap C H
|
||||
noremap R L
|
||||
" {TS} = « joindre / aide »
|
||||
noremap T J
|
||||
noremap S K
|
||||
" Corollaire : repli suivant / précédent
|
||||
noremap zs zj
|
||||
noremap zt zk
|
||||
|
||||
" {HJKL} <- [CTSR]
|
||||
" ————————————————
|
||||
" {J} = « Jusqu'à » (j = suivant, J = précédant)
|
||||
noremap j t
|
||||
noremap J T
|
||||
" {L} = « Change » (l = attend un mvt, L = jusqu'à la fin de ligne)
|
||||
noremap l c
|
||||
noremap L C
|
||||
" {H} = « Remplace » (h = un caractère slt, H = reste en « Remplace »)
|
||||
noremap h r
|
||||
noremap H R
|
||||
" {K} = « Substitue » (k = caractère, K = ligne)
|
||||
noremap k s
|
||||
noremap K S
|
||||
" Corollaire : correction orthographique
|
||||
noremap ]k ]s
|
||||
noremap [k [s
|
||||
|
||||
" Désambiguation de {g}
|
||||
" —————————————————————
|
||||
" ligne écran précédente / suivante (à l'intérieur d'une phrase)
|
||||
noremap gs gk
|
||||
noremap gt gj
|
||||
" onglet précédent / suivant
|
||||
noremap gb gT
|
||||
noremap gé gt
|
||||
" optionnel : {gB} / {gÉ} pour aller au premier / dernier onglet
|
||||
noremap gB :exe "silent! tabfirst"<CR>
|
||||
noremap gÉ :exe "silent! tablast"<CR>
|
||||
" optionnel : {g"} pour aller au début de la ligne écran
|
||||
noremap g" g0
|
||||
|
||||
" <> en direct
|
||||
" ————————————
|
||||
noremap « <
|
||||
noremap » >
|
||||
|
||||
" Remaper la gestion des fenêtres
|
||||
" ———————————————————————————————
|
||||
nmap <C-t> <C-j>
|
||||
nmap <C-s> <C-k>
|
||||
nmap <C-c> <C-h>
|
||||
nmap <C-r> <C-l>
|
||||
noremap wd <C-w>c
|
||||
noremap wo <C-w>s
|
||||
noremap wp <C-w>o
|
||||
noremap w<SPACE> :split<CR>
|
||||
noremap w<CR> :vsplit<CR>
|
|
@ -1,413 +0,0 @@
|
|||
" vi:syntax=vim
|
||||
|
||||
" base16-vim (https://github.com/chriskempson/base16-vim)
|
||||
" by Chris Kempson (http://chriskempson.com)
|
||||
" Default Dark scheme by Chris Kempson (http://chriskempson.com)
|
||||
|
||||
" This enables the coresponding base16-shell script to run so that
|
||||
" :colorscheme works in terminals supported by base16-shell scripts
|
||||
" User must set this variable in .vimrc
|
||||
" let g:base16_shell_path=base16-builder/output/shell/
|
||||
if !has('gui_running')
|
||||
if exists("g:base16_shell_path")
|
||||
execute "silent !/bin/sh ".g:base16_shell_path."/base16-default-dark.sh"
|
||||
endif
|
||||
endif
|
||||
|
||||
" GUI color definitions
|
||||
let s:gui00 = "181818"
|
||||
let g:base16_gui00 = "181818"
|
||||
let s:gui01 = "282828"
|
||||
let g:base16_gui01 = "282828"
|
||||
let s:gui02 = "383838"
|
||||
let g:base16_gui02 = "383838"
|
||||
let s:gui03 = "585858"
|
||||
let g:base16_gui03 = "585858"
|
||||
let s:gui04 = "b8b8b8"
|
||||
let g:base16_gui04 = "b8b8b8"
|
||||
let s:gui05 = "d8d8d8"
|
||||
let g:base16_gui05 = "d8d8d8"
|
||||
let s:gui06 = "e8e8e8"
|
||||
let g:base16_gui06 = "e8e8e8"
|
||||
let s:gui07 = "f8f8f8"
|
||||
let g:base16_gui07 = "f8f8f8"
|
||||
let s:gui08 = "ab4642"
|
||||
let g:base16_gui08 = "ab4642"
|
||||
let s:gui09 = "dc9656"
|
||||
let g:base16_gui09 = "dc9656"
|
||||
let s:gui0A = "f7ca88"
|
||||
let g:base16_gui0A = "f7ca88"
|
||||
let s:gui0B = "a1b56c"
|
||||
let g:base16_gui0B = "a1b56c"
|
||||
let s:gui0C = "86c1b9"
|
||||
let g:base16_gui0C = "86c1b9"
|
||||
let s:gui0D = "7cafc2"
|
||||
let g:base16_gui0D = "7cafc2"
|
||||
let s:gui0E = "ba8baf"
|
||||
let g:base16_gui0E = "ba8baf"
|
||||
let s:gui0F = "a16946"
|
||||
let g:base16_gui0F = "a16946"
|
||||
|
||||
" Terminal color definitions
|
||||
let s:cterm00 = "00"
|
||||
let g:base16_cterm00 = "00"
|
||||
let s:cterm03 = "08"
|
||||
let g:base16_cterm03 = "08"
|
||||
let s:cterm05 = "07"
|
||||
let g:base16_cterm05 = "07"
|
||||
let s:cterm07 = "15"
|
||||
let g:base16_cterm07 = "15"
|
||||
let s:cterm08 = "01"
|
||||
let g:base16_cterm08 = "01"
|
||||
let s:cterm0A = "03"
|
||||
let g:base16_cterm0A = "03"
|
||||
let s:cterm0B = "02"
|
||||
let g:base16_cterm0B = "02"
|
||||
let s:cterm0C = "06"
|
||||
let g:base16_cterm0C = "06"
|
||||
let s:cterm0D = "04"
|
||||
let g:base16_cterm0D = "04"
|
||||
let s:cterm0E = "05"
|
||||
let g:base16_cterm0E = "05"
|
||||
if exists('base16colorspace') && base16colorspace == "256"
|
||||
let s:cterm01 = "18"
|
||||
let g:base16_cterm01 = "18"
|
||||
let s:cterm02 = "19"
|
||||
let g:base16_cterm02 = "19"
|
||||
let s:cterm04 = "20"
|
||||
let g:base16_cterm04 = "20"
|
||||
let s:cterm06 = "21"
|
||||
let g:base16_cterm06 = "21"
|
||||
let s:cterm09 = "16"
|
||||
let g:base16_cterm09 = "16"
|
||||
let s:cterm0F = "17"
|
||||
let g:base16_cterm0F = "17"
|
||||
else
|
||||
let s:cterm01 = "10"
|
||||
let g:base16_cterm01 = "10"
|
||||
let s:cterm02 = "11"
|
||||
let g:base16_cterm02 = "11"
|
||||
let s:cterm04 = "12"
|
||||
let g:base16_cterm04 = "12"
|
||||
let s:cterm06 = "13"
|
||||
let g:base16_cterm06 = "13"
|
||||
let s:cterm09 = "09"
|
||||
let g:base16_cterm09 = "09"
|
||||
let s:cterm0F = "14"
|
||||
let g:base16_cterm0F = "14"
|
||||
endif
|
||||
|
||||
" Neovim terminal colours
|
||||
if has("nvim")
|
||||
let g:terminal_color_0 = "#181818"
|
||||
let g:terminal_color_1 = "#ab4642"
|
||||
let g:terminal_color_2 = "#a1b56c"
|
||||
let g:terminal_color_3 = "#f7ca88"
|
||||
let g:terminal_color_4 = "#7cafc2"
|
||||
let g:terminal_color_5 = "#ba8baf"
|
||||
let g:terminal_color_6 = "#86c1b9"
|
||||
let g:terminal_color_7 = "#d8d8d8"
|
||||
let g:terminal_color_8 = "#585858"
|
||||
let g:terminal_color_9 = "#ab4642"
|
||||
let g:terminal_color_10 = "#a1b56c"
|
||||
let g:terminal_color_11 = "#f7ca88"
|
||||
let g:terminal_color_12 = "#7cafc2"
|
||||
let g:terminal_color_13 = "#ba8baf"
|
||||
let g:terminal_color_14 = "#86c1b9"
|
||||
let g:terminal_color_15 = "#f8f8f8"
|
||||
let g:terminal_color_background = g:terminal_color_0
|
||||
let g:terminal_color_foreground = g:terminal_color_5
|
||||
if &background == "light"
|
||||
let g:terminal_color_background = g:terminal_color_7
|
||||
let g:terminal_color_foreground = g:terminal_color_2
|
||||
endif
|
||||
elseif has('terminal')
|
||||
let g:terminal_ansi_colors = [
|
||||
\ "#181818",
|
||||
\ "#ab4642",
|
||||
\ "#a1b56c",
|
||||
\ "#f7ca88",
|
||||
\ "#7cafc2",
|
||||
\ "#ba8baf",
|
||||
\ "#86c1b9",
|
||||
\ "#d8d8d8",
|
||||
\ "#585858",
|
||||
\ "#ab4642",
|
||||
\ "#a1b56c",
|
||||
\ "#f7ca88",
|
||||
\ "#7cafc2",
|
||||
\ "#ba8baf",
|
||||
\ "#86c1b9",
|
||||
\ "#f8f8f8",
|
||||
\ ]
|
||||
endif
|
||||
|
||||
" Theme setup
|
||||
hi clear
|
||||
syntax reset
|
||||
let g:colors_name = "base16-default-dark"
|
||||
|
||||
" Highlighting function
|
||||
" Optional variables are attributes and guisp
|
||||
function! g:Base16hi(group, guifg, guibg, ctermfg, ctermbg, ...)
|
||||
let l:attr = get(a:, 1, "")
|
||||
let l:guisp = get(a:, 2, "")
|
||||
|
||||
if a:guifg != ""
|
||||
exec "hi " . a:group . " guifg=#" . a:guifg
|
||||
endif
|
||||
if a:guibg != ""
|
||||
exec "hi " . a:group . " guibg=#" . a:guibg
|
||||
endif
|
||||
if a:ctermfg != ""
|
||||
exec "hi " . a:group . " ctermfg=" . a:ctermfg
|
||||
endif
|
||||
if a:ctermbg != ""
|
||||
exec "hi " . a:group . " ctermbg=" . a:ctermbg
|
||||
endif
|
||||
if l:attr != ""
|
||||
exec "hi " . a:group . " gui=" . l:attr . " cterm=" . l:attr
|
||||
endif
|
||||
if l:guisp != ""
|
||||
exec "hi " . a:group . " guisp=#" . l:guisp
|
||||
endif
|
||||
endfunction
|
||||
|
||||
|
||||
fun <sid>hi(group, guifg, guibg, ctermfg, ctermbg, attr, guisp)
|
||||
call g:Base16hi(a:group, a:guifg, a:guibg, a:ctermfg, a:ctermbg, a:attr, a:guisp)
|
||||
endfun
|
||||
|
||||
" Vim editor colors
|
||||
call <sid>hi("Normal", s:gui05, s:gui00, s:cterm05, s:cterm00, "", "")
|
||||
call <sid>hi("Bold", "", "", "", "", "bold", "")
|
||||
call <sid>hi("Debug", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Directory", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Error", s:gui00, s:gui08, s:cterm00, s:cterm08, "", "")
|
||||
call <sid>hi("ErrorMsg", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
call <sid>hi("Exception", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("FoldColumn", s:gui0C, s:gui01, s:cterm0C, s:cterm01, "", "")
|
||||
call <sid>hi("Folded", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("IncSearch", s:gui01, s:gui09, s:cterm01, s:cterm09, "none", "")
|
||||
call <sid>hi("Italic", "", "", "", "", "none", "")
|
||||
call <sid>hi("Macro", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("MatchParen", "", s:gui03, "", s:cterm03, "", "")
|
||||
call <sid>hi("ModeMsg", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("MoreMsg", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("Question", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Search", s:gui01, s:gui0A, s:cterm01, s:cterm0A, "", "")
|
||||
call <sid>hi("Substitute", s:gui01, s:gui0A, s:cterm01, s:cterm0A, "none", "")
|
||||
call <sid>hi("SpecialKey", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("TooLong", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Underlined", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Visual", "", s:gui02, "", s:cterm02, "", "")
|
||||
call <sid>hi("VisualNOS", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("WarningMsg", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("WildMenu", s:gui08, s:gui0A, s:cterm08, "", "", "")
|
||||
call <sid>hi("Title", s:gui0D, "", s:cterm0D, "", "none", "")
|
||||
call <sid>hi("Conceal", s:gui0D, s:gui00, s:cterm0D, s:cterm00, "", "")
|
||||
call <sid>hi("Cursor", s:gui00, s:gui05, s:cterm00, s:cterm05, "", "")
|
||||
call <sid>hi("NonText", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("LineNr", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("SignColumn", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("StatusLine", s:gui04, s:gui02, s:cterm04, s:cterm02, "none", "")
|
||||
call <sid>hi("StatusLineNC", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("VertSplit", s:gui02, s:gui02, s:cterm02, s:cterm02, "none", "")
|
||||
call <sid>hi("ColorColumn", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorColumn", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorLine", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorLineNr", s:gui04, s:gui01, s:cterm04, s:cterm01, "", "")
|
||||
call <sid>hi("QuickFixLine", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("PMenu", s:gui05, s:gui01, s:cterm05, s:cterm01, "none", "")
|
||||
call <sid>hi("PMenuSel", s:gui01, s:gui05, s:cterm01, s:cterm05, "", "")
|
||||
call <sid>hi("TabLine", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("TabLineFill", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("TabLineSel", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "none", "")
|
||||
|
||||
" Standard syntax highlighting
|
||||
call <sid>hi("Boolean", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Character", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Comment", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("Conditional", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Constant", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Define", s:gui0E, "", s:cterm0E, "", "none", "")
|
||||
call <sid>hi("Delimiter", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("Float", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Function", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Identifier", s:gui08, "", s:cterm08, "", "none", "")
|
||||
call <sid>hi("Include", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Keyword", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Label", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Number", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Operator", s:gui05, "", s:cterm05, "", "none", "")
|
||||
call <sid>hi("PreProc", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Repeat", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Special", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("SpecialChar", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("Statement", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("StorageClass", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("String", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("Structure", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Tag", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Todo", s:gui0A, s:gui01, s:cterm0A, s:cterm01, "", "")
|
||||
call <sid>hi("Type", s:gui0A, "", s:cterm0A, "", "none", "")
|
||||
call <sid>hi("Typedef", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
|
||||
" C highlighting
|
||||
call <sid>hi("cOperator", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("cPreCondit", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
|
||||
" C# highlighting
|
||||
call <sid>hi("csClass", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("csAttribute", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("csModifier", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("csType", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("csUnspecifiedStatement", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("csContextualStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("csNewDecleration", s:gui08, "", s:cterm08, "", "", "")
|
||||
|
||||
" CSS highlighting
|
||||
call <sid>hi("cssBraces", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("cssClassName", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("cssColor", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
|
||||
" Diff highlighting
|
||||
call <sid>hi("DiffAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("DiffChange", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("DiffDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
call <sid>hi("DiffText", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("DiffAdded", s:gui0B, s:gui00, s:cterm0B, s:cterm00, "", "")
|
||||
call <sid>hi("DiffFile", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
call <sid>hi("DiffNewFile", s:gui0B, s:gui00, s:cterm0B, s:cterm00, "", "")
|
||||
call <sid>hi("DiffLine", s:gui0D, s:gui00, s:cterm0D, s:cterm00, "", "")
|
||||
call <sid>hi("DiffRemoved", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
|
||||
" Git highlighting
|
||||
call <sid>hi("gitcommitOverflow", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("gitcommitSummary", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("gitcommitComment", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitUntracked", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitDiscarded", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitSelected", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitHeader", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("gitcommitSelectedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitUnmergedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitDiscardedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitBranch", s:gui09, "", s:cterm09, "", "bold", "")
|
||||
call <sid>hi("gitcommitUntrackedFile", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("gitcommitUnmergedFile", s:gui08, "", s:cterm08, "", "bold", "")
|
||||
call <sid>hi("gitcommitDiscardedFile", s:gui08, "", s:cterm08, "", "bold", "")
|
||||
call <sid>hi("gitcommitSelectedFile", s:gui0B, "", s:cterm0B, "", "bold", "")
|
||||
|
||||
" GitGutter highlighting
|
||||
call <sid>hi("GitGutterAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterChange", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterChangeDelete", s:gui0E, s:gui01, s:cterm0E, s:cterm01, "", "")
|
||||
|
||||
" HTML highlighting
|
||||
call <sid>hi("htmlBold", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("htmlItalic", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("htmlEndTag", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("htmlTag", s:gui05, "", s:cterm05, "", "", "")
|
||||
|
||||
" JavaScript highlighting
|
||||
call <sid>hi("javaScript", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("javaScriptBraces", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("javaScriptNumber", s:gui09, "", s:cterm09, "", "", "")
|
||||
" pangloss/vim-javascript highlighting
|
||||
call <sid>hi("jsOperator", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsReturn", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsThis", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("jsClassDefinition", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsFunction", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsFuncName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsFuncCall", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsClassFuncName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsClassMethodType", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsRegexpString", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("jsGlobalObjects", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsGlobalNodeObjects", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsExceptions", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsBuiltins", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
|
||||
" Mail highlighting
|
||||
call <sid>hi("mailQuoted1", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("mailQuoted2", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("mailQuoted3", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("mailQuoted4", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("mailQuoted5", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("mailQuoted6", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("mailURL", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("mailEmail", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Markdown highlighting
|
||||
call <sid>hi("markdownCode", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("markdownError", s:gui05, s:gui00, s:cterm05, s:cterm00, "", "")
|
||||
call <sid>hi("markdownCodeBlock", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("markdownHeadingDelimiter", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" NERDTree highlighting
|
||||
call <sid>hi("NERDTreeDirSlash", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("NERDTreeExecFile", s:gui05, "", s:cterm05, "", "", "")
|
||||
|
||||
" PHP highlighting
|
||||
call <sid>hi("phpMemberSelector", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpComparison", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpParent", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpMethodsVar", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
|
||||
" Python highlighting
|
||||
call <sid>hi("pythonOperator", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonRepeat", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonInclude", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
|
||||
" Ruby highlighting
|
||||
call <sid>hi("rubyAttribute", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("rubyConstant", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("rubyInterpolationDelimiter", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("rubyRegexp", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("rubySymbol", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("rubyStringDelimiter", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
|
||||
" SASS highlighting
|
||||
call <sid>hi("sassidChar", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("sassClassChar", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("sassInclude", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("sassMixing", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("sassMixinName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Signify highlighting
|
||||
call <sid>hi("SignifySignAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("SignifySignChange", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("SignifySignDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
|
||||
" Spelling highlighting
|
||||
call <sid>hi("SpellBad", "", "", "", "", "undercurl", s:gui08)
|
||||
call <sid>hi("SpellLocal", "", "", "", "", "undercurl", s:gui0C)
|
||||
call <sid>hi("SpellCap", "", "", "", "", "undercurl", s:gui0D)
|
||||
call <sid>hi("SpellRare", "", "", "", "", "undercurl", s:gui0E)
|
||||
|
||||
" Startify highlighting
|
||||
call <sid>hi("StartifyBracket", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifyFile", s:gui07, "", s:cterm07, "", "", "")
|
||||
call <sid>hi("StartifyFooter", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifyHeader", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("StartifyNumber", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("StartifyPath", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifySection", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("StartifySelect", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("StartifySlash", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifySpecial", s:gui03, "", s:cterm03, "", "", "")
|
||||
|
||||
" Java highlighting
|
||||
call <sid>hi("javaOperator", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Remove functions
|
||||
delf <sid>hi
|
||||
|
||||
" Remove color variables
|
||||
unlet s:gui00 s:gui01 s:gui02 s:gui03 s:gui04 s:gui05 s:gui06 s:gui07 s:gui08 s:gui09 s:gui0A s:gui0B s:gui0C s:gui0D s:gui0E s:gui0F
|
||||
unlet s:cterm00 s:cterm01 s:cterm02 s:cterm03 s:cterm04 s:cterm05 s:cterm06 s:cterm07 s:cterm08 s:cterm09 s:cterm0A s:cterm0B s:cterm0C s:cterm0D s:cterm0E s:cterm0F
|
|
@ -1,413 +0,0 @@
|
|||
" vi:syntax=vim
|
||||
|
||||
" base16-vim (https://github.com/chriskempson/base16-vim)
|
||||
" by Chris Kempson (http://chriskempson.com)
|
||||
" Default Light scheme by Chris Kempson (http://chriskempson.com)
|
||||
|
||||
" This enables the coresponding base16-shell script to run so that
|
||||
" :colorscheme works in terminals supported by base16-shell scripts
|
||||
" User must set this variable in .vimrc
|
||||
" let g:base16_shell_path=base16-builder/output/shell/
|
||||
if !has('gui_running')
|
||||
if exists("g:base16_shell_path")
|
||||
execute "silent !/bin/sh ".g:base16_shell_path."/base16-default-light.sh"
|
||||
endif
|
||||
endif
|
||||
|
||||
" GUI color definitions
|
||||
let s:gui00 = "f8f8f8"
|
||||
let g:base16_gui00 = "f8f8f8"
|
||||
let s:gui01 = "e8e8e8"
|
||||
let g:base16_gui01 = "e8e8e8"
|
||||
let s:gui02 = "d8d8d8"
|
||||
let g:base16_gui02 = "d8d8d8"
|
||||
let s:gui03 = "b8b8b8"
|
||||
let g:base16_gui03 = "b8b8b8"
|
||||
let s:gui04 = "585858"
|
||||
let g:base16_gui04 = "585858"
|
||||
let s:gui05 = "383838"
|
||||
let g:base16_gui05 = "383838"
|
||||
let s:gui06 = "282828"
|
||||
let g:base16_gui06 = "282828"
|
||||
let s:gui07 = "181818"
|
||||
let g:base16_gui07 = "181818"
|
||||
let s:gui08 = "ab4642"
|
||||
let g:base16_gui08 = "ab4642"
|
||||
let s:gui09 = "dc9656"
|
||||
let g:base16_gui09 = "dc9656"
|
||||
let s:gui0A = "f7ca88"
|
||||
let g:base16_gui0A = "f7ca88"
|
||||
let s:gui0B = "a1b56c"
|
||||
let g:base16_gui0B = "a1b56c"
|
||||
let s:gui0C = "86c1b9"
|
||||
let g:base16_gui0C = "86c1b9"
|
||||
let s:gui0D = "7cafc2"
|
||||
let g:base16_gui0D = "7cafc2"
|
||||
let s:gui0E = "ba8baf"
|
||||
let g:base16_gui0E = "ba8baf"
|
||||
let s:gui0F = "a16946"
|
||||
let g:base16_gui0F = "a16946"
|
||||
|
||||
" Terminal color definitions
|
||||
let s:cterm00 = "00"
|
||||
let g:base16_cterm00 = "00"
|
||||
let s:cterm03 = "08"
|
||||
let g:base16_cterm03 = "08"
|
||||
let s:cterm05 = "07"
|
||||
let g:base16_cterm05 = "07"
|
||||
let s:cterm07 = "15"
|
||||
let g:base16_cterm07 = "15"
|
||||
let s:cterm08 = "01"
|
||||
let g:base16_cterm08 = "01"
|
||||
let s:cterm0A = "03"
|
||||
let g:base16_cterm0A = "03"
|
||||
let s:cterm0B = "02"
|
||||
let g:base16_cterm0B = "02"
|
||||
let s:cterm0C = "06"
|
||||
let g:base16_cterm0C = "06"
|
||||
let s:cterm0D = "04"
|
||||
let g:base16_cterm0D = "04"
|
||||
let s:cterm0E = "05"
|
||||
let g:base16_cterm0E = "05"
|
||||
if exists('base16colorspace') && base16colorspace == "256"
|
||||
let s:cterm01 = "18"
|
||||
let g:base16_cterm01 = "18"
|
||||
let s:cterm02 = "19"
|
||||
let g:base16_cterm02 = "19"
|
||||
let s:cterm04 = "20"
|
||||
let g:base16_cterm04 = "20"
|
||||
let s:cterm06 = "21"
|
||||
let g:base16_cterm06 = "21"
|
||||
let s:cterm09 = "16"
|
||||
let g:base16_cterm09 = "16"
|
||||
let s:cterm0F = "17"
|
||||
let g:base16_cterm0F = "17"
|
||||
else
|
||||
let s:cterm01 = "10"
|
||||
let g:base16_cterm01 = "10"
|
||||
let s:cterm02 = "11"
|
||||
let g:base16_cterm02 = "11"
|
||||
let s:cterm04 = "12"
|
||||
let g:base16_cterm04 = "12"
|
||||
let s:cterm06 = "13"
|
||||
let g:base16_cterm06 = "13"
|
||||
let s:cterm09 = "09"
|
||||
let g:base16_cterm09 = "09"
|
||||
let s:cterm0F = "14"
|
||||
let g:base16_cterm0F = "14"
|
||||
endif
|
||||
|
||||
" Neovim terminal colours
|
||||
if has("nvim")
|
||||
let g:terminal_color_0 = "#f8f8f8"
|
||||
let g:terminal_color_1 = "#ab4642"
|
||||
let g:terminal_color_2 = "#a1b56c"
|
||||
let g:terminal_color_3 = "#f7ca88"
|
||||
let g:terminal_color_4 = "#7cafc2"
|
||||
let g:terminal_color_5 = "#ba8baf"
|
||||
let g:terminal_color_6 = "#86c1b9"
|
||||
let g:terminal_color_7 = "#383838"
|
||||
let g:terminal_color_8 = "#b8b8b8"
|
||||
let g:terminal_color_9 = "#ab4642"
|
||||
let g:terminal_color_10 = "#a1b56c"
|
||||
let g:terminal_color_11 = "#f7ca88"
|
||||
let g:terminal_color_12 = "#7cafc2"
|
||||
let g:terminal_color_13 = "#ba8baf"
|
||||
let g:terminal_color_14 = "#86c1b9"
|
||||
let g:terminal_color_15 = "#181818"
|
||||
let g:terminal_color_background = g:terminal_color_0
|
||||
let g:terminal_color_foreground = g:terminal_color_5
|
||||
if &background == "light"
|
||||
let g:terminal_color_background = g:terminal_color_7
|
||||
let g:terminal_color_foreground = g:terminal_color_2
|
||||
endif
|
||||
elseif has('terminal')
|
||||
let g:terminal_ansi_colors = [
|
||||
\ "#f8f8f8",
|
||||
\ "#ab4642",
|
||||
\ "#a1b56c",
|
||||
\ "#f7ca88",
|
||||
\ "#7cafc2",
|
||||
\ "#ba8baf",
|
||||
\ "#86c1b9",
|
||||
\ "#383838",
|
||||
\ "#b8b8b8",
|
||||
\ "#ab4642",
|
||||
\ "#a1b56c",
|
||||
\ "#f7ca88",
|
||||
\ "#7cafc2",
|
||||
\ "#ba8baf",
|
||||
\ "#86c1b9",
|
||||
\ "#181818",
|
||||
\ ]
|
||||
endif
|
||||
|
||||
" Theme setup
|
||||
hi clear
|
||||
syntax reset
|
||||
let g:colors_name = "base16-default-light"
|
||||
|
||||
" Highlighting function
|
||||
" Optional variables are attributes and guisp
|
||||
function! g:Base16hi(group, guifg, guibg, ctermfg, ctermbg, ...)
|
||||
let l:attr = get(a:, 1, "")
|
||||
let l:guisp = get(a:, 2, "")
|
||||
|
||||
if a:guifg != ""
|
||||
exec "hi " . a:group . " guifg=#" . a:guifg
|
||||
endif
|
||||
if a:guibg != ""
|
||||
exec "hi " . a:group . " guibg=#" . a:guibg
|
||||
endif
|
||||
if a:ctermfg != ""
|
||||
exec "hi " . a:group . " ctermfg=" . a:ctermfg
|
||||
endif
|
||||
if a:ctermbg != ""
|
||||
exec "hi " . a:group . " ctermbg=" . a:ctermbg
|
||||
endif
|
||||
if l:attr != ""
|
||||
exec "hi " . a:group . " gui=" . l:attr . " cterm=" . l:attr
|
||||
endif
|
||||
if l:guisp != ""
|
||||
exec "hi " . a:group . " guisp=#" . l:guisp
|
||||
endif
|
||||
endfunction
|
||||
|
||||
|
||||
fun <sid>hi(group, guifg, guibg, ctermfg, ctermbg, attr, guisp)
|
||||
call g:Base16hi(a:group, a:guifg, a:guibg, a:ctermfg, a:ctermbg, a:attr, a:guisp)
|
||||
endfun
|
||||
|
||||
" Vim editor colors
|
||||
call <sid>hi("Normal", s:gui05, s:gui00, s:cterm05, s:cterm00, "", "")
|
||||
call <sid>hi("Bold", "", "", "", "", "bold", "")
|
||||
call <sid>hi("Debug", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Directory", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Error", s:gui00, s:gui08, s:cterm00, s:cterm08, "", "")
|
||||
call <sid>hi("ErrorMsg", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
call <sid>hi("Exception", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("FoldColumn", s:gui0C, s:gui01, s:cterm0C, s:cterm01, "", "")
|
||||
call <sid>hi("Folded", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("IncSearch", s:gui01, s:gui09, s:cterm01, s:cterm09, "none", "")
|
||||
call <sid>hi("Italic", "", "", "", "", "none", "")
|
||||
call <sid>hi("Macro", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("MatchParen", "", s:gui03, "", s:cterm03, "", "")
|
||||
call <sid>hi("ModeMsg", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("MoreMsg", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("Question", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Search", s:gui01, s:gui0A, s:cterm01, s:cterm0A, "", "")
|
||||
call <sid>hi("Substitute", s:gui01, s:gui0A, s:cterm01, s:cterm0A, "none", "")
|
||||
call <sid>hi("SpecialKey", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("TooLong", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Underlined", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Visual", "", s:gui02, "", s:cterm02, "", "")
|
||||
call <sid>hi("VisualNOS", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("WarningMsg", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("WildMenu", s:gui08, s:gui0A, s:cterm08, "", "", "")
|
||||
call <sid>hi("Title", s:gui0D, "", s:cterm0D, "", "none", "")
|
||||
call <sid>hi("Conceal", s:gui0D, s:gui00, s:cterm0D, s:cterm00, "", "")
|
||||
call <sid>hi("Cursor", s:gui00, s:gui05, s:cterm00, s:cterm05, "", "")
|
||||
call <sid>hi("NonText", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("LineNr", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("SignColumn", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("StatusLine", s:gui04, s:gui02, s:cterm04, s:cterm02, "none", "")
|
||||
call <sid>hi("StatusLineNC", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("VertSplit", s:gui02, s:gui02, s:cterm02, s:cterm02, "none", "")
|
||||
call <sid>hi("ColorColumn", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorColumn", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorLine", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("CursorLineNr", s:gui04, s:gui01, s:cterm04, s:cterm01, "", "")
|
||||
call <sid>hi("QuickFixLine", "", s:gui01, "", s:cterm01, "none", "")
|
||||
call <sid>hi("PMenu", s:gui05, s:gui01, s:cterm05, s:cterm01, "none", "")
|
||||
call <sid>hi("PMenuSel", s:gui01, s:gui05, s:cterm01, s:cterm05, "", "")
|
||||
call <sid>hi("TabLine", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("TabLineFill", s:gui03, s:gui01, s:cterm03, s:cterm01, "none", "")
|
||||
call <sid>hi("TabLineSel", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "none", "")
|
||||
|
||||
" Standard syntax highlighting
|
||||
call <sid>hi("Boolean", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Character", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("Comment", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("Conditional", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Constant", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Define", s:gui0E, "", s:cterm0E, "", "none", "")
|
||||
call <sid>hi("Delimiter", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("Float", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Function", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Identifier", s:gui08, "", s:cterm08, "", "none", "")
|
||||
call <sid>hi("Include", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("Keyword", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Label", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Number", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("Operator", s:gui05, "", s:cterm05, "", "none", "")
|
||||
call <sid>hi("PreProc", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Repeat", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Special", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("SpecialChar", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("Statement", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("StorageClass", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("String", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("Structure", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("Tag", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("Todo", s:gui0A, s:gui01, s:cterm0A, s:cterm01, "", "")
|
||||
call <sid>hi("Type", s:gui0A, "", s:cterm0A, "", "none", "")
|
||||
call <sid>hi("Typedef", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
|
||||
" C highlighting
|
||||
call <sid>hi("cOperator", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("cPreCondit", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
|
||||
" C# highlighting
|
||||
call <sid>hi("csClass", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("csAttribute", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("csModifier", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("csType", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("csUnspecifiedStatement", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("csContextualStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("csNewDecleration", s:gui08, "", s:cterm08, "", "", "")
|
||||
|
||||
" CSS highlighting
|
||||
call <sid>hi("cssBraces", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("cssClassName", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("cssColor", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
|
||||
" Diff highlighting
|
||||
call <sid>hi("DiffAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("DiffChange", s:gui03, s:gui01, s:cterm03, s:cterm01, "", "")
|
||||
call <sid>hi("DiffDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
call <sid>hi("DiffText", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("DiffAdded", s:gui0B, s:gui00, s:cterm0B, s:cterm00, "", "")
|
||||
call <sid>hi("DiffFile", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
call <sid>hi("DiffNewFile", s:gui0B, s:gui00, s:cterm0B, s:cterm00, "", "")
|
||||
call <sid>hi("DiffLine", s:gui0D, s:gui00, s:cterm0D, s:cterm00, "", "")
|
||||
call <sid>hi("DiffRemoved", s:gui08, s:gui00, s:cterm08, s:cterm00, "", "")
|
||||
|
||||
" Git highlighting
|
||||
call <sid>hi("gitcommitOverflow", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("gitcommitSummary", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("gitcommitComment", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitUntracked", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitDiscarded", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitSelected", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("gitcommitHeader", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("gitcommitSelectedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitUnmergedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitDiscardedType", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("gitcommitBranch", s:gui09, "", s:cterm09, "", "bold", "")
|
||||
call <sid>hi("gitcommitUntrackedFile", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("gitcommitUnmergedFile", s:gui08, "", s:cterm08, "", "bold", "")
|
||||
call <sid>hi("gitcommitDiscardedFile", s:gui08, "", s:cterm08, "", "bold", "")
|
||||
call <sid>hi("gitcommitSelectedFile", s:gui0B, "", s:cterm0B, "", "bold", "")
|
||||
|
||||
" GitGutter highlighting
|
||||
call <sid>hi("GitGutterAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterChange", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
call <sid>hi("GitGutterChangeDelete", s:gui0E, s:gui01, s:cterm0E, s:cterm01, "", "")
|
||||
|
||||
" HTML highlighting
|
||||
call <sid>hi("htmlBold", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("htmlItalic", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("htmlEndTag", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("htmlTag", s:gui05, "", s:cterm05, "", "", "")
|
||||
|
||||
" JavaScript highlighting
|
||||
call <sid>hi("javaScript", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("javaScriptBraces", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("javaScriptNumber", s:gui09, "", s:cterm09, "", "", "")
|
||||
" pangloss/vim-javascript highlighting
|
||||
call <sid>hi("jsOperator", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsReturn", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsThis", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("jsClassDefinition", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsFunction", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsFuncName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsFuncCall", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsClassFuncName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("jsClassMethodType", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("jsRegexpString", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("jsGlobalObjects", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsGlobalNodeObjects", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsExceptions", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("jsBuiltins", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
|
||||
" Mail highlighting
|
||||
call <sid>hi("mailQuoted1", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("mailQuoted2", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("mailQuoted3", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("mailQuoted4", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("mailQuoted5", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("mailQuoted6", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("mailURL", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("mailEmail", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Markdown highlighting
|
||||
call <sid>hi("markdownCode", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("markdownError", s:gui05, s:gui00, s:cterm05, s:cterm00, "", "")
|
||||
call <sid>hi("markdownCodeBlock", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("markdownHeadingDelimiter", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" NERDTree highlighting
|
||||
call <sid>hi("NERDTreeDirSlash", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("NERDTreeExecFile", s:gui05, "", s:cterm05, "", "", "")
|
||||
|
||||
" PHP highlighting
|
||||
call <sid>hi("phpMemberSelector", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpComparison", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpParent", s:gui05, "", s:cterm05, "", "", "")
|
||||
call <sid>hi("phpMethodsVar", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
|
||||
" Python highlighting
|
||||
call <sid>hi("pythonOperator", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonRepeat", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonInclude", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("pythonStatement", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
|
||||
" Ruby highlighting
|
||||
call <sid>hi("rubyAttribute", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
call <sid>hi("rubyConstant", s:gui0A, "", s:cterm0A, "", "", "")
|
||||
call <sid>hi("rubyInterpolationDelimiter", s:gui0F, "", s:cterm0F, "", "", "")
|
||||
call <sid>hi("rubyRegexp", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("rubySymbol", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("rubyStringDelimiter", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
|
||||
" SASS highlighting
|
||||
call <sid>hi("sassidChar", s:gui08, "", s:cterm08, "", "", "")
|
||||
call <sid>hi("sassClassChar", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("sassInclude", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("sassMixing", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("sassMixinName", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Signify highlighting
|
||||
call <sid>hi("SignifySignAdd", s:gui0B, s:gui01, s:cterm0B, s:cterm01, "", "")
|
||||
call <sid>hi("SignifySignChange", s:gui0D, s:gui01, s:cterm0D, s:cterm01, "", "")
|
||||
call <sid>hi("SignifySignDelete", s:gui08, s:gui01, s:cterm08, s:cterm01, "", "")
|
||||
|
||||
" Spelling highlighting
|
||||
call <sid>hi("SpellBad", "", "", "", "", "undercurl", s:gui08)
|
||||
call <sid>hi("SpellLocal", "", "", "", "", "undercurl", s:gui0C)
|
||||
call <sid>hi("SpellCap", "", "", "", "", "undercurl", s:gui0D)
|
||||
call <sid>hi("SpellRare", "", "", "", "", "undercurl", s:gui0E)
|
||||
|
||||
" Startify highlighting
|
||||
call <sid>hi("StartifyBracket", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifyFile", s:gui07, "", s:cterm07, "", "", "")
|
||||
call <sid>hi("StartifyFooter", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifyHeader", s:gui0B, "", s:cterm0B, "", "", "")
|
||||
call <sid>hi("StartifyNumber", s:gui09, "", s:cterm09, "", "", "")
|
||||
call <sid>hi("StartifyPath", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifySection", s:gui0E, "", s:cterm0E, "", "", "")
|
||||
call <sid>hi("StartifySelect", s:gui0C, "", s:cterm0C, "", "", "")
|
||||
call <sid>hi("StartifySlash", s:gui03, "", s:cterm03, "", "", "")
|
||||
call <sid>hi("StartifySpecial", s:gui03, "", s:cterm03, "", "", "")
|
||||
|
||||
" Java highlighting
|
||||
call <sid>hi("javaOperator", s:gui0D, "", s:cterm0D, "", "", "")
|
||||
|
||||
" Remove functions
|
||||
delf <sid>hi
|
||||
|
||||
" Remove color variables
|
||||
unlet s:gui00 s:gui01 s:gui02 s:gui03 s:gui04 s:gui05 s:gui06 s:gui07 s:gui08 s:gui09 s:gui0A s:gui0B s:gui0C s:gui0D s:gui0E s:gui0F
|
||||
unlet s:cterm00 s:cterm01 s:cterm02 s:cterm03 s:cterm04 s:cterm05 s:cterm06 s:cterm07 s:cterm08 s:cterm09 s:cterm0A s:cterm0B s:cterm0C s:cterm0D s:cterm0E s:cterm0F
|
676
vimrc
676
vimrc
|
@ -1,12 +1,41 @@
|
|||
scriptencoding utf-8
|
||||
"on: [1.8.8]"
|
||||
"""""""""""""""""""""""""""""""""
|
||||
"Authors: [Karlkorp, Inc. 2014; lhark, Inc. 2015]"
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"Type: [Vim/GVim/MacVim configuration file]"
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"Name: [.vimrc (unix/mac); _vimrc (MS Windows/DOS)]"
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"Location: [$HOME/.vimrc (unix/mac); $USERNAME\_vimrc (MS Windows)]"
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"[Plug-ins list]""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"+------------------+-------------------------------------------------+"
|
||||
"| AutoComplPop | https://github.com/vim-scripts/AutoComplPop |"
|
||||
"| DelimitMate | https://github.com/Raimondi/delimitMate |"
|
||||
"| DetectIndent | https://github.com/roryokane/detectindent |"
|
||||
"| Gutentags | https://github.com/ludovicchabant/vim-gutentags |"
|
||||
"| Multiple-Cursors | https://github.com/terryma/vim-multiple-cursors |"
|
||||
"| Python-Mode | https://github.com/klen/python-mode |"
|
||||
"| Surround | https://github.com/tpope/vim-surround |"
|
||||
"| Undotree | https://github.com/mbbill/undotree |"
|
||||
"| Vim-Airline | https://github.com/bling/vim-airline |"
|
||||
"| Vim-GLSL | https://github.com/tikhomirov/vim-glsl |"
|
||||
"| Vim-Gnupg | https://github.com/jamessan/vim-gnupg |"
|
||||
"| Vundle | https://github.com/gmarik/Vundle.vim.git |"
|
||||
"| YouCompleteMe | https://github.com/Valloric/YouCompleteMe |"
|
||||
"+------------------+-------------------------------------------------+"
|
||||
"[Colorschemes list]""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"+------------------+-------------------------------------------------+"
|
||||
"| Solarized | https://github.com/altercation/vim-colors-solarized |"
|
||||
"+------------------+-------------------------------------------------+"
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"[To disable compatibility with Vi]"
|
||||
set nocompatible
|
||||
if &shell =~# 'fish$'
|
||||
set shell=sh
|
||||
endif
|
||||
"[Use Plug-ins and Plug-in Manager(Vundle) only on UNIX or MAC OS]"
|
||||
if has("unix") || has("mac")
|
||||
filetype off
|
||||
"[Download and install Vundle Plug-in Manager]"
|
||||
try
|
||||
if !isdirectory(expand("$HOME/.vim/bundle"))
|
||||
silent !mkdir -p $HOME/.vim/bundle
|
||||
silent cd $HOME/.vim/bundle
|
||||
|
@ -16,11 +45,13 @@ if has("unix") || has("mac")
|
|||
"[Run Plug-ins]"
|
||||
set runtimepath+=$HOME/.vim/bundle/Vundle.vim
|
||||
call vundle#begin()
|
||||
|
||||
Plugin 'gmarik/Vundle.vim'
|
||||
map <F2> :VundleInstall<CR>
|
||||
map <F3> :VundleUpdate<CR>
|
||||
|
||||
Plugin 'dag/vim-fish'
|
||||
Plugin 'mbbill/undotree'
|
||||
map <F5> :UndotreeToggle<CR>
|
||||
Plugin 'vim-scripts/LaTeX-Box'
|
||||
map <LocalLeader>ll :Latexmk<CR>
|
||||
if isdirectory(expand("$HOME/.vim/bundle/YouCompleteMe"))
|
||||
"[Workaround for YCM non-portability]"
|
||||
Plugin 'Valloric/YouCompleteMe'
|
||||
|
@ -34,8 +65,8 @@ if has("unix") || has("mac")
|
|||
let g:ycm_use_ultisnips_completer = 0
|
||||
else
|
||||
Plugin 'AutoComplPop'
|
||||
Plugin 'davidhalter/jedi-vim'
|
||||
endif
|
||||
|
||||
Plugin 'w0rp/ale'
|
||||
let g:ale_linters = {
|
||||
\ 'cpp': ['g++'],
|
||||
|
@ -44,162 +75,76 @@ if has("unix") || has("mac")
|
|||
let g:ale_c_gcc_options='-std=c99 -pedantic'
|
||||
let g:ale_sign_error = '●'
|
||||
let g:ale_sign_warning = '●'
|
||||
|
||||
Plugin 'itchyny/lightline.vim'
|
||||
let g:lightline = {'colorscheme': 'base16_default_dark'}
|
||||
|
||||
let g:lightline = {
|
||||
\'colorscheme': 'solarized',
|
||||
\ 'active': {
|
||||
\ 'left': [['mode', 'paste'], ['filename', 'modified']],
|
||||
\ 'right': [['lineinfo'],
|
||||
\ ['percent'],
|
||||
\ ['readonly', 'linter_warnings', 'linter_errors', 'linter_ok'],
|
||||
\ ['fileformat'],
|
||||
\ ['fileencoding']
|
||||
\ ]
|
||||
\ },
|
||||
\ 'component_expand': {
|
||||
\ 'linter_warnings': 'LightlineLinterWarnings',
|
||||
\ 'linter_errors': 'LightlineLinterErrors',
|
||||
\ 'linter_ok': 'LightlineLinterOK',
|
||||
\ 'lineinfo': 'LineInfo'
|
||||
\ },
|
||||
\ 'component_type': {
|
||||
\ 'readonly': 'error',
|
||||
\ 'linter_warnings': 'warning',
|
||||
\ 'linter_errors': 'error'
|
||||
\ },
|
||||
\}
|
||||
if executable('ctags')
|
||||
Plugin 'ludovicchabant/vim-gutentags'
|
||||
endif
|
||||
|
||||
Plugin 'godlygeek/tabular'
|
||||
Plugin 'beyondmarc/opengl.vim'
|
||||
Plugin 'arrufat/vala.vim'
|
||||
let g:vala_syntax_folding_enabled = 0
|
||||
|
||||
Plugin 'tikhomirov/vim-glsl'
|
||||
Plugin 'beyondmarc/hlsl.vim'
|
||||
Plugin 'rust-lang/rust.vim'
|
||||
Plugin 'mzlogin/vim-smali'
|
||||
Plugin 'jamessan/vim-gnupg'
|
||||
Plugin 'https://git.sr.ht/~sircmpwn/hare.vim'
|
||||
Plugin 'romainl/vim-cool'
|
||||
Plugin 'machakann/vim-highlightedyank'
|
||||
let g:highlightedyank_highlight_duration = 200
|
||||
"[Needed only with old vim versions]"
|
||||
if !exists('##TextYankPost')
|
||||
map y <Plug>(highlightedyank)
|
||||
endif
|
||||
|
||||
Plugin 'petRUShka/vim-opencl'
|
||||
Plugin 'hynek/vim-python-pep8-indent'
|
||||
Plugin 'tpope/vim-surround'
|
||||
Plugin 'captbaritone/better-indent-support-for-php-with-html'
|
||||
"[Autodetect indent style of a file]"
|
||||
Plugin 'tcbbd/detectindent'
|
||||
Plugin 'roryokane/detectindent'
|
||||
let g:detectindent_preferred_indent=4
|
||||
let g:detectindent_autodetect=1
|
||||
|
||||
"[Allow writing of unwritable file with sudo, until neovim#1716 is fixed]"
|
||||
if has('nvim')
|
||||
Plugin 'lambdalisue/suda.vim'
|
||||
let g:suda_smart_edit = 1
|
||||
endif
|
||||
"[Solarized theme]"
|
||||
"Plugin 'ericbn/vim-solarized'
|
||||
Plugin 'https://gitlab.federez.net/lhark/vim-solarized.git'
|
||||
call vundle#end()
|
||||
catch
|
||||
endtry
|
||||
else
|
||||
filetype on
|
||||
endif
|
||||
" Allow backspacing over everything in insert mode.
|
||||
set backspace=indent,eol,start
|
||||
set number
|
||||
set relativenumber
|
||||
"[Hide/show the white-space and more invisible symbols]"
|
||||
set list
|
||||
set listchars=tab:▸\ ,nbsp:¬,trail:-
|
||||
" | | + Trailing spaces
|
||||
" | + Non breakable spaces
|
||||
" + Tabulations: `tab xy`, x: first char, y: following chars
|
||||
set nojoinspaces
|
||||
"[Indent & Tab/mode-line settings]"
|
||||
set breakindent
|
||||
set nopaste
|
||||
set smarttab
|
||||
set tabstop=4 " tabs size on screen "
|
||||
set expandtab " <tab> inserts spaces "
|
||||
set autoindent
|
||||
set copyindent " copy existing tab/spaces mix on newline "
|
||||
set smartindent " overruled by cindent "
|
||||
set cinwords=except,finally,def,class,with,do,if,elif,else,for,while,try,switch
|
||||
set cinoptions+=l1 " switch case label alignement, :h cinoptions-values "
|
||||
set shiftwidth=4 " number of space to use on indent. Use tabstop if 0"
|
||||
"set softtabstop=4
|
||||
"[Matching chars]"
|
||||
set showmatch
|
||||
set matchpairs=\":\"
|
||||
set matchpairs+=(:)
|
||||
set matchpairs+={:}
|
||||
set matchpairs+=[:]
|
||||
"[TextWidth settings]"
|
||||
set textwidth=0
|
||||
"[Look for a single modeline in files]"
|
||||
set modeline
|
||||
set modelines=1
|
||||
|
||||
set ruler " show the cursor position all the time
|
||||
set showcmd " display incomplete commands
|
||||
set laststatus=2
|
||||
set noshowmode
|
||||
|
||||
"[Command mode autocompletion]"
|
||||
set wildmenu
|
||||
set wildmode=longest:full,full
|
||||
" `------------|---- First complete till longest common string, open wildmenu
|
||||
" `---- Then, complete next full match
|
||||
|
||||
set ttimeout " time out for key codes
|
||||
set ttimeoutlen=100 " wait up to 100ms after Esc for special key
|
||||
|
||||
"[Turn backup off and value of history]"
|
||||
set nobackup
|
||||
set noswapfile
|
||||
set history=1000
|
||||
set nowritebackup
|
||||
set undolevels=5000
|
||||
|
||||
"[Setup history file]"
|
||||
set viminfo=%,<0,'10,/16,:16,h,f0
|
||||
" | | | | | | + file marks 0-9,A-Z 0=NOT stored
|
||||
" | | | | | + disable 'hlsearch' loading viminfo
|
||||
" | | | | + command-line history saved
|
||||
" | | | + search history saved
|
||||
" | | + files marks saved
|
||||
" | + lines saved each register (old name for <, vi6.2): NOT STORED
|
||||
" + save/restore buffer list
|
||||
if !has('nvim')
|
||||
"[Declutter $HOME]"
|
||||
set viminfo+=n~/.vim/cache/.viminfo
|
||||
endif
|
||||
|
||||
" Show @@@ in the last line if it is truncated.
|
||||
set display=truncate
|
||||
"[Splitting rules]"
|
||||
set splitbelow
|
||||
set splitright
|
||||
set equalalways
|
||||
|
||||
" Show a few lines of context around the cursor.
|
||||
set scrolloff=5
|
||||
" Try to keep the cursor in the same column while scrolling
|
||||
set nostartofline
|
||||
|
||||
set autochdir
|
||||
set autoread
|
||||
set autowrite
|
||||
|
||||
"[Shared with OS clipboard]"
|
||||
set clipboard=unnamed
|
||||
|
||||
"[For regular expressions turn magic on, use \v to get regex parent]"
|
||||
set magic
|
||||
"[Search settings]"
|
||||
set hlsearch
|
||||
set incsearch
|
||||
set smartcase
|
||||
set ignorecase
|
||||
set wrapscan
|
||||
"[When on, the ":substitute" flag 'g' is default on]"
|
||||
set nogdefault
|
||||
"[Enable realtime feedback for substitution]"
|
||||
if has("nvim")
|
||||
set inccommand=nosplit
|
||||
endif
|
||||
|
||||
|
||||
"[Kitty doesn't support background color erase]"
|
||||
let &t_ut=''
|
||||
let base16colorspace=256
|
||||
set background=dark
|
||||
colorscheme base16-default-dark
|
||||
"[Fix background transparency]"
|
||||
"[Recognize the type/syntax of the file]"
|
||||
filetype plugin on
|
||||
filetype indent on
|
||||
set omnifunc=syntaxcomplete#Complete
|
||||
"[Default to filetype=tex when viewing partial tex files]"
|
||||
let g:tex_flavor="tex"
|
||||
"[Enable built-in plug-ins/macros]"
|
||||
runtime macros/matchit.vim
|
||||
"[Enable syntax highlighting]"
|
||||
syntax on
|
||||
"[Read the changes after the save .vimrc]"
|
||||
if has("autocmd")
|
||||
autocmd ColorScheme * highlight Normal ctermbg=None
|
||||
autocmd ColorScheme * highlight NonText ctermbg=None
|
||||
autocmd! BufWritePost $MYVIMRC source $MYVIMRC
|
||||
endif
|
||||
|
||||
|
||||
"[Define the leader key]"
|
||||
let mapleader=","
|
||||
let maplocalleader=","
|
||||
"[List of buffers]"
|
||||
map <F7> :ls!<CR>:buffer<Space>
|
||||
"[Reselect visual block after indent/outdent]"
|
||||
vnoremap < <gv
|
||||
vnoremap > >gv
|
||||
|
@ -207,6 +152,14 @@ vnoremap > >gv
|
|||
"[If preceded by a count, jump actual lines. Also if > 5, save to jumplist]"
|
||||
nnoremap <expr> j v:count ? (v:count > 5 ? "m'" . v:count : '') . 'j' : 'gj'
|
||||
nnoremap <expr> k v:count ? (v:count > 5 ? "m'" . v:count : '') . 'k' : 'gk'
|
||||
" nnoremap <Down> gj
|
||||
" nnoremap <Up> gk
|
||||
" vnoremap <Down> gj
|
||||
" vnoremap <Up> gk
|
||||
" inoremap <Down> <C-o>gj
|
||||
" inoremap <Up> <C-o>gk
|
||||
"[Clear search highlights]"
|
||||
nnoremap // :nohlsearch<CR>
|
||||
"[Easy split navigation]"
|
||||
nnoremap <C-j> <C-W>j
|
||||
nnoremap <C-k> <C-W>k
|
||||
|
@ -224,11 +177,17 @@ nnoremap <silent> # #zz
|
|||
"[New line under/bellow current line without jump to insert-mode]"
|
||||
nnoremap <leader>o o<Esc>
|
||||
nnoremap <leader>O O<Esc>
|
||||
"[Clear search highlights]"
|
||||
nnoremap // :nohlsearch<CR>
|
||||
"[Reflow current paragraph]"
|
||||
"[http://stevelosh.com/blog/2010/09/coming-home-to-vim/]"
|
||||
nnoremap <silent> <leader>q :call ReflowParagraph()<CR>
|
||||
"[Auto-complete parenthesis, brackets and braces, quotes]"
|
||||
"inoremap " ""<Left>
|
||||
"inoremap ' ''<Left>
|
||||
"inoremap ( ()<Left>
|
||||
"inoremap [ []<Left>
|
||||
"inoremap { {}<Left>
|
||||
"[Easy jump into the normal-mode from the insert-mode]"
|
||||
inoremap jj <Esc>
|
||||
"[To move over parenthesis, brackets, quotes in insert-mode]"
|
||||
inoremap kk <Right>
|
||||
inoremap hh <Left>
|
||||
" http://stackoverflow.com/questions/1005/getting-root-permissions-on-a-file-inside-of-vi
|
||||
cmap w!! w !sudo tee >/dev/null %
|
||||
"[To disable the arrow keys]"
|
||||
|
@ -237,47 +196,245 @@ for prefix in ['i', 'n', 'v']
|
|||
execute prefix . "noremap " . key . " <Nop>"
|
||||
endfor
|
||||
endfor
|
||||
"[Switch quickly between source and header]"
|
||||
nnoremap <leader>f :e <C-r>=SwapExtension()<CR><CR>
|
||||
|
||||
|
||||
|
||||
" Do incremental searching when it's possible to timeout.
|
||||
if has('reltime')
|
||||
"[Threshold for reporting number of lines changed]"
|
||||
set report=0
|
||||
"[Show command in the last line of the screen]"
|
||||
set showcmd
|
||||
"[Show both the tag name and a tidied-up form of the search pattern]"
|
||||
set showfulltag
|
||||
"[Don't give the intro message when starting Vim]"
|
||||
set shortmess=""
|
||||
if has("unix") || has("mac")
|
||||
set shortmess+=I
|
||||
endif
|
||||
"[Always show StatusLine]"
|
||||
set laststatus=2
|
||||
"[Do not show mode in command line]"
|
||||
set noshowmode
|
||||
"[Splitting rules]"
|
||||
set splitbelow
|
||||
set splitright
|
||||
set equalalways
|
||||
"[Lisp coding settings]"
|
||||
if (&filetype == "lisp")
|
||||
set lisp
|
||||
endif
|
||||
"[Don't use the mouse in terminal]"
|
||||
set mouse=
|
||||
set mousemodel=extend
|
||||
"[Fix mouse past column 222]"
|
||||
if has("mouse_sgr")
|
||||
set ttymouse=sgr
|
||||
else
|
||||
set ttymouse=xterm2
|
||||
end
|
||||
"[Hide mouse while printing the text]"
|
||||
set mousehide
|
||||
"[Visualisation settings]"
|
||||
set background=dark
|
||||
set ttyfast
|
||||
set tabline=""
|
||||
"[Kitty doesn't support background color erase]"
|
||||
let &t_ut=''
|
||||
" set cmdheight=1 : default
|
||||
set showtabline=0
|
||||
set colorcolumn=80
|
||||
set nocursorcolumn
|
||||
set cmdwinheight=10
|
||||
set virtualedit=all
|
||||
"[GUI/Color Scheme/Font settings]"
|
||||
if has("gui_running")
|
||||
winsize 90 50
|
||||
silent cd $HOME
|
||||
set linespace=0
|
||||
set guioptions=""
|
||||
set guitablabel=""
|
||||
if has("autocmd")
|
||||
autocmd InsertEnter * set cursorline
|
||||
autocmd InsertLeave * set nocursorline
|
||||
endif
|
||||
if has("win32") || has("win64")
|
||||
try
|
||||
colorscheme solarized
|
||||
set guifont=PT_Mono:h12
|
||||
catch
|
||||
endtry
|
||||
elseif has("unix")
|
||||
try
|
||||
colorscheme solarized
|
||||
set guifont=Liberation\ Mono\ 10
|
||||
catch
|
||||
endtry
|
||||
elseif has("mac")
|
||||
try
|
||||
set antialias
|
||||
colorscheme solarized
|
||||
set guifont=Monaco:h12
|
||||
catch
|
||||
endtry
|
||||
endif
|
||||
else
|
||||
if has("unix") || has("mac")
|
||||
try
|
||||
set t_Co=16
|
||||
let g:solarized_termtrans=1
|
||||
let g:solarized_termcolors=16
|
||||
colorscheme solarized
|
||||
catch
|
||||
endtry
|
||||
endif
|
||||
endif
|
||||
"[Backspace functions]"
|
||||
set backspace=indent,eol,start
|
||||
"[Scroll settings]"
|
||||
set scrolloff=10
|
||||
set scrolljump=10
|
||||
set showmatch
|
||||
set matchpairs=\":\"
|
||||
set matchpairs+=(:)
|
||||
set matchpairs+={:}
|
||||
set matchpairs+=[:]
|
||||
"set matchpairs+=<:> : too annoying
|
||||
"[Turn backup off and value of history]"
|
||||
set nobackup
|
||||
set noswapfile
|
||||
set history=1000
|
||||
set nowritebackup
|
||||
set undolevels=5000
|
||||
"[Indent & Tab/mode-line settings]"
|
||||
set breakindent
|
||||
set nopaste
|
||||
set modeline
|
||||
set smarttab
|
||||
set tabstop=4
|
||||
set expandtab
|
||||
set autoindent
|
||||
set copyindent
|
||||
set smartindent
|
||||
set cinwords=except,finally,def,class,with,do,if,elif,else,for,while,try,switch
|
||||
set cinoptions+=l1
|
||||
set modelines=1
|
||||
set shiftwidth=4
|
||||
set softtabstop=4
|
||||
"[TextWidth settings]"
|
||||
set textwidth=0
|
||||
"[Settings of line numbers]"
|
||||
set number
|
||||
set numberwidth=2
|
||||
set relativenumber
|
||||
"[Don't show current position]"
|
||||
set ruler
|
||||
"[For regular expressions turn magic on]"
|
||||
set magic
|
||||
"[Search settings]"
|
||||
set hlsearch
|
||||
set incsearch
|
||||
set smartcase
|
||||
set ignorecase
|
||||
set wrapscan
|
||||
"[When on, the ":substitute" flag 'g' is default on]"
|
||||
set nogdefault
|
||||
"[Language settings]"
|
||||
set iminsert=0
|
||||
set imsearch=0
|
||||
set helplang=en
|
||||
set langmenu=en
|
||||
language messages POSIX
|
||||
"[Show DocName in title]"
|
||||
set title
|
||||
"[Hide/show the white-space and more invisible symbols]"
|
||||
set list
|
||||
set listchars=nbsp:¬,trail:-
|
||||
"set listchars+=tab:│\ ,
|
||||
set listchars+=tab:▸\ ,
|
||||
set nojoinspaces
|
||||
"[Folding settings]"
|
||||
set foldenable
|
||||
set foldclose=""
|
||||
set foldcolumn=0
|
||||
set foldlevel=99
|
||||
set foldlevelstart=99
|
||||
set foldmethod=indent
|
||||
set foldopen=block,hor,mark,percent,quickfix,search,tag,undo
|
||||
"[Set to auto-read and to auto-write when
|
||||
" a file is changed from the outside]"
|
||||
set autoread
|
||||
set autowrite
|
||||
"[Vim will change the current working directory whenever you
|
||||
" open a file, switch buffers, delete a buffer or open/close a window]"
|
||||
set autochdir
|
||||
"[Not be redrawn while executing macros,
|
||||
" registers that have not been typed]"
|
||||
set lazyredraw
|
||||
"[Time-out settings]"
|
||||
set timeout
|
||||
set timeoutlen=3000
|
||||
set ttimeoutlen=100
|
||||
"[When off a buffer is unloaded when it is abandoned]"
|
||||
set hidden
|
||||
"[Switch between buffers. Settings]"
|
||||
set switchbuf=useopen,usetab,newtab
|
||||
"[Wrap settings]"
|
||||
set wrap
|
||||
set whichwrap=<,>,[,]
|
||||
set nolinebreak
|
||||
"[Encoding/FileType settings]"
|
||||
set encoding=utf-8
|
||||
set termencoding=utf-8
|
||||
set fileencoding=utf-8
|
||||
set fileencodings=utf-8,latin1,cp1251,koi8-r,utf-16le
|
||||
"[Use UNIX, DOS, MAC FileType]"
|
||||
set fileformat=unix
|
||||
set fileformats=unix,mac,dos
|
||||
"[Better consistency between Windows and UNIX]"
|
||||
set sessionoptions=""
|
||||
set viewoptions=folds,options,cursor,unix,slash
|
||||
set sessionoptions+=unix,slash,blank,buffers,curdir
|
||||
set sessionoptions+=folds,help,options,tabpages,winsize
|
||||
"[Completion settings]"
|
||||
if has("autocmd")
|
||||
autocmd FileType c set omnifunc=ccomplete#Complete
|
||||
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
|
||||
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
|
||||
if has("ruby")
|
||||
autocmd FileType ruby set omnifunc=rubycomplete#Complete
|
||||
endif
|
||||
|
||||
" LaTeX ftdetect
|
||||
let g:tex_flavor = "latex"
|
||||
|
||||
" Switch syntax highlighting on when the terminal has colors or when using the
|
||||
" GUI (which always has colors).
|
||||
if &t_Co > 2 || has("gui_running")
|
||||
" Revert with ":syntax off".
|
||||
syntax on
|
||||
|
||||
" I like highlighting strings inside C comments.
|
||||
" Revert with ":unlet c_comment_strings".
|
||||
let c_comment_strings=1
|
||||
if has("perl")
|
||||
autocmd FileType perl set omnifunc=perlcomplete#CompletePERL
|
||||
endif
|
||||
|
||||
"[Reflow current paragraph]"
|
||||
function! ReflowParagraph()
|
||||
let l:view = winsaveview()
|
||||
normal gwip
|
||||
call winrestview(l:view)
|
||||
endfunction
|
||||
"[Remove tabs and spaces at the end of lines]"
|
||||
function! DeleteTrailingTWS()
|
||||
"[Do not clean up trailing spaces in binary mode or in diff files]"
|
||||
if &binary || &ft =~ 'diff'
|
||||
return
|
||||
if has("python")
|
||||
autocmd FileType python set omnifunc=pythoncomplete#Complete
|
||||
endif
|
||||
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
|
||||
endif
|
||||
"[Completion search settings]"
|
||||
set complete=.,b,d,i,k,s,t,u,U,w
|
||||
set completeopt=longest,menuone,preview,menu
|
||||
"[For jump between Java import statement]"
|
||||
set includeexpr=substitute(v:fname,'\\.','/','g')
|
||||
"[Determines the maximum number of items
|
||||
" to show in the popup menu for Insert mode completion]"
|
||||
set pumheight=7
|
||||
"[No annoying sound or errors]"
|
||||
set noerrorbells
|
||||
set novisualbell
|
||||
"[Shared with OS clipboard]"
|
||||
set clipboard=unnamed
|
||||
"[Abbreviations]"
|
||||
cnoreabbrev W w
|
||||
cnoreabbrev Q q
|
||||
"[Turn on the wild menu and wild-mode settings]"
|
||||
set wildmenu
|
||||
set wildmode=list:longest,full
|
||||
set wildignore=*.o,*.obj,*.pyc,*.pyo,*.swp,*.bak,*.exe,*.class
|
||||
"[Use a GUI dialog when confirming]"
|
||||
set confirm
|
||||
"[Method used for encryption when the buffer is written to a file]"
|
||||
if (version <= 702)
|
||||
set cryptmethod=zip
|
||||
else
|
||||
set cryptmethod=blowfish
|
||||
endif
|
||||
let l:view = winsaveview()
|
||||
silent %s/[ \t]*$//g
|
||||
silent %s/\s\+$//ge
|
||||
call winrestview(l:view)
|
||||
endfunction
|
||||
"[Make the scripts executable]"
|
||||
function! ChangeScriptMode()
|
||||
if getline(1) =~ "#!"
|
||||
|
@ -286,69 +443,86 @@ function! ChangeScriptMode()
|
|||
endif
|
||||
endif
|
||||
endfunction
|
||||
"[Swap file extensions, for example cpp/h]"
|
||||
"https://stackoverflow.com/a/22145246"
|
||||
function! SwapExtension()
|
||||
let [rest, ext] = [expand('%:r'), expand('%:e')]
|
||||
if ext ==? 'h'
|
||||
if filereadable(rest . '.c')
|
||||
let ext = 'c'
|
||||
elseif filereadable(rest . '.cpp')
|
||||
let ext = 'cpp'
|
||||
endif
|
||||
elseif ext ==? 'cpp' || ext ==? 'c'
|
||||
let ext = 'h'
|
||||
"swap between vertex and fragment shader"
|
||||
elseif ext ==? 'vsh'
|
||||
let ext = 'fsh'
|
||||
elseif ext ==? 'fsh'
|
||||
let ext = 'vsh'
|
||||
endif
|
||||
return rest . '.' . ext
|
||||
endfunction
|
||||
|
||||
" Only do this part when compiled with support for autocommands.
|
||||
if has("autocmd")
|
||||
|
||||
" Enable file type detection. Use the default filetype settings, so that
|
||||
" mail gets 'tw' set to 72, 'cindent' is on in C files, etc. Also load
|
||||
" indent files, to automatically do language-dependent indenting.
|
||||
" Revert with ":filetype off".
|
||||
filetype plugin indent on
|
||||
|
||||
" Put these in an autocmd group, so that you can revert them with:
|
||||
" ":augroup vimStartup | au! | augroup END"
|
||||
augroup vimStartup
|
||||
au!
|
||||
|
||||
" When editing a file, always jump to the last known cursor position.
|
||||
" Don't do it when the position is invalid, when inside an event handler
|
||||
" (happens when dropping a file on gvim) and for a commit message (it's
|
||||
" likely a different one than last time).
|
||||
autocmd BufReadPost *
|
||||
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' |
|
||||
\ exe "normal! g`\"" |
|
||||
\ endif
|
||||
|
||||
augroup END
|
||||
|
||||
"[Try not to pollute the undo tree (https://vi.stackexchange.com/a/13401)]"
|
||||
autocmd BufWritePre *
|
||||
\ try |
|
||||
\ undojoin |
|
||||
\ catch /^Vim\%((\a\+)\)\=:E790/ |
|
||||
\ finally |
|
||||
\ call DeleteTrailingTWS() |
|
||||
\ endtry
|
||||
|
||||
if has("unix") || has("mac")
|
||||
if has("autocmd")
|
||||
autocmd BufWritePost * call ChangeScriptMode()
|
||||
endif
|
||||
|
||||
endif " has("autocmd")
|
||||
|
||||
" Enable bépo layout if detected
|
||||
silent call system("detectbepo")
|
||||
if v:shell_error == 0
|
||||
source ~/.vim/bepo.vim
|
||||
endif
|
||||
"[Python/Perl scripts templates]"
|
||||
function! InitScriptFile(type)
|
||||
if (a:type == "python")
|
||||
execute setline(1, "#!/usr/bin/env python3")
|
||||
execute setline(2, "# -*- coding: utf-8 -*-")
|
||||
elseif (a:type == "perl")
|
||||
execute setline(1, "#!/usr/bin/env perl")
|
||||
execute setline(2, "")
|
||||
execute setline(3, "use warnings;")
|
||||
execute setline(4, "use strict;")
|
||||
endif
|
||||
normal Go
|
||||
endfunction
|
||||
if has("autocmd")
|
||||
autocmd BufNewFile *.pl,*.pm call InitScriptFile("perl")
|
||||
autocmd BufNewFile *.py,*.pyw call InitScriptFile("python")
|
||||
endif
|
||||
"[Remove tabs and spaces at the end of lines]"
|
||||
function! DeleteTrailingTWS()
|
||||
if &ft =~ 'diff'
|
||||
return
|
||||
end
|
||||
normal mb
|
||||
silent %s/[ \t]*$//g
|
||||
silent %s/\s\+$//ge
|
||||
normal 'b
|
||||
endfunction
|
||||
"[Do not clean up trailing spaces in binary mode]"
|
||||
if has("autocmd") && !&binary
|
||||
autocmd BufWritePre *.py,*.pyw retab
|
||||
autocmd BufWritePre * call DeleteTrailingTWS()
|
||||
endif
|
||||
"[Toggle relativenumber between normal & insert mode]"
|
||||
"[Credit: https://jeffkreeftmeijer.com/vim-number/#relative-line-numbers ]"
|
||||
if has("autocmd")
|
||||
augroup numbertoggle
|
||||
autocmd!
|
||||
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
|
||||
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
|
||||
augroup END
|
||||
endif
|
||||
"[ALELint & Lightline compat]"
|
||||
function! LightlineLinterWarnings() abort
|
||||
let l:counts = ale#statusline#Count(bufnr(''))
|
||||
let l:all_errors = l:counts.error + l:counts.style_error
|
||||
let l:all_non_errors = l:counts.total - l:all_errors
|
||||
return l:counts.total == 0 ? '' : printf('%d ◆', all_non_errors)
|
||||
endfunction
|
||||
|
||||
function! LightlineLinterErrors() abort
|
||||
let l:counts = ale#statusline#Count(bufnr(''))
|
||||
let l:all_errors = l:counts.error + l:counts.style_error
|
||||
let l:all_non_errors = l:counts.total - l:all_errors
|
||||
return l:counts.total == 0 ? '' : printf('%d ✗', all_errors)
|
||||
endfunction
|
||||
|
||||
function! LightlineLinterOK() abort
|
||||
let l:counts = ale#statusline#Count(bufnr(''))
|
||||
let l:all_errors = l:counts.error + l:counts.style_error
|
||||
let l:all_non_errors = l:counts.total - l:all_errors
|
||||
return l:counts.total == 0 ? '✓ ' : ''
|
||||
endfunction
|
||||
|
||||
function! LineInfo()
|
||||
return !&binary ? '%3l:%-2v' : '%3l:%-2v off:%o,0x%O'
|
||||
endfunction
|
||||
|
||||
if has("autocmd")
|
||||
autocmd User ALELint call s:MaybeUpdateLightline()
|
||||
autocmd VimResized * wincmd =
|
||||
endif
|
||||
|
||||
" Update and show lightline but only if it's visible (e.g., not in Goyo)
|
||||
function! s:MaybeUpdateLightline()
|
||||
if exists('#lightline')
|
||||
call lightline#update()
|
||||
end
|
||||
endfunction
|
||||
|
|
53
xinitrc
53
xinitrc
|
@ -1,53 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
userresources=$HOME/.Xresources
|
||||
usermodmap=$HOME/.Xmodmap
|
||||
sysresources=/etc/X11/xinit/.Xresources
|
||||
sysmodmap=/etc/X11/xinit/.Xmodmap
|
||||
|
||||
# merge in defaults and keymaps
|
||||
if [ -f $sysresources ]; then
|
||||
xrdb -merge $sysresources
|
||||
fi
|
||||
if [ -f $sysmodmap ]; then
|
||||
xmodmap $sysmodmap
|
||||
fi
|
||||
if [ -f "$userresources" ]; then
|
||||
xrdb -merge "$userresources"
|
||||
fi
|
||||
if [ -f "$usermodmap" ]; then
|
||||
xmodmap "$usermodmap"
|
||||
fi
|
||||
|
||||
# Run xinitrc.d setup scripts
|
||||
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
|
||||
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
|
||||
[ -x "$f" ] && . "$f"
|
||||
done
|
||||
unset f
|
||||
fi
|
||||
|
||||
#export QT_STYLE_OVERRIDE=kvantum
|
||||
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||
|
||||
# Statusbar loop
|
||||
~/suckless/slstatus/slstatus&
|
||||
|
||||
while true; do
|
||||
feh --randomize --no-fehbg --bg-scale "$HOME/wallpapers/"*.{jpeg,jpg,png}
|
||||
sleep 10m
|
||||
done &
|
||||
|
||||
pasystray &
|
||||
|
||||
##blueman-applet &
|
||||
|
||||
# In case of unwanted shadows, break glass:
|
||||
# https://www.reddit.com/r/suckless/comments/hzop00/dwm_how_to_remove_picomcompton_shadow_from/
|
||||
picom&
|
||||
|
||||
mpd&
|
||||
|
||||
#kitty --single-instance zsh -c 'task ready; zsh'&
|
||||
|
||||
exec ~/dev/linux-utils/loopdwm
|
|
@ -1 +0,0 @@
|
|||
Subproject commit ae315ded4dba10685dbbafbfa2ff3c1aefeb490d
|
178
zshrc
178
zshrc
|
@ -1,48 +1,22 @@
|
|||
# zshrc originaly inspired by ECP VIA's debian course file,
|
||||
# and David_5-1's numerous improvements
|
||||
#
|
||||
# Regularly improved and tweaked by lhark since 2015
|
||||
#
|
||||
# Uses the following plugins:
|
||||
# https://github.com/zsh-users/zsh-syntax-highlighting
|
||||
# https://github.com/zsh-users/zsh-autosuggestions
|
||||
# zshrc inspiré de celui de la formation debian de VIA
|
||||
# modifié par David_5_1
|
||||
# http://formation-debian.via.ecp.fr/
|
||||
# Ajouts depuis le wiki de archlinux http://wiki.archlinux.fr/Zsh
|
||||
# et depuis http://doc.ubuntu-fr.org/zsh
|
||||
# et depuis http://zsh.sourceforge.net/Guide/zshguide.html
|
||||
# utilisation de https://github.com/zsh-users/zsh-syntax-highlighting
|
||||
|
||||
# adapté et amélioré par lhark
|
||||
|
||||
# Uncomment this line for perfomance analysis
|
||||
#zmodload zsh/zprof
|
||||
|
||||
export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/sbin"
|
||||
# Get rc dir path
|
||||
#RC_PATH=$(dirname "$(readlink -f ${(%):-%x})")
|
||||
# https://stackoverflow.com/questions/9901210/bash-source0-equivalent-in-zsh#comment45012039_23259585
|
||||
RC_PATH=$(dirname "$(realpath -- "${(%):-%x}")")
|
||||
export PATH="$PATH:$RC_PATH/bin:~/bin:/opt/cuda/bin:~/.cargo/bin:~/go/bin"
|
||||
|
||||
# Prevent golang from littering $HOME and force it to follow XDG
|
||||
export GOPATH="$HOME/.local/share/go"
|
||||
|
||||
# Use all cores when building with cmake (using number of physical cores)
|
||||
# https://unix.stackexchange.com/a/377945/248368
|
||||
# TODO Check if we should use virtual cores count instead
|
||||
cores="$(cat /proc/cpuinfo | grep -c "cpu cores")"
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL="$cores"
|
||||
|
||||
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:~/bin:/opt/cuda/bin:~/.cargo/bin:~/go/bin
|
||||
# Add ruby gems to path
|
||||
if which ruby >/dev/null && which gem >/dev/null; then
|
||||
PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
|
||||
fi
|
||||
# Add emscripten to path
|
||||
if [ -d "$HOME/emsdk" ]; then
|
||||
PATH="$PATH:~/emsdk:~/emsdk/node/12.9.1_64bit/bin:~/emsdk/fastcomp/emscripten" #:~/emsdk/fastcomp/emscripten/tools"
|
||||
fi
|
||||
export BROWSER='/usr/bin/w3m -T "text/html"'
|
||||
if which nvim > /dev/null 2>&1; then
|
||||
export EDITOR=/usr/bin/nvim
|
||||
else
|
||||
export EDITOR=/usr/bin/vim
|
||||
fi
|
||||
# Disable `less` history file
|
||||
export LESSHISTFILE='/dev/null'
|
||||
export GPG_TTY="$(tty)"
|
||||
# Prevent mime associations by wine
|
||||
export WINEPREFIX="$HOME/.wine"
|
||||
export WINEDLLOVERRIDES="winemenubuilder.exe=d"
|
||||
|
@ -50,8 +24,6 @@ export CUDA_ROOT=/opt/cuda
|
|||
# Android SDK setup
|
||||
export ANDROID_HOME="/opt/android-sdk"
|
||||
export PATH="$PATH:$ANDROID_HOME/tools/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"
|
||||
# Use Wayland when available
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
# Configuration for virtualenv
|
||||
export WORKON_HOME=$HOME/.virtualenvs
|
||||
|
@ -64,6 +36,17 @@ source /opt/ros/indigo/setup.zsh > /dev/null 2>&1
|
|||
export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages:$PYTHONPATH
|
||||
export PKG_CONFIG_PATH="/opt/ros/indigo/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
|
||||
#run ssh-agent
|
||||
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
|
||||
ssh-agent > ~/.ssh-agent-thing
|
||||
fi
|
||||
if [[ "$SSH_AGENT_PID" == "" ]]; then
|
||||
eval "$(<~/.ssh-agent-thing)"
|
||||
fi
|
||||
|
||||
# Get rc dir path
|
||||
RC_PATH=$(dirname "$(readlink -f ${(%):-%x})")
|
||||
|
||||
# Import utility functions
|
||||
# Colors needed for the prompt definition
|
||||
autoload -U colors
|
||||
|
@ -72,18 +55,65 @@ colors
|
|||
. "$RC_PATH/aliases"
|
||||
. "$RC_PATH/prompt"
|
||||
|
||||
# Detect if we have GNU coreutils or BSD
|
||||
if date --version > /dev/null 2>&1 ;then
|
||||
# Setup colors for GNU ls
|
||||
eval "$(dircolors -b)"
|
||||
fi
|
||||
|
||||
# Check for rc updates in the background
|
||||
(check_rc_update&) 2> /dev/null
|
||||
|
||||
# Check for system updates inthe background
|
||||
(check_sys_update&) 2> /dev/null
|
||||
|
||||
# Configuration for kubectl & helm
|
||||
#if [ $commands[kubectl] ]; then
|
||||
source <(kubectl completion zsh)
|
||||
#fi
|
||||
|
||||
export TILLER_NAMESPACE=gitlab-ci
|
||||
#if [ $commands[helm] ]; then
|
||||
source <(helm completion zsh)
|
||||
#fi
|
||||
|
||||
### TODO WHERE ARE THE ALIASES
|
||||
###########
|
||||
# Aliases #
|
||||
###########
|
||||
|
||||
alias acs='apt-cache search'
|
||||
alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars -h'
|
||||
alias ll='ls -lha'
|
||||
alias less='less --quiet'
|
||||
alias df='df --human-readable'
|
||||
alias du='du --human-readable'
|
||||
# alias mutt='mutt -y'
|
||||
alias upgrade='sudo apt-get update && sudo apt-get -dy dist-upgrade && sudo apt-get dist-upgrade'
|
||||
# alias -g GP='|grep '
|
||||
alias grep="grep --color"
|
||||
#alias ssh='ssh -A'
|
||||
# alias -s txt=cat
|
||||
alias rm='rm -I'
|
||||
alias ipa='ip -c route && echo && ip -c address'
|
||||
alias ipr='ip -c address && echo && ip -c route'
|
||||
alias which='which -a'
|
||||
# Le fameux cd ...etc
|
||||
alias -g ...='../..'
|
||||
alias -g ....='../../..'
|
||||
alias -g .....='../../../..'
|
||||
alias -g ......='../../../../..'
|
||||
alias -g .......='../../../../../..'
|
||||
alias -g ........='../../../../../../..'
|
||||
# Hackish tweaks
|
||||
alias steam-wine="WINEDEBUG=-all wine $WINEPREFIX/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe -no-dwrite -no-cef-sandbox >/dev/null 2>&1 &"
|
||||
alias pacaur='AURDEST=$HOME/aur pacaur'
|
||||
alias redwm='cd ~/aur/dwm-git; updpkgsums; makepkg -fi --noconfirm; killall dwm'
|
||||
alias minecraft='java -jar $HOME/.minecraft/launcher.jar'
|
||||
alias shuffle='mpv --shuffle --volume=50 --no-audio-display'
|
||||
alias steam="LD_PRELOAD='/usr/\$LIB/libstdc++.so.6 /usr/\$LIB/libgcc_s.so.1 /usr/\$LIB/libxcb.so.1 /usr/\$LIB/libgpg-error.so' /usr/bin/steam"
|
||||
alias surftor='http_proxy=socks5://127.0.0.1:9050/ surf'
|
||||
alias ytmp3='youtube-dl -x --audio-format mp3 --no-playlist -o "%(title)s.%(ext)s"'
|
||||
# Fix pour archlinux
|
||||
alias zbarcam='LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so zbarcam'
|
||||
alias gitprunelocal="git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d"
|
||||
alias gitprunelocalforce="git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -D"
|
||||
alias cantine="curl -s https://timechef.elior.com/api/restaurant/22/menus | jq -r '.[0].famillePlats[0].plats[].libelle'"
|
||||
|
||||
# Term specific hacks
|
||||
case $TERM in
|
||||
*kitty)
|
||||
|
@ -102,7 +132,8 @@ case $TERM in
|
|||
preexec () {
|
||||
print -n "\e]0;st - $1 - ${HOST} - ${PWD}\a"
|
||||
}
|
||||
alias ssh='TERM=xterm ssh -A'
|
||||
# alias ssh='TERM=xterm ssh -A'
|
||||
alias ssh='TERM=xterm ssh'
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -114,13 +145,16 @@ stty -ixon
|
|||
# ZSH options #
|
||||
###############
|
||||
|
||||
# man zshoptions
|
||||
|
||||
unsetopt rm_star_silent # Ask before running 'rm *' or 'rm path/*'
|
||||
unsetopt rm_star_silent # Demande confirmation pour 'rm *' -> ou 'rm path/*'
|
||||
unsetopt promptsubst # ZLE is handling prompt recalculation
|
||||
setopt clobber # Allow file overwrite with > instead of >|
|
||||
setopt chase_links # cd resolves symbolic links
|
||||
setopt hist_verify # check the result of !! before executing
|
||||
# (disabled) If there is an unambiguous prefix to insert on
|
||||
# the command line, that is done without a completion list being displayed
|
||||
#setopt list_ambiguous
|
||||
# >| doit être utilisé pour pouvoir écraser un fichier déjà existant ;
|
||||
# # le fichier ne sera pas écrasé avec '>'
|
||||
#unsetopt clobber
|
||||
setopt chase_links # Traite les liens symboliques comme il faut
|
||||
setopt hist_verify # !! n\'est pas exécuté directement
|
||||
setopt hist_ignore_all_dups # Only keep last version of duplicate command
|
||||
setopt sharehistory # Import new cmds from hist file & append typed cmds
|
||||
setopt hist_ignore_space # Ignore cmds with leading space
|
||||
|
@ -155,41 +189,36 @@ autoload -U zsh-mime-setup
|
|||
|
||||
unsetopt glob_dots # (disabled) Do not require a leading '.' in a filename to be matched explicitly.
|
||||
setopt auto_remove_slash # Auto remove slash at the end of autocomp when appropriate
|
||||
setopt complete_in_word # If the cursor is inside a word, completion is done from both ends
|
||||
setopt extended_glob # Treat '#', '~' and '^' chars as part of patterns for filenames, etc.
|
||||
setopt glob_complete # When the current word has a glob pattern, do not insert all the words resulting from the expansion
|
||||
unsetopt null_glob # Error when no glob match found, instead of deleting
|
||||
setopt completeinword # If the cursor is inside a word, completion is done from both ends
|
||||
setopt extendedglob # Treat '#', '~' and '^' chars as part of patterns for filenames, etc.
|
||||
setopt globcomplete # When the current word has a glob pattern, do not insert all the words resulting from the expansion
|
||||
setopt null_glob # Delete pattern when no match found, instead of erroring
|
||||
|
||||
# man zshmodules (zstyle)
|
||||
# man zshcompsys (styles)
|
||||
# man zshcompwid (COMPLETION MATCHING CONTROL)
|
||||
|
||||
#zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
|
||||
# Max errors allowed while attempting completion
|
||||
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
|
||||
zstyle ':completion:*' max-errors 3 numeric
|
||||
# Disable legacy completion
|
||||
zstyle ':completion:*' use-compctl false
|
||||
zstyle ':completion:*' auto-description 'specify: %d'
|
||||
#zstyle ':completion:*' completer _expand _complete _correct _approximate
|
||||
zstyle ':completion:*' completer _complete _correct _approximate
|
||||
zstyle ':completion:*' completer _expand _complete _correct _approximate
|
||||
zstyle ':completion:*' format 'Completing %d'
|
||||
zstyle ':completion:*' group-name ''
|
||||
# Start menu style completion if there are more than 2 matches
|
||||
zstyle ':completion:*' menu select=2
|
||||
eval "$(dircolors -b)"
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
zstyle ':completion:*' list-colors "=(#b) #([0-9]#)*=36=31"
|
||||
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
|
||||
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
|
||||
zstyle ':completion:*' menu select=long
|
||||
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
|
||||
zstyle ':completion:*' use-compctl false
|
||||
zstyle ':completion:*' verbose true
|
||||
# Add colors to the completion menu, eg. kill -9 <tab><tab>
|
||||
# Des couleurs pour la complétion cf kill -9 <tab><tab>
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31"
|
||||
zstyle ':completion:*:processes' command 'ps -au$USER -o pid,time,cmd|grep -v "ps -au$USER -o pid,time,cmd"'
|
||||
# Separate man page sections. Neat.
|
||||
zstyle ':completion:*:manuals' separate-sections true
|
||||
# Create completions cache
|
||||
# Useful for slow completions like with package managers
|
||||
# Crée un cache des complétion possibles
|
||||
# très utile pour les complétion qui demandent beaucoup de temps
|
||||
# comme la recherche d'un paquet aptitude install moz<tab>
|
||||
zstyle ':completion:*' use-cache on
|
||||
zstyle ':completion:*' cache-path ~/.zs
|
||||
# Enable ssh completion for kitty ssh
|
||||
|
@ -213,10 +242,10 @@ zle -N zle-keymap-select
|
|||
|
||||
bindkey -v # Vim type keybinds for ZLE (line editing)
|
||||
|
||||
# Handling of special keys
|
||||
# CTRL+V then press the key to display the code
|
||||
# Gestion des touches spéciales pour mon clavier
|
||||
# Pour connaître le code d'une touche, exécuter «cat»
|
||||
typeset -A key
|
||||
# CTRL + arrows keys
|
||||
# CTRL + flèches
|
||||
bindkey ";5D" beginning-of-line
|
||||
bindkey ";5C" end-of-line
|
||||
bindkey ";5A" up-line-or-history
|
||||
|
@ -234,20 +263,17 @@ bindkey "^[[6~" history-beginning-search-forward
|
|||
# CTRL + Page UP/Down
|
||||
bindkey "^[[5;5~" beginning-of-buffer-or-history
|
||||
bindkey "^[[6;5~" end-of-buffer-or-history
|
||||
# Begin / End (numpad)
|
||||
# Origine / Fin (pavé numérique)
|
||||
bindkey "^[[H" beginning-of-line
|
||||
bindkey "^[[4~" end-of-line
|
||||
# Begin / End
|
||||
## Origine / Fin
|
||||
bindkey "^[OH" beginning-of-line
|
||||
bindkey "^[OF" end-of-line
|
||||
bindkey "^[[F" end-of-line
|
||||
# Delete
|
||||
bindkey "[3~" delete-char
|
||||
# Shift-Tab
|
||||
bindkey "^[[Z" reverse-menu-complete
|
||||
|
||||
|
||||
ZSH_AUTOSUGGEST_STRATEGY=(history)
|
||||
source "${RC_PATH}/zsh-autosuggestions/zsh-autosuggestions.zsh"
|
||||
# ZSH syntax highlighting : /!\ keep at the bottom !
|
||||
source "${RC_PATH}/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh"
|
||||
|
|
Loading…
Reference in a new issue