mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5fec4b75c | ||
|
|
7e7b615b0e | ||
|
|
d9733ad84f | ||
|
|
1e93e6b89f | ||
|
|
32b129c434 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,4 @@
|
|||||||
installed-prefs
|
installed-prefs
|
||||||
.installed-prefs
|
|
||||||
*.swp
|
*.swp
|
||||||
*~
|
*~
|
||||||
*.bak
|
*.bak
|
||||||
|
|||||||
31
.gitmodules
vendored
31
.gitmodules
vendored
@@ -1,31 +0,0 @@
|
|||||||
[submodule "dotfiles/vim/pack/matir/opt/solarized8"]
|
|
||||||
path = dotfiles/vim/pack/matir/opt/solarized8
|
|
||||||
url = https://github.com/lifepillar/vim-solarized8.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/surround"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/surround
|
|
||||||
url = https://github.com/tpope/vim-surround.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/editorconfig"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/editorconfig
|
|
||||||
url = https://github.com/editorconfig/editorconfig-vim.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/fugitive"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/fugitive
|
|
||||||
url = https://github.com/tpope/vim-fugitive
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/ctrlp"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/ctrlp
|
|
||||||
url = https://github.com/ctrlpvim/ctrlp.vim.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/vim-go"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/vim-go
|
|
||||||
url = https://github.com/fatih/vim-go.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/tmux/tmux-logging"]
|
|
||||||
path = dotfiles/tmux/tmux-logging
|
|
||||||
url = https://github.com/tmux-plugins/tmux-logging.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/vim/pack/matir/start/syntastic"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/syntastic
|
|
||||||
url = https://github.com/vim-syntastic/syntastic.git
|
|
||||||
11
README.md
11
README.md
@@ -1,5 +1,5 @@
|
|||||||
### About ###
|
|
||||||
|
|
||||||
|
### About ###
|
||||||
This is a repository of configuration files that I like to have on all the
|
This is a repository of configuration files that I like to have on all the
|
||||||
machines that I use. I can just clone the repository and run "repo/setup.sh"
|
machines that I use. I can just clone the repository and run "repo/setup.sh"
|
||||||
and get most things setup the way I like them.
|
and get most things setup the way I like them.
|
||||||
@@ -14,14 +14,12 @@ This now uses [git-crypt](https://github.com/AGWA/git-crypt) to protect
|
|||||||
I still wouldn't check in anything terribly sensitive, like private keys.
|
I still wouldn't check in anything terribly sensitive, like private keys.
|
||||||
|
|
||||||
### Usefulness ###
|
### Usefulness ###
|
||||||
|
|
||||||
Mostly I post this to github so I can quickly grab the things I want, but it
|
Mostly I post this to github so I can quickly grab the things I want, but it
|
||||||
might also be useful to others. Feel free to raise an issue if you have any
|
might also be useful to others. Feel free to raise an issue if you have any
|
||||||
questions. I don't anticipating taking merge requests -- make your own
|
questions. I don't anticipating taking merge requests -- make your own
|
||||||
dotfiles. ;)
|
dotfiles. ;)
|
||||||
|
|
||||||
### Options ###
|
### Options ###
|
||||||
|
|
||||||
```
|
```
|
||||||
BASEDIR: Where the skel framework is installed. Defaults to $HOME/.skel
|
BASEDIR: Where the skel framework is installed. Defaults to $HOME/.skel
|
||||||
MINIMAL: Don't do things that require git clones or installation of anything
|
MINIMAL: Don't do things that require git clones or installation of anything
|
||||||
@@ -33,10 +31,3 @@ INSTALL_PKGS: Install common packages, if on a Debian-like system.
|
|||||||
(Defaults to opposite of $MINIMAL.)
|
(Defaults to opposite of $MINIMAL.)
|
||||||
SAVE: Save the install options to ${BASEDIR}/installed-prefs
|
SAVE: Save the install options to ${BASEDIR}/installed-prefs
|
||||||
```
|
```
|
||||||
|
|
||||||
### TODO ###
|
|
||||||
|
|
||||||
- [X] Re-do the installation of packages.
|
|
||||||
- [X] Make manual installation of sets easy/possible.
|
|
||||||
- [X] Make missing packages not cause a full set failure.
|
|
||||||
- [X] Allow comments and blank lines. in packages
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
|
|
||||||
if test -f /etc/apt/apt.conf.d/90-proxy ; then
|
|
||||||
echo "Looks already setup."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >/etc/apt/proxy-detect <<'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
PROXY=192.168.60.10:3142
|
|
||||||
|
|
||||||
if ! test -x /bin/nc ; then
|
|
||||||
echo DIRECT
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if nc -w 2 -z ${PROXY/:/ } ; then
|
|
||||||
echo ${PROXY}
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo DIRECT
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod 755 /etc/apt/proxy-detect
|
|
||||||
|
|
||||||
cat >/etc/apt/apt.conf.d/90-proxy <<'EOF'
|
|
||||||
Acquire::http::Proxy-Auto-Detect "/etc/apt/proxy-detect";
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo "Setup APT Proxying."
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
apt-get install -y \
|
|
||||||
i3 i3lock xss-lock rxvt-unicode-256color fonts-inconsolata scrot \
|
|
||||||
xautolock xbacklight i3status dex libnotify-bin
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
"""
|
|
||||||
Launch desktop files from ~/.config/autostart
|
|
||||||
"""
|
|
||||||
|
|
||||||
import glob
|
|
||||||
import os.path
|
|
||||||
from gi.repository import Gio
|
|
||||||
|
|
||||||
dirname = os.path.expanduser('~/.config/autostart')
|
|
||||||
for desktop in glob.glob(os.path.join(dirname, '*.desktop')):
|
|
||||||
try:
|
|
||||||
fp = Gio.DesktopAppInfo.new_from_filename(desktop)
|
|
||||||
except TypeError:
|
|
||||||
continue
|
|
||||||
fp.launch_uris([], None)
|
|
||||||
@@ -26,5 +26,5 @@ function verify_dest {
|
|||||||
|
|
||||||
verify_dest "$DEST"
|
verify_dest "$DEST"
|
||||||
|
|
||||||
exec nice rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
||||||
--delete-excluded "${HOME}/" "$DEST"
|
--delete-excluded "${HOME}/" "$DEST"
|
||||||
|
|||||||
32
bin/burp
Executable file
32
bin/burp
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
_start_burp() {
|
||||||
|
setopt localoptions nullglob numeric_glob_sort
|
||||||
|
local NO_DOWNLOAD
|
||||||
|
local JAR
|
||||||
|
if (( ${+argv[(r)*no-download]} )) ; then
|
||||||
|
NO_DOWNLOAD=1
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
NO_DOWNLOAD=0
|
||||||
|
fi
|
||||||
|
JAR=(${HOME}/bin/burpsuite*jar(On[1])) 2>/dev/null
|
||||||
|
if [ -z $JAR ] ; then
|
||||||
|
if (( $NO_DOWNLOAD )) ; then
|
||||||
|
echo "Not downloading, --no-download specified" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "Burp JAR not found in ${HOME}/bin. Attempting to download free edition." >&2
|
||||||
|
wget -q --content-disposition --no-server-response -P ${HOME}/bin \
|
||||||
|
https://portswigger.net/DownloadUpdate.ashx\?Product\=Free
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
echo "Download failed." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
burp --no-download "$@"
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
java -jar ${JAR} "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
_start_burp
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -u
|
|
||||||
|
|
||||||
CHEF_FILE=${HOME}/tools/cyberchef/cyberchef.html
|
|
||||||
|
|
||||||
if [ ! -f ${CHEF_FILE} ] ; then
|
|
||||||
${HOME}/bin/install_tool cyberchef
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec xdg-open ${CHEF_FILE}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ue
|
|
||||||
|
|
||||||
FILENAME=${1}
|
|
||||||
BENCHMARK_SIZE=${BENCHMARK_SIZE:-1000m}
|
|
||||||
|
|
||||||
if [ -f ${FILENAME} ] ; then
|
|
||||||
echo "File ${FILENAME} already exists!" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
trap "test -f ${FILENAME} && rm -f ${FILENAME}" EXIT
|
|
||||||
|
|
||||||
fio --loops=5 --size=${BENCHMARK_SIZE} --filename=${FILENAME} \
|
|
||||||
--stonewall --ioengine=libaio --direct=1 \
|
|
||||||
--name=Seqread --bs=1m --rw=read \
|
|
||||||
--name=Seqwrite --bs=1m --rw=write \
|
|
||||||
--name=512Kread --bs=512k --rw=randread \
|
|
||||||
--name=512Kwrite --bs=512k --rw=randwrite \
|
|
||||||
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread \
|
|
||||||
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Launch chrome for burp
|
|
||||||
exec /usr/bin/google-chrome-beta --ignore-certificate-errors --user-data-dir=${HOME}/.config/chrome-pentest --proxy-server=127.0.0.1:8080
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
LOCKER="i3lock -c 000000"
|
|
||||||
# intentionally want word splitting below
|
|
||||||
/usr/bin/xss-lock -- ${LOCKER} &
|
|
||||||
exec /usr/bin/xautolock \
|
|
||||||
-time 5 \
|
|
||||||
-detectsleep \
|
|
||||||
-locker "${LOCKER}" \
|
|
||||||
-notify 30 \
|
|
||||||
-notifier "notify-send -u critical -t 10000 -- 'LOCKING SCREEN IN 30 SECONDS'"
|
|
||||||
270
bin/install_tool
270
bin/install_tool
@@ -1,270 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ue
|
|
||||||
|
|
||||||
REINSTALL=0
|
|
||||||
PACKAGES=1
|
|
||||||
|
|
||||||
while getopts -- "-:" a ; do
|
|
||||||
case "${a}" in
|
|
||||||
-)
|
|
||||||
case "${OPTARG}" in
|
|
||||||
reinstall)
|
|
||||||
REINSTALL=1
|
|
||||||
;;
|
|
||||||
no-packages)
|
|
||||||
PACKAGES=0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown long option ${OPTARG}" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
shift $((OPTIND-1))
|
|
||||||
|
|
||||||
if [ $# -ne 1 ] ; then
|
|
||||||
echo "Usage: ${0} <tool>" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
TOOL=${1}
|
|
||||||
|
|
||||||
function die {
|
|
||||||
echo "$@" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function install_pkgs {
|
|
||||||
if [ ${PACKAGES} -eq 0 ] ; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
# TODO: check if packages are already installed
|
|
||||||
if [ "$(id -u)" -ne "0" ] ; then
|
|
||||||
sudo apt-get -y install "$@" || (
|
|
||||||
echo -n "Unable to install packages, please ensure these " >/dev/stderr
|
|
||||||
echo "are installed, then run with --no-packages." >/dev/stderr
|
|
||||||
echo "$@"
|
|
||||||
false )
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
apt-get -y install "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
function download {
|
|
||||||
SRC=${1}
|
|
||||||
DST=${2}
|
|
||||||
echo -n "Downloading ${SRC} to ${DST}..." >&2
|
|
||||||
# TODO: consider curl instead?
|
|
||||||
wget --no-server-response -q -O "${DST}" --content-disposition "${SRC}"
|
|
||||||
echo " done." >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_sudo {
|
|
||||||
sudo -l >/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_bin_symlink {
|
|
||||||
local TARGET NAME BINDIR
|
|
||||||
TARGET="${1}"
|
|
||||||
NAME="${2:-$(basename ${1})}"
|
|
||||||
BINDIR="${HOME}/bin/tools/"
|
|
||||||
mkdir -p -- "${BINDIR}"
|
|
||||||
ln -sf "${DESTDIR}/${TARGET}" "${BINDIR}/${NAME}"
|
|
||||||
}
|
|
||||||
|
|
||||||
mkdir -p "${HOME}/tools"
|
|
||||||
|
|
||||||
DESTDIR="${HOME}/tools/${TOOL}"
|
|
||||||
|
|
||||||
function makedest {
|
|
||||||
if [ -d "${DESTDIR}" ] ; then
|
|
||||||
if [ "${REINSTALL}" -eq 1 ] ; then
|
|
||||||
rm -ri "${DESTDIR}"
|
|
||||||
else
|
|
||||||
echo "${DESTDIR} exists but not reinstalling." >/dev/stderr
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
mkdir -p "${DESTDIR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
function makedest_or_die {
|
|
||||||
makedest || die "Aborting."
|
|
||||||
}
|
|
||||||
|
|
||||||
# Begin main tool selection
|
|
||||||
case ${TOOL} in
|
|
||||||
john)
|
|
||||||
makedest_or_die
|
|
||||||
install_pkgs libssl-dev git build-essential yasm libgmp-dev libpcap-dev \
|
|
||||||
pkg-config libbz2-dev libopenmpi-dev openmpi-bin libnss3-dev \
|
|
||||||
libkrb5-dev libgmp-dev
|
|
||||||
jtemp=$(mktemp -d)
|
|
||||||
git clone https://github.com/magnumripper/JohnTheRipper.git "${jtemp}/john"
|
|
||||||
cd "${jtemp}/john/src"
|
|
||||||
./configure && make -sj2
|
|
||||||
cp -r "${jtemp}"/john/run/* "${DESTDIR}"
|
|
||||||
rm -rf "${jtemp}"
|
|
||||||
# Persistent files
|
|
||||||
mkdir -p "${HOME}/.john"
|
|
||||||
touch "${HOME}/.john/john.pot"
|
|
||||||
ln -sf "${HOME}/.john/*" "${DESTDIR}"
|
|
||||||
add_bin_symlink john
|
|
||||||
;;
|
|
||||||
wordlists)
|
|
||||||
makedest
|
|
||||||
download \
|
|
||||||
http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2 \
|
|
||||||
"${DESTDIR}/rockyou.txt.bz2"
|
|
||||||
bunzip2 "${DESTDIR}/rockyou.txt.bz2"
|
|
||||||
download \
|
|
||||||
http://downloads.skullsecurity.org/passwords/phpbb.txt.bz2 \
|
|
||||||
"${DESTDIR}/phpbb.txt.bz2"
|
|
||||||
bunzip2 "${DESTDIR}/phpbb.txt.bz2"
|
|
||||||
download \
|
|
||||||
http://downloads.skullsecurity.org/passwords/hak5.txt.bz2 \
|
|
||||||
"${DESTDIR}/hak5.txt.bz2"
|
|
||||||
bunzip2 "${DESTDIR}/hak5.txt.bz2"
|
|
||||||
;;
|
|
||||||
seclists)
|
|
||||||
git clone https://github.com/danielmiessler/SecLists.git "${DESTDIR}"
|
|
||||||
;;
|
|
||||||
werdlists)
|
|
||||||
git clone --depth 1 https://github.com/decal/werdlists.git "${DESTDIR}"
|
|
||||||
;;
|
|
||||||
gcloud)
|
|
||||||
makedest_or_die
|
|
||||||
gbase="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"
|
|
||||||
# TODO: find a way to make this version independent
|
|
||||||
gsdk="google-cloud-sdk-209.0.0-linux-x86_64.tar.gz"
|
|
||||||
download "${gbase}${gsdk}" /tmp/gcloud.tar.gz
|
|
||||||
tar zxf /tmp/gcloud.tar.gz --strip-components=1 -C "${DESTDIR}"
|
|
||||||
rm /tmp/gcloud.tar.gz
|
|
||||||
add_bin_symlink bin/gcloud
|
|
||||||
;;
|
|
||||||
android-sdk)
|
|
||||||
# TODO: find a way to make this version independent
|
|
||||||
asdk="https://dl.google.com/android/repository/tools_r25.2.3-linux.zip"
|
|
||||||
download ${asdk} /tmp/android-tools.zip
|
|
||||||
unzip -d "${DESTDIR}" /tmp/android-tools.zip
|
|
||||||
rm /tmp/android-tools.zip
|
|
||||||
# Install components
|
|
||||||
"${DESTDIR}/tools/bin/sdkmanager" "emulator" "platform-tools"
|
|
||||||
;;
|
|
||||||
burp)
|
|
||||||
# Install latest burp free
|
|
||||||
makedest
|
|
||||||
if ! download \
|
|
||||||
https://portswigger.net/DownloadUpdate.ashx\?Product=Free \
|
|
||||||
"${DESTDIR}/burp-free.jar" ; then
|
|
||||||
echo "Download failed." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -x /usr/bin/jarwrapper ] ; then
|
|
||||||
# We have binfmt support for jar, so add to bin
|
|
||||||
chmod +x "${DESTDIR}"/*.jar
|
|
||||||
ln -sf "${DESTDIR}"/*.jar "${HOME}/bin/burp"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
mitmproxy)
|
|
||||||
makedest_or_die
|
|
||||||
ver=$(python -c 'import urllib2; import json; print(json.load(urllib2.urlopen("https://api.github.com/repos/mitmproxy/mitmproxy/releases/latest"))["name"].replace("v",""))')
|
|
||||||
download \
|
|
||||||
"https://snapshots.mitmproxy.org/${ver}/mitmproxy-${ver}-linux.tar.gz" \
|
|
||||||
/tmp/mitmproxy.tar.gz
|
|
||||||
tar zx -C "${DESTDIR}" -f /tmp/mitmproxy.tar.gz
|
|
||||||
rm /tmp/mitmproxy.tar.gz
|
|
||||||
add_bin_symlink mitmproxy
|
|
||||||
add_bin_symlink mitmweb
|
|
||||||
;;
|
|
||||||
esp)
|
|
||||||
makedest_or_die
|
|
||||||
src="https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz"
|
|
||||||
download ${src} /tmp/esp32.tar.gz
|
|
||||||
tar zx -C "${DESTDIR}" -f /tmp/esp32.tar.gz
|
|
||||||
rm /tmp/esp32.tar.gz
|
|
||||||
git clone --recursive https://github.com/espressif/esp-idf.git "${DESTDIR}/esp-idf"
|
|
||||||
;;
|
|
||||||
dex2jar)
|
|
||||||
makedest_or_die
|
|
||||||
src="https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip"
|
|
||||||
download ${src} /tmp/dex2jar.zip
|
|
||||||
tmpd=$(mktemp -d)
|
|
||||||
unzip -d "${tmpd}" /tmp/dex2jar.zip
|
|
||||||
mv "${tmpd}"/* "${DESTDIR}"
|
|
||||||
rm /tmp/dex2jar.zip
|
|
||||||
rm -rf "${tmpd}"
|
|
||||||
rm "${DESTDIR}"/*.bat
|
|
||||||
chmod +x "${DESTDIR}"/*.sh
|
|
||||||
;;
|
|
||||||
proxmark3)
|
|
||||||
install_pkgs p7zip git build-essential libreadline5 libreadline-dev \
|
|
||||||
libusb-0.1-4 libusb-dev libqt4-dev perl pkg-config wget libncurses5-dev \
|
|
||||||
gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
|
||||||
src="https://github.com/Proxmark/proxmark3.git"
|
|
||||||
git clone "${src}" "${DESTDIR}"
|
|
||||||
cd "${DESTDIR}"
|
|
||||||
make -sj2
|
|
||||||
check_sudo && sudo /bin/sh -c \
|
|
||||||
"cp -rf driver/78-mm-usb-device-blacklist.rules \
|
|
||||||
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules &&
|
|
||||||
udevadm control --reload-rules"
|
|
||||||
;;
|
|
||||||
cyberchef)
|
|
||||||
makedest
|
|
||||||
src=$(python -c 'import urllib2; import json; print(filter(lambda x: x["name"]=="cyberchef.htm", json.load(urllib2.urlopen("https://api.github.com/repos/gchq/CyberChef/releases/latest"))["assets"])[0]["browser_download_url"])')
|
|
||||||
download "${src}" "${DESTDIR}/cyberchef.html"
|
|
||||||
;;
|
|
||||||
apktool)
|
|
||||||
makedest_or_die
|
|
||||||
download \
|
|
||||||
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool \
|
|
||||||
"${DESTDIR}/apktool"
|
|
||||||
download \
|
|
||||||
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.3.3.jar \
|
|
||||||
"${DESTDIR}/apktool.jar"
|
|
||||||
chmod +x "${DESTDIR}/apktool"
|
|
||||||
add_bin_symlink apktool
|
|
||||||
;;
|
|
||||||
ptf)
|
|
||||||
makedest_or_die
|
|
||||||
src="https://github.com/trustedsec/ptf.git"
|
|
||||||
git clone "${src}" "${DESTDIR}"
|
|
||||||
;;
|
|
||||||
pwndbg)
|
|
||||||
if ! command -v gdb > /dev/null 2>&1 ; then
|
|
||||||
echo 'No gdb available!' >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
git clone --depth 1 -b stable https://github.com/pwndbg/pwndbg.git "${DESTDIR}"
|
|
||||||
PY_PACKAGES=${DESTDIR}/vendor
|
|
||||||
mkdir -p "${PY_PACKAGES}"
|
|
||||||
PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(".".join(platform.python_version_tuple()[:2]))')
|
|
||||||
PYTHON=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')
|
|
||||||
PYTHON="${PYTHON}${PYVER}"
|
|
||||||
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -Ur "${DESTDIR}/requirements.txt"
|
|
||||||
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -U capstone unicorn
|
|
||||||
# capstone package is broken
|
|
||||||
cp "${PY_PACKAGES}/usr/lib/*/dist-packages/capstone/libcapstone.so" "${PY_PACKAGES}/capstone"
|
|
||||||
;;
|
|
||||||
gef)
|
|
||||||
makedest_or_die
|
|
||||||
if ! command -v gdb > /dev/null 2>&1 ; then
|
|
||||||
echo 'No gdb available!' >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
download \
|
|
||||||
https://github.com/hugsy/gef/raw/master/gef.py \
|
|
||||||
"${DESTDIR}/gef.py"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown tool: ${TOOL}" >/dev/stderr
|
|
||||||
echo "Options:" >/dev/stderr
|
|
||||||
awk 'BEGIN {s=0;FS=")"};/main tool selection/{s=1};/^\s+\w+)$/{if(s==1){print $1}}' "$0" | sort | while read -r opt; do
|
|
||||||
echo -e "\\t${opt}" >/dev/stderr
|
|
||||||
done
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,17 +1,28 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
export NAME=$(basename "$0")
|
export NAME=$(basename "$0")
|
||||||
export BASE="/opt/metasploit-framework" # TODO: search this path
|
export BASE="/opt/metasploit" # TODO: search this path
|
||||||
unset GEM_PATH
|
|
||||||
|
|
||||||
if [ -f "${BASE}/bin/${NAME}" ] ; then
|
# Autogen'd
|
||||||
exec "${BASE}/bin/${NAME}" "$@"
|
. ${BASE}/scripts/setenv.sh
|
||||||
|
|
||||||
|
# Use Pro's bundled gems instead of the gemcache
|
||||||
|
export MSF_BUNDLE_GEMS=0
|
||||||
|
export BUNDLE_GEMFILE=${BASE}/apps/pro/Gemfile
|
||||||
|
|
||||||
|
# Set a flag so Gemfile can limit gems
|
||||||
|
export FRAMEWORK_FLAG=true
|
||||||
|
|
||||||
|
export MSF_DATABASE_CONFIG=${BASE}/apps/pro/ui/config/database.yml
|
||||||
|
export TERMINFO=${BASE}/common/share/terminfo/
|
||||||
|
|
||||||
|
# Check for ruby scripts such as msfconsole directly to avoid having to add
|
||||||
|
# msf3 to the path.
|
||||||
|
if [ -f "${BASE}/apps/pro/msf3/${NAME}" ]; then
|
||||||
|
exec ${BASE}/apps/pro/msf3/${NAME} "$@"
|
||||||
|
fi
|
||||||
|
if [ -f "${BASE}/apps/pro/msf3/tools/exploit/${NAME}.rb" ]; then
|
||||||
|
exec ${BASE}/apps/pro/msf3/tools/exploit/${NAME}.rb "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "${BASE}/embedded/framework/tools/exploit/${NAME}.rb" ]; then
|
exec ${NAME} "$@"
|
||||||
exec ${BASE}/embedded/bin/ruby \
|
|
||||||
"${BASE}/embedded/framework/tools/exploit/${NAME}.rb" "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Couldn't find script." >&2
|
|
||||||
exit 1
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ $# -lt 1 ] ; then
|
|
||||||
echo "Usage: $0 <kvm|vbox>" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ `whoami` != "root" ] ; then
|
|
||||||
if which sudo >/dev/null 2>&1 ; then
|
|
||||||
sudo $0 $*
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo "Sorry, this requires root." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" == "kvm" ] ; then
|
|
||||||
/etc/init.d/virtualbox stop
|
|
||||||
modprobe kvm
|
|
||||||
modprobe kvm_intel
|
|
||||||
elif [ "$1" == "vbox" ] ; then
|
|
||||||
rmmod kvm_intel
|
|
||||||
rmmod kvm
|
|
||||||
/etc/init.d/virtualbox start
|
|
||||||
else
|
|
||||||
echo 'WTF?' >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"background-color": "rgba(0, 43, 54, 1)",
|
|
||||||
"cursor-color": "rgba(238, 232, 213, 0.5)",
|
|
||||||
"color-palette-overrides": {
|
|
||||||
"0": "#073642",
|
|
||||||
"1": "#dc322f",
|
|
||||||
"2": "#859900",
|
|
||||||
"3": "#b58900",
|
|
||||||
"4": "#268bd2",
|
|
||||||
"5": "#d33682",
|
|
||||||
"6": "#2aa198",
|
|
||||||
"7": "#eee8d5",
|
|
||||||
"8": "#002b36",
|
|
||||||
"9": "#cb4b16",
|
|
||||||
"10": "#586e75",
|
|
||||||
"11": "#657b83",
|
|
||||||
"12": "#839496",
|
|
||||||
"13": "#6c71c4",
|
|
||||||
"14": "#93a1a1",
|
|
||||||
"15": "#fdf6e3"
|
|
||||||
},
|
|
||||||
"font-family": "\"Inconsolata\", \"DejaVu Sans Mono\", \"Noto Sans Mono\", \"Everson Mono\", FreeMono, Menlo, Terminal, monospace",
|
|
||||||
"font-size": "15",
|
|
||||||
"foreground-color": "rgba(238, 232, 213, 1)",
|
|
||||||
"user-css": "https://cdn.jsdelivr.net/gh/wernight/powerline-web-fonts@ba4426cb0c0b05eb6cb342c7719776a41e1f2114/PowerlineFonts.css"
|
|
||||||
}
|
|
||||||
18
clone.sh
18
clone.sh
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ue
|
|
||||||
|
|
||||||
# Script to clone and install
|
|
||||||
|
|
||||||
if ! command -v git >/dev/null 2>&1 ; then
|
|
||||||
( if [ "$EUID" != 0 ] ; then
|
|
||||||
sudo apt install -y git
|
|
||||||
else
|
|
||||||
apt install -y git
|
|
||||||
fi ) || ( echo 'Failed to install git!' >/dev/stderr; false)
|
|
||||||
fi
|
|
||||||
|
|
||||||
git clone https://github.com/Matir/skel.git ${HOME}/.skel
|
|
||||||
|
|
||||||
${HOME}/.skel/install.sh
|
|
||||||
${HOME}/.skel/install.sh packages minimal
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
[media-keys]
|
|
||||||
screensaver=['<Primary><Alt>l', 'XF86ScreenSaver']
|
|
||||||
|
|
||||||
[wm]
|
|
||||||
move-to-workspace-1=['<Shift><Super>exclam']
|
|
||||||
move-to-workspace-2=['<Shift><Super>at']
|
|
||||||
move-to-workspace-3=['<Shift><Super>numbersign']
|
|
||||||
move-to-workspace-4=['<Shift><Super>dollar']
|
|
||||||
move-to-workspace-5=['<Shift><Super>percent']
|
|
||||||
move-to-workspace-6=['<Shift><Super>asciicircum']
|
|
||||||
move-to-workspace-7=['<Shift><Super>ampersand']
|
|
||||||
move-to-workspace-8=['<Shift><Super>asterisk']
|
|
||||||
move-to-workspace-9=['<Shift><Super>parenleft']
|
|
||||||
switch-to-workspace-4=['<Super>4']
|
|
||||||
switch-to-workspace-1=['<Super>1']
|
|
||||||
switch-to-workspace-10=['<Super>0']
|
|
||||||
switch-to-workspace-3=['<Super>3']
|
|
||||||
switch-to-workspace-8=['<Super>8']
|
|
||||||
switch-to-workspace-5=['<Super>5']
|
|
||||||
move-to-workspace-10=['<Shift><Super>parenright']
|
|
||||||
switch-to-workspace-2=['<Super>2']
|
|
||||||
switch-to-workspace-9=['<Super>9']
|
|
||||||
switch-to-workspace-6=['<Super>6']
|
|
||||||
switch-to-workspace-7=['<Super>7']
|
|
||||||
@@ -6,10 +6,6 @@ if [ `whoami` != "root" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
BASEDIR=`dirname $0`
|
BASEDIR=`dirname $0`
|
||||||
if ! test -f ${BASEDIR}/keys/gpg/kali-repo.key ; then
|
|
||||||
echo "Couldn't find key, are you in the right place?" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >/etc/apt/sources.list.d/kali.list <<KALI_EOF
|
cat >/etc/apt/sources.list.d/kali.list <<KALI_EOF
|
||||||
deb http://http.kali.org/kali kali-rolling main contrib non-free
|
deb http://http.kali.org/kali kali-rolling main contrib non-free
|
||||||
|
|||||||
@@ -1,113 +0,0 @@
|
|||||||
Xcursor.size: 16
|
|
||||||
|
|
||||||
!!!
|
|
||||||
! Xft for fonts
|
|
||||||
!!!
|
|
||||||
!Xft.dpi: 144
|
|
||||||
Xft.antialias: true
|
|
||||||
Xft.lcdfilter: lcddefault
|
|
||||||
Xft.rgba: rgb
|
|
||||||
Xft.hinting: true
|
|
||||||
Xft.hintstyle: hintslight
|
|
||||||
Xft.autohint: 0
|
|
||||||
|
|
||||||
!!!
|
|
||||||
! Solarized urxvt
|
|
||||||
!!!
|
|
||||||
URxvt.depth: 32
|
|
||||||
URxvt.geometry: 90x30
|
|
||||||
URxvt.transparent: false
|
|
||||||
URxvt.fading: 0
|
|
||||||
URxvt.urgentOnBell: true
|
|
||||||
URxvt.visualBell: false
|
|
||||||
URxvt.loginShell: true
|
|
||||||
URxvt.saveLines: 50000
|
|
||||||
URxvt.internalBorder: 2
|
|
||||||
URxvt.lineSpace: 0
|
|
||||||
URxvt.iso14755: false
|
|
||||||
|
|
||||||
! Fonts
|
|
||||||
URxvt.font: xft:inconsolata:pixelsize=17,xft:monospace:size=12
|
|
||||||
|
|
||||||
! Fix font space
|
|
||||||
URxvt.letterSpace: -1
|
|
||||||
|
|
||||||
! Scrollbar and scrolling
|
|
||||||
URxvt.scrollStyle: rxvt
|
|
||||||
URxvt.scrollBar: false
|
|
||||||
! do not scroll with output
|
|
||||||
URxvt.scrollTtyOutput: false
|
|
||||||
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
|
|
||||||
URxvt.scrollWithBuffer: true
|
|
||||||
! scroll back to the bottom on keypress
|
|
||||||
URxvt.scrollTtyKeypress: true
|
|
||||||
|
|
||||||
! Allow apps to manage their own secondary screen
|
|
||||||
URxvt.secondaryScreen: 1
|
|
||||||
URxvt.secondaryScroll: 0
|
|
||||||
|
|
||||||
! Perl extensions
|
|
||||||
URxvt.perl-ext-common: default,matcher,font-size,eval
|
|
||||||
URxvt.matcher.button: 1
|
|
||||||
URxvt.urlLauncher: /usr/bin/xdg-open
|
|
||||||
URxvt.url-launcher: /usr/bin/xdg-open
|
|
||||||
|
|
||||||
! Copy/Paste Stuff
|
|
||||||
URxvt.keysym.Shift-Control-V: eval:paste_clipboard
|
|
||||||
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
|
|
||||||
|
|
||||||
! Cursor
|
|
||||||
URxvt.cursorBlink: true
|
|
||||||
URxvt.cursorUnderline: false
|
|
||||||
|
|
||||||
! Pointer
|
|
||||||
URxvt.pointerBlank: true
|
|
||||||
|
|
||||||
! Disable printing the terminal contents when pressing PrintScreen.
|
|
||||||
URxvt.print-pipe: "cat > /dev/null"
|
|
||||||
|
|
||||||
!!! Solarized colors begin
|
|
||||||
! base03
|
|
||||||
URxvt.background: #002b36
|
|
||||||
! base0
|
|
||||||
URxvt.foreground: #839496
|
|
||||||
! base03
|
|
||||||
URxvt.fadeColor: #002b36
|
|
||||||
! base1
|
|
||||||
URxvt.cursorColor: #93a1a1
|
|
||||||
! base01
|
|
||||||
URxvt.pointerColorBackground: #586e75
|
|
||||||
! base1
|
|
||||||
URxvt.pointerColorForeground: #93a1a1
|
|
||||||
|
|
||||||
!! black dark/light
|
|
||||||
URxvt.color0: #073642
|
|
||||||
URxvt.color8: #002b36
|
|
||||||
|
|
||||||
!! red dark/light
|
|
||||||
URxvt.color1: #dc322f
|
|
||||||
URxvt.color9: #cb4b16
|
|
||||||
|
|
||||||
!! green dark/light
|
|
||||||
URxvt.color2: #859900
|
|
||||||
URxvt.color10: #586e75
|
|
||||||
|
|
||||||
!! yellow dark/light
|
|
||||||
URxvt.color3: #b58900
|
|
||||||
URxvt.color11: #657b83
|
|
||||||
|
|
||||||
!! blue dark/light
|
|
||||||
URxvt.color4: #268bd2
|
|
||||||
URxvt.color12: #839496
|
|
||||||
|
|
||||||
!! magenta dark/light
|
|
||||||
URxvt.color5: #d33682
|
|
||||||
URxvt.color13: #6c71c4
|
|
||||||
|
|
||||||
!! cyan dark/light
|
|
||||||
URxvt.color6: #2aa198
|
|
||||||
URxvt.color14: #93a1a1
|
|
||||||
|
|
||||||
!! white dark/light
|
|
||||||
URxvt.color7: #eee8d5
|
|
||||||
URxvt.color15: #fdf6e3
|
|
||||||
26
dotfiles/aliases
Executable file → Normal file
26
dotfiles/aliases
Executable file → Normal file
@@ -5,18 +5,13 @@
|
|||||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
# Cryptsetup alias
|
# Cryptsetup alias
|
||||||
alias luksFormat='cryptsetup luksFormat -s 512 -c aes-xts-plain64 -h sha256 -i 15000'
|
alias luksFormat='sudo cryptsetup luksFormat -s 512 -c aes-xts-plain --use-random -h sha256 -i 5000'
|
||||||
|
|
||||||
# Colors
|
# Colors
|
||||||
if ls --version >/dev/null 2>&1 ; then
|
alias ls='ls --color=auto'
|
||||||
alias ls='ls --color=auto'
|
alias grep='grep --color=auto'
|
||||||
fi
|
alias egrep='egrep --color=auto'
|
||||||
if [ `uname` != 'Darwin' -a `uname` != 'NetBSD' -a `uname` != 'FreeBSD' -a `uname` != 'OpenBSD' ] ; then
|
alias fgrep='fgrep --color=auto'
|
||||||
# Should have a better way to check for GNU versions
|
|
||||||
alias grep='grep --color=auto'
|
|
||||||
alias egrep='egrep --color=auto'
|
|
||||||
alias fgrep='fgrep --color=auto'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Easy upgrade
|
# Easy upgrade
|
||||||
alias dist-upgrade="sudo sh -c 'apt-get update && apt-get -y dist-upgrade'"
|
alias dist-upgrade="sudo sh -c 'apt-get update && apt-get -y dist-upgrade'"
|
||||||
@@ -30,11 +25,8 @@ alias mdcode="sed 's/^/ /'"
|
|||||||
# Intel format plz
|
# Intel format plz
|
||||||
alias objdump="command objdump -M intel"
|
alias objdump="command objdump -M intel"
|
||||||
|
|
||||||
# Useful directory utilities
|
# ACK
|
||||||
alias dircount="for d in * ; do find \$d -type d | wc -l | tr -d '\n' ; echo ' ' \$d ; done | sort -n"
|
alias ack="ack-grep"
|
||||||
|
|
||||||
# Drop caches for swap issues
|
# Launch chrome for burp
|
||||||
alias drop_caches="echo 3 | sudo /usr/bin/tee /proc/sys/vm/drop_caches"
|
alias chrome-for-burp="/usr/bin/google-chrome --ignore-certificate-errors --user-data-dir=${HOME}/.chrome-for-burp --proxy-server=127.0.0.1:8080 >/dev/null 2>&1 &"
|
||||||
|
|
||||||
# dump acpi temperature
|
|
||||||
alias temp='printf "%02.2f\n" "$(cat /sys/class/thermal/thermal_zone0/temp)e-3"'
|
|
||||||
|
|||||||
2
dotfiles/bashrc
Executable file → Normal file
2
dotfiles/bashrc
Executable file → Normal file
@@ -13,7 +13,7 @@ HISTFILESIZE=0
|
|||||||
shopt -s checkwinsize
|
shopt -s checkwinsize
|
||||||
|
|
||||||
# Fancier outputs
|
# Fancier outputs
|
||||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe 2>/dev/null)"
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
|||||||
@@ -1,198 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
set $alt Mod1
|
|
||||||
|
|
||||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
|
||||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
|
||||||
font pango:DejaVu Sans Mono 8
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec i3-sensible-terminal
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
|
|
||||||
# start dmenu (a program launcher)
|
|
||||||
bindsym $mod+d exec dmenu_run
|
|
||||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
|
||||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
|
||||||
# installed.
|
|
||||||
bindsym $mod+Shift+d exec --no-startup-id i3-dmenu-desktop
|
|
||||||
|
|
||||||
# move focus
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move windows
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
bindsym $mod+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
bindsym $mod+s layout stacking
|
|
||||||
bindsym $mod+w layout tabbed
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace 1
|
|
||||||
bindsym $mod+2 workspace 2
|
|
||||||
bindsym $mod+3 workspace 3
|
|
||||||
bindsym $mod+4 workspace 4
|
|
||||||
bindsym $mod+5 workspace 5
|
|
||||||
bindsym $mod+6 workspace 6
|
|
||||||
bindsym $mod+7 workspace 7
|
|
||||||
bindsym $mod+8 workspace 8
|
|
||||||
bindsym $mod+9 workspace 9
|
|
||||||
bindsym $mod+0 workspace 10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace 1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace 2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace 3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace 4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace 5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace 6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace 7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace 8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace 9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace 10
|
|
||||||
|
|
||||||
# Move workspaces between monitors
|
|
||||||
bindsym $mod+Shift+greater move workspace to output right
|
|
||||||
bindsym $mod+Shift+less move workspace to output left
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
bindsym $mod+Shift+c reload
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
# exit i3 (logs you out of your X session)
|
|
||||||
bindsym $mod+Shift+e exec \
|
|
||||||
"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'"
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# These bindings trigger as soon as you enter the resize mode
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or mod+r to toggle
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
|
||||||
# finds out, if available)
|
|
||||||
bar {
|
|
||||||
status_command bash -c "i3status -c <(~/.config/i3status/build_config.sh)"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Cycle through workspaces like cinnamon
|
|
||||||
bindsym $alt+Control+Right workspace next
|
|
||||||
bindsym $alt+Control+Left workspace prev
|
|
||||||
|
|
||||||
# i3 lock
|
|
||||||
exec --no-startup-id ~/bin/i3lock.sh &
|
|
||||||
exec --no-startup-id xset dpms 600
|
|
||||||
bindsym $mod+l exec \
|
|
||||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
|
||||||
bindsym $alt+Control+l exec \
|
|
||||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
|
||||||
|
|
||||||
# things to start quickly
|
|
||||||
bindsym $mod+g exec /usr/bin/google-chrome-beta --password-store=gnome
|
|
||||||
|
|
||||||
# kill a window with middle click + mod
|
|
||||||
bindsym --whole-window $mod+button2 kill
|
|
||||||
# float a window with right click + mod
|
|
||||||
bindsym --whole-window $mod+button3 floating toggle
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
# Pulse Audio controls
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
|
|
||||||
# Screen brightness controls
|
|
||||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
|
|
||||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
|
|
||||||
|
|
||||||
# screenshots
|
|
||||||
set $scrotformat %F-%T.png
|
|
||||||
set $screendir ~/Pictures/Screenshots
|
|
||||||
# whole screen
|
|
||||||
bindsym --release Print exec --no-startup-id \
|
|
||||||
mkdir -p $screendir && \
|
|
||||||
/usr/bin/scrot $screendir/$scrotformat
|
|
||||||
# current window
|
|
||||||
bindsym --release Shift+Print exec --no-startup-id \
|
|
||||||
mkdir -p $screendir && \
|
|
||||||
/usr/bin/scrot -u $screendir/$scrotformat
|
|
||||||
# selection
|
|
||||||
bindsym --release $alt+Sys_Req exec --no-startup-id \
|
|
||||||
mkdir -p $screendir && \
|
|
||||||
/usr/bin/scrot -s $screendir/$scrotformat
|
|
||||||
|
|
||||||
# useful utilities
|
|
||||||
#exec --no-startup-id \
|
|
||||||
# (which xss-lock >/dev/null || /usr/bin/cinnamon-settings-daemon) &
|
|
||||||
exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets
|
|
||||||
# Make GTK fonts look great again
|
|
||||||
#exec --no-startup-id gnome-settings-daemon
|
|
||||||
#exec --no-startup-id (sleep 2; nm-applet) &
|
|
||||||
exec --no-startup-id xset r rate 200 20
|
|
||||||
#exec --no-startup-id ~/bin/autostart.py
|
|
||||||
exec --no-startup-id dex --autostart --environment x-cinnamon
|
|
||||||
|
|
||||||
# customize windows
|
|
||||||
for_window [window_role="pop-up"] floating enable
|
|
||||||
for_window [window_role="bubble"] floating enable
|
|
||||||
for_window [window_role="task_dialog"] floating enable
|
|
||||||
for_window [window_role="Preferences"] floating enable
|
|
||||||
for_window [window_type="dialog"] floating enable
|
|
||||||
for_window [window_type="menu"] floating enable
|
|
||||||
|
|
||||||
for_window [class="^google-chrome$"] border pixel
|
|
||||||
for_window [class="^Google-chrome-beta$"] border pixel
|
|
||||||
for_window [class="^burp-StartBurp$" title="^(?!Burp Suite)"] floating enable
|
|
||||||
|
|
||||||
# no need for borders on the edge of the screen
|
|
||||||
hide_edge_borders both
|
|
||||||
|
|
||||||
# vim:filetype=i3
|
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
function general {
|
|
||||||
cat <<-EOF
|
|
||||||
general {
|
|
||||||
colors = true
|
|
||||||
interval = 5
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function disks {
|
|
||||||
local DISKS=(/ /home)
|
|
||||||
local d
|
|
||||||
local used
|
|
||||||
for d in ${DISKS[@]} ; do
|
|
||||||
local dev=`df $d | tail -1 | awk '{print $1}'`
|
|
||||||
if [[ $used == *$dev* ]] ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
local size=`df $d | tail -1 | awk '{print $2}'`
|
|
||||||
if [ $size -eq 0 ] ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
used="${used} ${dev}"
|
|
||||||
cat <<-EOF
|
|
||||||
disk "${d}" {
|
|
||||||
format = "${d} %avail"
|
|
||||||
}
|
|
||||||
order += "disk ${d}"
|
|
||||||
EOF
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function wireless {
|
|
||||||
which iwconfig >/dev/null || return
|
|
||||||
iwconfig 2>&1 | grep . | grep -vq 'no wireless extensions' || return
|
|
||||||
cat <<-EOF
|
|
||||||
wireless _first_ {
|
|
||||||
format_up = "W: (%quality %essid) %ip"
|
|
||||||
format_down = "W: down"
|
|
||||||
}
|
|
||||||
order += "wireless _first_"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function wired {
|
|
||||||
local def_iface="$(ip route get 1.1.1.1 2>&1 | grep -oP 'dev \K\S+')"
|
|
||||||
if test -n "${def_iface}" ; then
|
|
||||||
cat <<-EOF
|
|
||||||
ethernet "${def_iface}" {
|
|
||||||
format_up = "E: %ip"
|
|
||||||
format_down = "E: down"
|
|
||||||
}
|
|
||||||
order += "ethernet ${def_iface}"
|
|
||||||
EOF
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
cat <<-EOF
|
|
||||||
ethernet _first_ {
|
|
||||||
format_up = "E: %ip"
|
|
||||||
format_down = "E: down"
|
|
||||||
}
|
|
||||||
order += "ethernet _first_"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function ipv6 {
|
|
||||||
echo "order += \"ipv6\""
|
|
||||||
}
|
|
||||||
|
|
||||||
function load {
|
|
||||||
cat <<-EOF
|
|
||||||
load {
|
|
||||||
format = "%1min %5min"
|
|
||||||
}
|
|
||||||
order += "load"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function now {
|
|
||||||
cat <<-EOF
|
|
||||||
tztime local {
|
|
||||||
format = "%Y-%m-%d %H:%M"
|
|
||||||
}
|
|
||||||
order += "tztime local"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
function battery {
|
|
||||||
local bat
|
|
||||||
shopt -s nullglob
|
|
||||||
for bat in /sys/class/power_supply/BAT* ; do
|
|
||||||
local bid=${bat##*BAT}
|
|
||||||
cat <<-EOF
|
|
||||||
battery ${bid} {
|
|
||||||
low_threshold = 15
|
|
||||||
threshold_type = time
|
|
||||||
status_chr = "↑ CHR"
|
|
||||||
status_bat = "↓ BAT"
|
|
||||||
EOF
|
|
||||||
if [ $(bc <<< "$(i3status --version | awk '{print $2}') < 2.11") -eq 0 ] ;
|
|
||||||
then
|
|
||||||
cat <<-EOF
|
|
||||||
status_unk = "? UNK"
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
cat <<-EOF
|
|
||||||
status_full = "FULL"
|
|
||||||
format = "%status %percentage"
|
|
||||||
path = "/sys/class/power_supply/BAT${bid}/uevent"
|
|
||||||
hide_seconds = true
|
|
||||||
last_full_capacity = true
|
|
||||||
}
|
|
||||||
order += "battery ${bid}"
|
|
||||||
EOF
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function audio {
|
|
||||||
cat <<-EOF
|
|
||||||
volume master {
|
|
||||||
format = "♪: %volume"
|
|
||||||
format_muted = "♪: MUTE"
|
|
||||||
device = "default"
|
|
||||||
mixer = "Master"
|
|
||||||
mixer_idx = 0
|
|
||||||
}
|
|
||||||
order += "volume master"
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
general
|
|
||||||
disks
|
|
||||||
wireless
|
|
||||||
wired
|
|
||||||
ipv6
|
|
||||||
load
|
|
||||||
battery
|
|
||||||
audio
|
|
||||||
now
|
|
||||||
|
|
||||||
# vim: noexpandtab
|
|
||||||
@@ -1,52 +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
|
|
||||||
}
|
|
||||||
|
|
||||||
order += "ipv6"
|
|
||||||
order += "disk /"
|
|
||||||
order += "disk /home"
|
|
||||||
order += "wireless _first_"
|
|
||||||
order += "ethernet _first_"
|
|
||||||
order += "battery all"
|
|
||||||
order += "load"
|
|
||||||
order += "tztime local"
|
|
||||||
|
|
||||||
wireless _first_ {
|
|
||||||
format_up = "W: (%quality at %essid) %ip"
|
|
||||||
format_down = "W: down"
|
|
||||||
}
|
|
||||||
|
|
||||||
ethernet _first_ {
|
|
||||||
# if you use %speed, i3status requires root privileges
|
|
||||||
format_up = "E: %ip (%speed)"
|
|
||||||
format_down = "E: down"
|
|
||||||
}
|
|
||||||
|
|
||||||
battery all {
|
|
||||||
format = "%status %percentage %remaining"
|
|
||||||
}
|
|
||||||
|
|
||||||
tztime local {
|
|
||||||
format = "%Y-%m-%d %H:%M:%S"
|
|
||||||
}
|
|
||||||
|
|
||||||
load {
|
|
||||||
format = "%1min"
|
|
||||||
}
|
|
||||||
|
|
||||||
disk "/" {
|
|
||||||
format = "%avail"
|
|
||||||
}
|
|
||||||
|
|
||||||
disk "/home" {
|
|
||||||
format = "%avail"
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[redshift]
|
|
||||||
temp-day=5700
|
|
||||||
temp-night=4750
|
|
||||||
transition=1
|
|
||||||
brightness-day=1.0
|
|
||||||
brightness-night=0.9
|
|
||||||
adjustment-method=randr
|
|
||||||
|
|
||||||
[manual]
|
|
||||||
lat=37.3
|
|
||||||
lon=-121.9
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/dev/null
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
tlsv1
|
tlsv1
|
||||||
|
user-agent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0 Safari/537.36"
|
||||||
create-dirs
|
create-dirs
|
||||||
referer = ";auto"
|
referer = ";auto"
|
||||||
|
|||||||
@@ -1,51 +1,16 @@
|
|||||||
# Exact Solarized Dark color theme for the color GNU ls utility.
|
|
||||||
# Designed for dircolors (GNU coreutils) 5.97
|
# Dark 256 color solarized theme for the color GNU ls utility.
|
||||||
|
# Used and tested with dircolors (GNU coreutils) 8.5
|
||||||
#
|
#
|
||||||
# This simple theme was simultaneously designed for these terminal color schemes:
|
# @author {@link http://sebastian.tramp.name Sebastian Tramp}
|
||||||
# - Solarized dark (best)
|
# @license http://sam.zoy.org/wtfpl/ Do What The Fuck You Want To Public License (WTFPL)
|
||||||
# - Solarized light
|
|
||||||
# - default dark
|
|
||||||
# - default light
|
|
||||||
# with a slight optimization for Solarized Dark.
|
|
||||||
#
|
#
|
||||||
# How the colors were selected:
|
# More Information at
|
||||||
# - Terminal emulators often have an option typically enabled by default that makes
|
# https://github.com/seebi/dircolors-solarized
|
||||||
# bold a different color. It is important to leave this option enabled so that
|
|
||||||
# you can access the entire 16-color Solarized palette, and not just 8 colors.
|
|
||||||
# - We favor universality over a greater number of colors. So we limit the number
|
|
||||||
# of colors so that this theme will work out of the box in all terminals,
|
|
||||||
# Solarized or not, dark or light.
|
|
||||||
# - We choose to have the following category of files:
|
|
||||||
# NORMAL & FILE, DIR, LINK, EXEC and
|
|
||||||
# editable text including source, unimportant text, binary docs & multimedia source
|
|
||||||
# files, viewable multimedia, archived/compressed, and unimportant non-text
|
|
||||||
# - For uniqueness, we stay away from the Solarized foreground colors are -- either
|
|
||||||
# base00 (brightyellow) or base0 (brightblue). However, they can be used if
|
|
||||||
# you know what the bg/fg colors of your terminal are, in order to optimize the display.
|
|
||||||
# - 3 different options are provided: universal, solarized dark, and solarized light.
|
|
||||||
# The only difference between the universal scheme and one that's optimized for
|
|
||||||
# dark/light is the color of "unimportant" files, which should blend more with the
|
|
||||||
# background
|
|
||||||
# - We note that blue is the hardest color to see on dark bg and yellow is the hardest
|
|
||||||
# color to see on light bg (with blue being particularly bad). So we choose yellow
|
|
||||||
# for multimedia files which are usually accessed in a GUI folder browser anyway.
|
|
||||||
# And blue is kept for custom use of this scheme's user.
|
|
||||||
# - See table below to see the assignments.
|
|
||||||
|
|
||||||
|
# Term Section
|
||||||
# Installation instructions:
|
TERM Eterm
|
||||||
# This file goes in the /etc directory, and must be world readable.
|
|
||||||
# You can copy this file to .dir_colors in your $HOME directory to override
|
|
||||||
# the system defaults.
|
|
||||||
|
|
||||||
# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
|
|
||||||
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
|
|
||||||
# off.
|
|
||||||
COLOR tty
|
|
||||||
|
|
||||||
# Below, there should be one TERM entry for each termtype that is colorizable
|
|
||||||
TERM ansi
|
TERM ansi
|
||||||
TERM color_xterm
|
|
||||||
TERM color-xterm
|
TERM color-xterm
|
||||||
TERM con132x25
|
TERM con132x25
|
||||||
TERM con132x30
|
TERM con132x30
|
||||||
@@ -63,7 +28,6 @@ TERM cygwin
|
|||||||
TERM dtterm
|
TERM dtterm
|
||||||
TERM dvtm
|
TERM dvtm
|
||||||
TERM dvtm-256color
|
TERM dvtm-256color
|
||||||
TERM Eterm
|
|
||||||
TERM eterm-color
|
TERM eterm-color
|
||||||
TERM fbterm
|
TERM fbterm
|
||||||
TERM gnome
|
TERM gnome
|
||||||
@@ -76,7 +40,6 @@ TERM linux
|
|||||||
TERM linux-c
|
TERM linux-c
|
||||||
TERM mach-color
|
TERM mach-color
|
||||||
TERM mlterm
|
TERM mlterm
|
||||||
TERM nxterm
|
|
||||||
TERM putty
|
TERM putty
|
||||||
TERM putty-256color
|
TERM putty-256color
|
||||||
TERM rxvt
|
TERM rxvt
|
||||||
@@ -100,16 +63,12 @@ TERM screen-bce
|
|||||||
TERM screen-w
|
TERM screen-w
|
||||||
TERM screen.linux
|
TERM screen.linux
|
||||||
TERM screen.xterm-256color
|
TERM screen.xterm-256color
|
||||||
TERM screen.xterm-new
|
|
||||||
TERM st
|
TERM st
|
||||||
TERM st-meta
|
TERM st-meta
|
||||||
TERM st-256color
|
TERM st-256color
|
||||||
TERM st-meta-256color
|
TERM st-meta-256color
|
||||||
TERM tmux
|
|
||||||
TERM tmux-256color
|
|
||||||
TERM vt100
|
TERM vt100
|
||||||
TERM xterm
|
TERM xterm
|
||||||
TERM xterm-new
|
|
||||||
TERM xterm-16color
|
TERM xterm-16color
|
||||||
TERM xterm-256color
|
TERM xterm-256color
|
||||||
TERM xterm-256color-italic
|
TERM xterm-256color-italic
|
||||||
@@ -118,363 +77,219 @@ TERM xterm-color
|
|||||||
TERM xterm-debian
|
TERM xterm-debian
|
||||||
TERM xterm-termite
|
TERM xterm-termite
|
||||||
|
|
||||||
# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
|
## Documentation
|
||||||
EIGHTBIT 1
|
#
|
||||||
|
# standard colors
|
||||||
#############################################################################
|
#
|
||||||
# Below are the color init strings for the basic file types. A color init
|
# Below are the color init strings for the basic file types. A color init
|
||||||
# string consists of one or more of the following numeric codes:
|
# string consists of one or more of the following numeric codes:
|
||||||
#
|
|
||||||
# Attribute codes:
|
# Attribute codes:
|
||||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
||||||
# Text color codes:
|
# Text color codes:
|
||||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
||||||
# Background color codes:
|
# Background color codes:
|
||||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
||||||
#
|
#
|
||||||
# NOTES:
|
#
|
||||||
# - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html
|
# 256 color support
|
||||||
# - Color combinations
|
# see here: http://www.mail-archive.com/bug-coreutils@gnu.org/msg11030.html)
|
||||||
# ANSI Color code Solarized Notes Universal SolDark SolLight
|
#
|
||||||
# ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~
|
# Text 256 color coding:
|
||||||
# 00 none NORMAL, FILE <SAME> <SAME>
|
# 38;5;COLOR_NUMBER
|
||||||
# 30 black base02
|
# Background 256 color coding:
|
||||||
# 01;30 bright black base03 bg of SolDark
|
# 48;5;COLOR_NUMBER
|
||||||
# 31 red red docs & mm src <SAME> <SAME>
|
|
||||||
# 01;31 bright red orange EXEC <SAME> <SAME>
|
## Special files
|
||||||
# 32 green green editable text <SAME> <SAME>
|
|
||||||
# 01;32 bright green base01 unimportant text <SAME>
|
NORMAL 00;38;5;244 # no color code at all
|
||||||
# 33 yellow yellow unclear in light bg multimedia <SAME> <SAME>
|
#FILE 00 # regular file: use no color at all
|
||||||
# 01;33 bright yellow base00 fg of SolLight unimportant non-text
|
RESET 0 # reset to "normal" color
|
||||||
# 34 blue blue unclear in dark bg user customized <SAME> <SAME>
|
DIR 00;38;5;33 # directory 01;34
|
||||||
# 01;34 bright blue base0 fg in SolDark unimportant text
|
LINK 00;38;5;37 # symbolic link. (If you set this to 'target' instead of a
|
||||||
# 35 magenta magenta LINK <SAME> <SAME>
|
# numerical value, the color is as for the file pointed to.)
|
||||||
# 01;35 bright magenta violet archive/compressed <SAME> <SAME>
|
MULTIHARDLINK 00 # regular file with more than one link
|
||||||
# 36 cyan cyan DIR <SAME> <SAME>
|
FIFO 48;5;230;38;5;136;01 # pipe
|
||||||
# 01;36 bright cyan base1 unimportant non-text <SAME>
|
SOCK 48;5;230;38;5;136;01 # socket
|
||||||
# 37 white base2
|
DOOR 48;5;230;38;5;136;01 # door
|
||||||
# 01;37 bright white base3 bg in SolLight
|
BLK 48;5;230;38;5;244;01 # block device driver
|
||||||
# 05;37;41 unclear in Putty dark
|
CHR 48;5;230;38;5;244;01 # character device driver
|
||||||
|
ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
|
||||||
|
SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
|
||||||
|
SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
|
||||||
|
CAPABILITY 30;41 # file with capability
|
||||||
|
STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
|
||||||
|
OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
|
||||||
|
STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
|
||||||
|
# This is for files with execute permission:
|
||||||
|
EXEC 00;38;5;64
|
||||||
|
|
||||||
|
## Archives or compressed (violet + bold for compression)
|
||||||
|
.tar 00;38;5;61
|
||||||
|
.tgz 00;38;5;61
|
||||||
|
.arj 00;38;5;61
|
||||||
|
.taz 00;38;5;61
|
||||||
|
.lzh 00;38;5;61
|
||||||
|
.lzma 00;38;5;61
|
||||||
|
.tlz 00;38;5;61
|
||||||
|
.txz 00;38;5;61
|
||||||
|
.zip 00;38;5;61
|
||||||
|
.z 00;38;5;61
|
||||||
|
.Z 00;38;5;61
|
||||||
|
.dz 00;38;5;61
|
||||||
|
.gz 00;38;5;61
|
||||||
|
.lz 00;38;5;61
|
||||||
|
.xz 00;38;5;61
|
||||||
|
.bz2 00;38;5;61
|
||||||
|
.bz 00;38;5;61
|
||||||
|
.tbz 00;38;5;61
|
||||||
|
.tbz2 00;38;5;61
|
||||||
|
.tz 00;38;5;61
|
||||||
|
.deb 00;38;5;61
|
||||||
|
.rpm 00;38;5;61
|
||||||
|
.jar 00;38;5;61
|
||||||
|
.rar 00;38;5;61
|
||||||
|
.ace 00;38;5;61
|
||||||
|
.zoo 00;38;5;61
|
||||||
|
.cpio 00;38;5;61
|
||||||
|
.7z 00;38;5;61
|
||||||
|
.rz 00;38;5;61
|
||||||
|
.apk 00;38;5;61
|
||||||
|
.gem 00;38;5;61
|
||||||
|
|
||||||
|
# Image formats (yellow)
|
||||||
|
.jpg 00;38;5;136
|
||||||
|
.JPG 00;38;5;136 #stupid but needed
|
||||||
|
.jpeg 00;38;5;136
|
||||||
|
.gif 00;38;5;136
|
||||||
|
.bmp 00;38;5;136
|
||||||
|
.pbm 00;38;5;136
|
||||||
|
.pgm 00;38;5;136
|
||||||
|
.ppm 00;38;5;136
|
||||||
|
.tga 00;38;5;136
|
||||||
|
.xbm 00;38;5;136
|
||||||
|
.xpm 00;38;5;136
|
||||||
|
.tif 00;38;5;136
|
||||||
|
.tiff 00;38;5;136
|
||||||
|
.png 00;38;5;136
|
||||||
|
.PNG 00;38;5;136
|
||||||
|
.svg 00;38;5;136
|
||||||
|
.svgz 00;38;5;136
|
||||||
|
.mng 00;38;5;136
|
||||||
|
.pcx 00;38;5;136
|
||||||
|
.dl 00;38;5;136
|
||||||
|
.xcf 00;38;5;136
|
||||||
|
.xwd 00;38;5;136
|
||||||
|
.yuv 00;38;5;136
|
||||||
|
.cgm 00;38;5;136
|
||||||
|
.emf 00;38;5;136
|
||||||
|
.eps 00;38;5;136
|
||||||
|
.CR2 00;38;5;136
|
||||||
|
.ico 00;38;5;136
|
||||||
|
|
||||||
|
# Files of special interest (base1)
|
||||||
|
.tex 00;38;5;245
|
||||||
|
.rdf 00;38;5;245
|
||||||
|
.owl 00;38;5;245
|
||||||
|
.n3 00;38;5;245
|
||||||
|
.ttl 00;38;5;245
|
||||||
|
.nt 00;38;5;245
|
||||||
|
.torrent 00;38;5;245
|
||||||
|
.xml 00;38;5;245
|
||||||
|
*Makefile 00;38;5;245
|
||||||
|
*Rakefile 00;38;5;245
|
||||||
|
*Dockerfile 00;38;5;245
|
||||||
|
*build.xml 00;38;5;245
|
||||||
|
*rc 00;38;5;245
|
||||||
|
*1 00;38;5;245
|
||||||
|
.nfo 00;38;5;245
|
||||||
|
*README 00;38;5;245
|
||||||
|
*README.txt 00;38;5;245
|
||||||
|
*readme.txt 00;38;5;245
|
||||||
|
.md 00;38;5;245
|
||||||
|
*README.markdown 00;38;5;245
|
||||||
|
.ini 00;38;5;245
|
||||||
|
.yml 00;38;5;245
|
||||||
|
.cfg 00;38;5;245
|
||||||
|
.conf 00;38;5;245
|
||||||
|
.c 00;38;5;245
|
||||||
|
.cpp 00;38;5;245
|
||||||
|
.cc 00;38;5;245
|
||||||
|
.sqlite 00;38;5;245
|
||||||
|
.go 00;38;5;245
|
||||||
|
.sql 00;38;5;245
|
||||||
|
|
||||||
|
# "unimportant" files as logs and backups (base01)
|
||||||
|
.log 00;38;5;240
|
||||||
|
.bak 00;38;5;240
|
||||||
|
.aux 00;38;5;240
|
||||||
|
.lof 00;38;5;240
|
||||||
|
.lol 00;38;5;240
|
||||||
|
.lot 00;38;5;240
|
||||||
|
.out 00;38;5;240
|
||||||
|
.toc 00;38;5;240
|
||||||
|
.bbl 00;38;5;240
|
||||||
|
.blg 00;38;5;240
|
||||||
|
*~ 00;38;5;240
|
||||||
|
*# 00;38;5;240
|
||||||
|
.part 00;38;5;240
|
||||||
|
.incomplete 00;38;5;240
|
||||||
|
.swp 00;38;5;240
|
||||||
|
.tmp 00;38;5;240
|
||||||
|
.temp 00;38;5;240
|
||||||
|
.o 00;38;5;240
|
||||||
|
.pyc 00;38;5;240
|
||||||
|
.class 00;38;5;240
|
||||||
|
.cache 00;38;5;240
|
||||||
|
|
||||||
|
# Audio formats (orange)
|
||||||
|
.aac 00;38;5;166
|
||||||
|
.au 00;38;5;166
|
||||||
|
.flac 00;38;5;166
|
||||||
|
.mid 00;38;5;166
|
||||||
|
.midi 00;38;5;166
|
||||||
|
.mka 00;38;5;166
|
||||||
|
.mp3 00;38;5;166
|
||||||
|
.mpc 00;38;5;166
|
||||||
|
.ogg 00;38;5;166
|
||||||
|
.ra 00;38;5;166
|
||||||
|
.wav 00;38;5;166
|
||||||
|
.m4a 00;38;5;166
|
||||||
|
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
||||||
|
.axa 00;38;5;166
|
||||||
|
.oga 00;38;5;166
|
||||||
|
.spx 00;38;5;166
|
||||||
|
.xspf 00;38;5;166
|
||||||
|
|
||||||
|
# Video formats (as audio + bold)
|
||||||
|
.mov 00;38;5;166
|
||||||
|
.MOV 00;38;5;166
|
||||||
|
.mpg 00;38;5;166
|
||||||
|
.mpeg 00;38;5;166
|
||||||
|
.m2v 00;38;5;166
|
||||||
|
.mkv 00;38;5;166
|
||||||
|
.ogm 00;38;5;166
|
||||||
|
.mp4 00;38;5;166
|
||||||
|
.m4v 00;38;5;166
|
||||||
|
.mp4v 00;38;5;166
|
||||||
|
.vob 00;38;5;166
|
||||||
|
.qt 00;38;5;166
|
||||||
|
.nuv 00;38;5;166
|
||||||
|
.wmv 00;38;5;166
|
||||||
|
.asf 00;38;5;166
|
||||||
|
.rm 00;38;5;166
|
||||||
|
.rmvb 00;38;5;166
|
||||||
|
.flc 00;38;5;166
|
||||||
|
.avi 00;38;5;166
|
||||||
|
.fli 00;38;5;166
|
||||||
|
.flv 00;38;5;166
|
||||||
|
.gl 00;38;5;166
|
||||||
|
.m2ts 00;38;5;166
|
||||||
|
.divx 00;38;5;166
|
||||||
|
.webm 00;38;5;166
|
||||||
|
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
||||||
|
.axv 00;38;5;166
|
||||||
|
.anx 00;38;5;166
|
||||||
|
.ogv 00;38;5;166
|
||||||
|
.ogx 00;38;5;166
|
||||||
|
|
||||||
|
|
||||||
### By file type
|
|
||||||
|
|
||||||
# global default
|
|
||||||
NORMAL 00
|
|
||||||
# normal file
|
|
||||||
FILE 00
|
|
||||||
# directory
|
|
||||||
DIR 34
|
|
||||||
# 777 directory
|
|
||||||
OTHER_WRITABLE 34;40
|
|
||||||
# symbolic link
|
|
||||||
LINK 35
|
|
||||||
|
|
||||||
# pipe, socket, block device, character device (blue bg)
|
|
||||||
FIFO 30;44
|
|
||||||
SOCK 35;44
|
|
||||||
DOOR 35;44 # Solaris 2.5 and later
|
|
||||||
BLK 33;44
|
|
||||||
CHR 37;44
|
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
|
||||||
### By file attributes
|
|
||||||
|
|
||||||
# Orphaned symlinks (blinking white on red)
|
|
||||||
# Blink may or may not work (works on iTerm dark or light, and Putty dark)
|
|
||||||
ORPHAN 05;37;41
|
|
||||||
# ... and the files that orphaned symlinks point to (blinking white on red)
|
|
||||||
MISSING 05;37;41
|
|
||||||
|
|
||||||
# files with execute permission
|
|
||||||
EXEC 01;31 # Unix
|
|
||||||
.cmd 01;31 # Win
|
|
||||||
.exe 01;31 # Win
|
|
||||||
.com 01;31 # Win
|
|
||||||
.bat 01;31 # Win
|
|
||||||
.reg 01;31 # Win
|
|
||||||
.app 01;31 # OSX
|
|
||||||
|
|
||||||
#############################################################################
|
|
||||||
### By extension
|
|
||||||
|
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
|
||||||
# to colorize below. Put the extension, a space, and the color init string.
|
|
||||||
# (and any comments you want to add after a '#')
|
|
||||||
|
|
||||||
### Text formats
|
|
||||||
|
|
||||||
# Text that we can edit with a regular editor
|
|
||||||
.txt 32
|
|
||||||
.org 32
|
|
||||||
.md 32
|
|
||||||
.mkd 32
|
|
||||||
|
|
||||||
# Source text
|
|
||||||
.h 32
|
|
||||||
.hpp 32
|
|
||||||
.c 32
|
|
||||||
.C 32
|
|
||||||
.cc 32
|
|
||||||
.cpp 32
|
|
||||||
.cxx 32
|
|
||||||
.objc 32
|
|
||||||
.cl 32
|
|
||||||
.sh 32
|
|
||||||
.bash 32
|
|
||||||
.csh 32
|
|
||||||
.zsh 32
|
|
||||||
.el 32
|
|
||||||
.vim 32
|
|
||||||
.java 32
|
|
||||||
.pl 32
|
|
||||||
.pm 32
|
|
||||||
.py 32
|
|
||||||
.rb 32
|
|
||||||
.hs 32
|
|
||||||
.php 32
|
|
||||||
.htm 32
|
|
||||||
.html 32
|
|
||||||
.shtml 32
|
|
||||||
.erb 32
|
|
||||||
.haml 32
|
|
||||||
.xml 32
|
|
||||||
.rdf 32
|
|
||||||
.css 32
|
|
||||||
.sass 32
|
|
||||||
.scss 32
|
|
||||||
.less 32
|
|
||||||
.js 32
|
|
||||||
.coffee 32
|
|
||||||
.man 32
|
|
||||||
.0 32
|
|
||||||
.1 32
|
|
||||||
.2 32
|
|
||||||
.3 32
|
|
||||||
.4 32
|
|
||||||
.5 32
|
|
||||||
.6 32
|
|
||||||
.7 32
|
|
||||||
.8 32
|
|
||||||
.9 32
|
|
||||||
.l 32
|
|
||||||
.n 32
|
|
||||||
.p 32
|
|
||||||
.pod 32
|
|
||||||
.tex 32
|
|
||||||
.go 32
|
|
||||||
.sql 32
|
|
||||||
.csv 32
|
|
||||||
.sv 32
|
|
||||||
.svh 32
|
|
||||||
.v 32
|
|
||||||
.vh 32
|
|
||||||
.vhd 32
|
|
||||||
|
|
||||||
### Multimedia formats
|
|
||||||
|
|
||||||
# Image
|
|
||||||
.bmp 33
|
|
||||||
.cgm 33
|
|
||||||
.dl 33
|
|
||||||
.dvi 33
|
|
||||||
.emf 33
|
|
||||||
.eps 33
|
|
||||||
.gif 33
|
|
||||||
.jpeg 33
|
|
||||||
.jpg 33
|
|
||||||
.JPG 33
|
|
||||||
.mng 33
|
|
||||||
.pbm 33
|
|
||||||
.pcx 33
|
|
||||||
.pdf 33
|
|
||||||
.pgm 33
|
|
||||||
.png 33
|
|
||||||
.PNG 33
|
|
||||||
.ppm 33
|
|
||||||
.pps 33
|
|
||||||
.ppsx 33
|
|
||||||
.ps 33
|
|
||||||
.svg 33
|
|
||||||
.svgz 33
|
|
||||||
.tga 33
|
|
||||||
.tif 33
|
|
||||||
.tiff 33
|
|
||||||
.xbm 33
|
|
||||||
.xcf 33
|
|
||||||
.xpm 33
|
|
||||||
.xwd 33
|
|
||||||
.xwd 33
|
|
||||||
.yuv 33
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
.aac 33
|
|
||||||
.au 33
|
|
||||||
.flac 33
|
|
||||||
.m4a 33
|
|
||||||
.mid 33
|
|
||||||
.midi 33
|
|
||||||
.mka 33
|
|
||||||
.mp3 33
|
|
||||||
.mpa 33
|
|
||||||
.mpeg 33
|
|
||||||
.mpg 33
|
|
||||||
.ogg 33
|
|
||||||
.opus 33
|
|
||||||
.ra 33
|
|
||||||
.wav 33
|
|
||||||
|
|
||||||
# Video
|
|
||||||
.anx 33
|
|
||||||
.asf 33
|
|
||||||
.avi 33
|
|
||||||
.axv 33
|
|
||||||
.flc 33
|
|
||||||
.fli 33
|
|
||||||
.flv 33
|
|
||||||
.gl 33
|
|
||||||
.m2v 33
|
|
||||||
.m4v 33
|
|
||||||
.mkv 33
|
|
||||||
.mov 33
|
|
||||||
.MOV 33
|
|
||||||
.mp4 33
|
|
||||||
.mp4v 33
|
|
||||||
.mpeg 33
|
|
||||||
.mpg 33
|
|
||||||
.nuv 33
|
|
||||||
.ogm 33
|
|
||||||
.ogv 33
|
|
||||||
.ogx 33
|
|
||||||
.qt 33
|
|
||||||
.rm 33
|
|
||||||
.rmvb 33
|
|
||||||
.swf 33
|
|
||||||
.vob 33
|
|
||||||
.webm 33
|
|
||||||
.wmv 33
|
|
||||||
|
|
||||||
### Misc
|
|
||||||
|
|
||||||
# Binary document formats and multimedia source
|
|
||||||
.doc 31
|
|
||||||
.docx 31
|
|
||||||
.rtf 31
|
|
||||||
.odt 31
|
|
||||||
.dot 31
|
|
||||||
.dotx 31
|
|
||||||
.ott 31
|
|
||||||
.xls 31
|
|
||||||
.xlsx 31
|
|
||||||
.ods 31
|
|
||||||
.ots 31
|
|
||||||
.ppt 31
|
|
||||||
.pptx 31
|
|
||||||
.odp 31
|
|
||||||
.otp 31
|
|
||||||
.fla 31
|
|
||||||
.psd 31
|
|
||||||
|
|
||||||
# Archives, compressed
|
|
||||||
.7z 1;35
|
|
||||||
.apk 1;35
|
|
||||||
.arj 1;35
|
|
||||||
.bin 1;35
|
|
||||||
.bz 1;35
|
|
||||||
.bz2 1;35
|
|
||||||
.cab 1;35 # Win
|
|
||||||
.deb 1;35
|
|
||||||
.dmg 1;35 # OSX
|
|
||||||
.gem 1;35
|
|
||||||
.gz 1;35
|
|
||||||
.iso 1;35
|
|
||||||
.jar 1;35
|
|
||||||
.msi 1;35 # Win
|
|
||||||
.rar 1;35
|
|
||||||
.rpm 1;35
|
|
||||||
.tar 1;35
|
|
||||||
.tbz 1;35
|
|
||||||
.tbz2 1;35
|
|
||||||
.tgz 1;35
|
|
||||||
.tx 1;35
|
|
||||||
.war 1;35
|
|
||||||
.xpi 1;35
|
|
||||||
.xz 1;35
|
|
||||||
.z 1;35
|
|
||||||
.Z 1;35
|
|
||||||
.zip 1;35
|
|
||||||
|
|
||||||
# For testing
|
|
||||||
.ANSI-30-black 30
|
|
||||||
.ANSI-01;30-brblack 01;30
|
|
||||||
.ANSI-31-red 31
|
|
||||||
.ANSI-01;31-brred 01;31
|
|
||||||
.ANSI-32-green 32
|
|
||||||
.ANSI-01;32-brgreen 01;32
|
|
||||||
.ANSI-33-yellow 33
|
|
||||||
.ANSI-01;33-bryellow 01;33
|
|
||||||
.ANSI-34-blue 34
|
|
||||||
.ANSI-01;34-brblue 01;34
|
|
||||||
.ANSI-35-magenta 35
|
|
||||||
.ANSI-01;35-brmagenta 01;35
|
|
||||||
.ANSI-36-cyan 36
|
|
||||||
.ANSI-01;36-brcyan 01;36
|
|
||||||
.ANSI-37-white 37
|
|
||||||
.ANSI-01;37-brwhite 01;37
|
|
||||||
|
|
||||||
#############################################################################
|
|
||||||
# Your customizations
|
|
||||||
|
|
||||||
# Unimportant text files
|
|
||||||
# For universal scheme, use brightgreen 01;32
|
|
||||||
# For optimal on light bg (but too prominent on dark bg), use white 01;34
|
|
||||||
.log 01;32
|
|
||||||
*~ 01;32
|
|
||||||
*# 01;32
|
|
||||||
#.log 01;34
|
|
||||||
#*~ 01;34
|
|
||||||
#*# 01;34
|
|
||||||
|
|
||||||
# Unimportant non-text files
|
|
||||||
# For universal scheme, use brightcyan 01;36
|
|
||||||
# For optimal on dark bg (but too prominent on light bg), change to 01;33
|
|
||||||
#.bak 01;36
|
|
||||||
#.BAK 01;36
|
|
||||||
#.old 01;36
|
|
||||||
#.OLD 01;36
|
|
||||||
#.org_archive 01;36
|
|
||||||
#.off 01;36
|
|
||||||
#.OFF 01;36
|
|
||||||
#.dist 01;36
|
|
||||||
#.DIST 01;36
|
|
||||||
#.orig 01;36
|
|
||||||
#.ORIG 01;36
|
|
||||||
#.swp 01;36
|
|
||||||
#.swo 01;36
|
|
||||||
#*,v 01;36
|
|
||||||
.bak 01;33
|
|
||||||
.BAK 01;33
|
|
||||||
.old 01;33
|
|
||||||
.OLD 01;33
|
|
||||||
.org_archive 01;33
|
|
||||||
.off 01;33
|
|
||||||
.OFF 01;33
|
|
||||||
.dist 01;33
|
|
||||||
.DIST 01;33
|
|
||||||
.orig 01;33
|
|
||||||
.ORIG 01;33
|
|
||||||
.swp 01;33
|
|
||||||
.swo 01;33
|
|
||||||
*,v 01;33
|
|
||||||
|
|
||||||
# The brightmagenta (Solarized: purple) color is free for you to use for your
|
|
||||||
# custom file type
|
|
||||||
.gpg 34
|
|
||||||
.gpg 34
|
|
||||||
.pgp 34
|
|
||||||
.asc 34
|
|
||||||
.3des 34
|
|
||||||
.aes 34
|
|
||||||
.enc 34
|
|
||||||
.sqlite 34
|
|
||||||
|
|||||||
74
dotfiles/env
Executable file → Normal file
74
dotfiles/env
Executable file → Normal file
@@ -1,82 +1,24 @@
|
|||||||
# Sourced by zshrc as well as bash.
|
# Sourced by zshrc as well as bash.
|
||||||
# Should only use POSIX shell constructs.
|
|
||||||
|
|
||||||
umask 027
|
umask 027
|
||||||
|
ulimit -c unlimited
|
||||||
|
|
||||||
# Paths and preferences
|
# Paths and preferences
|
||||||
|
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH"
|
||||||
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
||||||
export GOPATH="$HOME/Projects/Go:/usr/share/gocode"
|
export GOPATH="$HOME/.go"
|
||||||
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH:$GOPATH/bin"
|
|
||||||
export VISUAL=vim
|
export VISUAL=vim
|
||||||
export EDITOR=vim
|
export EDITOR=vim
|
||||||
export DEBEMAIL="david@systemoverlord.com"
|
export DEBEMAIL="david@systemoverlord.com"
|
||||||
export DEBFULLNAME="David Tomaschik"
|
export DEBFULLNAME="David Tomaschik"
|
||||||
export LESS="-MR"
|
export LESS="-MR"
|
||||||
export QUOTING_STYLE="literal" # Coreutils quotes
|
|
||||||
|
# Unconditional because /bin/sh sucks
|
||||||
|
export PATH="$PATH:$HOME/.gce/google-cloud-sdk/bin:$HOME/bin/genymotion:$HOME/bin/genymotion/tools:$HOME/bin/google_appengine:$HOME/bin/go_appengine"
|
||||||
|
|
||||||
# Fix gnome-terminal
|
# Fix gnome-terminal
|
||||||
if [ "$TERM" = "xterm" ] && [ "$COLORTERM" = "gnome-terminal" ] ; then
|
if [[ $TERM == "xterm" && $COLORTERM == "gnome-terminal" ]] ; then
|
||||||
# Requires `ncurses-base` package for terminfo.
|
|
||||||
export TERM="xterm-256color"
|
export TERM="xterm-256color"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Terminal preferences for i3
|
if [[ -e $HOME/.localenv ]] ; then source $HOME/.localenv ; fi
|
||||||
if [ -z "${TERMINAL}" ] ; then
|
|
||||||
for t in urxvt gnome-terminal; do
|
|
||||||
if TERMINAL=$(command -v ${t}) ; then
|
|
||||||
export TERMINAL
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Browser preferences
|
|
||||||
if [ -z "${BROWSER}" ] ; then
|
|
||||||
for t in google-chrome-beta google-chrome firefox ; do
|
|
||||||
if BROWSER=$(command -v ${t}); then
|
|
||||||
export BROWSER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For virtualenvwrapper
|
|
||||||
export WORKON_HOME=$HOME/.virtualenvs
|
|
||||||
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
|
|
||||||
|
|
||||||
# GPG full key id
|
|
||||||
export GPG_ID=7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
|
||||||
|
|
||||||
# Setup locale
|
|
||||||
if test -x /usr/bin/locale ; then
|
|
||||||
for l in en_US.utf8 C.UTF-8 C ; do
|
|
||||||
if /usr/bin/locale -a | grep -q "${l}" ; then
|
|
||||||
export LC_CTYPE=${l}
|
|
||||||
export LC_NUMERIC=${l}
|
|
||||||
export LC_TIME=${l}
|
|
||||||
export LC_MONETARY=${l}
|
|
||||||
export LC_MESSAGES=${l}
|
|
||||||
export LC_PAPER=${l}
|
|
||||||
export LC_NAME=${l}
|
|
||||||
export LC_ADDRESS=${l}
|
|
||||||
export LC_TELEPHONE=${l}
|
|
||||||
export LC_MEASUREMENT=${l}
|
|
||||||
export LC_IDENTIFICATION=${l}
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
export LC_CTYPE=C
|
|
||||||
export LC_NUMERIC=C
|
|
||||||
export LC_TIME=C
|
|
||||||
export LC_MONETARY=C
|
|
||||||
export LC_MESSAGES=C
|
|
||||||
export LC_PAPER=C
|
|
||||||
export LC_NAME=C
|
|
||||||
export LC_ADDRESS=C
|
|
||||||
export LC_TELEPHONE=C
|
|
||||||
export LC_MEASUREMENT=C
|
|
||||||
export LC_IDENTIFICATION=C
|
|
||||||
fi
|
|
||||||
export LC_COLLATE=C
|
|
||||||
|
|
||||||
# shellcheck source=/dev/null
|
|
||||||
test -e "$HOME/.localenv" && . "$HOME/.localenv"
|
|
||||||
|
|||||||
@@ -22,22 +22,5 @@ define reg
|
|||||||
info registers
|
info registers
|
||||||
end
|
end
|
||||||
|
|
||||||
# Fancy sourcing of modules
|
source ~/.peda/peda.py
|
||||||
python
|
source ~/.gdbinit.local
|
||||||
import sys
|
|
||||||
import os.path
|
|
||||||
gef = os.path.expanduser('~/tools/gef/gef.py')
|
|
||||||
pwndbg = os.path.expanduser('~/tools/pwndbg/gdbinit.py')
|
|
||||||
peda = os.path.expanduser('~/.peda/peda.py')
|
|
||||||
if os.path.isfile(gef):
|
|
||||||
gdb.execute('source {}'.format(gef))
|
|
||||||
elif os.path.isfile(pwndbg):
|
|
||||||
sys.path.insert(0, os.path.expanduser('~/tools/pwndbg/vendor'))
|
|
||||||
gdb.execute('source {}'.format(pwndbg))
|
|
||||||
elif os.path.isfile(peda):
|
|
||||||
gdb.execute('source {}'.format(peda))
|
|
||||||
|
|
||||||
local_init = os.path.expanduser('~/.gdbinit.local')
|
|
||||||
if os.path.isfile(local_init):
|
|
||||||
gdb.execute('source {}'.format(local_init))
|
|
||||||
end
|
|
||||||
|
|||||||
125
dotfiles/gef.rc
125
dotfiles/gef.rc
@@ -1,125 +0,0 @@
|
|||||||
[context]
|
|
||||||
clear_screen = False
|
|
||||||
enable = True
|
|
||||||
grow_stack_down = False
|
|
||||||
ignore_registers =
|
|
||||||
layout = legend regs stack code args source memory threads trace extra
|
|
||||||
nb_lines_backtrace = 10
|
|
||||||
nb_lines_code = 6
|
|
||||||
nb_lines_code_prev = 3
|
|
||||||
nb_lines_stack = 8
|
|
||||||
nb_lines_threads = -1
|
|
||||||
peek_calls = True
|
|
||||||
peek_ret = True
|
|
||||||
redirect =
|
|
||||||
show_registers_raw = False
|
|
||||||
show_stack_raw = False
|
|
||||||
|
|
||||||
[dereference]
|
|
||||||
max_recursion = 7
|
|
||||||
|
|
||||||
[entry-break]
|
|
||||||
entrypoint_symbols = main _main __libc_start_main __uClibc_main start _start
|
|
||||||
|
|
||||||
[gef-remote]
|
|
||||||
clean_on_exit = False
|
|
||||||
|
|
||||||
[gef]
|
|
||||||
autosave_breakpoints_file =
|
|
||||||
debug = False
|
|
||||||
disable_color = False
|
|
||||||
extra_plugins_dir =
|
|
||||||
follow_child = True
|
|
||||||
readline_compat = False
|
|
||||||
|
|
||||||
[got]
|
|
||||||
function_not_resolved = yellow
|
|
||||||
function_resolved = green
|
|
||||||
|
|
||||||
[heap-analysis-helper]
|
|
||||||
check_double_free = True
|
|
||||||
check_free_null = False
|
|
||||||
check_heap_overlap = True
|
|
||||||
check_uaf = True
|
|
||||||
check_weird_free = True
|
|
||||||
|
|
||||||
[heap-chunks]
|
|
||||||
peek_nb_byte = 16
|
|
||||||
|
|
||||||
[hexdump]
|
|
||||||
always_show_ascii = False
|
|
||||||
|
|
||||||
[highlight]
|
|
||||||
regex = False
|
|
||||||
|
|
||||||
[ida-interact]
|
|
||||||
host = 127.0.0.1
|
|
||||||
port = 1337
|
|
||||||
sync_cursor = False
|
|
||||||
|
|
||||||
[pattern]
|
|
||||||
length = 1024
|
|
||||||
|
|
||||||
[pcustom]
|
|
||||||
struct_path = /tmp/gef/structs
|
|
||||||
|
|
||||||
[process-search]
|
|
||||||
ps_command = /bin/ps auxww
|
|
||||||
|
|
||||||
[syscall-args]
|
|
||||||
path = /tmp/gef/syscall-tables
|
|
||||||
|
|
||||||
[theme]
|
|
||||||
address_code = red
|
|
||||||
address_heap = green
|
|
||||||
address_stack = pink
|
|
||||||
context_title_line = gray
|
|
||||||
context_title_message = cyan
|
|
||||||
default_title_line = gray
|
|
||||||
default_title_message = cyan
|
|
||||||
dereference_base_address = cyan
|
|
||||||
dereference_code = gray
|
|
||||||
dereference_register_value = bold blue
|
|
||||||
dereference_string = yellow
|
|
||||||
disassemble_current_instruction = green
|
|
||||||
registers_register_name = blue
|
|
||||||
registers_value_changed = bold red
|
|
||||||
source_current_line = green
|
|
||||||
table_heading = blue
|
|
||||||
|
|
||||||
[trace-run]
|
|
||||||
max_tracing_recursion = 1
|
|
||||||
tracefile_prefix = ./gef-trace-
|
|
||||||
|
|
||||||
[aliases]
|
|
||||||
pf = print-format
|
|
||||||
status = process-status
|
|
||||||
binaryninja-interact = ida-interact
|
|
||||||
bn = ida-interact
|
|
||||||
binja = ida-interact
|
|
||||||
lookup = scan
|
|
||||||
grep = search-pattern
|
|
||||||
xref = search-pattern
|
|
||||||
flags = edit-flags
|
|
||||||
sc-search = shellcode search
|
|
||||||
sc-get = shellcode get
|
|
||||||
ps = process-search
|
|
||||||
start = entry-break
|
|
||||||
nb = name-break
|
|
||||||
ctx = context
|
|
||||||
telescope = dereference
|
|
||||||
pattern offset = pattern search
|
|
||||||
hl = highlight
|
|
||||||
highlight ls = highlight list
|
|
||||||
hll = highlight list
|
|
||||||
hlc = highlight clear
|
|
||||||
highlight set = highlight add
|
|
||||||
hla = highlight add
|
|
||||||
highlight delete = highlight remove
|
|
||||||
highlight del = highlight remove
|
|
||||||
highlight unset = highlight remove
|
|
||||||
highlight rm = highlight remove
|
|
||||||
hlr = highlight remove
|
|
||||||
fmtstr-helper = format-string-helper
|
|
||||||
screen-setup = tmux-setup
|
|
||||||
|
|
||||||
@@ -23,12 +23,9 @@
|
|||||||
last = log -1 HEAD
|
last = log -1 HEAD
|
||||||
# Thanks to
|
# Thanks to
|
||||||
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
||||||
logs = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||||
lg = log -p
|
|
||||||
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
||||||
files = ls-files
|
files = ls-files
|
||||||
ls = ls-files
|
|
||||||
lol = log --graph --pretty=format:'%C(yellow)%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cblue(%cr)%Creset' --abbrev-commit --date=relative
|
|
||||||
f = "!git ls-files | grep -i"
|
f = "!git ls-files | grep -i"
|
||||||
logtree = log --graph --oneline --decorate --all
|
logtree = log --graph --oneline --decorate --all
|
||||||
|
|
||||||
@@ -42,13 +39,11 @@
|
|||||||
user = matir
|
user = matir
|
||||||
|
|
||||||
# Site specific config
|
# Site specific config
|
||||||
[url "https://github.com./"]
|
[url "https://github.com/"]
|
||||||
insteadOf = "github:"
|
insteadOf = github://
|
||||||
insteadOf = "github://"
|
|
||||||
|
|
||||||
[url "ssh://git@github.com/"]
|
[url "ssh://git@github.com/"]
|
||||||
pushInsteadOf = "github:"
|
pushInsteadOf = github://
|
||||||
pushInsteadOf = "github://"
|
|
||||||
|
|
||||||
[url "git://gist.github.com/"]
|
[url "git://gist.github.com/"]
|
||||||
insteadOf = "gist:"
|
insteadOf = "gist:"
|
||||||
@@ -56,13 +51,5 @@
|
|||||||
[url "git@gist.github.com:"]
|
[url "git@gist.github.com:"]
|
||||||
pushInsteadOf = "gist:"
|
pushInsteadOf = "gist:"
|
||||||
pushInsteadOf = "git://gist.github.com/"
|
pushInsteadOf = "git://gist.github.com/"
|
||||||
|
|
||||||
[credential]
|
[credential]
|
||||||
helper = cache --timeout=36000
|
helper = cache --timeout=36000
|
||||||
[receive]
|
|
||||||
denyCurrentBranch = updateInstead
|
|
||||||
[merge]
|
|
||||||
tool = vimdiff
|
|
||||||
conflictstyle = diff3
|
|
||||||
[mergetool]
|
|
||||||
prompt = false
|
|
||||||
|
|||||||
@@ -17,6 +17,3 @@ Thumbs.db
|
|||||||
# Try to avoid accidentally checking in private keys
|
# Try to avoid accidentally checking in private keys
|
||||||
id_rsa
|
id_rsa
|
||||||
id_ecdsa
|
id_ecdsa
|
||||||
|
|
||||||
# Kicad backup files
|
|
||||||
*.kicad_pcb-bak
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
keyserver hkps://keys.openpgp.org
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
use-standard-socket
|
||||||
default-cache-ttl 7200
|
default-cache-ttl 7200
|
||||||
default-cache-ttl-ssh 7200
|
default-cache-ttl-ssh 7200
|
||||||
max-cache-ttl 86400
|
max-cache-ttl 86400
|
||||||
max-cache-ttl-ssh 86400
|
max-cache-ttl-ssh 86400
|
||||||
enable-ssh-support
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use-agent
|
use-agent
|
||||||
# HKPS requires gnupg-curl for gpg1
|
# HKPS requires gnupg-curl for gpg1
|
||||||
keyserver hkps://keys.openpgp.org
|
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||||
keyserver-options auto-key-retrieve no-honor-keyserver-url
|
# Unfortunately, the path must be fully-qualified
|
||||||
|
keyserver-options auto-key-retrieve ca-cert-file=/home/david/.gnupg/sks-keyservers.pem
|
||||||
auto-key-locate keyserver
|
auto-key-locate keyserver
|
||||||
personal-digest-preferences SHA256
|
personal-digest-preferences SHA256
|
||||||
cert-digest-algo SHA256
|
cert-digest-algo SHA256
|
||||||
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
|
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
|
||||||
cipher-algo AES256
|
cipher-algo AES256
|
||||||
default-key 7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
set editing-mode vi
|
|
||||||
|
|
||||||
set keymap vi
|
|
||||||
set convert-meta on
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
try:
|
|
||||||
import os, IPython
|
|
||||||
os.environ['PYTHONSTARTUP'] = '' # Prevent running this again
|
|
||||||
IPython.start_ipython()
|
|
||||||
raise SystemExit
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
@@ -1,611 +0,0 @@
|
|||||||
# Configuration file for ipython.
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# InteractiveShellApp(Configurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## A Mixin for applications that start InteractiveShell instances.
|
|
||||||
#
|
|
||||||
# Provides configurables for loading extensions and executing files as part of
|
|
||||||
# configuring a Shell environment.
|
|
||||||
#
|
|
||||||
# The following methods should be called by the :meth:`initialize` method of the
|
|
||||||
# subclass:
|
|
||||||
#
|
|
||||||
# - :meth:`init_path`
|
|
||||||
# - :meth:`init_shell` (to be implemented by the subclass)
|
|
||||||
# - :meth:`init_gui_pylab`
|
|
||||||
# - :meth:`init_extensions`
|
|
||||||
# - :meth:`init_code`
|
|
||||||
|
|
||||||
## Execute the given command string.
|
|
||||||
#c.InteractiveShellApp.code_to_run = ''
|
|
||||||
|
|
||||||
## Run the file referenced by the PYTHONSTARTUP environment variable at IPython
|
|
||||||
# startup.
|
|
||||||
c.InteractiveShellApp.exec_PYTHONSTARTUP = False
|
|
||||||
|
|
||||||
## List of files to run at IPython startup.
|
|
||||||
#c.InteractiveShellApp.exec_files = []
|
|
||||||
|
|
||||||
## lines of code to run at IPython startup.
|
|
||||||
#c.InteractiveShellApp.exec_lines = []
|
|
||||||
|
|
||||||
## A list of dotted module names of IPython extensions to load.
|
|
||||||
#c.InteractiveShellApp.extensions = []
|
|
||||||
|
|
||||||
## dotted module name of an IPython extension to load.
|
|
||||||
#c.InteractiveShellApp.extra_extension = ''
|
|
||||||
|
|
||||||
## A file to be run
|
|
||||||
#c.InteractiveShellApp.file_to_run = ''
|
|
||||||
|
|
||||||
## Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk2', 'gtk3',
|
|
||||||
# 'osx', 'pyglet', 'qt', 'qt4', 'qt5', 'tk', 'wx', 'gtk2', 'qt4').
|
|
||||||
#c.InteractiveShellApp.gui = None
|
|
||||||
|
|
||||||
## Should variables loaded at startup (by startup files, exec_lines, etc.) be
|
|
||||||
# hidden from tools like %who?
|
|
||||||
#c.InteractiveShellApp.hide_initial_ns = True
|
|
||||||
|
|
||||||
## Configure matplotlib for interactive use with the default matplotlib backend.
|
|
||||||
#c.InteractiveShellApp.matplotlib = None
|
|
||||||
|
|
||||||
## Run the module as a script.
|
|
||||||
#c.InteractiveShellApp.module_to_run = ''
|
|
||||||
|
|
||||||
## Pre-load matplotlib and numpy for interactive use, selecting a particular
|
|
||||||
# matplotlib backend and loop integration.
|
|
||||||
#c.InteractiveShellApp.pylab = None
|
|
||||||
|
|
||||||
## If true, IPython will populate the user namespace with numpy, pylab, etc. and
|
|
||||||
# an ``import *`` is done from numpy and pylab, when using pylab mode.
|
|
||||||
#
|
|
||||||
# When False, pylab mode should not import any names into the user namespace.
|
|
||||||
#c.InteractiveShellApp.pylab_import_all = True
|
|
||||||
|
|
||||||
## Reraise exceptions encountered loading IPython extensions?
|
|
||||||
#c.InteractiveShellApp.reraise_ipython_extension_failures = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# Application(SingletonConfigurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## This is an application.
|
|
||||||
|
|
||||||
## The date format used by logging formatters for %(asctime)s
|
|
||||||
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
|
|
||||||
|
|
||||||
## The Logging format template
|
|
||||||
#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
|
|
||||||
|
|
||||||
## Set the log level by value or name.
|
|
||||||
#c.Application.log_level = 30
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# BaseIPythonApplication(Application) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## IPython: an enhanced interactive Python shell.
|
|
||||||
|
|
||||||
## Whether to create profile dir if it doesn't exist
|
|
||||||
#c.BaseIPythonApplication.auto_create = False
|
|
||||||
|
|
||||||
## Whether to install the default config files into the profile dir. If a new
|
|
||||||
# profile is being created, and IPython contains config files for that profile,
|
|
||||||
# then they will be staged into the new directory. Otherwise, default config
|
|
||||||
# files will be automatically generated.
|
|
||||||
#c.BaseIPythonApplication.copy_config_files = False
|
|
||||||
|
|
||||||
## Path to an extra config file to load.
|
|
||||||
#
|
|
||||||
# If specified, load this config file in addition to any other IPython config.
|
|
||||||
#c.BaseIPythonApplication.extra_config_file = ''
|
|
||||||
|
|
||||||
## The name of the IPython directory. This directory is used for logging
|
|
||||||
# configuration (through profiles), history storage, etc. The default is usually
|
|
||||||
# $HOME/.ipython. This option can also be specified through the environment
|
|
||||||
# variable IPYTHONDIR.
|
|
||||||
#c.BaseIPythonApplication.ipython_dir = ''
|
|
||||||
|
|
||||||
## Whether to overwrite existing config files when copying
|
|
||||||
#c.BaseIPythonApplication.overwrite = False
|
|
||||||
|
|
||||||
## The IPython profile to use.
|
|
||||||
#c.BaseIPythonApplication.profile = 'default'
|
|
||||||
|
|
||||||
## Create a massive crash report when IPython encounters what may be an internal
|
|
||||||
# error. The default is to append a short message to the usual traceback
|
|
||||||
#c.BaseIPythonApplication.verbose_crash = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# TerminalIPythonApp(BaseIPythonApplication,InteractiveShellApp) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Whether to display a banner upon starting IPython.
|
|
||||||
#c.TerminalIPythonApp.display_banner = True
|
|
||||||
|
|
||||||
## If a command or file is given via the command-line, e.g. 'ipython foo.py',
|
|
||||||
# start an interactive shell after executing the file or command.
|
|
||||||
#c.TerminalIPythonApp.force_interact = False
|
|
||||||
|
|
||||||
## Class to use to instantiate the TerminalInteractiveShell object. Useful for
|
|
||||||
# custom Frontends
|
|
||||||
#c.TerminalIPythonApp.interactive_shell_class = 'IPython.terminal.interactiveshell.TerminalInteractiveShell'
|
|
||||||
|
|
||||||
## Start IPython quickly by skipping the loading of config files.
|
|
||||||
#c.TerminalIPythonApp.quick = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# InteractiveShell(SingletonConfigurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## An enhanced, interactive shell for Python.
|
|
||||||
|
|
||||||
## 'all', 'last', 'last_expr' or 'none', 'last_expr_or_assign' specifying which
|
|
||||||
# nodes should be run interactively (displaying output from expressions).
|
|
||||||
#c.InteractiveShell.ast_node_interactivity = 'last_expr'
|
|
||||||
|
|
||||||
## A list of ast.NodeTransformer subclass instances, which will be applied to
|
|
||||||
# user input before code is run.
|
|
||||||
#c.InteractiveShell.ast_transformers = []
|
|
||||||
|
|
||||||
## Automatically run await statement in the top level repl.
|
|
||||||
#c.InteractiveShell.autoawait = True
|
|
||||||
|
|
||||||
## Make IPython automatically call any callable object even if you didn't type
|
|
||||||
# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
|
|
||||||
# The value can be '0' to disable the feature, '1' for 'smart' autocall, where
|
|
||||||
# it is not applied if there are no more arguments on the line, and '2' for
|
|
||||||
# 'full' autocall, where all callable objects are automatically called (even if
|
|
||||||
# no arguments are present).
|
|
||||||
#c.InteractiveShell.autocall = 0
|
|
||||||
|
|
||||||
## Autoindent IPython code entered interactively.
|
|
||||||
#c.InteractiveShell.autoindent = True
|
|
||||||
|
|
||||||
## Enable magic commands to be called without the leading %.
|
|
||||||
#c.InteractiveShell.automagic = True
|
|
||||||
|
|
||||||
## The part of the banner to be printed before the profile
|
|
||||||
#c.InteractiveShell.banner1 = "Python 3.7.3rc1 (default, Mar 13 2019, 11:01:15) \nType 'copyright', 'credits' or 'license' for more information\nIPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.\n"
|
|
||||||
|
|
||||||
## The part of the banner to be printed after the profile
|
|
||||||
#c.InteractiveShell.banner2 = ''
|
|
||||||
|
|
||||||
## Set the size of the output cache. The default is 1000, you can change it
|
|
||||||
# permanently in your config file. Setting it to 0 completely disables the
|
|
||||||
# caching system, and the minimum value accepted is 3 (if you provide a value
|
|
||||||
# less than 3, it is reset to 0 and a warning is issued). This limit is defined
|
|
||||||
# because otherwise you'll spend more time re-flushing a too small cache than
|
|
||||||
# working
|
|
||||||
#c.InteractiveShell.cache_size = 1000
|
|
||||||
|
|
||||||
## Use colors for displaying information about objects. Because this information
|
|
||||||
# is passed through a pager (like 'less'), and some pagers get confused with
|
|
||||||
# color codes, this capability can be turned off.
|
|
||||||
#c.InteractiveShell.color_info = True
|
|
||||||
|
|
||||||
## Set the color scheme (NoColor, Neutral, Linux, or LightBG).
|
|
||||||
#c.InteractiveShell.colors = 'Neutral'
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.debug = False
|
|
||||||
|
|
||||||
## Don't call post-execute functions that have failed in the past.
|
|
||||||
#c.InteractiveShell.disable_failing_post_execute = False
|
|
||||||
|
|
||||||
## If True, anything that would be passed to the pager will be displayed as
|
|
||||||
# regular output instead.
|
|
||||||
#c.InteractiveShell.display_page = False
|
|
||||||
|
|
||||||
## (Provisional API) enables html representation in mime bundles sent to pagers.
|
|
||||||
#c.InteractiveShell.enable_html_pager = False
|
|
||||||
|
|
||||||
## Total length of command history
|
|
||||||
#c.InteractiveShell.history_length = 10000
|
|
||||||
|
|
||||||
## The number of saved history entries to be loaded into the history buffer at
|
|
||||||
# startup.
|
|
||||||
#c.InteractiveShell.history_load_length = 1000
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.ipython_dir = ''
|
|
||||||
|
|
||||||
## Start logging to the given file in append mode. Use `logfile` to specify a log
|
|
||||||
# file to **overwrite** logs to.
|
|
||||||
#c.InteractiveShell.logappend = ''
|
|
||||||
|
|
||||||
## The name of the logfile to use.
|
|
||||||
#c.InteractiveShell.logfile = ''
|
|
||||||
|
|
||||||
## Start logging to the default log file in overwrite mode. Use `logappend` to
|
|
||||||
# specify a log file to **append** logs to.
|
|
||||||
#c.InteractiveShell.logstart = False
|
|
||||||
|
|
||||||
## Select the loop runner that will be used to execute top-level asynchronous
|
|
||||||
# code
|
|
||||||
#c.InteractiveShell.loop_runner = 'IPython.core.interactiveshell._asyncio_runner'
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.object_info_string_level = 0
|
|
||||||
|
|
||||||
## Automatically call the pdb debugger after every exception.
|
|
||||||
#c.InteractiveShell.pdb = False
|
|
||||||
|
|
||||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
|
||||||
# TerminalInteractiveShell.prompts object directly.
|
|
||||||
#c.InteractiveShell.prompt_in1 = 'In [\\#]: '
|
|
||||||
|
|
||||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
|
||||||
# TerminalInteractiveShell.prompts object directly.
|
|
||||||
#c.InteractiveShell.prompt_in2 = ' .\\D.: '
|
|
||||||
|
|
||||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
|
||||||
# TerminalInteractiveShell.prompts object directly.
|
|
||||||
#c.InteractiveShell.prompt_out = 'Out[\\#]: '
|
|
||||||
|
|
||||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
|
||||||
# TerminalInteractiveShell.prompts object directly.
|
|
||||||
#c.InteractiveShell.prompts_pad_left = True
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.quiet = False
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.separate_in = '\n'
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.separate_out = ''
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.separate_out2 = ''
|
|
||||||
|
|
||||||
## Show rewritten input, e.g. for autocall.
|
|
||||||
#c.InteractiveShell.show_rewritten_input = True
|
|
||||||
|
|
||||||
## Enables rich html representation of docstrings. (This requires the docrepr
|
|
||||||
# module).
|
|
||||||
#c.InteractiveShell.sphinxify_docstring = False
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.InteractiveShell.wildcards_case_sensitive = True
|
|
||||||
|
|
||||||
## Switch modes for the IPython exception handlers.
|
|
||||||
#c.InteractiveShell.xmode = 'Context'
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# TerminalInteractiveShell(InteractiveShell) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,
|
|
||||||
# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a
|
|
||||||
# direct exit without any confirmation.
|
|
||||||
#c.TerminalInteractiveShell.confirm_exit = True
|
|
||||||
|
|
||||||
## Options for displaying tab completions, 'column', 'multicolumn', and
|
|
||||||
# 'readlinelike'. These options are for `prompt_toolkit`, see `prompt_toolkit`
|
|
||||||
# documentation for more information.
|
|
||||||
#c.TerminalInteractiveShell.display_completions = 'multicolumn'
|
|
||||||
|
|
||||||
## Shortcut style to use at the prompt. 'vi' or 'emacs'.
|
|
||||||
c.TerminalInteractiveShell.editing_mode = 'vi'
|
|
||||||
|
|
||||||
## Set the editor used by IPython (default to $EDITOR/vi/notepad).
|
|
||||||
#c.TerminalInteractiveShell.editor = 'vim'
|
|
||||||
|
|
||||||
## Allows to enable/disable the prompt toolkit history search
|
|
||||||
#c.TerminalInteractiveShell.enable_history_search = True
|
|
||||||
|
|
||||||
## Enable vi (v) or Emacs (C-X C-E) shortcuts to open an external editor. This is
|
|
||||||
# in addition to the F2 binding, which is always enabled.
|
|
||||||
#c.TerminalInteractiveShell.extra_open_editor_shortcuts = False
|
|
||||||
|
|
||||||
## Provide an alternative handler to be called when the user presses Return. This
|
|
||||||
# is an advanced option intended for debugging, which may be changed or removed
|
|
||||||
# in later releases.
|
|
||||||
#c.TerminalInteractiveShell.handle_return = None
|
|
||||||
|
|
||||||
## Highlight matching brackets.
|
|
||||||
#c.TerminalInteractiveShell.highlight_matching_brackets = True
|
|
||||||
|
|
||||||
## The name or class of a Pygments style to use for syntax highlighting. To see
|
|
||||||
# available styles, run `pygmentize -L styles`.
|
|
||||||
#c.TerminalInteractiveShell.highlighting_style = traitlets.Undefined
|
|
||||||
|
|
||||||
## Override highlighting format for specific tokens
|
|
||||||
#c.TerminalInteractiveShell.highlighting_style_overrides = {}
|
|
||||||
|
|
||||||
## Enable mouse support in the prompt (Note: prevents selecting text with the
|
|
||||||
# mouse)
|
|
||||||
#c.TerminalInteractiveShell.mouse_support = False
|
|
||||||
|
|
||||||
## Display the current vi mode (when using vi editing mode).
|
|
||||||
#c.TerminalInteractiveShell.prompt_includes_vi_mode = True
|
|
||||||
|
|
||||||
## Class used to generate Prompt token for prompt_toolkit
|
|
||||||
#c.TerminalInteractiveShell.prompts_class = 'IPython.terminal.prompts.Prompts'
|
|
||||||
|
|
||||||
## Use `raw_input` for the REPL, without completion and prompt colors.
|
|
||||||
#
|
|
||||||
# Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR.
|
|
||||||
# Known usage are: IPython own testing machinery, and emacs inferior-shell
|
|
||||||
# integration through elpy.
|
|
||||||
#
|
|
||||||
# This mode default to `True` if the `IPY_TEST_SIMPLE_PROMPT` environment
|
|
||||||
# variable is set, or the current terminal is not a tty.
|
|
||||||
#c.TerminalInteractiveShell.simple_prompt = False
|
|
||||||
|
|
||||||
## Number of line at the bottom of the screen to reserve for the completion menu
|
|
||||||
#c.TerminalInteractiveShell.space_for_menu = 6
|
|
||||||
|
|
||||||
## Automatically set the terminal title
|
|
||||||
#c.TerminalInteractiveShell.term_title = True
|
|
||||||
|
|
||||||
## Customize the terminal title format. This is a python format string.
|
|
||||||
# Available substitutions are: {cwd}.
|
|
||||||
#c.TerminalInteractiveShell.term_title_format = 'IPython: {cwd}'
|
|
||||||
|
|
||||||
## Use 24bit colors instead of 256 colors in prompt highlighting. If your
|
|
||||||
# terminal supports true color, the following command should print 'TRUECOLOR'
|
|
||||||
# in orange: printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
|
|
||||||
#c.TerminalInteractiveShell.true_color = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# HistoryAccessor(HistoryAccessorBase) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Access the history database without adding to it.
|
|
||||||
#
|
|
||||||
# This is intended for use by standalone history tools. IPython shells use
|
|
||||||
# HistoryManager, below, which is a subclass of this.
|
|
||||||
|
|
||||||
## Options for configuring the SQLite connection
|
|
||||||
#
|
|
||||||
# These options are passed as keyword args to sqlite3.connect when establishing
|
|
||||||
# database connections.
|
|
||||||
#c.HistoryAccessor.connection_options = {}
|
|
||||||
|
|
||||||
## enable the SQLite history
|
|
||||||
#
|
|
||||||
# set enabled=False to disable the SQLite history, in which case there will be
|
|
||||||
# no stored history, no SQLite connection, and no background saving thread.
|
|
||||||
# This may be necessary in some threaded environments where IPython is embedded.
|
|
||||||
#c.HistoryAccessor.enabled = True
|
|
||||||
|
|
||||||
## Path to file to use for SQLite history database.
|
|
||||||
#
|
|
||||||
# By default, IPython will put the history database in the IPython profile
|
|
||||||
# directory. If you would rather share one history among profiles, you can set
|
|
||||||
# this value in each, so that they are consistent.
|
|
||||||
#
|
|
||||||
# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.
|
|
||||||
# If you see IPython hanging, try setting this to something on a local disk,
|
|
||||||
# e.g::
|
|
||||||
#
|
|
||||||
# ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite
|
|
||||||
#
|
|
||||||
# you can also use the specific value `:memory:` (including the colon at both
|
|
||||||
# end but not the back ticks), to avoid creating an history file.
|
|
||||||
#c.HistoryAccessor.hist_file = ''
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# HistoryManager(HistoryAccessor) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## A class to organize all history-related functionality in one place.
|
|
||||||
|
|
||||||
## Write to database every x commands (higher values save disk access & power).
|
|
||||||
# Values of 1 or less effectively disable caching.
|
|
||||||
#c.HistoryManager.db_cache_size = 0
|
|
||||||
|
|
||||||
## Should the history database include output? (default: no)
|
|
||||||
#c.HistoryManager.db_log_output = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# ProfileDir(LoggingConfigurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## An object to manage the profile directory and its resources.
|
|
||||||
#
|
|
||||||
# The profile directory is used by all IPython applications, to manage
|
|
||||||
# configuration, logging and security.
|
|
||||||
#
|
|
||||||
# This object knows how to find, create and manage these directories. This
|
|
||||||
# should be used by any code that wants to handle profiles.
|
|
||||||
|
|
||||||
## Set the profile location directly. This overrides the logic used by the
|
|
||||||
# `profile` option.
|
|
||||||
#c.ProfileDir.location = ''
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# BaseFormatter(Configurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## A base formatter class that is configurable.
|
|
||||||
#
|
|
||||||
# This formatter should usually be used as the base class of all formatters. It
|
|
||||||
# is a traited :class:`Configurable` class and includes an extensible API for
|
|
||||||
# users to determine how their objects are formatted. The following logic is
|
|
||||||
# used to find a function to format an given object.
|
|
||||||
#
|
|
||||||
# 1. The object is introspected to see if it has a method with the name
|
|
||||||
# :attr:`print_method`. If is does, that object is passed to that method
|
|
||||||
# for formatting.
|
|
||||||
# 2. If no print method is found, three internal dictionaries are consulted
|
|
||||||
# to find print method: :attr:`singleton_printers`, :attr:`type_printers`
|
|
||||||
# and :attr:`deferred_printers`.
|
|
||||||
#
|
|
||||||
# Users should use these dictionaries to register functions that will be used to
|
|
||||||
# compute the format data for their objects (if those objects don't have the
|
|
||||||
# special print methods). The easiest way of using these dictionaries is through
|
|
||||||
# the :meth:`for_type` and :meth:`for_type_by_name` methods.
|
|
||||||
#
|
|
||||||
# If no function/callable is found to compute the format data, ``None`` is
|
|
||||||
# returned and this format type is not used.
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.BaseFormatter.deferred_printers = {}
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.BaseFormatter.enabled = True
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.BaseFormatter.singleton_printers = {}
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.BaseFormatter.type_printers = {}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# PlainTextFormatter(BaseFormatter) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## The default pretty-printer.
|
|
||||||
#
|
|
||||||
# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.
|
|
||||||
# If the object cannot be pretty printed, :func:`repr` is used. See the
|
|
||||||
# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty
|
|
||||||
# printers. Here is a simple example::
|
|
||||||
#
|
|
||||||
# def dtype_pprinter(obj, p, cycle):
|
|
||||||
# if cycle:
|
|
||||||
# return p.text('dtype(...)')
|
|
||||||
# if hasattr(obj, 'fields'):
|
|
||||||
# if obj.fields is None:
|
|
||||||
# p.text(repr(obj))
|
|
||||||
# else:
|
|
||||||
# p.begin_group(7, 'dtype([')
|
|
||||||
# for i, field in enumerate(obj.descr):
|
|
||||||
# if i > 0:
|
|
||||||
# p.text(',')
|
|
||||||
# p.breakable()
|
|
||||||
# p.pretty(field)
|
|
||||||
# p.end_group(7, '])')
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.PlainTextFormatter.float_precision = ''
|
|
||||||
|
|
||||||
## Truncate large collections (lists, dicts, tuples, sets) to this size.
|
|
||||||
#
|
|
||||||
# Set to 0 to disable truncation.
|
|
||||||
#c.PlainTextFormatter.max_seq_length = 1000
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.PlainTextFormatter.max_width = 79
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.PlainTextFormatter.newline = '\n'
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.PlainTextFormatter.pprint = True
|
|
||||||
|
|
||||||
##
|
|
||||||
#c.PlainTextFormatter.verbose = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# Completer(Configurable) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Enable unicode completions, e.g. \alpha<tab> . Includes completion of latex
|
|
||||||
# commands, unicode names, and expanding unicode characters back to latex
|
|
||||||
# commands.
|
|
||||||
#c.Completer.backslash_combining_completions = True
|
|
||||||
|
|
||||||
## Enable debug for the Completer. Mostly print extra information for
|
|
||||||
# experimental jedi integration.
|
|
||||||
#c.Completer.debug = False
|
|
||||||
|
|
||||||
## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care
|
|
||||||
# of with Jedi.
|
|
||||||
#
|
|
||||||
# This will enable completion on elements of lists, results of function calls,
|
|
||||||
# etc., but can be unsafe because the code is actually evaluated on TAB.
|
|
||||||
#c.Completer.greedy = False
|
|
||||||
|
|
||||||
## Experimental: restrict time (in milliseconds) during which Jedi can compute
|
|
||||||
# types. Set to 0 to stop computing types. Non-zero value lower than 100ms may
|
|
||||||
# hurt performance by preventing jedi to build its cache.
|
|
||||||
#c.Completer.jedi_compute_type_timeout = 400
|
|
||||||
|
|
||||||
## Experimental: Use Jedi to generate autocompletions. Default to True if jedi is
|
|
||||||
# installed.
|
|
||||||
#c.Completer.use_jedi = True
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# IPCompleter(Completer) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Extension of the completer class with IPython-specific features
|
|
||||||
|
|
||||||
## DEPRECATED as of version 5.0.
|
|
||||||
#
|
|
||||||
# Instruct the completer to use __all__ for the completion
|
|
||||||
#
|
|
||||||
# Specifically, when completing on ``object.<tab>``.
|
|
||||||
#
|
|
||||||
# When True: only those names in obj.__all__ will be included.
|
|
||||||
#
|
|
||||||
# When False [default]: the __all__ attribute is ignored
|
|
||||||
#c.IPCompleter.limit_to__all__ = False
|
|
||||||
|
|
||||||
## Whether to merge completion results into a single list
|
|
||||||
#
|
|
||||||
# If False, only the completion results from the first non-empty completer will
|
|
||||||
# be returned.
|
|
||||||
#c.IPCompleter.merge_completions = True
|
|
||||||
|
|
||||||
## Instruct the completer to omit private method names
|
|
||||||
#
|
|
||||||
# Specifically, when completing on ``object.<tab>``.
|
|
||||||
#
|
|
||||||
# When 2 [default]: all names that start with '_' will be excluded.
|
|
||||||
#
|
|
||||||
# When 1: all 'magic' names (``__foo__``) will be excluded.
|
|
||||||
#
|
|
||||||
# When 0: nothing will be excluded.
|
|
||||||
#c.IPCompleter.omit__names = 2
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# ScriptMagics(Magics) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Magics for talking to scripts
|
|
||||||
#
|
|
||||||
# This defines a base `%%script` cell magic for running a cell with a program in
|
|
||||||
# a subprocess, and registers a few top-level magics that call %%script with
|
|
||||||
# common interpreters.
|
|
||||||
|
|
||||||
## Extra script cell magics to define
|
|
||||||
#
|
|
||||||
# This generates simple wrappers of `%%script foo` as `%%foo`.
|
|
||||||
#
|
|
||||||
# If you want to add script magics that aren't on your path, specify them in
|
|
||||||
# script_paths
|
|
||||||
#c.ScriptMagics.script_magics = []
|
|
||||||
|
|
||||||
## Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'
|
|
||||||
#
|
|
||||||
# Only necessary for items in script_magics where the default path will not find
|
|
||||||
# the right interpreter.
|
|
||||||
#c.ScriptMagics.script_paths = {}
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# LoggingMagics(Magics) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Magics related to all logging machinery.
|
|
||||||
|
|
||||||
## Suppress output of log state when logging is enabled
|
|
||||||
#c.LoggingMagics.quiet = False
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# StoreMagics(Magics) configuration
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
## Lightweight persistence for python variables.
|
|
||||||
#
|
|
||||||
# Provides the %store magic.
|
|
||||||
|
|
||||||
## If True, any %store-d variables will be automatically restored when IPython
|
|
||||||
# starts.
|
|
||||||
#c.StoreMagics.autorestore = False
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
|||||||
settings set prompt "(lisa)"
|
|
||||||
settings set target.x86-disassembly-flavor intel
|
|
||||||
command script import ~/lisa.py
|
|
||||||
command script import lldb
|
|
||||||
command script add -f lisa.alias lisa
|
|
||||||
lisa
|
|
||||||
43
dotfiles/profile
Executable file → Normal file
43
dotfiles/profile
Executable file → Normal file
@@ -1,29 +1,18 @@
|
|||||||
#!/bin/bash
|
# Setup GPG Agent
|
||||||
# Also sourced by zsh, etc.
|
GPG_AGENT_INFO_PATH=$HOME/.gnupg/gpg-agent-info-`hostname`
|
||||||
# Interactive shells only.
|
if test -f $GPG_AGENT_INFO_PATH && kill -0 `cut -d: -f 2 $GPG_AGENT_INFO_PATH` 2>/dev/null ; then
|
||||||
# Should only use POSIX constructs.
|
. $GPG_AGENT_INFO_PATH
|
||||||
|
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
||||||
# Always load ENV
|
|
||||||
test -f "$HOME/.env" && . "$HOME/.env"
|
|
||||||
|
|
||||||
# Setup GREP_COLORS
|
|
||||||
export GREP_COLOR='01;31'
|
|
||||||
export GREP_COLORS='mt=01;31:mc=01;31:ms=01;31'
|
|
||||||
|
|
||||||
# Setup LS_COLORS
|
|
||||||
if whence dircolors >/dev/null 2>&1 ; then
|
|
||||||
test -f "${HOME}/.dircolors" && \
|
|
||||||
eval "$(dircolors "${HOME}/.dircolors")"
|
|
||||||
else
|
else
|
||||||
# Static solarized LS_COLORS
|
if which gpg-agent >/dev/null 2>&1 ; then
|
||||||
LS_COLORS='no=00:fi=00:di=34:ow=34;40:ln=35:pi=30;44:so=35;44:do=35;44:bd=33;44:cd=37;44:or=05;37;41:mi=05;37;41:ex=01;31:*.cmd=01;31:*.exe=01;31:*.com=01;31:*.bat=01;31:*.reg=01;31:*.app=01;31:*.txt=32:*.org=32:*.md=32:*.mkd=32:*.h=32:*.hpp=32:*.c=32:*.C=32:*.cc=32:*.cpp=32:*.cxx=32:*.objc=32:*.cl=32:*.sh=32:*.bash=32:*.csh=32:*.zsh=32:*.el=32:*.vim=32:*.java=32:*.pl=32:*.pm=32:*.py=32:*.rb=32:*.hs=32:*.php=32:*.htm=32:*.html=32:*.shtml=32:*.erb=32:*.haml=32:*.xml=32:*.rdf=32:*.css=32:*.sass=32:*.scss=32:*.less=32:*.js=32:*.coffee=32:*.man=32:*.0=32:*.1=32:*.2=32:*.3=32:*.4=32:*.5=32:*.6=32:*.7=32:*.8=32:*.9=32:*.l=32:*.n=32:*.p=32:*.pod=32:*.tex=32:*.go=32:*.sql=32:*.csv=32:*.sv=32:*.svh=32:*.v=32:*.vh=32:*.vhd=32:*.bmp=33:*.cgm=33:*.dl=33:*.dvi=33:*.emf=33:*.eps=33:*.gif=33:*.jpeg=33:*.jpg=33:*.JPG=33:*.mng=33:*.pbm=33:*.pcx=33:*.pdf=33:*.pgm=33:*.png=33:*.PNG=33:*.ppm=33:*.pps=33:*.ppsx=33:*.ps=33:*.svg=33:*.svgz=33:*.tga=33:*.tif=33:*.tiff=33:*.xbm=33:*.xcf=33:*.xpm=33:*.xwd=33:*.xwd=33:*.yuv=33:*.aac=33:*.au=33:*.flac=33:*.m4a=33:*.mid=33:*.midi=33:*.mka=33:*.mp3=33:*.mpa=33:*.mpeg=33:*.mpg=33:*.ogg=33:*.opus=33:*.ra=33:*.wav=33:*.anx=33:*.asf=33:*.avi=33:*.axv=33:*.flc=33:*.fli=33:*.flv=33:*.gl=33:*.m2v=33:*.m4v=33:*.mkv=33:*.mov=33:*.MOV=33:*.mp4=33:*.mp4v=33:*.mpeg=33:*.mpg=33:*.nuv=33:*.ogm=33:*.ogv=33:*.ogx=33:*.qt=33:*.rm=33:*.rmvb=33:*.swf=33:*.vob=33:*.webm=33:*.wmv=33:*.doc=31:*.docx=31:*.rtf=31:*.odt=31:*.dot=31:*.dotx=31:*.ott=31:*.xls=31:*.xlsx=31:*.ods=31:*.ots=31:*.ppt=31:*.pptx=31:*.odp=31:*.otp=31:*.fla=31:*.psd=31:*.7z=1;35:*.apk=1;35:*.arj=1;35:*.bin=1;35:*.bz=1;35:*.bz2=1;35:*.cab=1;35:*.deb=1;35:*.dmg=1;35:*.gem=1;35:*.gz=1;35:*.iso=1;35:*.jar=1;35:*.msi=1;35:*.rar=1;35:*.rpm=1;35:*.tar=1;35:*.tbz=1;35:*.tbz2=1;35:*.tgz=1;35:*.tx=1;35:*.war=1;35:*.xpi=1;35:*.xz=1;35:*.z=1;35:*.Z=1;35:*.zip=1;35:*.ANSI-30-black=30:*.ANSI-01;30-brblack=01;30:*.ANSI-31-red=31:*.ANSI-01;31-brred=01;31:*.ANSI-32-green=32:*.ANSI-01;32-brgreen=01;32:*.ANSI-33-yellow=33:*.ANSI-01;33-bryellow=01;33:*.ANSI-34-blue=34:*.ANSI-01;34-brblue=01;34:*.ANSI-35-magenta=35:*.ANSI-01;35-brmagenta=01;35:*.ANSI-36-cyan=36:*.ANSI-01;36-brcyan=01;36:*.ANSI-37-white=37:*.ANSI-01;37-brwhite=01;37:*.log=01;32:*~=01;32:*#=01;32:*.bak=01;33:*.BAK=01;33:*.old=01;33:*.OLD=01;33:*.org_archive=01;33:*.off=01;33:*.OFF=01;33:*.dist=01;33:*.DIST=01;33:*.orig=01;33:*.ORIG=01;33:*.swp=01;33:*.swo=01;33:*,v=01;33:*.gpg=34:*.gpg=34:*.pgp=34:*.asc=34:*.3des=34:*.aes=34:*.enc=34:*.sqlite=34:';
|
if [ -z "$SSH_AUTH_SOCK" ] ; then
|
||||||
export LS_COLORS
|
gpg-agent -q 2>/dev/null || eval `gpg-agent --daemon --enable-ssh-support --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
||||||
|
else
|
||||||
|
gpg-agent -q 2>/dev/null || eval `gpg-agent --daemon --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
||||||
|
fi
|
||||||
|
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$(uname)" = "Darwin" ] ; then
|
unset GPG_AGENT_INFO_PATH
|
||||||
LSCOLORS="gxfxbEaEBxxEhEhBaDaCaD"
|
export GPG_TTY=`tty`
|
||||||
export LSCOLORS
|
# End GPG
|
||||||
CLICOLOR=1
|
|
||||||
export CLICOLOR
|
|
||||||
fi
|
|
||||||
|
|
||||||
test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local"
|
|
||||||
|
|||||||
@@ -5,9 +5,3 @@ Downloads
|
|||||||
.wine
|
.wine
|
||||||
.thumbnails
|
.thumbnails
|
||||||
.histfile
|
.histfile
|
||||||
.zcompdump
|
|
||||||
.zcompdump*
|
|
||||||
.sqlite_history
|
|
||||||
VirtualBox VMs
|
|
||||||
Audits
|
|
||||||
SpiderOak Hive
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
rvm_silence_path_mismatch_check_flag=1
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
.header on
|
|
||||||
.mode column
|
|
||||||
@@ -1,28 +1,17 @@
|
|||||||
# Universal Settings
|
# Universal Settings (can't override)
|
||||||
|
# Never fall back to protocol 1: it's broken
|
||||||
Protocol 2
|
Protocol 2
|
||||||
|
|
||||||
# Permit Local Overrides
|
Host scoreboard
|
||||||
Include ~/.ssh/config.d/*
|
Hostname 104.131.136.220
|
||||||
|
|
||||||
# Enable canonicalization, unless overridden
|
|
||||||
CanonicalizeHostname yes
|
|
||||||
CanonicalizeFallbackLocal yes
|
|
||||||
CanonicalDomains systemoverlord.com
|
|
||||||
CanonicalizeMaxDots 0
|
|
||||||
|
|
||||||
# Defaults (May be Overridden)
|
# Defaults (May be Overridden)
|
||||||
Host *.*
|
Host *
|
||||||
CheckHostIP yes
|
ControlMaster auto
|
||||||
|
ControlPath ~/.ssh/master/%r@%h:%p
|
||||||
Match canonical all
|
ControlPersist yes
|
||||||
CheckHostIP no
|
ForwardAgent no
|
||||||
ControlMaster auto
|
ForwardX11 no
|
||||||
ControlPath ~/.ssh/master/%r@%h:%p
|
ForwardX11Trusted no
|
||||||
ControlPersist yes
|
ServerAliveInterval 120
|
||||||
ForwardAgent no
|
CheckHostIP no
|
||||||
ForwardX11 no
|
|
||||||
ForwardX11Trusted no
|
|
||||||
ServerAliveInterval 120
|
|
||||||
UpdateHostKeys yes
|
|
||||||
User david
|
|
||||||
VerifyHostKeyDNS yes
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
REMOTE_LINK="${HOME}/.ssh/remote_agent.sock"
|
|
||||||
|
|
||||||
if test \! -L "${REMOTE_LINK}" -a -n "${SSH_AUTH_SOCK}" ; then
|
|
||||||
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
|
||||||
fi
|
|
||||||
@@ -14,14 +14,14 @@ set -g history-limit 10000
|
|||||||
set -g base-index 1
|
set -g base-index 1
|
||||||
set -g pane-base-index 1
|
set -g pane-base-index 1
|
||||||
|
|
||||||
|
# Let us use utf-8 drawing characters to make tab-like window formats
|
||||||
|
setw -g utf8 on
|
||||||
|
set -g status-utf8 on
|
||||||
|
|
||||||
# Terminal emulator window title
|
# Terminal emulator window title
|
||||||
set -g set-titles on
|
set -g set-titles on
|
||||||
set -g set-titles-string '#h:#S:#I.#P #W'
|
set -g set-titles-string '#h:#S:#I.#P #W'
|
||||||
|
|
||||||
# Set keybindings
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g status-keys vi
|
|
||||||
|
|
||||||
# Set a 256color $TERM variable so programs inside tmux know they can use 256
|
# Set a 256color $TERM variable so programs inside tmux know they can use 256
|
||||||
# colors
|
# colors
|
||||||
set -g default-terminal screen-256color
|
set -g default-terminal screen-256color
|
||||||
@@ -37,7 +37,9 @@ setw -g automatic-rename on
|
|||||||
source-file ~/.tmux/tmux-solarized-256.conf
|
source-file ~/.tmux/tmux-solarized-256.conf
|
||||||
|
|
||||||
# Provide a statusbar
|
# Provide a statusbar
|
||||||
set -g window-status-current-style fg=colour235,bg=colour33,bold
|
set -g window-status-current-bg colour33
|
||||||
|
set -g window-status-current-fg colour235
|
||||||
|
set -g window-status-current-attr bold
|
||||||
set -g status-interval 60
|
set -g status-interval 60
|
||||||
set -g status-left-length 30
|
set -g status-left-length 30
|
||||||
set -g status-left '/#S/ '
|
set -g status-left '/#S/ '
|
||||||
@@ -59,10 +61,3 @@ bind M \
|
|||||||
set -g mouse-select-pane off \;\
|
set -g mouse-select-pane off \;\
|
||||||
set -g mouse-select-window off \;\
|
set -g mouse-select-window off \;\
|
||||||
display 'Mouse: OFF'
|
display 'Mouse: OFF'
|
||||||
|
|
||||||
# tmux X clipboard integration
|
|
||||||
bind C-c run "tmux show-buffer | xsel -i -b"
|
|
||||||
bind C-v run "tmux set-buffer -- \"$(xsel -o -b)\"; tmux paste-buffer"
|
|
||||||
|
|
||||||
# Enable logging module, if available
|
|
||||||
run-shell "~/.tmux/tmux-logging/logging.tmux || true"
|
|
||||||
|
|||||||
Submodule dotfiles/tmux/tmux-logging deleted from b085ad423b
@@ -1,22 +1,27 @@
|
|||||||
#### COLOUR (Solarized 256)
|
#### COLOUR (Solarized 256)
|
||||||
|
|
||||||
# default statusbar colors
|
# default statusbar colors
|
||||||
set-option -g status-style fg=colour136,bg=colour235 #yellow and base02
|
set-option -g status-bg colour235 #base02
|
||||||
|
set-option -g status-fg colour136 #yellow
|
||||||
|
set-option -g status-attr default
|
||||||
|
|
||||||
# default window title colors
|
# default window title colors
|
||||||
set-window-option -g window-status-style fg=colour244,bg=default #base0 and default
|
set-window-option -g window-status-fg colour244 #base0
|
||||||
#set-window-option -g window-status-style dim
|
set-window-option -g window-status-bg default
|
||||||
|
#set-window-option -g window-status-attr dim
|
||||||
|
|
||||||
# active window title colors
|
# active window title colors
|
||||||
set-window-option -g window-status-current-style fg=colour166,bg=default #orange and default
|
set-window-option -g window-status-current-fg colour166 #orange
|
||||||
#set-window-option -g window-status-current-style bright
|
set-window-option -g window-status-current-bg default
|
||||||
|
#set-window-option -g window-status-current-attr bright
|
||||||
|
|
||||||
# pane border
|
# pane border
|
||||||
set-option -g pane-border-style fg=colour235 #base02
|
set-option -g pane-border-fg colour235 #base02
|
||||||
set-option -g pane-active-border-style fg=colour240 #base01
|
set-option -g pane-active-border-fg colour240 #base01
|
||||||
|
|
||||||
# message text
|
# message text
|
||||||
set-option -g message-style fg=colour166,bg=colour235 #orange and base02
|
set-option -g message-bg colour235 #base02
|
||||||
|
set-option -g message-fg colour166 #orange
|
||||||
|
|
||||||
# pane number display
|
# pane number display
|
||||||
set-option -g display-panes-active-colour colour33 #blue
|
set-option -g display-panes-active-colour colour33 #blue
|
||||||
@@ -24,6 +29,3 @@ set-option -g display-panes-colour colour166 #orange
|
|||||||
|
|
||||||
# clock
|
# clock
|
||||||
set-window-option -g clock-mode-colour colour64 #green
|
set-window-option -g clock-mode-colour colour64 #green
|
||||||
|
|
||||||
# bell
|
|
||||||
set-window-option -g window-status-bell-style fg=colour235,bg=colour160 #base02, red
|
|
||||||
|
|||||||
Submodule dotfiles/vim/pack/matir/opt/solarized8 deleted from 9afbe12f68
Submodule dotfiles/vim/pack/matir/start/ctrlp deleted from 2e773fd8c7
Submodule dotfiles/vim/pack/matir/start/editorconfig deleted from c718cefc51
Submodule dotfiles/vim/pack/matir/start/fugitive deleted from 35f1095f9b
Submodule dotfiles/vim/pack/matir/start/surround deleted from fab8621670
Submodule dotfiles/vim/pack/matir/start/syntastic deleted from 0336c35c0b
Submodule dotfiles/vim/pack/matir/start/vim-go deleted from 13128e5f30
@@ -1,6 +1,25 @@
|
|||||||
" Allow full use of vim options
|
" Allow full use of vim options
|
||||||
set nocompatible
|
set nocompatible
|
||||||
|
|
||||||
|
" Enable Vundle if installed
|
||||||
|
if filereadable(glob("~/.vim/bundle/Vundle.vim/README.md"))
|
||||||
|
filetype off
|
||||||
|
set rtp+=~/.vim/bundle/Vundle.vim
|
||||||
|
call vundle#begin()
|
||||||
|
Plugin 'gmarik/Vundle.vim'
|
||||||
|
Plugin 'eistaa/vim-flake8'
|
||||||
|
Plugin 'tpope/vim-fugitive'
|
||||||
|
Plugin 'mileszs/ack.vim'
|
||||||
|
Plugin 'tpope/vim-unimpaired'
|
||||||
|
Plugin 'scrooloose/syntastic'
|
||||||
|
Plugin 'mattn/webapi-vim'
|
||||||
|
Plugin 'mattn/gist-vim'
|
||||||
|
Plugin 'fatih/vim-go'
|
||||||
|
Plugin 'altercation/vim-colors-solarized'
|
||||||
|
Plugin 'vimoutliner/vimoutliner'
|
||||||
|
call vundle#end()
|
||||||
|
endif
|
||||||
|
|
||||||
" Setup paths
|
" Setup paths
|
||||||
set backupdir=~/.cache/vim/backup//
|
set backupdir=~/.cache/vim/backup//
|
||||||
set directory=~/.cache/vim/swap//
|
set directory=~/.cache/vim/swap//
|
||||||
@@ -28,6 +47,7 @@ imap <S-Tab> <Esc><<A
|
|||||||
" Line numbering, ruler
|
" Line numbering, ruler
|
||||||
set number
|
set number
|
||||||
set ruler
|
set ruler
|
||||||
|
set cursorline
|
||||||
|
|
||||||
" File options
|
" File options
|
||||||
set encoding=utf-8
|
set encoding=utf-8
|
||||||
@@ -38,17 +58,12 @@ if has('gui_running')
|
|||||||
set guifont=Inconsolata\ Medium\ 12
|
set guifont=Inconsolata\ Medium\ 12
|
||||||
else
|
else
|
||||||
let g:solarized_termcolors=256
|
let g:solarized_termcolors=256
|
||||||
let g:solarized_termtrans=1
|
|
||||||
endif
|
endif
|
||||||
if $TERM ==? 'rxvt-unicode-256color'
|
silent! colorscheme solarized
|
||||||
" I have .Xresources setup for solarized
|
" Enable filetype support
|
||||||
let g:solarized_use16=1
|
filetype plugin indent on
|
||||||
endif
|
" Allow file modelines
|
||||||
silent! colorscheme solarized8
|
set modeline
|
||||||
" Default ASM syntax for ft support
|
|
||||||
let asmsyntax="nasm"
|
|
||||||
" Too risky to allow file modelines
|
|
||||||
set nomodeline
|
|
||||||
" Automatically re-read changed files
|
" Automatically re-read changed files
|
||||||
set autoread
|
set autoread
|
||||||
" fsync() after writing files
|
" fsync() after writing files
|
||||||
@@ -114,18 +129,9 @@ endfunction
|
|||||||
" Options for syntastic
|
" Options for syntastic
|
||||||
let g:syntastic_enable_signs = 1
|
let g:syntastic_enable_signs = 1
|
||||||
let g:syntastic_auto_loc_list = 2
|
let g:syntastic_auto_loc_list = 2
|
||||||
let g:syntastic_go_checkers = ['govet', 'errcheck', 'go']
|
|
||||||
let g:syntastic_python_checkers=['flake8']
|
|
||||||
|
|
||||||
" Have F5 run the tests and display errors
|
" Have F5 run the tests and display errors
|
||||||
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
||||||
|
|
||||||
" Load vim-ycm if installed on the system level
|
|
||||||
if isdirectory("/usr/share/vim-youcompleteme")
|
|
||||||
let g:ycm_autoclose_preview_window_after_insertion=1
|
|
||||||
set runtimepath+=/usr/share/vim-youcompleteme
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Include a .vimrc.local if it exists
|
" Include a .vimrc.local if it exists
|
||||||
if filereadable(glob("~/.vimrc.local"))
|
if filereadable(glob("~/.vimrc.local"))
|
||||||
source ~/.vimrc.local
|
source ~/.vimrc.local
|
||||||
@@ -133,27 +139,3 @@ endif
|
|||||||
|
|
||||||
" Options for vimoutliner
|
" Options for vimoutliner
|
||||||
autocmd Filetype votl setlocal sts=4
|
autocmd Filetype votl setlocal sts=4
|
||||||
|
|
||||||
" Highlight whitespace at end of file
|
|
||||||
highlight ExtraWhitespace ctermbg=red guibg=red
|
|
||||||
autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/ containedin=ALL
|
|
||||||
|
|
||||||
" Color column at end of lines
|
|
||||||
set colorcolumn=+1
|
|
||||||
highlight ColorColumn ctermbg=black guibg=lightgrey
|
|
||||||
|
|
||||||
" Remove smart quotes
|
|
||||||
command Unsmartquote %s/“\|”/"/g
|
|
||||||
|
|
||||||
" Markdown options
|
|
||||||
autocmd Filetype markdown set expandtab shiftwidth=4
|
|
||||||
|
|
||||||
" Python options
|
|
||||||
autocmd Filetype python set expandtab shiftwidth=4
|
|
||||||
|
|
||||||
" Makefile options
|
|
||||||
autocmd BufRead,BufNewFile Makefile* set noexpandtab
|
|
||||||
|
|
||||||
" Enable filetype support
|
|
||||||
" Needs to be at end of vimrc
|
|
||||||
filetype plugin indent on
|
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- alias.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[cmd]
|
|
||||||
AAWAY = "allserv /away"
|
|
||||||
AME = "allchan /me"
|
|
||||||
AMSG = "allchan /msg *"
|
|
||||||
ANICK = "allserv /nick"
|
|
||||||
BEEP = "print -beep"
|
|
||||||
BYE = "quit"
|
|
||||||
C = "buffer clear"
|
|
||||||
CHAT = "dcc chat"
|
|
||||||
CL = "buffer clear"
|
|
||||||
CLOSE = "buffer close"
|
|
||||||
EXIT = "quit"
|
|
||||||
IG = "ignore"
|
|
||||||
J = "join"
|
|
||||||
K = "kick"
|
|
||||||
KB = "kickban"
|
|
||||||
LEAVE = "part"
|
|
||||||
M = "msg"
|
|
||||||
MSGBUF = "command -buffer $1 * /input send $2-"
|
|
||||||
MUB = "unban *"
|
|
||||||
N = "names"
|
|
||||||
Q = "query"
|
|
||||||
REDRAW = "window refresh"
|
|
||||||
SAY = "msg *"
|
|
||||||
SIGNOFF = "quit"
|
|
||||||
T = "topic"
|
|
||||||
UB = "unban"
|
|
||||||
UMODE = "mode $nick"
|
|
||||||
V = "command core version"
|
|
||||||
W = "who"
|
|
||||||
WC = "window merge"
|
|
||||||
WI = "whois"
|
|
||||||
WII = "whois $1 $1"
|
|
||||||
WW = "whowas"
|
|
||||||
|
|
||||||
[completion]
|
|
||||||
MSGBUF = "%(buffers_plugins_names)"
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- aspell.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[color]
|
|
||||||
misspelled = lightred
|
|
||||||
suggestions = default
|
|
||||||
|
|
||||||
[check]
|
|
||||||
commands = "ame,amsg,away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic"
|
|
||||||
default_dict = ""
|
|
||||||
during_search = off
|
|
||||||
enabled = off
|
|
||||||
real_time = off
|
|
||||||
suggestions = -1
|
|
||||||
word_min_length = 2
|
|
||||||
|
|
||||||
[dict]
|
|
||||||
|
|
||||||
[option]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- charset.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[default]
|
|
||||||
decode = "iso-8859-1"
|
|
||||||
encode = ""
|
|
||||||
|
|
||||||
[decode]
|
|
||||||
|
|
||||||
[encode]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- exec.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[command]
|
|
||||||
default_options = ""
|
|
||||||
purge_delay = 0
|
|
||||||
|
|
||||||
[color]
|
|
||||||
flag_finished = lightred
|
|
||||||
flag_running = lightgreen
|
|
||||||
@@ -1,377 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- irc.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
buffer_open_before_autojoin = on
|
|
||||||
buffer_open_before_join = off
|
|
||||||
buffer_switch_autojoin = on
|
|
||||||
buffer_switch_join = on
|
|
||||||
color_nicks_in_names = off
|
|
||||||
color_nicks_in_nicklist = off
|
|
||||||
color_nicks_in_server_messages = on
|
|
||||||
color_pv_nick_like_channel = on
|
|
||||||
ctcp_time_format = "%a, %d %b %Y %T %z"
|
|
||||||
display_away = local
|
|
||||||
display_ctcp_blocked = on
|
|
||||||
display_ctcp_reply = on
|
|
||||||
display_ctcp_unknown = on
|
|
||||||
display_host_join = on
|
|
||||||
display_host_join_local = on
|
|
||||||
display_host_quit = on
|
|
||||||
display_join_message = "329,332,333,366"
|
|
||||||
display_old_topic = on
|
|
||||||
display_pv_away_once = on
|
|
||||||
display_pv_back = on
|
|
||||||
highlight_channel = "$nick"
|
|
||||||
highlight_pv = "$nick"
|
|
||||||
highlight_server = "$nick"
|
|
||||||
highlight_tags_restrict = "irc_privmsg,irc_notice"
|
|
||||||
item_channel_modes_hide_args = "k"
|
|
||||||
item_display_server = buffer_plugin
|
|
||||||
item_nick_modes = on
|
|
||||||
item_nick_prefix = on
|
|
||||||
join_auto_add_chantype = off
|
|
||||||
msgbuffer_fallback = current
|
|
||||||
new_channel_position = none
|
|
||||||
new_pv_position = none
|
|
||||||
nick_completion_smart = speakers
|
|
||||||
nick_mode = prefix
|
|
||||||
nick_mode_empty = off
|
|
||||||
nicks_hide_password = "nickserv"
|
|
||||||
notice_as_pv = auto
|
|
||||||
notice_welcome_redirect = on
|
|
||||||
notice_welcome_tags = ""
|
|
||||||
notify_tags_ison = "notify_message"
|
|
||||||
notify_tags_whois = "notify_message"
|
|
||||||
part_closes_buffer = on
|
|
||||||
pv_buffer = independent
|
|
||||||
pv_tags = "notify_private"
|
|
||||||
raw_messages = 256
|
|
||||||
server_buffer = merge_with_core
|
|
||||||
smart_filter = on
|
|
||||||
smart_filter_delay = 5
|
|
||||||
smart_filter_join = on
|
|
||||||
smart_filter_join_unmask = 30
|
|
||||||
smart_filter_mode = "+"
|
|
||||||
smart_filter_nick = on
|
|
||||||
smart_filter_quit = on
|
|
||||||
temporary_servers = off
|
|
||||||
topic_strip_colors = off
|
|
||||||
|
|
||||||
[color]
|
|
||||||
input_nick = lightcyan
|
|
||||||
item_channel_modes = default
|
|
||||||
item_lag_counting = default
|
|
||||||
item_lag_finished = yellow
|
|
||||||
item_nick_modes = default
|
|
||||||
message_join = green
|
|
||||||
message_quit = red
|
|
||||||
mirc_remap = "1,-1:darkgray"
|
|
||||||
nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
|
|
||||||
notice = green
|
|
||||||
reason_quit = default
|
|
||||||
topic_current = default
|
|
||||||
topic_new = white
|
|
||||||
topic_old = default
|
|
||||||
|
|
||||||
[network]
|
|
||||||
autoreconnect_delay_growing = 2
|
|
||||||
autoreconnect_delay_max = 600
|
|
||||||
ban_mask_default = "*!$ident@$host"
|
|
||||||
channel_encode = off
|
|
||||||
colors_receive = on
|
|
||||||
colors_send = on
|
|
||||||
lag_check = 60
|
|
||||||
lag_max = 1800
|
|
||||||
lag_min_show = 500
|
|
||||||
lag_reconnect = 0
|
|
||||||
lag_refresh_interval = 1
|
|
||||||
notify_check_ison = 1
|
|
||||||
notify_check_whois = 5
|
|
||||||
sasl_fail_unavailable = on
|
|
||||||
send_unknown_commands = off
|
|
||||||
whois_double_nick = off
|
|
||||||
|
|
||||||
[msgbuffer]
|
|
||||||
|
|
||||||
[ctcp]
|
|
||||||
|
|
||||||
[ignore]
|
|
||||||
|
|
||||||
[server_default]
|
|
||||||
addresses = ""
|
|
||||||
anti_flood_prio_high = 2
|
|
||||||
anti_flood_prio_low = 2
|
|
||||||
autoconnect = off
|
|
||||||
autojoin = ""
|
|
||||||
autoreconnect = on
|
|
||||||
autoreconnect_delay = 10
|
|
||||||
autorejoin = off
|
|
||||||
autorejoin_delay = 30
|
|
||||||
away_check = 0
|
|
||||||
away_check_max_nicks = 25
|
|
||||||
capabilities = ""
|
|
||||||
command = ""
|
|
||||||
command_delay = 0
|
|
||||||
connection_timeout = 60
|
|
||||||
ipv6 = on
|
|
||||||
local_hostname = ""
|
|
||||||
msg_kick = ""
|
|
||||||
msg_part = "WeeChat ${info:version}"
|
|
||||||
msg_quit = "WeeChat ${info:version}"
|
|
||||||
nicks = "Matir,Matir~,Matir[]"
|
|
||||||
nicks_alternate = on
|
|
||||||
notify = ""
|
|
||||||
password = ""
|
|
||||||
proxy = ""
|
|
||||||
realname = ""
|
|
||||||
sasl_fail = continue
|
|
||||||
sasl_key = ""
|
|
||||||
sasl_mechanism = plain
|
|
||||||
sasl_password = ""
|
|
||||||
sasl_timeout = 15
|
|
||||||
sasl_username = ""
|
|
||||||
ssl = off
|
|
||||||
ssl_cert = ""
|
|
||||||
ssl_dhkey_size = 2048
|
|
||||||
ssl_fingerprint = ""
|
|
||||||
ssl_priorities = "NORMAL"
|
|
||||||
ssl_verify = on
|
|
||||||
username = "matir"
|
|
||||||
|
|
||||||
[server]
|
|
||||||
freenode.addresses = "chat.freenode.net/7000"
|
|
||||||
freenode.proxy
|
|
||||||
freenode.ipv6
|
|
||||||
freenode.ssl = on
|
|
||||||
freenode.ssl_cert = "%h/certs/freenode-matir.pem"
|
|
||||||
freenode.ssl_priorities
|
|
||||||
freenode.ssl_dhkey_size
|
|
||||||
freenode.ssl_fingerprint
|
|
||||||
freenode.ssl_verify = on
|
|
||||||
freenode.password
|
|
||||||
freenode.capabilities
|
|
||||||
freenode.sasl_mechanism
|
|
||||||
freenode.sasl_username
|
|
||||||
freenode.sasl_password
|
|
||||||
freenode.sasl_key
|
|
||||||
freenode.sasl_timeout
|
|
||||||
freenode.sasl_fail
|
|
||||||
freenode.autoconnect = on
|
|
||||||
freenode.autoreconnect
|
|
||||||
freenode.autoreconnect_delay
|
|
||||||
freenode.nicks = "Matir,Matir~"
|
|
||||||
freenode.nicks_alternate
|
|
||||||
freenode.username
|
|
||||||
freenode.realname
|
|
||||||
freenode.local_hostname
|
|
||||||
freenode.command
|
|
||||||
freenode.command_delay
|
|
||||||
freenode.autojoin = "#kali-linux,#openvpn,#radare,#vulnhub,#offsec,#offtopicsec,##ctfcompetition,#dc404,#droidsec"
|
|
||||||
freenode.autorejoin
|
|
||||||
freenode.autorejoin_delay
|
|
||||||
freenode.connection_timeout
|
|
||||||
freenode.anti_flood_prio_high
|
|
||||||
freenode.anti_flood_prio_low
|
|
||||||
freenode.away_check
|
|
||||||
freenode.away_check_max_nicks
|
|
||||||
freenode.msg_kick
|
|
||||||
freenode.msg_part
|
|
||||||
freenode.msg_quit
|
|
||||||
freenode.notify
|
|
||||||
hak5.addresses = "irc.hak5.org/6697"
|
|
||||||
hak5.proxy
|
|
||||||
hak5.ipv6
|
|
||||||
hak5.ssl = on
|
|
||||||
hak5.ssl_cert = "%h/certs/freenode-matir.pem"
|
|
||||||
hak5.ssl_priorities
|
|
||||||
hak5.ssl_dhkey_size
|
|
||||||
hak5.ssl_fingerprint
|
|
||||||
hak5.ssl_verify = off
|
|
||||||
hak5.password
|
|
||||||
hak5.capabilities
|
|
||||||
hak5.sasl_mechanism
|
|
||||||
hak5.sasl_username
|
|
||||||
hak5.sasl_password
|
|
||||||
hak5.sasl_key
|
|
||||||
hak5.sasl_timeout
|
|
||||||
hak5.sasl_fail
|
|
||||||
hak5.autoconnect = on
|
|
||||||
hak5.autoreconnect
|
|
||||||
hak5.autoreconnect_delay
|
|
||||||
hak5.nicks
|
|
||||||
hak5.nicks_alternate
|
|
||||||
hak5.username
|
|
||||||
hak5.realname
|
|
||||||
hak5.local_hostname
|
|
||||||
hak5.command
|
|
||||||
hak5.command_delay
|
|
||||||
hak5.autojoin = "#hak5,#pineapple,#ducky,#SDR,#lanturtle,#bashbunny"
|
|
||||||
hak5.autorejoin
|
|
||||||
hak5.autorejoin_delay
|
|
||||||
hak5.connection_timeout
|
|
||||||
hak5.anti_flood_prio_high
|
|
||||||
hak5.anti_flood_prio_low
|
|
||||||
hak5.away_check
|
|
||||||
hak5.away_check_max_nicks
|
|
||||||
hak5.msg_kick
|
|
||||||
hak5.msg_part
|
|
||||||
hak5.msg_quit
|
|
||||||
hak5.notify
|
|
||||||
rpisec.addresses = "irc.rpis.ec/6697"
|
|
||||||
rpisec.proxy
|
|
||||||
rpisec.ipv6
|
|
||||||
rpisec.ssl = on
|
|
||||||
rpisec.ssl_cert
|
|
||||||
rpisec.ssl_priorities
|
|
||||||
rpisec.ssl_dhkey_size
|
|
||||||
rpisec.ssl_fingerprint
|
|
||||||
rpisec.ssl_verify = on
|
|
||||||
rpisec.password
|
|
||||||
rpisec.capabilities
|
|
||||||
rpisec.sasl_mechanism
|
|
||||||
rpisec.sasl_username
|
|
||||||
rpisec.sasl_password
|
|
||||||
rpisec.sasl_key
|
|
||||||
rpisec.sasl_timeout
|
|
||||||
rpisec.sasl_fail
|
|
||||||
rpisec.autoconnect = on
|
|
||||||
rpisec.autoreconnect
|
|
||||||
rpisec.autoreconnect_delay
|
|
||||||
rpisec.nicks
|
|
||||||
rpisec.nicks_alternate
|
|
||||||
rpisec.username
|
|
||||||
rpisec.realname
|
|
||||||
rpisec.local_hostname
|
|
||||||
rpisec.command
|
|
||||||
rpisec.command_delay
|
|
||||||
rpisec.autojoin = "#rpisec"
|
|
||||||
rpisec.autorejoin
|
|
||||||
rpisec.autorejoin_delay
|
|
||||||
rpisec.connection_timeout
|
|
||||||
rpisec.anti_flood_prio_high
|
|
||||||
rpisec.anti_flood_prio_low
|
|
||||||
rpisec.away_check
|
|
||||||
rpisec.away_check_max_nicks
|
|
||||||
rpisec.msg_kick
|
|
||||||
rpisec.msg_part
|
|
||||||
rpisec.msg_quit
|
|
||||||
rpisec.notify
|
|
||||||
overthewire.addresses = "ircs.overthewire.org/6697"
|
|
||||||
overthewire.proxy
|
|
||||||
overthewire.ipv6
|
|
||||||
overthewire.ssl = on
|
|
||||||
overthewire.ssl_cert = "%h/certs/freenode-matir.pem"
|
|
||||||
overthewire.ssl_priorities
|
|
||||||
overthewire.ssl_dhkey_size
|
|
||||||
overthewire.ssl_fingerprint
|
|
||||||
overthewire.ssl_verify = on
|
|
||||||
overthewire.password
|
|
||||||
overthewire.capabilities
|
|
||||||
overthewire.sasl_mechanism
|
|
||||||
overthewire.sasl_username
|
|
||||||
overthewire.sasl_password
|
|
||||||
overthewire.sasl_key
|
|
||||||
overthewire.sasl_timeout
|
|
||||||
overthewire.sasl_fail
|
|
||||||
overthewire.autoconnect = on
|
|
||||||
overthewire.autoreconnect
|
|
||||||
overthewire.autoreconnect_delay
|
|
||||||
overthewire.nicks
|
|
||||||
overthewire.nicks_alternate
|
|
||||||
overthewire.username
|
|
||||||
overthewire.realname
|
|
||||||
overthewire.local_hostname
|
|
||||||
overthewire.command
|
|
||||||
overthewire.command_delay
|
|
||||||
overthewire.autojoin = "#wargames,#social,#amateria,#io"
|
|
||||||
overthewire.autorejoin
|
|
||||||
overthewire.autorejoin_delay
|
|
||||||
overthewire.connection_timeout
|
|
||||||
overthewire.anti_flood_prio_high
|
|
||||||
overthewire.anti_flood_prio_low
|
|
||||||
overthewire.away_check
|
|
||||||
overthewire.away_check_max_nicks
|
|
||||||
overthewire.msg_kick
|
|
||||||
overthewire.msg_part
|
|
||||||
overthewire.msg_quit
|
|
||||||
overthewire.notify
|
|
||||||
hackint.addresses = "irc.hackint.org/9999"
|
|
||||||
hackint.proxy
|
|
||||||
hackint.ipv6
|
|
||||||
hackint.ssl = on
|
|
||||||
hackint.ssl_cert
|
|
||||||
hackint.ssl_priorities
|
|
||||||
hackint.ssl_dhkey_size
|
|
||||||
hackint.ssl_fingerprint
|
|
||||||
hackint.ssl_verify = on
|
|
||||||
hackint.password
|
|
||||||
hackint.capabilities
|
|
||||||
hackint.sasl_mechanism
|
|
||||||
hackint.sasl_username
|
|
||||||
hackint.sasl_password
|
|
||||||
hackint.sasl_key
|
|
||||||
hackint.sasl_timeout
|
|
||||||
hackint.sasl_fail
|
|
||||||
hackint.autoconnect = on
|
|
||||||
hackint.autoreconnect
|
|
||||||
hackint.autoreconnect_delay
|
|
||||||
hackint.nicks
|
|
||||||
hackint.nicks_alternate
|
|
||||||
hackint.username
|
|
||||||
hackint.realname
|
|
||||||
hackint.local_hostname
|
|
||||||
hackint.command
|
|
||||||
hackint.command_delay
|
|
||||||
hackint.autojoin
|
|
||||||
hackint.autorejoin
|
|
||||||
hackint.autorejoin_delay
|
|
||||||
hackint.connection_timeout
|
|
||||||
hackint.anti_flood_prio_high
|
|
||||||
hackint.anti_flood_prio_low
|
|
||||||
hackint.away_check
|
|
||||||
hackint.away_check_max_nicks
|
|
||||||
hackint.msg_kick
|
|
||||||
hackint.msg_part
|
|
||||||
hackint.msg_quit
|
|
||||||
hackint.notify
|
|
||||||
afternet.addresses = "irc.afternet.org/6697"
|
|
||||||
afternet.proxy
|
|
||||||
afternet.ipv6
|
|
||||||
afternet.ssl = on
|
|
||||||
afternet.ssl_cert
|
|
||||||
afternet.ssl_priorities
|
|
||||||
afternet.ssl_dhkey_size
|
|
||||||
afternet.ssl_fingerprint
|
|
||||||
afternet.ssl_verify = on
|
|
||||||
afternet.password
|
|
||||||
afternet.capabilities
|
|
||||||
afternet.sasl_mechanism
|
|
||||||
afternet.sasl_username
|
|
||||||
afternet.sasl_password
|
|
||||||
afternet.sasl_key
|
|
||||||
afternet.sasl_timeout
|
|
||||||
afternet.sasl_fail
|
|
||||||
afternet.autoconnect = on
|
|
||||||
afternet.autoreconnect
|
|
||||||
afternet.autoreconnect_delay
|
|
||||||
afternet.nicks
|
|
||||||
afternet.nicks_alternate
|
|
||||||
afternet.username
|
|
||||||
afternet.realname
|
|
||||||
afternet.local_hostname
|
|
||||||
afternet.command
|
|
||||||
afternet.command_delay
|
|
||||||
afternet.autojoin = "#eevblog"
|
|
||||||
afternet.autorejoin
|
|
||||||
afternet.autorejoin_delay
|
|
||||||
afternet.connection_timeout
|
|
||||||
afternet.anti_flood_prio_high
|
|
||||||
afternet.anti_flood_prio_low
|
|
||||||
afternet.away_check
|
|
||||||
afternet.away_check_max_nicks
|
|
||||||
afternet.msg_kick
|
|
||||||
afternet.msg_part
|
|
||||||
afternet.msg_quit
|
|
||||||
afternet.notify
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Update the weechat SSL key. Should be called from cron via sudo.
|
|
||||||
|
|
||||||
eval WEEDIR="$(printf "~%q/.weechat/" "${SUDO_USER}")"
|
|
||||||
LIVEKEY="${WEEDIR}/ssl/relay.pem"
|
|
||||||
|
|
||||||
certbot renew -q
|
|
||||||
cat /etc/letsencrypt/live/$(hostname -f)/{privkey,fullchain}.pem > \
|
|
||||||
${LIVEKEY}
|
|
||||||
chown ${SUDO_USER}:$(id -gn ${SUDO_USER}) ${LIVEKEY}
|
|
||||||
for fifo in ${WEEDIR}/weechat_fifo* ; do
|
|
||||||
echo '*/relay sslcertkey' > ${fifo}
|
|
||||||
done
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- logger.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
backlog = 20
|
|
||||||
|
|
||||||
[color]
|
|
||||||
backlog_end = default
|
|
||||||
backlog_line = default
|
|
||||||
|
|
||||||
[file]
|
|
||||||
auto_log = on
|
|
||||||
flush_delay = 120
|
|
||||||
info_lines = off
|
|
||||||
mask = "$plugin.$name.weechatlog"
|
|
||||||
name_lower_case = on
|
|
||||||
nick_prefix = ""
|
|
||||||
nick_suffix = ""
|
|
||||||
path = "%h/logs/"
|
|
||||||
replacement_char = "_"
|
|
||||||
time_format = "%Y-%m-%d %H:%M:%S"
|
|
||||||
|
|
||||||
[level]
|
|
||||||
|
|
||||||
[mask]
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- plugins.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[var]
|
|
||||||
fifo.fifo = "on"
|
|
||||||
guile.check_license = "off"
|
|
||||||
javascript.check_license = "off"
|
|
||||||
lua.check_license = "off"
|
|
||||||
perl.check_license = "off"
|
|
||||||
python.check_license = "off"
|
|
||||||
ruby.check_license = "off"
|
|
||||||
tcl.check_license = "off"
|
|
||||||
|
|
||||||
[desc]
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- relay.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
auto_open_buffer = on
|
|
||||||
raw_messages = 256
|
|
||||||
|
|
||||||
[color]
|
|
||||||
client = cyan
|
|
||||||
status_active = lightblue
|
|
||||||
status_auth_failed = lightred
|
|
||||||
status_connecting = yellow
|
|
||||||
status_disconnected = lightred
|
|
||||||
status_waiting_auth = brown
|
|
||||||
text = default
|
|
||||||
text_bg = default
|
|
||||||
text_selected = white
|
|
||||||
|
|
||||||
[network]
|
|
||||||
allow_empty_password = off
|
|
||||||
allowed_ips = ""
|
|
||||||
bind_address = ""
|
|
||||||
clients_purge_delay = 0
|
|
||||||
compression_level = 6
|
|
||||||
ipv6 = on
|
|
||||||
max_clients = 5
|
|
||||||
password = "${sec.data.relay_password}"
|
|
||||||
ssl_cert_key = "%h/ssl/relay.pem"
|
|
||||||
ssl_priorities = "NORMAL:-VERS-SSL3.0"
|
|
||||||
websocket_allowed_origins = ""
|
|
||||||
|
|
||||||
[irc]
|
|
||||||
backlog_max_minutes = 1440
|
|
||||||
backlog_max_number = 256
|
|
||||||
backlog_since_last_disconnect = on
|
|
||||||
backlog_since_last_message = off
|
|
||||||
backlog_tags = "irc_privmsg"
|
|
||||||
backlog_time_format = "[%H:%M] "
|
|
||||||
|
|
||||||
[port]
|
|
||||||
ssl.weechat = 9001
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- script.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
columns = "%s %n %V %v %u | %d | %t"
|
|
||||||
diff_color = on
|
|
||||||
diff_command = "auto"
|
|
||||||
display_source = on
|
|
||||||
quiet_actions = on
|
|
||||||
sort = "p,n"
|
|
||||||
translate_description = on
|
|
||||||
use_keys = on
|
|
||||||
|
|
||||||
[color]
|
|
||||||
status_autoloaded = cyan
|
|
||||||
status_held = white
|
|
||||||
status_installed = lightcyan
|
|
||||||
status_obsolete = lightmagenta
|
|
||||||
status_popular = yellow
|
|
||||||
status_running = lightgreen
|
|
||||||
status_unknown = lightred
|
|
||||||
text = default
|
|
||||||
text_bg = default
|
|
||||||
text_bg_selected = red
|
|
||||||
text_date = default
|
|
||||||
text_date_selected = white
|
|
||||||
text_delimiters = default
|
|
||||||
text_description = default
|
|
||||||
text_description_selected = white
|
|
||||||
text_extension = default
|
|
||||||
text_extension_selected = white
|
|
||||||
text_name = cyan
|
|
||||||
text_name_selected = lightcyan
|
|
||||||
text_selected = white
|
|
||||||
text_tags = brown
|
|
||||||
text_tags_selected = yellow
|
|
||||||
text_version = magenta
|
|
||||||
text_version_loaded = default
|
|
||||||
text_version_loaded_selected = white
|
|
||||||
text_version_selected = lightmagenta
|
|
||||||
|
|
||||||
[scripts]
|
|
||||||
autoload = on
|
|
||||||
cache_expire = 1440
|
|
||||||
download_timeout = 30
|
|
||||||
hold = ""
|
|
||||||
path = "%h/script"
|
|
||||||
url = "http://weechat.org/files/plugins.xml.gz"
|
|
||||||
url_force_https = on
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- sec.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[crypt]
|
|
||||||
cipher = aes256
|
|
||||||
hash_algo = sha256
|
|
||||||
passphrase_file = "~/.weechat-passphrase"
|
|
||||||
salt = on
|
|
||||||
|
|
||||||
[data]
|
|
||||||
__passphrase__ = on
|
|
||||||
relay_password = "D1FD30C08951B1A5BCBBB7EE6AAFB6AF9B86017B353182A1CA8826D5A98EB88E7E723591C544FC41A6913EA67E8764E50BDD8A5AD3D0A0"
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- trigger.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
enabled = on
|
|
||||||
monitor_strip_colors = off
|
|
||||||
|
|
||||||
[color]
|
|
||||||
flag_command = lightgreen
|
|
||||||
flag_conditions = yellow
|
|
||||||
flag_post_action = lightblue
|
|
||||||
flag_regex = lightcyan
|
|
||||||
flag_return_code = lightmagenta
|
|
||||||
regex = white
|
|
||||||
replace = cyan
|
|
||||||
trigger = green
|
|
||||||
trigger_disabled = red
|
|
||||||
|
|
||||||
[trigger]
|
|
||||||
beep.arguments = ""
|
|
||||||
beep.command = "/print -beep"
|
|
||||||
beep.conditions = "${tg_highlight} || ${tg_msg_pv}"
|
|
||||||
beep.enabled = on
|
|
||||||
beep.hook = print
|
|
||||||
beep.post_action = none
|
|
||||||
beep.regex = ""
|
|
||||||
beep.return_code = ok
|
|
||||||
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
|
||||||
cmd_pass.command = ""
|
|
||||||
cmd_pass.conditions = ""
|
|
||||||
cmd_pass.enabled = on
|
|
||||||
cmd_pass.hook = modifier
|
|
||||||
cmd_pass.post_action = none
|
|
||||||
cmd_pass.regex = "==^((/(msg|quote) +nickserv +(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==$1$.*+"
|
|
||||||
cmd_pass.return_code = ok
|
|
||||||
msg_auth.arguments = "5000|irc_message_auth"
|
|
||||||
msg_auth.command = ""
|
|
||||||
msg_auth.conditions = ""
|
|
||||||
msg_auth.enabled = on
|
|
||||||
msg_auth.hook = modifier
|
|
||||||
msg_auth.post_action = none
|
|
||||||
msg_auth.regex = "==^(.*(id|identify|register|ghost +[^ ]+|release +[^ ]+) +)(.*)==$1$.*+"
|
|
||||||
msg_auth.return_code = ok
|
|
||||||
server_pass.arguments = "5000|input_text_display;5000|history_add"
|
|
||||||
server_pass.command = ""
|
|
||||||
server_pass.conditions = ""
|
|
||||||
server_pass.enabled = on
|
|
||||||
server_pass.hook = modifier
|
|
||||||
server_pass.post_action = none
|
|
||||||
server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==$1$.*4$5"
|
|
||||||
server_pass.return_code = ok
|
|
||||||
@@ -1,595 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- weechat.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[debug]
|
|
||||||
|
|
||||||
[startup]
|
|
||||||
command_after_plugins = ""
|
|
||||||
command_before_plugins = ""
|
|
||||||
display_logo = on
|
|
||||||
display_version = on
|
|
||||||
sys_rlimit = ""
|
|
||||||
|
|
||||||
[look]
|
|
||||||
align_end_of_lines = message
|
|
||||||
bar_more_down = "++"
|
|
||||||
bar_more_left = "<<"
|
|
||||||
bar_more_right = ">>"
|
|
||||||
bar_more_up = "--"
|
|
||||||
bare_display_exit_on_input = on
|
|
||||||
bare_display_time_format = "%H:%M"
|
|
||||||
buffer_auto_renumber = on
|
|
||||||
buffer_notify_default = all
|
|
||||||
buffer_position = end
|
|
||||||
buffer_search_case_sensitive = off
|
|
||||||
buffer_search_force_default = off
|
|
||||||
buffer_search_regex = off
|
|
||||||
buffer_search_where = prefix_message
|
|
||||||
buffer_time_format = "%H:%M:%S"
|
|
||||||
color_basic_force_bold = off
|
|
||||||
color_inactive_buffer = on
|
|
||||||
color_inactive_message = on
|
|
||||||
color_inactive_prefix = on
|
|
||||||
color_inactive_prefix_buffer = on
|
|
||||||
color_inactive_time = off
|
|
||||||
color_inactive_window = on
|
|
||||||
color_nick_offline = off
|
|
||||||
color_pairs_auto_reset = 5
|
|
||||||
color_real_white = off
|
|
||||||
command_chars = ""
|
|
||||||
command_incomplete = off
|
|
||||||
confirm_quit = off
|
|
||||||
confirm_upgrade = off
|
|
||||||
day_change = on
|
|
||||||
day_change_message_1date = "-- %a, %d %b %Y --"
|
|
||||||
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
|
|
||||||
eat_newline_glitch = off
|
|
||||||
emphasized_attributes = ""
|
|
||||||
highlight = ""
|
|
||||||
highlight_regex = ""
|
|
||||||
highlight_tags = ""
|
|
||||||
hotlist_add_conditions = "${buffer.num_displayed} == 0 && ${priority} >= 1"
|
|
||||||
hotlist_buffer_separator = ", "
|
|
||||||
hotlist_count_max = 0
|
|
||||||
hotlist_count_min_msg = 2
|
|
||||||
hotlist_names_count = 10000
|
|
||||||
hotlist_names_length = 0
|
|
||||||
hotlist_names_level = 14
|
|
||||||
hotlist_names_merged_buffers = off
|
|
||||||
hotlist_prefix = "Act: "
|
|
||||||
hotlist_remove = merged
|
|
||||||
hotlist_short_names = on
|
|
||||||
hotlist_sort = group_time_asc
|
|
||||||
hotlist_suffix = ""
|
|
||||||
hotlist_unique_numbers = on
|
|
||||||
input_cursor_scroll = 20
|
|
||||||
input_share = none
|
|
||||||
input_share_overwrite = off
|
|
||||||
input_undo_max = 32
|
|
||||||
item_away_message = on
|
|
||||||
item_buffer_filter = "*"
|
|
||||||
item_buffer_zoom = "!"
|
|
||||||
item_mouse_status = "M"
|
|
||||||
item_time_format = "%H:%M"
|
|
||||||
jump_current_to_previous_buffer = on
|
|
||||||
jump_previous_buffer_when_closing = on
|
|
||||||
jump_smart_back_to_buffer = on
|
|
||||||
key_bind_safe = on
|
|
||||||
key_grab_delay = 800
|
|
||||||
mouse = off
|
|
||||||
mouse_timer_delay = 100
|
|
||||||
nick_color_force = ""
|
|
||||||
nick_color_hash = djb2
|
|
||||||
nick_color_stop_chars = "_|["
|
|
||||||
nick_prefix = ""
|
|
||||||
nick_suffix = ""
|
|
||||||
paste_auto_add_newline = on
|
|
||||||
paste_bracketed = on
|
|
||||||
paste_bracketed_timer_delay = 10
|
|
||||||
paste_max_lines = 1
|
|
||||||
prefix_action = " *"
|
|
||||||
prefix_align = right
|
|
||||||
prefix_align_max = 15
|
|
||||||
prefix_align_min = 0
|
|
||||||
prefix_align_more = "+"
|
|
||||||
prefix_align_more_after = on
|
|
||||||
prefix_buffer_align = right
|
|
||||||
prefix_buffer_align_max = 0
|
|
||||||
prefix_buffer_align_more = "+"
|
|
||||||
prefix_buffer_align_more_after = on
|
|
||||||
prefix_error = "=!="
|
|
||||||
prefix_join = "-->"
|
|
||||||
prefix_network = "--"
|
|
||||||
prefix_quit = "<--"
|
|
||||||
prefix_same_nick = ""
|
|
||||||
prefix_suffix = "|"
|
|
||||||
quote_nick_prefix = "<"
|
|
||||||
quote_nick_suffix = ">"
|
|
||||||
quote_time_format = "%H:%M:%S"
|
|
||||||
read_marker = line
|
|
||||||
read_marker_always_show = off
|
|
||||||
read_marker_string = "- "
|
|
||||||
save_config_on_exit = on
|
|
||||||
save_layout_on_exit = none
|
|
||||||
scroll_amount = 3
|
|
||||||
scroll_bottom_after_switch = off
|
|
||||||
scroll_page_percent = 100
|
|
||||||
search_text_not_found_alert = on
|
|
||||||
separator_horizontal = "-"
|
|
||||||
separator_vertical = ""
|
|
||||||
tab_width = 1
|
|
||||||
time_format = "%a, %d %b %Y %T"
|
|
||||||
window_auto_zoom = off
|
|
||||||
window_separator_horizontal = on
|
|
||||||
window_separator_vertical = on
|
|
||||||
window_title = "irc"
|
|
||||||
word_chars_highlight = "!\u00A0,-,_,|,alnum"
|
|
||||||
word_chars_input = "!\u00A0,-,_,|,alnum"
|
|
||||||
|
|
||||||
[palette]
|
|
||||||
|
|
||||||
[color]
|
|
||||||
bar_more = lightmagenta
|
|
||||||
chat = default
|
|
||||||
chat_bg = default
|
|
||||||
chat_buffer = white
|
|
||||||
chat_channel = white
|
|
||||||
chat_day_change = cyan
|
|
||||||
chat_delimiters = green
|
|
||||||
chat_highlight = yellow
|
|
||||||
chat_highlight_bg = magenta
|
|
||||||
chat_host = cyan
|
|
||||||
chat_inactive_buffer = default
|
|
||||||
chat_inactive_window = default
|
|
||||||
chat_nick = lightcyan
|
|
||||||
chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue"
|
|
||||||
chat_nick_offline = default
|
|
||||||
chat_nick_offline_highlight = default
|
|
||||||
chat_nick_offline_highlight_bg = blue
|
|
||||||
chat_nick_other = cyan
|
|
||||||
chat_nick_prefix = green
|
|
||||||
chat_nick_self = white
|
|
||||||
chat_nick_suffix = green
|
|
||||||
chat_prefix_action = white
|
|
||||||
chat_prefix_buffer = brown
|
|
||||||
chat_prefix_buffer_inactive_buffer = default
|
|
||||||
chat_prefix_error = yellow
|
|
||||||
chat_prefix_join = lightgreen
|
|
||||||
chat_prefix_more = lightmagenta
|
|
||||||
chat_prefix_network = magenta
|
|
||||||
chat_prefix_quit = lightred
|
|
||||||
chat_prefix_suffix = green
|
|
||||||
chat_read_marker = magenta
|
|
||||||
chat_read_marker_bg = default
|
|
||||||
chat_server = brown
|
|
||||||
chat_tags = red
|
|
||||||
chat_text_found = yellow
|
|
||||||
chat_text_found_bg = lightmagenta
|
|
||||||
chat_time = default
|
|
||||||
chat_time_delimiters = brown
|
|
||||||
chat_value = cyan
|
|
||||||
chat_value_null = blue
|
|
||||||
emphasized = yellow
|
|
||||||
emphasized_bg = magenta
|
|
||||||
input_actions = lightgreen
|
|
||||||
input_text_not_found = red
|
|
||||||
item_away = yellow
|
|
||||||
nicklist_away = cyan
|
|
||||||
nicklist_group = green
|
|
||||||
separator = blue
|
|
||||||
status_count_highlight = magenta
|
|
||||||
status_count_msg = brown
|
|
||||||
status_count_other = default
|
|
||||||
status_count_private = green
|
|
||||||
status_data_highlight = lightmagenta
|
|
||||||
status_data_msg = yellow
|
|
||||||
status_data_other = default
|
|
||||||
status_data_private = lightgreen
|
|
||||||
status_filter = green
|
|
||||||
status_more = yellow
|
|
||||||
status_mouse = green
|
|
||||||
status_name = white
|
|
||||||
status_name_ssl = lightgreen
|
|
||||||
status_nicklist_count = default
|
|
||||||
status_number = yellow
|
|
||||||
status_time = default
|
|
||||||
|
|
||||||
[completion]
|
|
||||||
base_word_until_cursor = on
|
|
||||||
command_inline = on
|
|
||||||
default_template = "%(nicks)|%(irc_channels)"
|
|
||||||
nick_add_space = on
|
|
||||||
nick_completer = ":"
|
|
||||||
nick_first_only = off
|
|
||||||
nick_ignore_chars = "[]`_-^"
|
|
||||||
partial_completion_alert = on
|
|
||||||
partial_completion_command = off
|
|
||||||
partial_completion_command_arg = off
|
|
||||||
partial_completion_count = on
|
|
||||||
partial_completion_other = off
|
|
||||||
|
|
||||||
[history]
|
|
||||||
display_default = 5
|
|
||||||
max_buffer_lines_minutes = 0
|
|
||||||
max_buffer_lines_number = 4096
|
|
||||||
max_commands = 100
|
|
||||||
max_visited_buffers = 50
|
|
||||||
|
|
||||||
[proxy]
|
|
||||||
|
|
||||||
[network]
|
|
||||||
connection_timeout = 60
|
|
||||||
gnutls_ca_file = "~/.weechat/certs/ca-certificates.crt"
|
|
||||||
gnutls_handshake_timeout = 30
|
|
||||||
proxy_curl = ""
|
|
||||||
|
|
||||||
[plugin]
|
|
||||||
autoload = "*"
|
|
||||||
debug = off
|
|
||||||
extension = ".so,.dll"
|
|
||||||
path = "%h/plugins"
|
|
||||||
save_config_on_unload = on
|
|
||||||
|
|
||||||
[bar]
|
|
||||||
input.color_bg = default
|
|
||||||
input.color_delim = cyan
|
|
||||||
input.color_fg = default
|
|
||||||
input.conditions = ""
|
|
||||||
input.filling_left_right = vertical
|
|
||||||
input.filling_top_bottom = horizontal
|
|
||||||
input.hidden = off
|
|
||||||
input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text"
|
|
||||||
input.position = bottom
|
|
||||||
input.priority = 1000
|
|
||||||
input.separator = off
|
|
||||||
input.size = 1
|
|
||||||
input.size_max = 0
|
|
||||||
input.type = window
|
|
||||||
nicklist.color_bg = default
|
|
||||||
nicklist.color_delim = cyan
|
|
||||||
nicklist.color_fg = default
|
|
||||||
nicklist.conditions = "${nicklist}"
|
|
||||||
nicklist.filling_left_right = vertical
|
|
||||||
nicklist.filling_top_bottom = columns_vertical
|
|
||||||
nicklist.hidden = on
|
|
||||||
nicklist.items = "buffer_nicklist"
|
|
||||||
nicklist.position = right
|
|
||||||
nicklist.priority = 200
|
|
||||||
nicklist.separator = on
|
|
||||||
nicklist.size = 0
|
|
||||||
nicklist.size_max = 0
|
|
||||||
nicklist.type = window
|
|
||||||
status.color_bg = 0
|
|
||||||
status.color_delim = cyan
|
|
||||||
status.color_fg = default
|
|
||||||
status.conditions = ""
|
|
||||||
status.filling_left_right = vertical
|
|
||||||
status.filling_top_bottom = horizontal
|
|
||||||
status.hidden = off
|
|
||||||
status.items = "[time],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],completion,scroll"
|
|
||||||
status.position = bottom
|
|
||||||
status.priority = 500
|
|
||||||
status.separator = off
|
|
||||||
status.size = 2
|
|
||||||
status.size_max = 0
|
|
||||||
status.type = window
|
|
||||||
title.color_bg = 0
|
|
||||||
title.color_delim = cyan
|
|
||||||
title.color_fg = default
|
|
||||||
title.conditions = ""
|
|
||||||
title.filling_left_right = vertical
|
|
||||||
title.filling_top_bottom = horizontal
|
|
||||||
title.hidden = off
|
|
||||||
title.items = "buffer_title"
|
|
||||||
title.position = top
|
|
||||||
title.priority = 500
|
|
||||||
title.separator = off
|
|
||||||
title.size = 1
|
|
||||||
title.size_max = 0
|
|
||||||
title.type = window
|
|
||||||
|
|
||||||
[layout]
|
|
||||||
|
|
||||||
[notify]
|
|
||||||
|
|
||||||
[filter]
|
|
||||||
irc_smart = on;*;irc_smart_filter;*
|
|
||||||
|
|
||||||
[key]
|
|
||||||
ctrl-? = "/input delete_previous_char"
|
|
||||||
ctrl-A = "/input move_beginning_of_line"
|
|
||||||
ctrl-B = "/input move_previous_char"
|
|
||||||
ctrl-C_ = "/input insert \x1F"
|
|
||||||
ctrl-Cb = "/input insert \x02"
|
|
||||||
ctrl-Cc = "/input insert \x03"
|
|
||||||
ctrl-Ci = "/input insert \x1D"
|
|
||||||
ctrl-Co = "/input insert \x0F"
|
|
||||||
ctrl-Cv = "/input insert \x16"
|
|
||||||
ctrl-D = "/input delete_next_char"
|
|
||||||
ctrl-E = "/input move_end_of_line"
|
|
||||||
ctrl-F = "/input move_next_char"
|
|
||||||
ctrl-H = "/input delete_previous_char"
|
|
||||||
ctrl-I = "/input complete_next"
|
|
||||||
ctrl-J = "/input return"
|
|
||||||
ctrl-K = "/input delete_end_of_line"
|
|
||||||
ctrl-L = "/window refresh"
|
|
||||||
ctrl-M = "/input return"
|
|
||||||
ctrl-N = "/buffer +1"
|
|
||||||
ctrl-P = "/buffer -1"
|
|
||||||
ctrl-R = "/input search_text"
|
|
||||||
ctrl-Sctrl-U = "/input set_unread"
|
|
||||||
ctrl-T = "/input transpose_chars"
|
|
||||||
ctrl-U = "/input delete_beginning_of_line"
|
|
||||||
ctrl-W = "/input delete_previous_word"
|
|
||||||
ctrl-X = "/input switch_active_buffer"
|
|
||||||
ctrl-Y = "/input clipboard_paste"
|
|
||||||
meta-meta2-1~ = "/window scroll_top"
|
|
||||||
meta-meta2-23~ = "/bar scroll nicklist * b"
|
|
||||||
meta-meta2-24~ = "/bar scroll nicklist * e"
|
|
||||||
meta-meta2-4~ = "/window scroll_bottom"
|
|
||||||
meta-meta2-5~ = "/window scroll_up"
|
|
||||||
meta-meta2-6~ = "/window scroll_down"
|
|
||||||
meta-meta2-7~ = "/window scroll_top"
|
|
||||||
meta-meta2-8~ = "/window scroll_bottom"
|
|
||||||
meta-meta2-A = "/buffer -1"
|
|
||||||
meta-meta2-B = "/buffer +1"
|
|
||||||
meta-meta2-C = "/buffer +1"
|
|
||||||
meta-meta2-D = "/buffer -1"
|
|
||||||
meta-- = "/filter toggle @"
|
|
||||||
meta-/ = "/input jump_last_buffer_displayed"
|
|
||||||
meta-0 = "/buffer *10"
|
|
||||||
meta-1 = "/buffer *1"
|
|
||||||
meta-2 = "/buffer *2"
|
|
||||||
meta-3 = "/buffer *3"
|
|
||||||
meta-4 = "/buffer *4"
|
|
||||||
meta-5 = "/buffer *5"
|
|
||||||
meta-6 = "/buffer *6"
|
|
||||||
meta-7 = "/buffer *7"
|
|
||||||
meta-8 = "/buffer *8"
|
|
||||||
meta-9 = "/buffer *9"
|
|
||||||
meta-< = "/input jump_previously_visited_buffer"
|
|
||||||
meta-= = "/filter toggle"
|
|
||||||
meta-> = "/input jump_next_visited_buffer"
|
|
||||||
meta-OA = "/input history_global_previous"
|
|
||||||
meta-OB = "/input history_global_next"
|
|
||||||
meta-OC = "/input move_next_word"
|
|
||||||
meta-OD = "/input move_previous_word"
|
|
||||||
meta-OF = "/input move_end_of_line"
|
|
||||||
meta-OH = "/input move_beginning_of_line"
|
|
||||||
meta-Oa = "/input history_global_previous"
|
|
||||||
meta-Ob = "/input history_global_next"
|
|
||||||
meta-Oc = "/input move_next_word"
|
|
||||||
meta-Od = "/input move_previous_word"
|
|
||||||
meta2-15~ = "/buffer -1"
|
|
||||||
meta2-17~ = "/buffer +1"
|
|
||||||
meta2-18~ = "/window -1"
|
|
||||||
meta2-19~ = "/window +1"
|
|
||||||
meta2-1;3A = "/buffer -1"
|
|
||||||
meta2-1;3B = "/buffer +1"
|
|
||||||
meta2-1;3C = "/buffer +1"
|
|
||||||
meta2-1;3D = "/buffer -1"
|
|
||||||
meta2-1;3F = "/window scroll_bottom"
|
|
||||||
meta2-1;3H = "/window scroll_top"
|
|
||||||
meta2-1;5A = "/input history_global_previous"
|
|
||||||
meta2-1;5B = "/input history_global_next"
|
|
||||||
meta2-1;5C = "/input move_next_word"
|
|
||||||
meta2-1;5D = "/input move_previous_word"
|
|
||||||
meta2-1~ = "/input move_beginning_of_line"
|
|
||||||
meta2-200~ = "/input paste_start"
|
|
||||||
meta2-201~ = "/input paste_stop"
|
|
||||||
meta2-20~ = "/bar scroll title * -30%"
|
|
||||||
meta2-21~ = "/bar scroll title * +30%"
|
|
||||||
meta2-23;3~ = "/bar scroll nicklist * b"
|
|
||||||
meta2-23~ = "/bar scroll nicklist * -100%"
|
|
||||||
meta2-24;3~ = "/bar scroll nicklist * e"
|
|
||||||
meta2-24~ = "/bar scroll nicklist * +100%"
|
|
||||||
meta2-3~ = "/input delete_next_char"
|
|
||||||
meta2-4~ = "/input move_end_of_line"
|
|
||||||
meta2-5;3~ = "/window scroll_up"
|
|
||||||
meta2-5~ = "/window page_up"
|
|
||||||
meta2-6;3~ = "/window scroll_down"
|
|
||||||
meta2-6~ = "/window page_down"
|
|
||||||
meta2-7~ = "/input move_beginning_of_line"
|
|
||||||
meta2-8~ = "/input move_end_of_line"
|
|
||||||
meta2-A = "/input history_previous"
|
|
||||||
meta2-B = "/input history_next"
|
|
||||||
meta2-C = "/input move_next_char"
|
|
||||||
meta2-D = "/input move_previous_char"
|
|
||||||
meta2-F = "/input move_end_of_line"
|
|
||||||
meta2-G = "/window page_down"
|
|
||||||
meta2-H = "/input move_beginning_of_line"
|
|
||||||
meta2-I = "/window page_up"
|
|
||||||
meta2-Z = "/input complete_previous"
|
|
||||||
meta2-[E = "/buffer -1"
|
|
||||||
meta-_ = "/input redo"
|
|
||||||
meta-a = "/input jump_smart"
|
|
||||||
meta-b = "/input move_previous_word"
|
|
||||||
meta-d = "/input delete_next_word"
|
|
||||||
meta-f = "/input move_next_word"
|
|
||||||
meta-h = "/input hotlist_clear"
|
|
||||||
meta-jmeta-f = "/buffer -"
|
|
||||||
meta-jmeta-l = "/buffer +"
|
|
||||||
meta-jmeta-r = "/server raw"
|
|
||||||
meta-jmeta-s = "/server jump"
|
|
||||||
meta-j01 = "/buffer 1"
|
|
||||||
meta-j02 = "/buffer 2"
|
|
||||||
meta-j03 = "/buffer 3"
|
|
||||||
meta-j04 = "/buffer 4"
|
|
||||||
meta-j05 = "/buffer 5"
|
|
||||||
meta-j06 = "/buffer 6"
|
|
||||||
meta-j07 = "/buffer 7"
|
|
||||||
meta-j08 = "/buffer 8"
|
|
||||||
meta-j09 = "/buffer 9"
|
|
||||||
meta-j10 = "/buffer 10"
|
|
||||||
meta-j11 = "/buffer 11"
|
|
||||||
meta-j12 = "/buffer 12"
|
|
||||||
meta-j13 = "/buffer 13"
|
|
||||||
meta-j14 = "/buffer 14"
|
|
||||||
meta-j15 = "/buffer 15"
|
|
||||||
meta-j16 = "/buffer 16"
|
|
||||||
meta-j17 = "/buffer 17"
|
|
||||||
meta-j18 = "/buffer 18"
|
|
||||||
meta-j19 = "/buffer 19"
|
|
||||||
meta-j20 = "/buffer 20"
|
|
||||||
meta-j21 = "/buffer 21"
|
|
||||||
meta-j22 = "/buffer 22"
|
|
||||||
meta-j23 = "/buffer 23"
|
|
||||||
meta-j24 = "/buffer 24"
|
|
||||||
meta-j25 = "/buffer 25"
|
|
||||||
meta-j26 = "/buffer 26"
|
|
||||||
meta-j27 = "/buffer 27"
|
|
||||||
meta-j28 = "/buffer 28"
|
|
||||||
meta-j29 = "/buffer 29"
|
|
||||||
meta-j30 = "/buffer 30"
|
|
||||||
meta-j31 = "/buffer 31"
|
|
||||||
meta-j32 = "/buffer 32"
|
|
||||||
meta-j33 = "/buffer 33"
|
|
||||||
meta-j34 = "/buffer 34"
|
|
||||||
meta-j35 = "/buffer 35"
|
|
||||||
meta-j36 = "/buffer 36"
|
|
||||||
meta-j37 = "/buffer 37"
|
|
||||||
meta-j38 = "/buffer 38"
|
|
||||||
meta-j39 = "/buffer 39"
|
|
||||||
meta-j40 = "/buffer 40"
|
|
||||||
meta-j41 = "/buffer 41"
|
|
||||||
meta-j42 = "/buffer 42"
|
|
||||||
meta-j43 = "/buffer 43"
|
|
||||||
meta-j44 = "/buffer 44"
|
|
||||||
meta-j45 = "/buffer 45"
|
|
||||||
meta-j46 = "/buffer 46"
|
|
||||||
meta-j47 = "/buffer 47"
|
|
||||||
meta-j48 = "/buffer 48"
|
|
||||||
meta-j49 = "/buffer 49"
|
|
||||||
meta-j50 = "/buffer 50"
|
|
||||||
meta-j51 = "/buffer 51"
|
|
||||||
meta-j52 = "/buffer 52"
|
|
||||||
meta-j53 = "/buffer 53"
|
|
||||||
meta-j54 = "/buffer 54"
|
|
||||||
meta-j55 = "/buffer 55"
|
|
||||||
meta-j56 = "/buffer 56"
|
|
||||||
meta-j57 = "/buffer 57"
|
|
||||||
meta-j58 = "/buffer 58"
|
|
||||||
meta-j59 = "/buffer 59"
|
|
||||||
meta-j60 = "/buffer 60"
|
|
||||||
meta-j61 = "/buffer 61"
|
|
||||||
meta-j62 = "/buffer 62"
|
|
||||||
meta-j63 = "/buffer 63"
|
|
||||||
meta-j64 = "/buffer 64"
|
|
||||||
meta-j65 = "/buffer 65"
|
|
||||||
meta-j66 = "/buffer 66"
|
|
||||||
meta-j67 = "/buffer 67"
|
|
||||||
meta-j68 = "/buffer 68"
|
|
||||||
meta-j69 = "/buffer 69"
|
|
||||||
meta-j70 = "/buffer 70"
|
|
||||||
meta-j71 = "/buffer 71"
|
|
||||||
meta-j72 = "/buffer 72"
|
|
||||||
meta-j73 = "/buffer 73"
|
|
||||||
meta-j74 = "/buffer 74"
|
|
||||||
meta-j75 = "/buffer 75"
|
|
||||||
meta-j76 = "/buffer 76"
|
|
||||||
meta-j77 = "/buffer 77"
|
|
||||||
meta-j78 = "/buffer 78"
|
|
||||||
meta-j79 = "/buffer 79"
|
|
||||||
meta-j80 = "/buffer 80"
|
|
||||||
meta-j81 = "/buffer 81"
|
|
||||||
meta-j82 = "/buffer 82"
|
|
||||||
meta-j83 = "/buffer 83"
|
|
||||||
meta-j84 = "/buffer 84"
|
|
||||||
meta-j85 = "/buffer 85"
|
|
||||||
meta-j86 = "/buffer 86"
|
|
||||||
meta-j87 = "/buffer 87"
|
|
||||||
meta-j88 = "/buffer 88"
|
|
||||||
meta-j89 = "/buffer 89"
|
|
||||||
meta-j90 = "/buffer 90"
|
|
||||||
meta-j91 = "/buffer 91"
|
|
||||||
meta-j92 = "/buffer 92"
|
|
||||||
meta-j93 = "/buffer 93"
|
|
||||||
meta-j94 = "/buffer 94"
|
|
||||||
meta-j95 = "/buffer 95"
|
|
||||||
meta-j96 = "/buffer 96"
|
|
||||||
meta-j97 = "/buffer 97"
|
|
||||||
meta-j98 = "/buffer 98"
|
|
||||||
meta-j99 = "/buffer 99"
|
|
||||||
meta-k = "/input grab_key_command"
|
|
||||||
meta-l = "/window bare"
|
|
||||||
meta-m = "/mute mouse toggle"
|
|
||||||
meta-n = "/window scroll_next_highlight"
|
|
||||||
meta-p = "/window scroll_previous_highlight"
|
|
||||||
meta-r = "/input delete_line"
|
|
||||||
meta-s = "/mute aspell toggle"
|
|
||||||
meta-u = "/window scroll_unread"
|
|
||||||
meta-wmeta-meta2-A = "/window up"
|
|
||||||
meta-wmeta-meta2-B = "/window down"
|
|
||||||
meta-wmeta-meta2-C = "/window right"
|
|
||||||
meta-wmeta-meta2-D = "/window left"
|
|
||||||
meta-wmeta2-1;3A = "/window up"
|
|
||||||
meta-wmeta2-1;3B = "/window down"
|
|
||||||
meta-wmeta2-1;3C = "/window right"
|
|
||||||
meta-wmeta2-1;3D = "/window left"
|
|
||||||
meta-wmeta-b = "/window balance"
|
|
||||||
meta-wmeta-s = "/window swap"
|
|
||||||
meta-x = "/input zoom_merged_buffer"
|
|
||||||
meta-z = "/window zoom"
|
|
||||||
ctrl-_ = "/input undo"
|
|
||||||
|
|
||||||
[key_search]
|
|
||||||
ctrl-I = "/input search_switch_where"
|
|
||||||
ctrl-J = "/input search_stop"
|
|
||||||
ctrl-M = "/input search_stop"
|
|
||||||
ctrl-R = "/input search_switch_regex"
|
|
||||||
meta2-A = "/input search_previous"
|
|
||||||
meta2-B = "/input search_next"
|
|
||||||
meta-c = "/input search_switch_case"
|
|
||||||
|
|
||||||
[key_cursor]
|
|
||||||
ctrl-J = "/cursor stop"
|
|
||||||
ctrl-M = "/cursor stop"
|
|
||||||
meta-meta2-A = "/cursor move area_up"
|
|
||||||
meta-meta2-B = "/cursor move area_down"
|
|
||||||
meta-meta2-C = "/cursor move area_right"
|
|
||||||
meta-meta2-D = "/cursor move area_left"
|
|
||||||
meta2-1;3A = "/cursor move area_up"
|
|
||||||
meta2-1;3B = "/cursor move area_down"
|
|
||||||
meta2-1;3C = "/cursor move area_right"
|
|
||||||
meta2-1;3D = "/cursor move area_left"
|
|
||||||
meta2-A = "/cursor move up"
|
|
||||||
meta2-B = "/cursor move down"
|
|
||||||
meta2-C = "/cursor move right"
|
|
||||||
meta2-D = "/cursor move left"
|
|
||||||
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
|
|
||||||
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
|
|
||||||
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
|
|
||||||
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
|
|
||||||
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
|
|
||||||
@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
|
|
||||||
@chat:m = "hsignal:chat_quote_message;/cursor stop"
|
|
||||||
@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
|
|
||||||
|
|
||||||
[key_mouse]
|
|
||||||
@bar(input):button2 = "/input grab_mouse_area"
|
|
||||||
@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%"
|
|
||||||
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
|
|
||||||
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
|
|
||||||
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
|
|
||||||
@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}"
|
|
||||||
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
|
|
||||||
@chat(script.scripts):wheeldown = "/script down 5"
|
|
||||||
@chat(script.scripts):wheelup = "/script up 5"
|
|
||||||
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
|
|
||||||
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
|
|
||||||
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
|
|
||||||
@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}"
|
|
||||||
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
|
|
||||||
@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
|
|
||||||
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
|
|
||||||
@chat:button1 = "/window ${_window_number}"
|
|
||||||
@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
|
|
||||||
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
|
|
||||||
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
|
|
||||||
@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
|
|
||||||
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
|
|
||||||
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
|
|
||||||
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
|
|
||||||
@chat:wheelup = "/window scroll_up -window ${_window_number}"
|
|
||||||
@*:button3 = "/cursor go ${_x},${_y}"
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# weechat -- xfer.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
[look]
|
|
||||||
auto_open_buffer = on
|
|
||||||
progress_bar_size = 20
|
|
||||||
pv_tags = "notify_private"
|
|
||||||
|
|
||||||
[color]
|
|
||||||
status_aborted = lightred
|
|
||||||
status_active = lightblue
|
|
||||||
status_connecting = yellow
|
|
||||||
status_done = lightgreen
|
|
||||||
status_failed = lightred
|
|
||||||
status_waiting = lightcyan
|
|
||||||
text = default
|
|
||||||
text_bg = default
|
|
||||||
text_selected = white
|
|
||||||
|
|
||||||
[network]
|
|
||||||
blocksize = 65536
|
|
||||||
fast_send = on
|
|
||||||
own_ip = ""
|
|
||||||
port_range = ""
|
|
||||||
speed_limit = 0
|
|
||||||
timeout = 300
|
|
||||||
|
|
||||||
[file]
|
|
||||||
auto_accept_chats = off
|
|
||||||
auto_accept_files = off
|
|
||||||
auto_accept_nicks = ""
|
|
||||||
auto_check_crc32 = off
|
|
||||||
auto_rename = on
|
|
||||||
auto_resume = on
|
|
||||||
convert_spaces = on
|
|
||||||
download_path = "%h/xfer"
|
|
||||||
upload_path = "~"
|
|
||||||
use_nick_in_filename = on
|
|
||||||
@@ -1,4 +1,2 @@
|
|||||||
setxkbmap -option ctrl:nocaps -option compose:ralt
|
setxkbmap -option ctrl:nocaps
|
||||||
test -x /usr/bin/xsettingsd && /usr/bin/xsettingsd &
|
|
||||||
test -f "$HOME/.env" && "$HOME/.env"
|
|
||||||
test -f "$HOME/.profile" && . "$HOME/.profile"
|
test -f "$HOME/.profile" && . "$HOME/.profile"
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
Gdk/UnscaledDPI 98304
|
|
||||||
Gdk/WindowScalingFactor 1
|
|
||||||
Gtk/AutoMnemonics 1
|
|
||||||
Gtk/ButtonImages 0
|
|
||||||
Gtk/CanChangeAccels 0
|
|
||||||
Gtk/ColorPalette "black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90"
|
|
||||||
Gtk/ColorScheme ""
|
|
||||||
Gtk/CursorBlinkTimeout 10
|
|
||||||
Gtk/CursorThemeName "Adwaita"
|
|
||||||
Gtk/CursorThemeSize 24
|
|
||||||
Gtk/DecorationLayout "menu:minimize,maximize,close"
|
|
||||||
Gtk/EnableAnimations 1
|
|
||||||
Gtk/FontName "Sans 9"
|
|
||||||
Gtk/IMModule ""
|
|
||||||
Gtk/IMPreeditStyle "callback"
|
|
||||||
Gtk/IMStatusStyle "callback"
|
|
||||||
Gtk/KeyThemeName "Default"
|
|
||||||
Gtk/MenuBarAccel "F10"
|
|
||||||
Gtk/MenuImages 0
|
|
||||||
Gtk/Modules ""
|
|
||||||
Gtk/RecentFilesEnabled 0
|
|
||||||
Gtk/RecentFilesMaxAge -1
|
|
||||||
Gtk/ShellShowsAppMenu 0
|
|
||||||
Gtk/ShellShowsMenubar 0
|
|
||||||
Gtk/ShowInputMethodMenu 1
|
|
||||||
Gtk/ShowUnicodeMenu 1
|
|
||||||
Gtk/TimeoutInitial 200
|
|
||||||
Gtk/TimeoutRepeat 20
|
|
||||||
Gtk/ToolbarIconSize "large"
|
|
||||||
Gtk/ToolbarStyle "both-horiz"
|
|
||||||
Net/CursorBlink 1
|
|
||||||
Net/CursorBlinkTime 1200
|
|
||||||
Net/DndDragThreshold 8
|
|
||||||
Net/DoubleClickTime 400
|
|
||||||
Net/EnableEventSounds 0
|
|
||||||
Net/EnableInputFeedbackSounds 0
|
|
||||||
Net/FallbackIconTheme "gnome"
|
|
||||||
Net/IconThemeName "Humanity"
|
|
||||||
Net/SoundThemeName "freedesktop"
|
|
||||||
Net/ThemeName "Ambiance"
|
|
||||||
Xft/Antialias 1
|
|
||||||
Xft/DPI 98304
|
|
||||||
Xft/Hinting 1
|
|
||||||
Xft/HintStyle "hintslight"
|
|
||||||
Xft/RGBA "rgb"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Execute code that does not affect the current session in the background.
|
|
||||||
{
|
|
||||||
# Compile the completion dump to increase startup speed.
|
|
||||||
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
|
|
||||||
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
|
|
||||||
zcompile "$zcompdump"
|
|
||||||
fi
|
|
||||||
} &!
|
|
||||||
3
dotfiles/zsh_custom/themes/matir.zsh-theme
Normal file
3
dotfiles/zsh_custom/themes/matir.zsh-theme
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
PROMPT='%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[blue]%}$(git_prompt_info)%{$fg[white]%}%#%{$reset_color%} '
|
||||||
|
ZSH_THEME_GIT_PROMPT_PREFIX=" ("
|
||||||
|
ZSH_THEME_GIT_PROMPT_SUFFIX=")"
|
||||||
0
dotfiles/zshenv
Executable file → Normal file
0
dotfiles/zshenv
Executable file → Normal file
136
dotfiles/zshrc
Executable file → Normal file
136
dotfiles/zshrc
Executable file → Normal file
@@ -1,57 +1,16 @@
|
|||||||
# For interactive shells
|
# For interactive shells
|
||||||
HISTFILE=~/.zhistory
|
HISTFILE=~/.histfile
|
||||||
HISTSIZE=10000
|
HISTSIZE=1000
|
||||||
SAVEHIST=10000
|
SAVEHIST=1000
|
||||||
setopt \
|
setopt appendhistory autocd autopushd extendedglob nohup nomatch histignorespace histlexwords histverify cbases
|
||||||
ALWAYS_TO_END \
|
unsetopt beep histbeep listbeep flowcontrol
|
||||||
APPEND_HISTORY \
|
bindkey -e
|
||||||
AUTO_CD \
|
|
||||||
AUTO_LIST \
|
|
||||||
AUTO_MENU \
|
|
||||||
AUTO_PARAM_SLASH \
|
|
||||||
AUTO_PUSHD \
|
|
||||||
BANG_HIST \
|
|
||||||
C_BASES \
|
|
||||||
COMPLETE_IN_WORD \
|
|
||||||
EXTENDED_GLOB \
|
|
||||||
EXTENDED_HISTORY \
|
|
||||||
HIST_EXPIRE_DUPS_FIRST \
|
|
||||||
HIST_FIND_NO_DUPS \
|
|
||||||
HIST_IGNORE_DUPS \
|
|
||||||
HIST_IGNORE_SPACE \
|
|
||||||
HIST_LEX_WORDS \
|
|
||||||
HIST_SAVE_NO_DUPS \
|
|
||||||
HIST_VERIFY \
|
|
||||||
INTERACTIVE_COMMENTS \
|
|
||||||
LONG_LIST_JOBS \
|
|
||||||
MULTIOS \
|
|
||||||
NO_CLOBBER \
|
|
||||||
NO_HUP \
|
|
||||||
NOMATCH \
|
|
||||||
NOTIFY \
|
|
||||||
PUSHD_IGNORE_DUPS \
|
|
||||||
PUSHD_SILENT \
|
|
||||||
PUSHD_TO_HOME \
|
|
||||||
RC_QUOTES \
|
|
||||||
SHARE_HISTORY
|
|
||||||
unsetopt \
|
|
||||||
BEEP \
|
|
||||||
CDABLE_VARS \
|
|
||||||
HIST_BEEP \
|
|
||||||
LIST_BEEP \
|
|
||||||
FLOW_CONTROL \
|
|
||||||
MAIL_WARNING \
|
|
||||||
HUP \
|
|
||||||
BG_NICE \
|
|
||||||
CHECK_JOBS
|
|
||||||
# vi keybindings
|
|
||||||
bindkey -v
|
|
||||||
|
|
||||||
# Allow core files
|
# Completion
|
||||||
ulimit -c unlimited
|
zstyle :compinstall filename '/home/david/.zshrc'
|
||||||
|
autoload -Uz compinit && compinit
|
||||||
|
|
||||||
DIRSTACKSIZE=16
|
DIRSTACKSIZE=16
|
||||||
# Set terminal title
|
|
||||||
case $TERM in
|
case $TERM in
|
||||||
xterm*)
|
xterm*)
|
||||||
precmd () {print -Pn "\e]0;%n@%m: %~\a"}
|
precmd () {print -Pn "\e]0;%n@%m: %~\a"}
|
||||||
@@ -59,79 +18,38 @@ case $TERM in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
autoload -U colors && colors
|
autoload -U colors && colors
|
||||||
PS1="%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "
|
PS1="%{%(!.$fg[red].$fg[green])%}%n%{$fg[white]%}@%{$fg[cyan]%}%m%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "
|
||||||
|
|
||||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
|
||||||
zstyle ':completion::complete:*' use-cache on
|
|
||||||
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
|
|
||||||
|
|
||||||
# .profile is universal
|
# .profile is universal
|
||||||
. ~/.profile
|
. ~/.profile
|
||||||
# Deduplicate the path
|
# Deduplicate the path
|
||||||
typeset -U path
|
typeset -U path
|
||||||
|
|
||||||
# Additional Keybindings
|
# LS Colors
|
||||||
|
alias ls='ls --color'
|
||||||
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
|
||||||
|
# Load oh-my-zsh
|
||||||
|
if [ -d $HOME/.oh-my-zsh ] ; then
|
||||||
|
ZSH=$HOME/.oh-my-zsh
|
||||||
|
ZSH_THEME="matir"
|
||||||
|
ZSH_CUSTOM="$HOME/.zsh_custom"
|
||||||
|
plugins=(git encode64 gpg-agent pep8 pip python tmux urltools extract sudo virsh virtualenv command-not-found)
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
unset ZSH_THEME
|
||||||
|
unset ZSH_CUSTOM
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
bindkey '^[[A' history-search-backward
|
bindkey '^[[A' history-search-backward
|
||||||
bindkey '^[[B' history-search-forward
|
bindkey '^[[B' history-search-forward
|
||||||
# ctrl-arrow keys
|
|
||||||
bindkey '^[[1;5C' forward-word
|
bindkey '^[[1;5C' forward-word
|
||||||
bindkey '^[[1;5D' backward-word
|
bindkey '^[[1;5D' backward-word
|
||||||
bindkey '^P' up-history
|
|
||||||
bindkey '^N' down-history
|
|
||||||
bindkey '^?' backward-delete-char
|
|
||||||
bindkey '^h' backward-delete-char
|
|
||||||
# ok, a few emacs convenience bindings
|
|
||||||
bindkey '^w' backward-kill-word
|
|
||||||
bindkey '^r' history-incremental-search-backward
|
|
||||||
|
|
||||||
# Source extras and aliases if interactive
|
# Source extras and aliases if interactive
|
||||||
if [[ $- == *i* ]] ; then
|
if [[ $- == *i* ]] ; then
|
||||||
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
||||||
# zsh-only-ism to avoid error if glob doesn't expand
|
for file in $HOME/.zshrc.d/* ; do source "$file" ; done
|
||||||
for file in $HOME/.zshrc.d/[a-zA-Z0-9]*.zsh(N) ; do
|
|
||||||
source "$file"
|
|
||||||
done
|
|
||||||
# extra completions, prompt
|
|
||||||
fpath=(~/.zshrc.completions ~/.zshrc.d/matir_prompt $fpath)
|
|
||||||
# Completion
|
|
||||||
zstyle ':compinstall' filename "${HOME}/.zshrc"
|
|
||||||
zstyle ':completion:*' users root ${USER}
|
|
||||||
# Modules after fpath
|
|
||||||
autoload -Uz compinit && compinit -i
|
|
||||||
autoload -Uz promptinit && promptinit
|
|
||||||
# Prompt
|
|
||||||
prompt matir
|
|
||||||
# Virtualenvwrapper
|
|
||||||
if test -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ; then
|
|
||||||
source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
|
|
||||||
fi
|
|
||||||
if command ls --version 2>&1 >/dev/null ; then
|
|
||||||
alias ls="$(whence -p ls) --color -C"
|
|
||||||
fi
|
|
||||||
# Syntax highlighting and substring search
|
|
||||||
if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
|
|
||||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
||||||
fi
|
|
||||||
if test -f ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh ; then
|
|
||||||
source ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh
|
|
||||||
bindkey '^[[A' history-substring-search-up
|
|
||||||
bindkey '^[[B' history-substring-search-down
|
|
||||||
bindkey -M vicmd 'k' history-substring-search-up
|
|
||||||
bindkey -M vicmd 'j' history-substring-search-down
|
|
||||||
fi
|
|
||||||
fi # End interactive-only block
|
|
||||||
|
|
||||||
# In case ack is named ack-grep
|
|
||||||
if [ -x /usr/bin/ack-grep ] ; then
|
|
||||||
alias ack='/usr/bin/ack-grep'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Setup PATH for tools
|
|
||||||
PATH=${PATH}:${HOME}/bin/tools
|
|
||||||
|
|
||||||
# Most is nice, if we have it
|
|
||||||
if command -v most >/dev/null 2>&1; then
|
|
||||||
export PAGER="most"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Load any local settings
|
# Load any local settings
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,52 +0,0 @@
|
|||||||
#compdef jekyll
|
|
||||||
|
|
||||||
_jekyll() {
|
|
||||||
local curcontext="${curcontext}" state line file
|
|
||||||
typeset -A opt_args
|
|
||||||
|
|
||||||
local -a _subcommands
|
|
||||||
_subcommands=('docs:list documentation'
|
|
||||||
'import:import posts'
|
|
||||||
'serve:run server'
|
|
||||||
'help:get help'
|
|
||||||
'doctor:deprecation warnings'
|
|
||||||
'build:compile site'
|
|
||||||
'new:create new site'
|
|
||||||
'clean:clean output'
|
|
||||||
'draft:create new draft'
|
|
||||||
'post:create new post'
|
|
||||||
'publish:publish draft'
|
|
||||||
'edit:edit post')
|
|
||||||
|
|
||||||
_arguments -C \
|
|
||||||
"(source)"{-s,--source}"[source]:source dir:_files -/" \
|
|
||||||
"(dest)"{-d,--destination}"[dest]:dest dir:_files -/" \
|
|
||||||
"--safe[safe mode]" \
|
|
||||||
"(plugins)"{-p,--plugins}"[plugins]:plugins dir:_files -/" \
|
|
||||||
"--layouts[layouts]:layouts dir:_files -/" \
|
|
||||||
"--profile[generate liquid profile]" \
|
|
||||||
"(help)"{-h,--help}"[help]" \
|
|
||||||
"(version)"{-v,--version}"[version]" \
|
|
||||||
"(trace)"{-t,--trace}"[trace]" \
|
|
||||||
"1:command:->command" \
|
|
||||||
"*: :->args"
|
|
||||||
|
|
||||||
case $state in
|
|
||||||
command)
|
|
||||||
_describe -t commands "jekyll subcommand" _subcommands
|
|
||||||
;;
|
|
||||||
args)
|
|
||||||
case "$line[1]" in
|
|
||||||
edit)
|
|
||||||
# TODO: Fix to get --source argument
|
|
||||||
local -a postpaths
|
|
||||||
postpaths=("${JEKYLL_DIR}/_posts" "${JEKYLL_DIR}/_drafts")
|
|
||||||
_files -W postpaths
|
|
||||||
;;
|
|
||||||
publish)
|
|
||||||
# TODO: Fix to get --source argument
|
|
||||||
_files -W ${JEKYLL_DIR}/_drafts
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#compdef msfconsole
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Copyright (c) 2014 Spencer McIntyre
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
|
||||||
# documentation and/or other materials provided with the distribution.
|
|
||||||
# * Neither the name of the project nor the
|
|
||||||
# names of its contributors may be used to endorse or promote products
|
|
||||||
# derived from this software without specific prior written permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Description
|
|
||||||
# -----------
|
|
||||||
#
|
|
||||||
# Completion script for the Metasploit Framework's msfconsole command
|
|
||||||
# (http://www.metasploit.com/).
|
|
||||||
#
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Authors
|
|
||||||
# -------
|
|
||||||
#
|
|
||||||
# * Spencer McIntyre
|
|
||||||
#
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
_arguments \
|
|
||||||
{-a,--ask}"[Ask before exiting Metasploit or accept 'exit -y']" \
|
|
||||||
"-c[Load the specified configuration file]:configuration file:_files" \
|
|
||||||
{-d,--defanged}"[Execute the console as defanged]" \
|
|
||||||
{-E,--environment}"[Specify the database environment to load from the configuration]:environment:(production development)" \
|
|
||||||
{-h,--help}"[Show help text]" \
|
|
||||||
{-L,--real-readline}"[Use the system Readline library instead of RbReadline]" \
|
|
||||||
{-M,--migration-path}"[Specify a directory containing additional DB migrations]:directory:_files -/" \
|
|
||||||
{-m,--module-path}"[Specifies an additional module search path]:search path:_files -/" \
|
|
||||||
{-n,--no-database}"[Disable database support]" \
|
|
||||||
{-o,--output}"[Output to the specified file]:output file" \
|
|
||||||
{-p,--plugin}"[Load a plugin on startup]:plugin file:_files" \
|
|
||||||
{-q,--quiet}"[Do not print the banner on start up]" \
|
|
||||||
{-r,--resource}"[Execute the specified resource file]:resource file:_files" \
|
|
||||||
{-v,--version}"[Show version]" \
|
|
||||||
{-x,--execute-command}"[Execute the specified string as console commands]:commands" \
|
|
||||||
{-y,--yaml}"[Specify a YAML file containing database settings]:yaml file:_files"
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
#compdef msfvenom
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Copyright (c) 2014 Spencer McIntyre
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
|
||||||
# documentation and/or other materials provided with the distribution.
|
|
||||||
# * Neither the name of the project nor the
|
|
||||||
# names of its contributors may be used to endorse or promote products
|
|
||||||
# derived from this software without specific prior written permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Description
|
|
||||||
# -----------
|
|
||||||
#
|
|
||||||
# Completion script for the Metasploit Framework's msfvenom command
|
|
||||||
# (http://www.metasploit.com/).
|
|
||||||
#
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Authors
|
|
||||||
# -------
|
|
||||||
#
|
|
||||||
# * Spencer McIntyre
|
|
||||||
#
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
_msfvenom_encoders_list=(
|
|
||||||
'cmd/generic_sh'
|
|
||||||
'cmd/ifs'
|
|
||||||
'cmd/powershell_base64'
|
|
||||||
'cmd/printf_php_mq'
|
|
||||||
'generic/eicar'
|
|
||||||
'generic/none'
|
|
||||||
'mipsbe/byte_xori'
|
|
||||||
'mipsbe/longxor'
|
|
||||||
'mipsle/byte_xori'
|
|
||||||
'mipsle/longxor'
|
|
||||||
'php/base64'
|
|
||||||
'ppc/longxor'
|
|
||||||
'ppc/longxor_tag'
|
|
||||||
'sparc/longxor_tag'
|
|
||||||
'x64/xor'
|
|
||||||
'x86/add_sub'
|
|
||||||
'x86/alpha_mixed'
|
|
||||||
'x86/alpha_upper'
|
|
||||||
'x86/avoid_underscore_tolower'
|
|
||||||
'x86/avoid_utf8_tolower'
|
|
||||||
'x86/bloxor'
|
|
||||||
'x86/call4_dword_xor'
|
|
||||||
'x86/context_cpuid'
|
|
||||||
'x86/context_stat'
|
|
||||||
'x86/context_time'
|
|
||||||
'x86/countdown'
|
|
||||||
'x86/fnstenv_mov'
|
|
||||||
'x86/jmp_call_additive'
|
|
||||||
'x86/nonalpha'
|
|
||||||
'x86/nonupper'
|
|
||||||
'x86/opt_sub'
|
|
||||||
'x86/shikata_ga_nai'
|
|
||||||
'x86/single_static_bit'
|
|
||||||
'x86/unicode_mixed'
|
|
||||||
'x86/unicode_upper'
|
|
||||||
)
|
|
||||||
|
|
||||||
_msfvenom_encoder() {
|
|
||||||
_describe -t encoders 'available encoders' _msfvenom_encoders_list || compadd "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
_arguments \
|
|
||||||
{-a,--arch}"[The architecture to encode as]:architecture:(cmd generic mipsbe mipsle php ppc sparc x64 x86)" \
|
|
||||||
{-b,--bad-chars}"[The list of characters to avoid, example: '\x00\xff']:bad characters" \
|
|
||||||
{-c,--add-code}"[Specify an additional win32 shellcode file to include]:shellcode file:_files" \
|
|
||||||
{-e,--encoder}"[The encoder to use]:encoder:_msfvenom_encoder" \
|
|
||||||
{-f,--format}"[Output format]:output format:(bash c csharp dw dword java js_be js_le num perl pl powershell ps1 py python raw rb ruby sh vbapplication vbscript asp aspx aspx-exe dll elf exe exe-only exe-service exe-small loop-vbs macho msi msi-nouac osx-app psh psh-net psh-reflection vba vba-exe vbs war)" \
|
|
||||||
"--help-formats[List available formats]" \
|
|
||||||
{-h,--help}"[Help banner]" \
|
|
||||||
{-i,--iterations}"[The number of times to encode the payload]:iterations" \
|
|
||||||
{-k,--keep}"[Preserve the template behavior and inject the payload as a new thread]" \
|
|
||||||
{-l,--list}"[List a module type]:module type:(all encoders nops payloads)" \
|
|
||||||
{-n,--nopsled}"[Prepend a nopsled of length size on to the payload]:nopsled length" \
|
|
||||||
{-o,--options}"[List the payload's standard options]" \
|
|
||||||
"--platform[The platform to encode for]:target platform:(android bsd bsdi java linux netware nodejs osx php python ruby solaris unix win)" \
|
|
||||||
{-p,--payload}"[Payload to use. Specify a '-' or stdin to use custom payloads]:payload" \
|
|
||||||
{-s,--space}"[The maximum size of the resulting payload]:length" \
|
|
||||||
{-x,--template}"[Specify an alternate executable template]:template file:_files"
|
|
||||||
@@ -1,759 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009 Peter Stephenson
|
|
||||||
# Copyright (c) 2011 Guido van Steen
|
|
||||||
# Copyright (c) 2011 Suraj N. Kurapati
|
|
||||||
# Copyright (c) 2011 Sorin Ionescu
|
|
||||||
# Copyright (c) 2011 Vincent Guerci
|
|
||||||
# Copyright (c) 2016 Geza Lore
|
|
||||||
# Copyright (c) 2017 Bengt Brodersen
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are met:
|
|
||||||
#
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
#
|
|
||||||
# * Redistributions in binary form must reproduce the above
|
|
||||||
# copyright notice, this list of conditions and the following
|
|
||||||
# disclaimer in the documentation and/or other materials provided
|
|
||||||
# with the distribution.
|
|
||||||
#
|
|
||||||
# * Neither the name of the FIZSH nor the names of its contributors
|
|
||||||
# may be used to endorse or promote products derived from this
|
|
||||||
# software without specific prior written permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
||||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
# POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# declare global configuration variables
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
typeset -g HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'
|
|
||||||
typeset -g HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'
|
|
||||||
typeset -g HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'
|
|
||||||
typeset -g HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=''
|
|
||||||
typeset -g HISTORY_SUBSTRING_SEARCH_FUZZY=''
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# declare internal global variables
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
typeset -g BUFFER MATCH MBEGIN MEND CURSOR
|
|
||||||
typeset -g _history_substring_search_refresh_display
|
|
||||||
typeset -g _history_substring_search_query_highlight
|
|
||||||
typeset -g _history_substring_search_result
|
|
||||||
typeset -g _history_substring_search_query
|
|
||||||
typeset -g -a _history_substring_search_query_parts
|
|
||||||
typeset -g -a _history_substring_search_raw_matches
|
|
||||||
typeset -g -i _history_substring_search_raw_match_index
|
|
||||||
typeset -g -a _history_substring_search_matches
|
|
||||||
typeset -g -i _history_substring_search_match_index
|
|
||||||
typeset -g -A _history_substring_search_unique_filter
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# the main ZLE widgets
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
history-substring-search-up() {
|
|
||||||
_history-substring-search-begin
|
|
||||||
|
|
||||||
_history-substring-search-up-history ||
|
|
||||||
_history-substring-search-up-buffer ||
|
|
||||||
_history-substring-search-up-search
|
|
||||||
|
|
||||||
_history-substring-search-end
|
|
||||||
}
|
|
||||||
|
|
||||||
history-substring-search-down() {
|
|
||||||
_history-substring-search-begin
|
|
||||||
|
|
||||||
_history-substring-search-down-history ||
|
|
||||||
_history-substring-search-down-buffer ||
|
|
||||||
_history-substring-search-down-search
|
|
||||||
|
|
||||||
_history-substring-search-end
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N history-substring-search-up
|
|
||||||
zle -N history-substring-search-down
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# implementation details
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
zmodload -F zsh/parameter
|
|
||||||
|
|
||||||
#
|
|
||||||
# We have to "override" some keys and widgets if the
|
|
||||||
# zsh-syntax-highlighting plugin has not been loaded:
|
|
||||||
#
|
|
||||||
# https://github.com/nicoulaj/zsh-syntax-highlighting
|
|
||||||
#
|
|
||||||
if [[ $+functions[_zsh_highlight] -eq 0 ]]; then
|
|
||||||
#
|
|
||||||
# Dummy implementation of _zsh_highlight() that
|
|
||||||
# simply removes any existing highlights when the
|
|
||||||
# user inserts printable characters into $BUFFER.
|
|
||||||
#
|
|
||||||
_zsh_highlight() {
|
|
||||||
if [[ $KEYS == [[:print:]] ]]; then
|
|
||||||
region_highlight=()
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# The following snippet was taken from the zsh-syntax-highlighting project:
|
|
||||||
#
|
|
||||||
# https://github.com/zsh-users/zsh-syntax-highlighting/blob/56b134f5d62ae3d4e66c7f52bd0cc2595f9b305b/zsh-syntax-highlighting.zsh#L126-161
|
|
||||||
#
|
|
||||||
# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are
|
|
||||||
# met:
|
|
||||||
#
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
#
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
|
||||||
# documentation and/or other materials provided with the distribution.
|
|
||||||
#
|
|
||||||
# * Neither the name of the zsh-syntax-highlighting contributors nor the
|
|
||||||
# names of its contributors may be used to endorse or promote products
|
|
||||||
# derived from this software without specific prior written permission.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
||||||
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
||||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
||||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
#
|
|
||||||
#--------------8<-------------------8<-------------------8<-----------------
|
|
||||||
# Rebind all ZLE widgets to make them invoke _zsh_highlights.
|
|
||||||
_zsh_highlight_bind_widgets()
|
|
||||||
{
|
|
||||||
# Load ZSH module zsh/zleparameter, needed to override user defined widgets.
|
|
||||||
zmodload zsh/zleparameter 2>/dev/null || {
|
|
||||||
echo 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' >&2
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Override ZLE widgets to make them invoke _zsh_highlight.
|
|
||||||
local cur_widget
|
|
||||||
for cur_widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|run-help|which-command|beep|yank*)}; do
|
|
||||||
case $widgets[$cur_widget] in
|
|
||||||
|
|
||||||
# Already rebound event: do nothing.
|
|
||||||
user:$cur_widget|user:_zsh_highlight_widget_*);;
|
|
||||||
|
|
||||||
# User defined widget: override and rebind old one with prefix "orig-".
|
|
||||||
user:*) eval "zle -N orig-$cur_widget ${widgets[$cur_widget]#*:}; \
|
|
||||||
_zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
|
||||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
|
||||||
|
|
||||||
# Completion widget: override and rebind old one with prefix "orig-".
|
|
||||||
completion:*) eval "zle -C orig-$cur_widget ${${widgets[$cur_widget]#*:}/:/ }; \
|
|
||||||
_zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
|
||||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
|
||||||
|
|
||||||
# Builtin widget: override and make it call the builtin ".widget".
|
|
||||||
builtin) eval "_zsh_highlight_widget_$cur_widget() { builtin zle .$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
|
||||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
|
||||||
|
|
||||||
# Default: unhandled case.
|
|
||||||
*) echo "zsh-syntax-highlighting: unhandled ZLE widget '$cur_widget'" >&2 ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
#-------------->8------------------->8------------------->8-----------------
|
|
||||||
|
|
||||||
_zsh_highlight_bind_widgets
|
|
||||||
fi
|
|
||||||
|
|
||||||
_history-substring-search-begin() {
|
|
||||||
setopt localoptions extendedglob
|
|
||||||
|
|
||||||
_history_substring_search_refresh_display=
|
|
||||||
_history_substring_search_query_highlight=
|
|
||||||
|
|
||||||
#
|
|
||||||
# If the buffer is the same as the previously displayed history substring
|
|
||||||
# search result, then just keep stepping through the match list. Otherwise
|
|
||||||
# start a new search.
|
|
||||||
#
|
|
||||||
if [[ -n $BUFFER && $BUFFER == ${_history_substring_search_result:-} ]]; then
|
|
||||||
return;
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Clear the previous result.
|
|
||||||
#
|
|
||||||
_history_substring_search_result=''
|
|
||||||
|
|
||||||
if [[ -z $BUFFER ]]; then
|
|
||||||
#
|
|
||||||
# If the buffer is empty, we will just act like up-history/down-history
|
|
||||||
# in ZSH, so we do not need to actually search the history. This should
|
|
||||||
# speed things up a little.
|
|
||||||
#
|
|
||||||
_history_substring_search_query=
|
|
||||||
_history_substring_search_query_parts=()
|
|
||||||
_history_substring_search_raw_matches=()
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# For the purpose of highlighting we keep a copy of the original
|
|
||||||
# query string.
|
|
||||||
#
|
|
||||||
_history_substring_search_query=$BUFFER
|
|
||||||
|
|
||||||
#
|
|
||||||
# compose search pattern
|
|
||||||
#
|
|
||||||
if [[ -n $HISTORY_SUBSTRING_SEARCH_FUZZY ]]; then
|
|
||||||
#
|
|
||||||
# `=` split string in arguments
|
|
||||||
#
|
|
||||||
_history_substring_search_query_parts=(${=_history_substring_search_query})
|
|
||||||
else
|
|
||||||
_history_substring_search_query_parts=(${==_history_substring_search_query})
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Escape and join query parts with wildcard character '*' as seperator
|
|
||||||
# `(j:CHAR:)` join array to string with CHAR as seperator
|
|
||||||
#
|
|
||||||
local search_pattern="*${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Find all occurrences of the search pattern in the history file.
|
|
||||||
#
|
|
||||||
# (k) returns the "keys" (history index numbers) instead of the values
|
|
||||||
# (R) returns values in reverse older, so the index of the youngest
|
|
||||||
# matching history entry is at the head of the list.
|
|
||||||
#
|
|
||||||
_history_substring_search_raw_matches=(${(k)history[(R)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${search_pattern}]})
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# In order to stay as responsive as possible, we will process the raw
|
|
||||||
# matches lazily (when the user requests the next match) to choose items
|
|
||||||
# that need to be displayed to the user.
|
|
||||||
# _history_substring_search_raw_match_index holds the index of the last
|
|
||||||
# unprocessed entry in _history_substring_search_raw_matches. Any items
|
|
||||||
# that need to be displayed will be added to
|
|
||||||
# _history_substring_search_matches.
|
|
||||||
#
|
|
||||||
# We use an associative array (_history_substring_search_unique_filter) as
|
|
||||||
# a 'set' data structure to ensure uniqueness of the results if desired.
|
|
||||||
# If an entry (key) is in the set (non-empty value), then we have already
|
|
||||||
# added that entry to _history_substring_search_matches.
|
|
||||||
#
|
|
||||||
_history_substring_search_raw_match_index=0
|
|
||||||
_history_substring_search_matches=()
|
|
||||||
_history_substring_search_unique_filter=()
|
|
||||||
|
|
||||||
#
|
|
||||||
# If $_history_substring_search_match_index is equal to
|
|
||||||
# $#_history_substring_search_matches + 1, this indicates that we
|
|
||||||
# are beyond the end of $_history_substring_search_matches and that we
|
|
||||||
# have also processed all entries in
|
|
||||||
# _history_substring_search_raw_matches.
|
|
||||||
#
|
|
||||||
# If $#_history_substring_search_match_index is equal to 0, this indicates
|
|
||||||
# that we are beyond the beginning of $_history_substring_search_matches.
|
|
||||||
#
|
|
||||||
# If we have initially pressed "up" we have to initialize
|
|
||||||
# $_history_substring_search_match_index to 0 so that it will be
|
|
||||||
# incremented to 1.
|
|
||||||
#
|
|
||||||
# If we have initially pressed "down" we have to initialize
|
|
||||||
# $_history_substring_search_match_index to 1 so that it will be
|
|
||||||
# decremented to 0.
|
|
||||||
#
|
|
||||||
if [[ $WIDGET == history-substring-search-down ]]; then
|
|
||||||
_history_substring_search_match_index=1
|
|
||||||
else
|
|
||||||
_history_substring_search_match_index=0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-end() {
|
|
||||||
setopt localoptions extendedglob
|
|
||||||
|
|
||||||
_history_substring_search_result=$BUFFER
|
|
||||||
|
|
||||||
# the search was successful so display the result properly by clearing away
|
|
||||||
# existing highlights and moving the cursor to the end of the result buffer
|
|
||||||
if [[ $_history_substring_search_refresh_display -eq 1 ]]; then
|
|
||||||
region_highlight=()
|
|
||||||
CURSOR=${#BUFFER}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# highlight command line using zsh-syntax-highlighting
|
|
||||||
_zsh_highlight
|
|
||||||
|
|
||||||
# highlight the search query inside the command line
|
|
||||||
if [[ -n $_history_substring_search_query_highlight ]]; then
|
|
||||||
# highlight first matching query parts
|
|
||||||
local highlight_start_index=0
|
|
||||||
local highlight_end_index=0
|
|
||||||
local query_part
|
|
||||||
for query_part in $_history_substring_search_query_parts; do
|
|
||||||
local escaped_query_part=${query_part//(#m)[\][()|\\*?#<>~^]/\\$MATCH}
|
|
||||||
# (i) get index of pattern
|
|
||||||
local query_part_match_index="${${BUFFER:$highlight_start_index}[(i)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${escaped_query_part}]}"
|
|
||||||
if [[ $query_part_match_index -le ${#BUFFER:$highlight_start_index} ]]; then
|
|
||||||
highlight_start_index=$(( $highlight_start_index + $query_part_match_index ))
|
|
||||||
highlight_end_index=$(( $highlight_start_index + ${#query_part} ))
|
|
||||||
region_highlight+=("$(($highlight_start_index - 1)) $(($highlight_end_index - 1)) $_history_substring_search_query_highlight")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For debugging purposes:
|
|
||||||
# zle -R "mn: "$_history_substring_search_match_index" m#: "${#_history_substring_search_matches}
|
|
||||||
# read -k -t 200 && zle -U $REPLY
|
|
||||||
|
|
||||||
# Exit successfully from the history-substring-search-* widgets.
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-up-buffer() {
|
|
||||||
#
|
|
||||||
# Check if the UP arrow was pressed to move the cursor within a multi-line
|
|
||||||
# buffer. This amounts to three tests:
|
|
||||||
#
|
|
||||||
# 1. $#buflines -gt 1.
|
|
||||||
#
|
|
||||||
# 2. $CURSOR -ne $#BUFFER.
|
|
||||||
#
|
|
||||||
# 3. Check if we are on the first line of the current multi-line buffer.
|
|
||||||
# If so, pressing UP would amount to leaving the multi-line buffer.
|
|
||||||
#
|
|
||||||
# We check this by adding an extra "x" to $LBUFFER, which makes
|
|
||||||
# sure that xlbuflines is always equal to the number of lines
|
|
||||||
# until $CURSOR (including the line with the cursor on it).
|
|
||||||
#
|
|
||||||
local buflines XLBUFFER xlbuflines
|
|
||||||
buflines=(${(f)BUFFER})
|
|
||||||
XLBUFFER=$LBUFFER"x"
|
|
||||||
xlbuflines=(${(f)XLBUFFER})
|
|
||||||
|
|
||||||
if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xlbuflines -ne 1 ]]; then
|
|
||||||
zle up-line-or-history
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-down-buffer() {
|
|
||||||
#
|
|
||||||
# Check if the DOWN arrow was pressed to move the cursor within a multi-line
|
|
||||||
# buffer. This amounts to three tests:
|
|
||||||
#
|
|
||||||
# 1. $#buflines -gt 1.
|
|
||||||
#
|
|
||||||
# 2. $CURSOR -ne $#BUFFER.
|
|
||||||
#
|
|
||||||
# 3. Check if we are on the last line of the current multi-line buffer.
|
|
||||||
# If so, pressing DOWN would amount to leaving the multi-line buffer.
|
|
||||||
#
|
|
||||||
# We check this by adding an extra "x" to $RBUFFER, which makes
|
|
||||||
# sure that xrbuflines is always equal to the number of lines
|
|
||||||
# from $CURSOR (including the line with the cursor on it).
|
|
||||||
#
|
|
||||||
local buflines XRBUFFER xrbuflines
|
|
||||||
buflines=(${(f)BUFFER})
|
|
||||||
XRBUFFER="x"$RBUFFER
|
|
||||||
xrbuflines=(${(f)XRBUFFER})
|
|
||||||
|
|
||||||
if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xrbuflines -ne 1 ]]; then
|
|
||||||
zle down-line-or-history
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-up-history() {
|
|
||||||
#
|
|
||||||
# Behave like up in ZSH, except clear the $BUFFER
|
|
||||||
# when beginning of history is reached like in Fish.
|
|
||||||
#
|
|
||||||
if [[ -z $_history_substring_search_query ]]; then
|
|
||||||
|
|
||||||
# we have reached the absolute top of history
|
|
||||||
if [[ $HISTNO -eq 1 ]]; then
|
|
||||||
BUFFER=
|
|
||||||
|
|
||||||
# going up from somewhere below the top of history
|
|
||||||
else
|
|
||||||
zle up-line-or-history
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-down-history() {
|
|
||||||
#
|
|
||||||
# Behave like down-history in ZSH, except clear the
|
|
||||||
# $BUFFER when end of history is reached like in Fish.
|
|
||||||
#
|
|
||||||
if [[ -z $_history_substring_search_query ]]; then
|
|
||||||
|
|
||||||
# going down from the absolute top of history
|
|
||||||
if [[ $HISTNO -eq 1 && -z $BUFFER ]]; then
|
|
||||||
BUFFER=${history[1]}
|
|
||||||
_history_substring_search_refresh_display=1
|
|
||||||
|
|
||||||
# going down from somewhere above the bottom of history
|
|
||||||
else
|
|
||||||
zle down-line-or-history
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_history_substring_search_process_raw_matches() {
|
|
||||||
#
|
|
||||||
# Process more outstanding raw matches and append any matches that need to
|
|
||||||
# be displayed to the user to _history_substring_search_matches.
|
|
||||||
# Return whether there were any more results appended.
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# While we have more raw matches. Process them to see if there are any more
|
|
||||||
# matches that need to be displayed to the user.
|
|
||||||
#
|
|
||||||
while [[ $_history_substring_search_raw_match_index -lt $#_history_substring_search_raw_matches ]]; do
|
|
||||||
#
|
|
||||||
# Move on to the next raw entry and get its history index.
|
|
||||||
#
|
|
||||||
_history_substring_search_raw_match_index+=1
|
|
||||||
local index=${_history_substring_search_raw_matches[$_history_substring_search_raw_match_index]}
|
|
||||||
|
|
||||||
#
|
|
||||||
# If HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set to a non-empty value,
|
|
||||||
# then ensure that only unique matches are presented to the user.
|
|
||||||
# When HIST_IGNORE_ALL_DUPS is set, ZSH already ensures a unique history,
|
|
||||||
# so in this case we do not need to do anything.
|
|
||||||
#
|
|
||||||
if [[ ! -o HIST_IGNORE_ALL_DUPS && -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
|
||||||
#
|
|
||||||
# Get the actual history entry at the new index, and check if we have
|
|
||||||
# already added it to _history_substring_search_matches.
|
|
||||||
#
|
|
||||||
local entry=${history[$index]}
|
|
||||||
|
|
||||||
if [[ -z ${_history_substring_search_unique_filter[$entry]} ]]; then
|
|
||||||
#
|
|
||||||
# This is a new unique entry. Add it to the filter and append the
|
|
||||||
# index to _history_substring_search_matches.
|
|
||||||
#
|
|
||||||
_history_substring_search_unique_filter[$entry]=1
|
|
||||||
_history_substring_search_matches+=($index)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Indicate that we did find a match.
|
|
||||||
#
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# Just append the new history index to the processed matches.
|
|
||||||
#
|
|
||||||
_history_substring_search_matches+=($index)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Indicate that we did find a match.
|
|
||||||
#
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
#
|
|
||||||
# We are beyond the end of the list of raw matches. Indicate that no
|
|
||||||
# more matches are available.
|
|
||||||
#
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-has-next() {
|
|
||||||
#
|
|
||||||
# Predicate function that returns whether any more older matches are
|
|
||||||
# available.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [[ $_history_substring_search_match_index -lt $#_history_substring_search_matches ]]; then
|
|
||||||
#
|
|
||||||
# We did not reach the end of the processed list, so we do have further
|
|
||||||
# matches.
|
|
||||||
#
|
|
||||||
return 0
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# We are at the end of the processed list. Try to process further
|
|
||||||
# unprocessed matches. _history_substring_search_process_raw_matches
|
|
||||||
# returns whether any more matches were available, so just return
|
|
||||||
# that result.
|
|
||||||
#
|
|
||||||
_history_substring_search_process_raw_matches
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-has-prev() {
|
|
||||||
#
|
|
||||||
# Predicate function that returns whether any more younger matches are
|
|
||||||
# available.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [[ $_history_substring_search_match_index -gt 1 ]]; then
|
|
||||||
#
|
|
||||||
# We did not reach the beginning of the processed list, so we do have
|
|
||||||
# further matches.
|
|
||||||
#
|
|
||||||
return 0
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# We are at the beginning of the processed list. We do not have any more
|
|
||||||
# matches.
|
|
||||||
#
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-found() {
|
|
||||||
#
|
|
||||||
# A match is available. The index of the match is held in
|
|
||||||
# $_history_substring_search_match_index
|
|
||||||
#
|
|
||||||
# 1. Make $BUFFER equal to the matching history entry.
|
|
||||||
#
|
|
||||||
# 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
|
|
||||||
# to highlight the current buffer.
|
|
||||||
#
|
|
||||||
BUFFER=$history[$_history_substring_search_matches[$_history_substring_search_match_index]]
|
|
||||||
_history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-not-found() {
|
|
||||||
#
|
|
||||||
# No more matches are available.
|
|
||||||
#
|
|
||||||
# 1. Make $BUFFER equal to $_history_substring_search_query so the user can
|
|
||||||
# revise it and search again.
|
|
||||||
#
|
|
||||||
# 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
|
|
||||||
# to highlight the current buffer.
|
|
||||||
#
|
|
||||||
BUFFER=$_history_substring_search_query
|
|
||||||
_history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-up-search() {
|
|
||||||
_history_substring_search_refresh_display=1
|
|
||||||
|
|
||||||
#
|
|
||||||
# Select history entry during history-substring-down-search:
|
|
||||||
#
|
|
||||||
# The following variables have been initialized in
|
|
||||||
# _history-substring-search-up/down-search():
|
|
||||||
#
|
|
||||||
# $_history_substring_search_matches is the current list of matches that
|
|
||||||
# need to be displayed to the user.
|
|
||||||
# $_history_substring_search_match_index is the index of the current match
|
|
||||||
# that is being displayed to the user.
|
|
||||||
#
|
|
||||||
# The range of values that $_history_substring_search_match_index can take
|
|
||||||
# is: [0, $#_history_substring_search_matches + 1]. A value of 0
|
|
||||||
# indicates that we are beyond the beginning of
|
|
||||||
# $_history_substring_search_matches. A value of
|
|
||||||
# $#_history_substring_search_matches + 1 indicates that we are beyond
|
|
||||||
# the end of $_history_substring_search_matches and that we have also
|
|
||||||
# processed all entries in _history_substring_search_raw_matches.
|
|
||||||
#
|
|
||||||
# If $_history_substring_search_match_index equals
|
|
||||||
# $#_history_substring_search_matches and
|
|
||||||
# $_history_substring_search_raw_match_index is not greater than
|
|
||||||
# $#_history_substring_search_raw_matches, then we need to further process
|
|
||||||
# $_history_substring_search_raw_matches to see if there are any more
|
|
||||||
# entries that need to be displayed to the user.
|
|
||||||
#
|
|
||||||
# In _history-substring-search-up-search() the initial value of
|
|
||||||
# $_history_substring_search_match_index is 0. This value is set in
|
|
||||||
# _history-substring-search-begin(). _history-substring-search-up-search()
|
|
||||||
# will initially increment it to 1.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [[ $_history_substring_search_match_index -gt $#_history_substring_search_matches ]]; then
|
|
||||||
#
|
|
||||||
# We are beyond the end of $_history_substring_search_matches. This
|
|
||||||
# can only happen if we have also exhausted the unprocessed matches in
|
|
||||||
# _history_substring_search_raw_matches.
|
|
||||||
#
|
|
||||||
# 1. Update display to indicate search not found.
|
|
||||||
#
|
|
||||||
_history-substring-search-not-found
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if _history-substring-search-has-next; then
|
|
||||||
#
|
|
||||||
# We do have older matches.
|
|
||||||
#
|
|
||||||
# 1. Move index to point to the next match.
|
|
||||||
# 2. Update display to indicate search found.
|
|
||||||
#
|
|
||||||
_history_substring_search_match_index+=1
|
|
||||||
_history-substring-search-found
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# We do not have older matches.
|
|
||||||
#
|
|
||||||
# 1. Move the index beyond the end of
|
|
||||||
# _history_substring_search_matches.
|
|
||||||
# 2. Update display to indicate search not found.
|
|
||||||
#
|
|
||||||
_history_substring_search_match_index+=1
|
|
||||||
_history-substring-search-not-found
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
|
|
||||||
# history should be matched, make sure the new and old results are different.
|
|
||||||
#
|
|
||||||
# However, if the HIST_IGNORE_ALL_DUPS shell option, or
|
|
||||||
# HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
|
|
||||||
# unique history, so in this case we do not need to do anything.
|
|
||||||
#
|
|
||||||
if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
|
|
||||||
#
|
|
||||||
# Repeat the current search so that a different (unique) match is found.
|
|
||||||
#
|
|
||||||
_history-substring-search-up-search
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_history-substring-search-down-search() {
|
|
||||||
_history_substring_search_refresh_display=1
|
|
||||||
|
|
||||||
#
|
|
||||||
# Select history entry during history-substring-down-search:
|
|
||||||
#
|
|
||||||
# The following variables have been initialized in
|
|
||||||
# _history-substring-search-up/down-search():
|
|
||||||
#
|
|
||||||
# $_history_substring_search_matches is the current list of matches that
|
|
||||||
# need to be displayed to the user.
|
|
||||||
# $_history_substring_search_match_index is the index of the current match
|
|
||||||
# that is being displayed to the user.
|
|
||||||
#
|
|
||||||
# The range of values that $_history_substring_search_match_index can take
|
|
||||||
# is: [0, $#_history_substring_search_matches + 1]. A value of 0
|
|
||||||
# indicates that we are beyond the beginning of
|
|
||||||
# $_history_substring_search_matches. A value of
|
|
||||||
# $#_history_substring_search_matches + 1 indicates that we are beyond
|
|
||||||
# the end of $_history_substring_search_matches and that we have also
|
|
||||||
# processed all entries in _history_substring_search_raw_matches.
|
|
||||||
#
|
|
||||||
# In _history-substring-search-down-search() the initial value of
|
|
||||||
# $_history_substring_search_match_index is 1. This value is set in
|
|
||||||
# _history-substring-search-begin(). _history-substring-search-down-search()
|
|
||||||
# will initially decrement it to 0.
|
|
||||||
#
|
|
||||||
|
|
||||||
if [[ $_history_substring_search_match_index -lt 1 ]]; then
|
|
||||||
#
|
|
||||||
# We are beyond the beginning of $_history_substring_search_matches.
|
|
||||||
#
|
|
||||||
# 1. Update display to indicate search not found.
|
|
||||||
#
|
|
||||||
_history-substring-search-not-found
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if _history-substring-search-has-prev; then
|
|
||||||
#
|
|
||||||
# We do have younger matches.
|
|
||||||
#
|
|
||||||
# 1. Move index to point to the previous match.
|
|
||||||
# 2. Update display to indicate search found.
|
|
||||||
#
|
|
||||||
_history_substring_search_match_index+=-1
|
|
||||||
_history-substring-search-found
|
|
||||||
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# We do not have younger matches.
|
|
||||||
#
|
|
||||||
# 1. Move the index beyond the beginning of
|
|
||||||
# _history_substring_search_matches.
|
|
||||||
# 2. Update display to indicate search not found.
|
|
||||||
#
|
|
||||||
_history_substring_search_match_index+=-1
|
|
||||||
_history-substring-search-not-found
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
|
|
||||||
# history should be matched, make sure the new and old results are different.
|
|
||||||
#
|
|
||||||
# However, if the HIST_IGNORE_ALL_DUPS shell option, or
|
|
||||||
# HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
|
|
||||||
# unique history, so in this case we do not need to do anything.
|
|
||||||
#
|
|
||||||
if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
|
|
||||||
#
|
|
||||||
# Repeat the current search so that a different (unique) match is found.
|
|
||||||
#
|
|
||||||
_history-substring-search-down-search
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
|
|
||||||
# vim: ft=zsh sw=2 ts=2 et
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
if [ -f "`command which nasm 2>/dev/null`" -a -f "`command which objdump 2>/dev/null`" ] ; then
|
if [ -f "`command which nasm`" -a -f "`command which objdump`" ] ; then
|
||||||
assemble_shellcode() {
|
assemble_shellcode() {
|
||||||
if [ -z "$1" ] ; then echo "Usage: $0 <assembly file>" >&2 ; return 1 ; fi
|
if [ -z "$1" ] ; then echo "Usage: $0 <assembly file>" >&2 ; return 1 ; fi
|
||||||
local NASM=`command which nasm`
|
local NASM=`command which nasm`
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
if command -v xiwi >/dev/null 2>&1; then
|
|
||||||
function xiwibg {
|
|
||||||
local tmpf=$(mktemp)
|
|
||||||
echo Logging to ${tmpf}
|
|
||||||
nohup xiwi "$@" >!${tmpf} 2>&1 &
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
|
|
||||||
GCL=${HOME}/tools/gcloud
|
|
||||||
|
|
||||||
if [ ! -d ${GCL} ] ; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add bin to path
|
|
||||||
export PATH="${PATH}:${GCL}/bin"
|
|
||||||
|
|
||||||
# Load completion
|
|
||||||
source ${GCL}/completion.zsh.inc
|
|
||||||
|
|
||||||
which kubectl 2>/dev/null >&2 && \
|
|
||||||
source <(kubectl completion zsh) || \
|
|
||||||
true
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
if ! which gpg-agent >/dev/null 2>&1 ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set the default paths to gpg-agent files.
|
|
||||||
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
|
|
||||||
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
|
|
||||||
|
|
||||||
# Load environment variables from previous run
|
|
||||||
source "$_gpg_agent_env" 2> /dev/null
|
|
||||||
|
|
||||||
# Start gpg-agent if not started.
|
|
||||||
if [[ -z "$GPG_AGENT_INFO" && ! -S "${GNUPGHOME:-$HOME/.gnupg}/S.gpg-agent" ]]; then
|
|
||||||
# Start gpg-agent if not started.
|
|
||||||
if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${${${(s.:.)GPG_AGENT_INFO}[2]}:--1} gpg-agent"; then
|
|
||||||
eval "$(gpg-agent --daemon 2>/dev/null | tee "$_gpg_agent_env")"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Inform gpg-agent of the current TTY for user prompts.
|
|
||||||
export GPG_TTY="$(tty)"
|
|
||||||
|
|
||||||
# Integrate with the SSH module.
|
|
||||||
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
|
|
||||||
# Load required functions.
|
|
||||||
autoload -Uz add-zsh-hook
|
|
||||||
|
|
||||||
# Override the ssh-agent environment file default path.
|
|
||||||
_ssh_agent_env="$_gpg_agent_env"
|
|
||||||
|
|
||||||
# Updates the GPG-Agent TTY before every command since SSH does not set it.
|
|
||||||
function _gpg-agent-update-tty {
|
|
||||||
gpg-connect-agent UPDATESTARTUPTTY /bye >/dev/null
|
|
||||||
}
|
|
||||||
add-zsh-hook preexec _gpg-agent-update-tty
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean up.
|
|
||||||
unset _gpg_agent_{conf,env}
|
|
||||||
|
|
||||||
# Disable GUI prompts inside SSH.
|
|
||||||
if [[ -n "$SSH_CONNECTION" ]]; then
|
|
||||||
export PINENTRY_USER_DATA='USE_CURSES=1'
|
|
||||||
fi
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
histmode() {
|
|
||||||
# This is very brittle as it assumes we're the only user of fc
|
|
||||||
case "$1" in
|
|
||||||
on)
|
|
||||||
if [ "$HISTDISABLED" -ne 1 ] ; then
|
|
||||||
echo "History is not disabled." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fc -P
|
|
||||||
HISTDISABLED=0
|
|
||||||
echo "History enabled."
|
|
||||||
;;
|
|
||||||
off)
|
|
||||||
if [ "$HISTDISABLED" -eq 1 ] ; then
|
|
||||||
echo "History is already disabled." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
HISTDISABLED=1
|
|
||||||
fc -p /dev/null $HISTSIZE 0
|
|
||||||
echo "History disabled."
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown command." >&2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if which ipython >/dev/null 2>/dev/null ; then
|
|
||||||
export PYTHONSTARTUP="${HOME}/.ipython.py"
|
|
||||||
fi
|
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
function _jekyll_locate_dir {
|
|
||||||
if [[ -n "${JEKYLL_DIR}" && -f "${JEKYLL_DIR}" ]] ; then
|
|
||||||
echo ${JEKYLL_DIR}
|
|
||||||
elif test -f `pwd`/_config.yml ; then
|
|
||||||
pwd
|
|
||||||
elif test -f ${HOME}/Projects/blog/_config.yml ; then
|
|
||||||
echo ${HOME}/Projects/blog
|
|
||||||
else
|
|
||||||
echo "Jekyll instance not found!" >&2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function _jekyll_set_date {
|
|
||||||
local FILENAME
|
|
||||||
local DATE
|
|
||||||
FILENAME=${1}
|
|
||||||
DATE=${2}
|
|
||||||
sed -i "2,/---/{s/^date:.*$/date: ${DATE}/;s/---/date: ${DATE}\n---/}" ${FILENAME}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _jekyll_find_post {
|
|
||||||
local files
|
|
||||||
local fname
|
|
||||||
local jekyll_dir
|
|
||||||
|
|
||||||
jekyll_dir="${3}"
|
|
||||||
|
|
||||||
if [ -f "${1}" ] ; then
|
|
||||||
printf -- "${1}"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [ -f "${jekyll_dir}/_posts/${1}" ] ; then
|
|
||||||
printf -- "${jekyll_dir}/_posts/${1}"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [ -f "${jekyll_dir}/_drafts/${1}" ] ; then
|
|
||||||
printf -- "${jekyll_dir}/_drafts/${1}"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fname=${2:-${1}}
|
|
||||||
files=(${jekyll_dir}/_posts/*${fname}* ${jekyll_dir}/_drafts/*${fname}*)
|
|
||||||
if [ ${#files} -eq "0" ] ; then
|
|
||||||
echo "No post found for ${fname}" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ ${#files} -gt "1" ] ; then
|
|
||||||
echo "Ambiguous results: ${files}" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
printf -- ${files}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function jekyll {
|
|
||||||
setopt localoptions nullglob
|
|
||||||
local JTEMPLATE
|
|
||||||
local TITLE
|
|
||||||
local SLUG
|
|
||||||
local FILENAME
|
|
||||||
local DATE
|
|
||||||
local NEWNAME
|
|
||||||
local JEKYLL_DIR
|
|
||||||
local EDITOR=${EDITOR:-vim}
|
|
||||||
|
|
||||||
JEKYLL_DIR=`_jekyll_locate_dir`
|
|
||||||
|
|
||||||
if [ -z "${JEKYLL_DIR}" ] ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
JTEMPLATE="---\n"
|
|
||||||
JTEMPLATE+="layout: post\n"
|
|
||||||
JTEMPLATE+="title: \"%s\"\n"
|
|
||||||
JTEMPLATE+="category: Blog\n"
|
|
||||||
JTEMPLATE+="---\n\n"
|
|
||||||
TITLE=${@[2,-1]}
|
|
||||||
SLUG=$(echo -n ${TITLE} |
|
|
||||||
tr A-Z a-z | # Everything in lower case
|
|
||||||
tr -d "'" | # Remove single quotes entirely
|
|
||||||
tr -c -s -- a-z0-9 - | # Replace non-alphanums with dashes
|
|
||||||
sed 's/^-*\([^-].*[^-]\)-*$/\1/' # Remove leading and trailing slashes
|
|
||||||
)
|
|
||||||
TITLE=$(echo ${TITLE} | sed 's/\\/\\\\/g;s/"/\\"/g')
|
|
||||||
DATE=`date +%Y-%m-%d`
|
|
||||||
|
|
||||||
case "${1:-help}" in
|
|
||||||
help|--help)
|
|
||||||
command jekyll help
|
|
||||||
echo "Added by zsh plugin:"
|
|
||||||
echo " draft Create a new draft post."
|
|
||||||
echo " post Create a new post to publish immediately."
|
|
||||||
echo " publish Publish a draft post by name."
|
|
||||||
echo " edit Edit a post."
|
|
||||||
echo " dev Run local server with drafts and incremental."
|
|
||||||
;;
|
|
||||||
draft)
|
|
||||||
if [ -z "${SLUG}" ] ; then
|
|
||||||
echo "slug is required."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
mkdir -p "${JEKYLL_DIR}/_drafts"
|
|
||||||
FILENAME="${JEKYLL_DIR}/_drafts/${SLUG}.md"
|
|
||||||
printf -- "${JTEMPLATE}" "${TITLE}" > "${FILENAME}"
|
|
||||||
${EDITOR} "${FILENAME}" '+$' '+startinsert'
|
|
||||||
;;
|
|
||||||
post)
|
|
||||||
if [ -z "${SLUG}" ] ; then
|
|
||||||
echo "slug is required."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
FILENAME="${JEKYLL_DIR}/_posts/${DATE}-${SLUG}.md"
|
|
||||||
printf -- "${JTEMPLATE}" "${TITLE}" > "${FILENAME}"
|
|
||||||
_jekyll_set_date "${FILENAME}" "${DATE}"
|
|
||||||
${EDITOR} "${FILENAME}" '+$' '+startinsert'
|
|
||||||
;;
|
|
||||||
publish)
|
|
||||||
if [ -z "${SLUG}" ] ; then
|
|
||||||
echo "slug is required."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
FILENAME=$(_jekyll_find_post "${TITLE}" "${SLUG}" "${JEKYLL_DIR}")
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if ! [[ "${FILENAME}" =~ '/_drafts/' ]] ; then
|
|
||||||
echo "${FILENAME} is not a draft." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
NEWNAME=$(echo "${FILENAME}" | sed "s/_drafts\//_posts\/${DATE}-/")
|
|
||||||
mv "${FILENAME}" "${NEWNAME}"
|
|
||||||
_jekyll_set_date "${NEWNAME}" "${DATE}"
|
|
||||||
;;
|
|
||||||
edit)
|
|
||||||
if [ -z "${SLUG}" ] ; then
|
|
||||||
echo "slug is required."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
FILENAME=$(_jekyll_find_post "${TITLE}" "${SLUG}" "${JEKYLL_DIR}")
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
${EDITOR} "${FILENAME}"
|
|
||||||
;;
|
|
||||||
dev)
|
|
||||||
command jekyll serve -D -I "$@"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
command jekyll "$@"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
# vim: syntax=zsh
|
|
||||||
|
|
||||||
function prompt_matir_setup {
|
|
||||||
autoload -Uz add-zsh-hook
|
|
||||||
autoload -Uz vcs_info
|
|
||||||
autoload -Uz colors
|
|
||||||
|
|
||||||
prompt_opts=(sp subst cr percent)
|
|
||||||
|
|
||||||
colors
|
|
||||||
|
|
||||||
add-zsh-hook precmd prompt_matir_precmd
|
|
||||||
|
|
||||||
# Git related styles
|
|
||||||
zstyle ':vcs_info:*' enable git
|
|
||||||
zstyle ':vcs_info:*' check-for-changes true
|
|
||||||
zstyle ':vcs_info:*' formats ' (%b%u%c)'
|
|
||||||
zstyle ':vcs_info:*' stagedstr '*'
|
|
||||||
zstyle ':vcs_info:*' unstagedstr '*'
|
|
||||||
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
|
|
||||||
|
|
||||||
PROMPT='%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] ' # History #
|
|
||||||
PROMPT+='%{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@' # username@
|
|
||||||
PROMPT+='%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:' # hostname
|
|
||||||
PROMPT+='%{$fg[green]%}%32<...<%~%<<' # path
|
|
||||||
PROMPT+='%{$fg[magenta]%}${VIRTUAL_ENV_SHORT}' # virtualenv
|
|
||||||
PROMPT+='%{$fg[blue]%}${vcs_info_msg_0_}' # VCS info
|
|
||||||
PROMPT+='%{$fg[white]%}%#%{$reset_color%} ' # prompt symbol
|
|
||||||
|
|
||||||
# Rprompt setup
|
|
||||||
local show_return='✘ '
|
|
||||||
RPROMPT='%(?:: %{$fg[red]%}'
|
|
||||||
RPROMPT+=${show_return}
|
|
||||||
RPROMPT+='%? '
|
|
||||||
RPROMPT+='%{$reset_color%})'
|
|
||||||
RPROMPT+='${PROMPT_VIMODE}'
|
|
||||||
}
|
|
||||||
|
|
||||||
function zle-keymap-select {
|
|
||||||
# Add prompt info
|
|
||||||
PROMPT_VIMODE="${${KEYMAP/vicmd/ [VICMD]}/(main|viins)/}"
|
|
||||||
zle reset-prompt
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle-keymap-select
|
|
||||||
zle -N zle-line-init zle-keymap-select
|
|
||||||
|
|
||||||
function prompt_matir_precmd {
|
|
||||||
vcs_info
|
|
||||||
if [ $VIRTUAL_ENV ] ; then
|
|
||||||
VIRTUAL_ENV_SHORT=" (py:$(basename $VIRTUAL_ENV))"
|
|
||||||
else
|
|
||||||
VIRTUAL_ENV_SHORT=""
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### git: Show marker (*) if there are untracked files in repository
|
|
||||||
# Make sure you have added staged to your 'formats': %c
|
|
||||||
|
|
||||||
+vi-git-untracked(){
|
|
||||||
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
|
|
||||||
git status --porcelain | grep '??' &> /dev/null ; then
|
|
||||||
hook_com[staged]+='*'
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
prompt_matir_setup "$@"
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#!/bin/zsh
|
|
||||||
#
|
|
||||||
# Skelify -- move a file to my .skel and setup symlinks
|
|
||||||
|
|
||||||
function skelify {
|
|
||||||
local target
|
|
||||||
local whichdir
|
|
||||||
local relhome
|
|
||||||
local fname
|
|
||||||
local fulltarget
|
|
||||||
for target in $~@; do
|
|
||||||
if test -d ${target} ; then
|
|
||||||
skelify ${target}/* || return 1
|
|
||||||
elif test -f ${target} ; then
|
|
||||||
if ! whichdir=$(cd $(dirname $target) && pwd); then
|
|
||||||
echo Could not find directory for $target >/dev/stderr
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fname=$(basename ${target})
|
|
||||||
relhome=${whichdir#${HOME}/}
|
|
||||||
fulltarget="${whichdir}/${fname}"
|
|
||||||
if [[ ${relhome} == ${whichdir} ]] ; then
|
|
||||||
echo ${whichdir} is not in home >/dev/stderr
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [[ ${relhome:0:1} == "." ]] ; then
|
|
||||||
relhome=${relhome:1}
|
|
||||||
elif [[ ${fname:0:1} == "." ]] ; then
|
|
||||||
fname=${fname:1}
|
|
||||||
else
|
|
||||||
echo skelify only supports dotfiles >/dev/stderr
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
echo ${target}
|
|
||||||
mkdir -p ${HOME}/.skel/${relhome}
|
|
||||||
mv ${target} ${HOME}/.skel/${relhome}/${fname}
|
|
||||||
ln -s ${fulltarget} ${HOME}/.skel/${relhome}/${fname}
|
|
||||||
else
|
|
||||||
echo ${target} is not a directory or file. >/dev/stderr
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
6
dotfiles/zshrc.d/source_gnupg.zsh
Normal file
6
dotfiles/zshrc.d/source_gnupg.zsh
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
function source_gnupg {
|
||||||
|
GPG_ENV=${HOME}/.gnupg/gpg-agent.env
|
||||||
|
if test -f ${GPG_ENV} ; then
|
||||||
|
eval $(sed 's/^/export /' ${GPG_ENV})
|
||||||
|
fi
|
||||||
|
}
|
||||||
364
install.sh
364
install.sh
@@ -1,221 +1,180 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -o nounset
|
set nounset
|
||||||
set -o errexit
|
set errexit
|
||||||
set -o shwordsplit 2>/dev/null || true # Make zsh behave like bash
|
|
||||||
|
|
||||||
case $(uname) in
|
function prerequisites {
|
||||||
Linux)
|
if which zsh > /dev/null ; then
|
||||||
FINDTYPE="-xtype"
|
if [[ $- == *i* ]] ; then
|
||||||
;;
|
if [[ `getent passwd $USER | cut -d: -f7` != */zsh ]] ; then
|
||||||
Darwin|*BSD)
|
echo 'Enter password to change shell.' >&2
|
||||||
FINDTYPE="-type"
|
chsh -s `which zsh`
|
||||||
;;
|
fi
|
||||||
*)
|
fi
|
||||||
echo "Unknown OS: $(uname), guessing no GNU utils."
|
install_git https://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh
|
||||||
FINDTYPE="-type"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
is_comment() {
|
|
||||||
if [ $(echo "${1}" | cut -c1-1) = '#' ] ; then
|
|
||||||
true
|
|
||||||
else
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
prerequisites() {
|
|
||||||
if which zsh > /dev/null 2>&1 ; then
|
|
||||||
case $- in
|
|
||||||
*i*)
|
|
||||||
case $(getent passwd $USER | cut -d: -f7) in
|
|
||||||
*/zsh)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ $(id) -ne 0 ] ; then
|
|
||||||
echo 'Enter password to change shell.' >&2
|
|
||||||
fi
|
|
||||||
chsh -s $(which zsh)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
else
|
||||||
echo "ZSH not found!" >&2
|
echo "ZSH not found!" >&2
|
||||||
fi
|
fi
|
||||||
|
if which vim > /dev/null ; then
|
||||||
|
mkdir -p $HOME/.vim/bundle
|
||||||
|
install_git https://github.com/VundleVim/Vundle.vim.git \
|
||||||
|
$HOME/.vim/bundle/Vundle.vim
|
||||||
|
fi
|
||||||
|
if which gdb > /dev/null ; then
|
||||||
|
install_git https://github.com/longld/peda.git $HOME/.peda
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_dotfile_dir() {
|
function install_dotfile_dir {
|
||||||
local SRCDIR="${1}"
|
local SRCDIR="${1}"
|
||||||
local dotfile
|
local dotfile
|
||||||
local submodule_prune="$(git -C "${BASEDIR}" submodule status -- "${SRCDIR}" 2>/dev/null | \
|
|
||||||
awk '{print $2}' | \
|
|
||||||
while read submod ; do
|
|
||||||
echo -n " -o -path ${BASEDIR}/${submod}"
|
|
||||||
done)"
|
|
||||||
find "${SRCDIR}" \( -name .git -o \
|
find "${SRCDIR}" \( -name .git -o \
|
||||||
-path "${SRCDIR}/private_dotfiles" -o \
|
-path "${SRCDIR}/private_dotfiles" -o \
|
||||||
-name install.sh -o \
|
-name install.sh -o \
|
||||||
-name README.md -o \
|
-name README.md -o \
|
||||||
-name .gitignore \
|
-name .gitignore \) \
|
||||||
${submodule_prune} \) \
|
-prune -o -xtype f -print | \
|
||||||
-prune -o ${FINDTYPE} f -print | \
|
|
||||||
while read dotfile ; do
|
while read dotfile ; do
|
||||||
local TARGET="${HOME}/.${dotfile#${SRCDIR}/}"
|
local TARGET="${HOME}/.${dotfile#${SRCDIR}/}"
|
||||||
mkdir -p $(dirname "${TARGET}")
|
mkdir -p `dirname "${TARGET}"`
|
||||||
ln -s -f "${dotfile}" "${TARGET}"
|
ln -s -f "${dotfile}" "${TARGET}"
|
||||||
done
|
done
|
||||||
git submodule status -- "${SRCDIR}" 2>/dev/null | \
|
|
||||||
awk '{print $2}' | \
|
|
||||||
while read submodule ; do
|
|
||||||
local FULLNAME="${BASEDIR}/${submodule}"
|
|
||||||
local TARGET="${HOME}/.${FULLNAME#${SRCDIR}/}"
|
|
||||||
mkdir -p $(dirname "${TARGET}")
|
|
||||||
if test -L "${TARGET}" ; then
|
|
||||||
if [ "$(readlink "${TARGET}")" != "${FULLNAME}" ] ; then
|
|
||||||
echo "${TARGET} points to $(readlink "${TARGET}") not ${FULLNAME}!" >/dev/stderr
|
|
||||||
fi
|
|
||||||
elif test -d "${TARGET}" ; then
|
|
||||||
echo "rm -rf ${TARGET}" >/dev/stderr
|
|
||||||
else
|
|
||||||
ln -s -f "${FULLNAME}" "${TARGET}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install_basic_dir() {
|
function install_basic_dir {
|
||||||
local SRCDIR="${1}"
|
local SRCDIR="${1}"
|
||||||
local DESTDIR="${2}"
|
local DESTDIR="${2}"
|
||||||
local file
|
local file
|
||||||
find "${SRCDIR}" ${FINDTYPE} f -print | \
|
find "${SRCDIR}" -xtype f -print | \
|
||||||
while read file ; do
|
while read file ; do
|
||||||
local TARGET="${2}/${file#${SRCDIR}/}"
|
local TARGET="${2}/${file#${SRCDIR}/}"
|
||||||
mkdir -p $(dirname "${TARGET}")
|
mkdir -p `dirname "${TARGET}"`
|
||||||
ln -s -f "${file}" "${TARGET}"
|
ln -s -f "${file}" "${TARGET}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_git() {
|
function install_git {
|
||||||
# Install or update a git repository
|
# Install or update a git repository
|
||||||
if ! which git > /dev/null ; then
|
if ! which git > /dev/null ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
local REPO="${*: -2:1}"
|
local REPO="${1}"
|
||||||
local DESTDIR="${*: -1:1}"
|
local DESTDIR="${2}"
|
||||||
set -- ${@:1:$(($#-2))}
|
if [[ -d ${DESTDIR}/.git ]] ; then
|
||||||
if [ -d ${DESTDIR}/.git ] ; then
|
|
||||||
( cd ${DESTDIR} ; git pull -q )
|
( cd ${DESTDIR} ; git pull -q )
|
||||||
else
|
else
|
||||||
if [ ${MINIMAL} -eq 1 ] ; then
|
git clone ${REPO} ${DESTDIR}
|
||||||
git clone --depth 1 $* ${REPO} ${DESTDIR}
|
|
||||||
else
|
|
||||||
git clone $* ${REPO} ${DESTDIR}
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
add_bin_symlink() {
|
function add_bin_symlink {
|
||||||
local LINKNAME=${HOME}/bin/${2:-$(basename $1)}
|
local LINKNAME=${HOME}/bin/${2:-`basename $1`}
|
||||||
if [ -e ${LINKNAME} -a ! -h ${LINKNAME} ] ; then
|
if [[ -e ${LINKNAME} && ! -h ${LINKNAME} ]] ; then
|
||||||
echo "Refusing to overwrite ${LINKNAME}" >&2
|
echo "Refusing to overwrite ${LINKNAME}" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
ln -sf ${1} ${LINKNAME}
|
ln -sf ${1} ${LINKNAME}
|
||||||
}
|
}
|
||||||
|
|
||||||
postinstall() {
|
function postinstall {
|
||||||
true
|
# Install Vundle plugins
|
||||||
|
if [[ -d $HOME/.vim/bundle/Vundle.vim ]] ; then
|
||||||
|
vim +VundleInstall +qall
|
||||||
|
fi
|
||||||
|
# Install other useful tools
|
||||||
|
install_git https://github.com/trustedsec/ptf.git ${HOME}/bin/ptframework && \
|
||||||
|
add_bin_symlink ${HOME}/bin/ptframework/ptf
|
||||||
|
# Refresh all gpg keys
|
||||||
|
if test -x "`which gpg2`" ; then
|
||||||
|
gpg2 --refresh-keys
|
||||||
|
else
|
||||||
|
gpg --refresh-keys
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
ssh_key_already_installed() {
|
function ssh_key_already_installed {
|
||||||
# Return 1 if the key isn't already installed, 0 if it is
|
# Return 1 if the key isn't already installed, 0 if it is
|
||||||
local AK="${HOME}/.ssh/authorized_keys"
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
if [ ! -f $AK ] ; then
|
if [[ ! -f $AK ]] ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
local KEYFP=$(ssh-keygen -l -f $1 2>/dev/null | awk '{print $2}')
|
local KEYFP=`ssh-keygen -l -f $1 2>/dev/null | awk '{print $2}'`
|
||||||
local TMPF=$(mktemp)
|
local TMPF=`mktemp`
|
||||||
local key
|
local key
|
||||||
while read key ; do
|
while read key ; do
|
||||||
if is_comment "${key}" ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo "$key" > $TMPF
|
echo "$key" > $TMPF
|
||||||
local EFP=$(ssh-keygen -l -f ${TMPF} 2>/dev/null | awk '{print $2}')
|
local EFP=`ssh-keygen -l -f ${TMPF} 2>/dev/null | awk '{print $2}'`
|
||||||
if [ "$EFP" = "$KEYFP" ] ; then
|
if [[ "$EFP" == "$KEYFP" ]] ; then
|
||||||
rm $TMPF 2>/dev/null
|
rm $TMPF 2>/dev/null
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done < ${AK}
|
done < <(grep -v '^#' ${AK})
|
||||||
rm $TMPF 2>/dev/null
|
rm $TMPF 2>/dev/null
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
install_ssh_keys() {
|
function install_ssh_keys {
|
||||||
# Install SSH keys
|
# Install SSH keys
|
||||||
verbose 'Installing SSH keys...'
|
verbose 'Installing SSH keys...'
|
||||||
local AK="${HOME}/.ssh/authorized_keys"
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
local key
|
local key
|
||||||
local keydir
|
local keydir
|
||||||
if test ${TRUST_ALL_KEYS} = 1 ; then
|
if (( ${TRUST_ALL_KEYS} )) ; then
|
||||||
keydir=${BASEDIR}/keys/ssh
|
keydir=${BASEDIR}/keys/ssh
|
||||||
else
|
else
|
||||||
keydir=${BASEDIR}/keys/ssh/trusted
|
keydir=${BASEDIR}/keys/ssh/trusted
|
||||||
fi
|
fi
|
||||||
for key in ${keydir}/* ; do
|
for key in ${keydir}/* ; do
|
||||||
if [ ! -f "${key}" ] ; then
|
if [[ ! -f ${key} ]] ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if ssh_key_already_installed "${key}" ; then
|
if ssh_key_already_installed "${key}" ; then
|
||||||
verbose "Key $(basename ${key}) already installed..."
|
verbose "Key `basename ${key}` already installed..."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo "# $(basename ${key}) added from skel on $(date +%Y-%m-%d)" >> ${AK}
|
echo "# `basename ${key}` added from skel on `date +%Y-%m-%d`" >> ${AK}
|
||||||
cat ${key} >> ${AK}
|
cat ${key} >> ${AK}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_gpg_keys() {
|
function install_gpg_keys {
|
||||||
which gpg >/dev/null 2>&1 || \
|
|
||||||
return 0
|
|
||||||
local key
|
local key
|
||||||
for key in ${BASEDIR}/keys/gpg/* ; do
|
for key in ${BASEDIR}/keys/gpg/* ; do
|
||||||
gpg --import < ${key} >/dev/null
|
gpg --import < ${key} >/dev/null
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_known_hosts() {
|
function install_known_hosts {
|
||||||
verbose 'Installing known hosts...' >&2
|
verbose 'Installing known hosts...' >&2
|
||||||
if [ ! -f "${BASEDIR}/keys/known_hosts" ] ; then
|
if [[ ! -f ${BASEDIR}/keys/known_hosts ]] ; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
mkdir -p ${HOME}/.ssh
|
mkdir -p ${HOME}/.ssh
|
||||||
if [ -f "${HOME}/.ssh/known_hosts" ] ; then
|
if [[ -f ${HOME}/.ssh/known_hosts ]] ; then
|
||||||
local tmpf=$(mktemp)
|
local tmpf=`mktemp`
|
||||||
cat ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts | sort -u > $tmpf
|
cat ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts | sort | uniq > $tmpf
|
||||||
mv $tmpf ${HOME}/.ssh/known_hosts
|
mv $tmpf ${HOME}/.ssh/known_hosts
|
||||||
else
|
else
|
||||||
cp ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts
|
cp ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_keys() {
|
function install_keys {
|
||||||
install_ssh_keys
|
install_ssh_keys
|
||||||
install_gpg_keys
|
install_gpg_keys
|
||||||
install_known_hosts
|
install_known_hosts
|
||||||
}
|
}
|
||||||
|
|
||||||
is_deb_system() {
|
function is_deb_system {
|
||||||
test -f /usr/bin/apt-get
|
test -f /usr/bin/apt-get
|
||||||
}
|
}
|
||||||
|
|
||||||
run_as_root() {
|
function run_as_root {
|
||||||
# Attempt to run as root
|
# Attempt to run as root
|
||||||
if [ ${USER} = "root" ] ; then
|
if [[ ${USER} == "root" ]] ; then
|
||||||
"$@"
|
"$@"
|
||||||
return $?
|
return $?
|
||||||
elif test -x $(which sudo 2>/dev/null) ; then
|
elif groups | grep -q '\bsudo\b' ; then
|
||||||
verbose "Using sudo to run ${1}..."
|
verbose "Using sudo to run ${1}..."
|
||||||
sudo "$@"
|
sudo "$@"
|
||||||
return $?
|
return $?
|
||||||
@@ -223,49 +182,26 @@ run_as_root() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
install_pkg_set() {
|
function install_pkg_set {
|
||||||
local pkg_file=${BASEDIR}/${1}
|
local pkg_file=${BASEDIR}/${1}
|
||||||
local pkg_list=""
|
if [[ ! -f ${pkg_file} ]] ; then return 0 ; fi
|
||||||
if [ ! -f "${pkg_file}" ] ; then
|
run_as_root apt-get install -qqy `cat ${pkg_file}`
|
||||||
echo "Package set $(basename ${pkg_file}) does not exist." 1>&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
while read line ; do
|
|
||||||
if is_comment "${line}" ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
if [ -z "${line}" ] ; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
if [ "$(apt-cache -q show ${line} 2>/dev/null)" != "" ] ; then
|
|
||||||
pkg_list="${pkg_list} ${line}"
|
|
||||||
else
|
|
||||||
echo "Warning: package ${line} not found." >&2
|
|
||||||
fi
|
|
||||||
done < ${pkg_file}
|
|
||||||
if [ -n "${pkg_list}" ] ; then
|
|
||||||
verbose "Installing ${pkg_list}"
|
|
||||||
run_as_root apt-get install -qqy ${pkg_list}
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install_apt_pkgs() {
|
function install_apt_pkgs {
|
||||||
run_as_root apt-get update -qq || \
|
run_as_root apt-get update -qq || \
|
||||||
( echo "Can't run apt-get commands" >&2 && \
|
( echo "Can't run apt-get commands" >&2 && \
|
||||||
return 1 )
|
return 1 )
|
||||||
install_pkg_set packages.minimal
|
install_pkg_set packages
|
||||||
if test $MINIMAL = 1 ; then
|
(( $HAVE_X )) && install_pkg_set packages.X
|
||||||
return 0
|
(( $IS_KALI )) && install_pkg_set packages.kali
|
||||||
fi
|
|
||||||
test $HAVE_X = 1 && install_pkg_set packages.X
|
|
||||||
test $IS_KALI = 1 && install_pkg_set packages.kali
|
|
||||||
install_pkg_set packages.${ARCH}
|
install_pkg_set packages.${ARCH}
|
||||||
test $HAVE_X = 1 && install_chrome
|
(( $HAVE_X )) && install_chrome
|
||||||
}
|
}
|
||||||
|
|
||||||
install_chrome() {
|
function install_chrome {
|
||||||
local TMPD=$(mktemp -d)
|
local TMPD=`mktemp -d`
|
||||||
local CHROME_ARCH=$(echo ${ARCH} | sed 's/x86_64/amd64/')
|
local CHROME_ARCH=`echo ${ARCH} | sed 's/x86_64/amd64/'`
|
||||||
dpkg-query -l 'google-chrome*' >/dev/null 2>&1 && return 0
|
dpkg-query -l 'google-chrome*' >/dev/null 2>&1 && return 0
|
||||||
/usr/bin/wget --quiet -O ${TMPD}/google-chrome.deb \
|
/usr/bin/wget --quiet -O ${TMPD}/google-chrome.deb \
|
||||||
https://dl.google.com/linux/direct/google-chrome-beta_current_${CHROME_ARCH}.deb
|
https://dl.google.com/linux/direct/google-chrome-beta_current_${CHROME_ARCH}.deb
|
||||||
@@ -275,23 +211,18 @@ install_chrome() {
|
|||||||
rm -rf ${TMPD}
|
rm -rf ${TMPD}
|
||||||
}
|
}
|
||||||
|
|
||||||
read_saved_prefs() {
|
function read_saved_prefs {
|
||||||
# Can't use basedir here as we don't have it yet
|
# Can't use basedir here as we don't have it yet
|
||||||
local old_pref_file=$(dirname $0)/installed-prefs
|
local pref_file=`dirname $0`/installed-prefs
|
||||||
local pref_file=$(dirname $0)/.installed-prefs
|
|
||||||
if [ -f ${old_pref_file} -a ! -f ${pref_file} ] ; then
|
|
||||||
mv ${old_pref_file} ${pref_file}
|
|
||||||
fi
|
|
||||||
if [ -f ${pref_file} ] ; then
|
if [ -f ${pref_file} ] ; then
|
||||||
verbose "Loading saved skel preferences from ${pref_file}"
|
verbose "Loading saved skel preferences from ${pref_file}"
|
||||||
# source is a bashism
|
source ${pref_file}
|
||||||
. ${pref_file}
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
save_prefs() {
|
function save_prefs {
|
||||||
test $SAVE = 1 || return 0
|
(( $SAVE )) || return 0
|
||||||
local pref_file=${BASEDIR}/.installed-prefs
|
local pref_file=${BASEDIR}/installed-prefs
|
||||||
(echo_pref BASEDIR
|
(echo_pref BASEDIR
|
||||||
echo_pref MINIMAL
|
echo_pref MINIMAL
|
||||||
echo_pref INSTALL_KEYS
|
echo_pref INSTALL_KEYS
|
||||||
@@ -300,17 +231,12 @@ save_prefs() {
|
|||||||
echo_pref VERBOSE) > $pref_file
|
echo_pref VERBOSE) > $pref_file
|
||||||
}
|
}
|
||||||
|
|
||||||
echo_pref() {
|
function echo_pref {
|
||||||
eval "local val=\${$1}"
|
echo "$1=\${$1:-${!1}}"
|
||||||
# shellcheck disable=SC2154
|
|
||||||
echo ": \${$1:=${val}}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
function cleanup {
|
||||||
# Needs zsh
|
# Needs zsh
|
||||||
if ! test -x /usr/bin/zsh ; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
/usr/bin/zsh >/dev/null 2>&1 <<EOF
|
/usr/bin/zsh >/dev/null 2>&1 <<EOF
|
||||||
source ${BASEDIR}/dotfiles/zshrc.d/prune-broken-symlinks.zsh
|
source ${BASEDIR}/dotfiles/zshrc.d/prune-broken-symlinks.zsh
|
||||||
prune-broken-symlinks -y ${HOME}/.zshrc.d
|
prune-broken-symlinks -y ${HOME}/.zshrc.d
|
||||||
@@ -318,98 +244,48 @@ cleanup() {
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
verbose() {
|
function verbose {
|
||||||
test ${VERBOSE:-0} = 1 && echo "$@" >&2 || return 0
|
(( ${VERBOSE:-0} )) && echo "$@" >&2
|
||||||
}
|
|
||||||
|
|
||||||
# Operations
|
|
||||||
|
|
||||||
install_dotfiles() {
|
|
||||||
install_dotfile_dir "${BASEDIR}/dotfiles"
|
|
||||||
test -d "${BASEDIR}/private_dotfiles" && \
|
|
||||||
test -d "${BASEDIR}/.git/git-crypt" && \
|
|
||||||
install_dotfile_dir "${BASEDIR}/private_dotfiles" || \
|
|
||||||
true
|
|
||||||
test -d "${BASEDIR}/local_dotfiles" && \
|
|
||||||
install_dotfile_dir "${BASEDIR}/local_dotfiles" || \
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
install_main() {
|
|
||||||
test -d ${BASEDIR}/.git && command -v git >/dev/null 2>&1 && \
|
|
||||||
git -C ${BASEDIR} pull
|
|
||||||
test $MINIMAL = 1 || command -v git >/dev/null 2>&1 && \
|
|
||||||
git -C ${BASEDIR} submodule update --init --recursive
|
|
||||||
test $MINIMAL = 1 || prerequisites
|
|
||||||
test $INSTALL_PKGS = 1 && is_deb_system && install_apt_pkgs
|
|
||||||
install_dotfiles
|
|
||||||
install_basic_dir "${BASEDIR}/bin" "${HOME}/bin"
|
|
||||||
test $MINIMAL = 1 || postinstall
|
|
||||||
test $INSTALL_KEYS = 1 && install_keys
|
|
||||||
save_prefs
|
|
||||||
cleanup
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dconf() {
|
|
||||||
which dconf >/dev/null 2>&1 || return 1
|
|
||||||
find "${BASEDIR}/dconf" -type f -printf '/%P\n' | while read dcpath ; do
|
|
||||||
dconf load ${dcpath}/ < "${BASEDIR}/dconf/${dcpath}"
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Setup variables
|
# Setup variables
|
||||||
read_saved_prefs
|
read_saved_prefs
|
||||||
|
|
||||||
# Defaults if not passed in or saved.
|
# Defaults if not passed in or saved
|
||||||
# TODO: use flags instead of environment variables.
|
BASEDIR=${BASEDIR:-$HOME/.skel}
|
||||||
: ${BASEDIR:=$HOME/.skel}
|
MINIMAL=${MINIMAL:-0}
|
||||||
: ${MINIMAL:=0}
|
INSTALL_KEYS=${INSTALL_KEYS:-1}
|
||||||
: ${INSTALL_KEYS:=1}
|
TRUST_ALL_KEYS=${TRUST_ALL_KEYS:-0}
|
||||||
: ${TRUST_ALL_KEYS:=0}
|
INSTALL_PKGS=${INSTALL_PKGS:-0}
|
||||||
: ${INSTALL_PKGS:=0}
|
VERBOSE=${VERBOSE:-0}
|
||||||
: ${VERBOSE:=0}
|
SAVE=${SAVE:-1}
|
||||||
: ${SAVE:=1}
|
|
||||||
|
|
||||||
# Check prerequisites
|
# Check prerequisites
|
||||||
if [ ! -d $BASEDIR ] ; then
|
if [[ ! -d $BASEDIR ]] ; then
|
||||||
echo "Please install to $BASEDIR!" 1>&2
|
echo "Please install to $BASEDIR!" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which dpkg-query > /dev/null 2>&1 ; then
|
if which dpkg-query > /dev/null ; then
|
||||||
HAVE_X=$(dpkg-query -s xserver-xorg 2>/dev/null | \
|
HAVE_X=`dpkg-query -s xserver-xorg 2>/dev/null | grep -c 'Status.*installed'`
|
||||||
grep -c 'Status.*installed' \
|
|
||||||
|| true)
|
|
||||||
else
|
else
|
||||||
HAVE_X=0
|
HAVE_X=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
IS_KALI=$(grep -ci kali /etc/os-release 2>/dev/null || true)
|
IS_KALI=`grep -ci kali /etc/os-release 2>/dev/null`
|
||||||
ARCH=$(uname -m)
|
ARCH=`uname -m`
|
||||||
|
|
||||||
OPERATION=${1:-install}
|
|
||||||
|
|
||||||
case $OPERATION in
|
(( $MINIMAL )) || prerequisites
|
||||||
install)
|
(( $INSTALL_PKGS )) && is_deb_system && install_apt_pkgs
|
||||||
install_main
|
install_dotfile_dir "${BASEDIR}/dotfiles"
|
||||||
;;
|
test -d "${BASEDIR}/private_dotfiles" && \
|
||||||
dotfiles)
|
test -d "${BASEDIR}/.git/git-crypt" && \
|
||||||
install_dotfiles
|
install_dotfile_dir "${BASEDIR}/private_dotfiles"
|
||||||
;;
|
test -d "${BASEDIR}/local_dotfiles" && \
|
||||||
package*)
|
install_dotfile_dir "${BASEDIR}/local_dotfiles"
|
||||||
PKG_SET=${2:-minimal}
|
install_basic_dir "${BASEDIR}/bin" "${HOME}/bin"
|
||||||
install_pkg_set packages.${PKG_SET}
|
(( $MINIMAL )) || postinstall
|
||||||
;;
|
(( $INSTALL_KEYS )) && install_keys
|
||||||
test)
|
save_prefs
|
||||||
# Do nothing, just sourcing
|
cleanup
|
||||||
set +o errexit
|
|
||||||
;;
|
|
||||||
dconf)
|
|
||||||
# Load dconf
|
|
||||||
install_dconf
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown operation $OPERATION." >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
mQINBE0NehoBEACyWRyVfB97KKqHHEBYOZVwApwMEQb/nR+iyF8iXLlE9j+Tv86n
|
mQINBE0NehoBEACyWRyVfB97KKqHHEBYOZVwApwMEQb/nR+iyF8iXLlE9j+Tv86n
|
||||||
n0a2IP/NFIrDLm5QgyB1QW1TomIUut523tKps/Okvj6bQqgrekEQNvbBgxBEJhlP
|
n0a2IP/NFIrDLm5QgyB1QW1TomIUut523tKps/Okvj6bQqgrekEQNvbBgxBEJhlP
|
||||||
@@ -11,97 +12,891 @@ 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
|
||||||
=VmF5
|
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
|
||||||
|
yY7fa5fVTYi3BBARAgB3BQJO4rBPcBpodHRwOi8vdW5kZXJncmlkLm5ldC9sZWdh
|
||||||
|
bC9ncGcvcG9saWN5LzIwMDkxMTIxLzczMjNiODIzNTkwYWNkOGRlY2YxMjliNzU0
|
||||||
|
ZWNmOGUxMDA2NjkyNDQ0MzJiMGQyMjY3MjA5MDQyMGRlYTI3MjkACgkQ1XPVsSmr
|
||||||
|
TN3SmwCgyOp2DP2eHA+2E4lmwDANPbF8YNoAnR90yzUdQhTItRMai9mV4lAqckz7
|
||||||
|
iLcEEBECAHcFAk7isFpwGmh0dHA6Ly91bmRlcmdyaWQubmV0L2xlZ2FsL2dwZy9w
|
||||||
|
b2xpY3kvMjAwOTExMjEvNzMyM2I4MjM1OTBhY2Q4ZGVjZjEyOWI3NTRlY2Y4ZTEw
|
||||||
|
MDY2OTI0NDQzMmIwZDIyNjcyMDkwNDIwZGVhMjcyOQAKCRBUTEhoYtvfYiagAJ9T
|
||||||
|
n0b2Hf6+9NNsuWZYpk1d/etgmgCfRpakvv6yk4Gp3EexASjfgKYlaOKInAQQAQIA
|
||||||
|
BgUCTuI+VwAKCRDhyUtG3x3UcZxXA/4iIgD9yvpIVzfGu1m/aDXEcACpsO8QgT+J
|
||||||
|
ESFrxYjMFaQhJKrVxNOhp7Sp6bQzU59wpuYAVMxHi0X7d7pMyyAUUSkDu00gI8/g
|
||||||
|
NLqaMvtjEhhEwpwMD+Yd915uxB7CrSIilVt5PMJAkdy6xBiJryCTakMNItmPb59C
|
||||||
|
E4/VbHWodYkBHAQQAQIABgUCTuI+YwAKCRDA65Z1Z0Yn/7I3B/4yIEze4ru+jkvS
|
||||||
|
vH1bOsTbr9SoiDppDvkU+ISUCnIidRYv83sRyNuc2THULakC4Ram3F7JNTO0F1+2
|
||||||
|
gkR3l1tjW1ToWo2TudB9kW7VxrXDT59jmUti2xaQQ5zewv79eQv52irFPm2UYR5q
|
||||||
|
toFlZYzaN8TD7Kw8z5t+ZQk03GSmg+NxVoB7bOC22LEcF6M7jVOAfoAEp3HseHAd
|
||||||
|
3IopY7KjvduXzcbEXwFVbuacwKlCYAekmO2QvVgPuzf3lJvOOgfbAEXqq/JPN7Bq
|
||||||
|
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
|
||||||
|
aXI/Maioszm5pco=
|
||||||
|
=wlrV
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user