From f1d29a1a1f82d3f5b47ca8e6d13157991eb73b2a Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Wed, 20 Sep 2017 11:47:30 +0200 Subject: [PATCH 01/10] New things from school --- bash_profile | 2 +- config/i3/dmenu_cmd | 2 +- config/i3status/config | 84 ------------------------------------------ face.icon | 2 +- icon | 2 +- scripts/debloc | 67 +++++++++++++++++++++++++++------ scripts/install-prefs | 30 +++++++++++---- 7 files changed, 82 insertions(+), 107 deletions(-) delete mode 100644 config/i3status/config diff --git a/bash_profile b/bash_profile index 35989e7..aa7da3a 120000 --- a/bash_profile +++ b/bash_profile @@ -1 +1 @@ -profile \ No newline at end of file +.profile \ No newline at end of file diff --git a/config/i3/dmenu_cmd b/config/i3/dmenu_cmd index a02a9b2..a0d3180 100755 --- a/config/i3/dmenu_cmd +++ b/config/i3/dmenu_cmd @@ -1,2 +1,2 @@ #!/bin/sh -dmenu -fn 'DejaVu Sans Mono-10' -nb '#48483e' -nf '#f1ebeb' -sb '#8fc029' -sf '#272822' -l 8 -f -i -h 19 "$@" +dmenu -fn 'DejaVu Sans Mono-10' -nb '#48483e' -nf '#f1ebeb' -sb '#8fc029' -sf '#272822' -l 8 -f "$@" diff --git a/config/i3status/config b/config/i3status/config deleted file mode 100644 index 5860ec6..0000000 --- a/config/i3status/config +++ /dev/null @@ -1,84 +0,0 @@ -general { - output_format = "i3bar" - colors = true - interval = 1 -} - -order += "disk /home" -order += "disk /" -order += "path_exists VPN" -order += "ethernet usb0" -order += "wireless wlan1" -order += "wireless wlan0" -order += "ethernet eth0" -order += "cpu_usage" -order += "battery 0" -#order += "load" -order += "volume master" -order += "tztime local" - -wireless wlan0 { - format_up = " (%quality at %essid, %bitrate) %ip" - format_down = "" -} - -wireless wlan1 { - format_up = " (%quality at %essid, %bitrate) %ip" - format_down = "" -} - -ethernet eth0 { - # if you use %speed, i3status requires the cap_net_admin capability - format_up = " %ip" - format_down = "" -} - -ethernet usb0 { - # if you use %speed, i3status requires the cap_net_admin capability - format_up = " %ip" - format_down = "📱" -} - -cpu_usage { - format = " %usage" -} - -battery 0 { - format = "%status %percentage" - format_down = "" - status_chr = "" - status_bat = "" - status_full = "" - path = "/sys/class/power_supply/BAT%d/uevent" - low_threshold = 10 -} - -path_exists VPN { - # path exists when a VPN tunnel launched by nmcli/nm-applet is active - path = "/proc/sys/net/ipv4/conf/tun0" - format = "🔐" -} - -tztime local { - format = "🕘 %d/%m/%Y %H:%M:%S" - timezone = "Europe/Paris" -} - -load { - format = "%5min" -} - -disk "/" { - format = " %avail / %total" -} - -disk "/home" { - format = " %avail / %total" -} -volume master { - format = "🔈 %volume" - format_muted = "🔇 %volume" - device = "default" - mixer = "Master" - mixer_idx = 0 -} diff --git a/face.icon b/face.icon index 54429d9..1310f56 120000 --- a/face.icon +++ b/face.icon @@ -1 +1 @@ -face \ No newline at end of file +.face \ No newline at end of file diff --git a/icon b/icon index 54429d9..1310f56 120000 --- a/icon +++ b/icon @@ -1 +1 @@ -face \ No newline at end of file +.face \ No newline at end of file diff --git a/scripts/debloc b/scripts/debloc index c371598..6119cc6 100755 --- a/scripts/debloc +++ b/scripts/debloc @@ -142,7 +142,39 @@ function _debloc-ldconfig { find $DEBLOC_ROOT{/usr,}/lib -type l -name "*.so*" | while read link; do yes | cp --force --no-dereference --preserve=links "$link" "$DEBLOC_LD" &> /dev/null done &> /dev/null +} +# Fix absolute symbolic links +function _debloc-fixRootSymlinks { + find $DEBLOC_ROOT -type l | while read src + do + dst="$(readlink "$src")" + if echo "$dst" | grep '^/' | grep -q -v "^$DEBLOC_ROOT" + then + newDst="$DEBLOC_ROOT$dst" + if [ -f "$newDst" ] + then + echo "$src → $newDst" + rm "$src" + ln -s "$newDst" "$src" + else + echo "Ignoring $src pointing to $dst" + fi + fi + done +} + +function _debloc-fixPkgconfPrefix { + sed "s|^prefix=/usr$|prefix=$DEBLOC_ROOT/usr|" $(find $DEBLOC_ROOT -type f -name "*.pc") -i +} + +function debloc_fix { + echo "Fixing absolute symbolic links..." + _debloc-fixRootSymlinks + echo "Linking libraries in /ld" + _debloc-ldconfig + echo "Fixing prefix in pkg-config files" + _debloc-fixPkgconfPrefix } # Install debian archive @@ -180,7 +212,7 @@ function _debloc-install { # package DEB_FILE=$(mktemp) &> /dev/null path=$(_debloc-packagePath $pkg) echo -e "${DEBIAN_MIRROR}" | while read mirror; do - if [ -z $mirror ]; then + if [ -z "$mirror" ]; then continue fi url=${mirror}/${path} @@ -258,8 +290,9 @@ function debloc_env { echo "export C_INCLUDE_PATH=\"$DEBLOC_ROOT/usr/include:\$C_INCLUDE_PATH\"" echo "export CPLUS_INCLUDE_PATH=\"$DEBLOC_ROOT/usr/include:$DEBLOC_ROOT/usr/include/python2.7/:$DEBLOC_ROOT/usr/include/x86_64-linux-gnu/python2.7/:\$CPLUS_INCLUDE_PATH\"" echo "export LD_LIBRARY_PATH=\"$DEBLOC_LD:\$LD_LIBRARY_PATH\"" - echo "export PYTHONPATH=\"$DEBLOC_ROOT/usr/lib/python3/dist-packages:\$PYTHONPATH\"" + echo "export PYTHONPATH=\"$DEBLOC_ROOT/usr/lib/python2/dist-packages:$DEBLOC_ROOT/usr/lib/python3/dist-packages:$DEBLOC_ROOT/usr/lib/python2.7/dist-packages:$DEBLOC_ROOT/usr/lib/python3.5/dist-packages:\$PYTHONPATH\"" echo "export QT_QPA_PLATFORM_PLUGIN_PATH=\"$DEBLOC_ROOT/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms\"" + echo "export PKG_CONFIG_PATH=\"$DEBLOC_ROOT/usr/share/pkgconfig/:$DEBLOC_ROOT/usr/lib/x86_64-linux-gnu/pkgconfig/:$DEBLOC_ROOT/usr/lib/pkgconfig/:\$PKG_CONFIG_PATH\"" } function debloc_info { @@ -283,22 +316,33 @@ function debloc_install { # package if [ -z $1 ]; then debloc_deb_help fi + for pkg in $* + do + if [ $pkg == '--force' ] || [ $pkg == '-f' ]; then + force=0 + fi + done for pkg in $*; do + if [ $pkg == '--force' ] || [ $pkg == '-f' ]; then + continue + fi pkg=$(_debloc-filterVirtual $pkg) _debloc-exists $pkg if [ $? == 0 ]; then echo "Unknown package $pkg" continue fi - _debloc-locallyInstalled $pkg - if [ $? == 1 ]; then - echo "Package $pkg is already installed with Debloc" - continue - fi - _debloc-globallyInstalled $pkg - if [ $? == 1 ]; then - echo "Package $pkg is already installed on the system" - continue + if [ ! -v force ]; then + _debloc-locallyInstalled $pkg + if [ $? == 1 ]; then + echo "Package $pkg is already installed with Debloc" + continue + fi + _debloc-globallyInstalled $pkg + if [ $? == 1 ]; then + echo "Package $pkg is already installed on the system" + continue + fi fi _debloc-installDeps $pkg done @@ -385,6 +429,7 @@ function debloc_help { echo " install Install a debian package in the fake filesystem" echo " deb Install from a .deb file in the fake filesystem" echo " altern Update alternative" + echo " fix Apply some fixes in the fake filesystem" echo " flush Remove every package installed from the fake filesystem" echo " help Get help with commands" echo diff --git a/scripts/install-prefs b/scripts/install-prefs index b811d6d..b102d2d 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -107,7 +107,6 @@ elif which dpkg &> /dev/null; then fi rm -f $STATUS > /dev/null - echo 101 $1 $installed # Installing if it's not installed if [ $installed == 0 ]; then # TODO noconfirm @@ -224,12 +223,13 @@ if [ $ARCH == 1 ] && [ $ADMIN == 1 ]; then fi else if [ $DEBIAN == 1 || $TERMUX == 1 ]; then - inst python-dev python3-dev + inst python-dev python3-dev cmake fi YCM_ARGS="" if [ $TERMUX != 1 ]; then YCM_ARGS="$YCM_ARGS --clang-completer --tern-completer" fi + python $HOME/.vim/bundle/YouCompleteMe/install.py $YCM_ARGS fi @@ -241,7 +241,21 @@ if [ $GUI == 1 ]; then if [ $ARCH == 1 ]; then altInst polybar-git ttf-font-awesome autorandr-git keynav-enhanced else - echo "TODO compile polybar-git autorandr-git" + # Compiling polybar + if ! which polybar > /dev/null; then + inst debhelper cmake libxcb-icccm4-dev libxcb-image0-dev libxcb-randr0-dev libx11-dev libxcb1-dev libxcb-util-dev libx11-xcb-dev linux-libc-dev libboost-dev x11proto-core-dev libxcb-ewmh-dev libxft-dev libasound2-dev libiw-dev libmpdclient-dev xcb-proto python-xcbgen libxcb-xkb-dev i3-wm libcairo2-dev libxcb-xrm-dev + # TODO Figure which one are really needed + #inst libasound2 libc6 libgcc1 libiw30 libmpdclient2 libstdc++6 libx11-6 libx11-xcb1 libxcb-ewmh2 libxcb-icccm4 libxcb-randr0 libxcb-xkb1 libxcb1 libxft2 + TMP=$(mktemp -d) + git clone --branch 3.0.5 --recursive https://github.com/jaagr/polybar $TMP + mkdir $TMP/build + cd $TMP/build + cmake .. + make -j`nproc` + strip bin/polybar + mv bin/polybar ~/.bin/ + rm -rf $TMP + fi fi if [ $DEBIAN == 1 ]; then inst suckless-tools keynav @@ -257,10 +271,10 @@ if [ $GUI == 1 ]; then # qutebrowser if [ $DEBIAN == 1 ]; then - inst python3-lxml python-tox python3-pyqt5 python3-pyqt5.qtwebkit python3-pyqt5.qtquick python3-sip python3-jinja2 python3-pygments python3-yaml + inst python3-lxml python-tox python3-pyqt5 python3-pyqt5.qtwebkit python3-pyqt5.qtquick python3-sip python3-jinja2 python3-pygments python3-yaml python3-pyqt5.qtsql libqt5sql5-sqlite python3-pyqt5.qtwebengine python3-pyqt5.qtopengl python3-opengl TMP_DIR=$(mktemp -d) $(cd $TMP_DIR; wget https://qutebrowser.org/python3-pypeg2_2.15.2-1_all.deb) - $(cd $TMP_DIR; wget https://github.com/qutebrowser/qutebrowser/releases/download/v0.9.1/qutebrowser_0.9.1-2_all.deb) + $(cd $TMP_DIR; wget https://github.com/qutebrowser/qutebrowser/releases/download/v0.11.0/qutebrowser_0.11.0-1_all.deb) instFile $TMP_DIR/*.deb rm -rf $TMP_DIR @@ -273,9 +287,9 @@ if [ $GUI == 1 ]; then altInst sct elif [ $TERMUX != 1 ]; then if [ ! -f $HOME/.bin/sct ]; then - TMP=$(mktemp) - wget http://www.tedunangst.com/flak/files/sct.c -O $TMP - cc -std=c99 -O2 -I /usr/X11R6/include -o $HOME/.bin/sct $TMP -L /usr/X11R6/lib -lm -lX11 -lXrandr + TMP=$(mktemp /tmp/XXXXXXXXXX.c) + wget https://gist.githubusercontent.com/ajnirp/208c03d3aa7f02c743d2/raw/55bf3eed25739173d8be57b5179ed5542cf40ed6/sct.c -O $TMP + cc $TMP --std=c99 -lX11 -lXrandr -o $HOME/.bin/sct rm $TMP fi fi From a3fd8255fa16b34eb5783e0e113be2c9d98ade4d Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sat, 30 Sep 2017 14:01:18 +0200 Subject: [PATCH 02/10] REMOVED HTOP ARGH --- config/htop/htoprc | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 config/htop/htoprc diff --git a/config/htop/htoprc b/config/htop/htoprc deleted file mode 100644 index 9a0a084..0000000 --- a/config/htop/htoprc +++ /dev/null @@ -1,26 +0,0 @@ -# Beware! This file is rewritten by htop when settings are changed in the interface. -# The parser is also very primitive, and not human-friendly. -fields=0 48 17 18 38 39 40 2 46 47 49 1 -sort_key=47 -sort_direction=1 -hide_threads=0 -hide_kernel_threads=1 -hide_userland_threads=1 -shadow_other_users=0 -show_thread_names=0 -show_program_path=0 -highlight_base_name=1 -highlight_megabytes=0 -highlight_threads=1 -tree_view=0 -header_margin=0 -detailed_cpu_time=0 -cpu_count_from_zero=0 -update_process_names=0 -account_guest_in_cpu_meter=0 -color_scheme=0 -delay=15 -left_meters=AllCPUs Memory Swap -left_meter_modes=1 1 1 -right_meters=Tasks LoadAverage Uptime -right_meter_modes=2 2 2 From 2075643ffe2a4d8e96c78bbce05b11ef1a650c8a Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sat, 7 Oct 2017 13:20:10 +0200 Subject: [PATCH 03/10] MACHINE POWER --- scripts/machines | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/scripts/machines b/scripts/machines index 3e6450b..fecc1e8 100755 --- a/scripts/machines +++ b/scripts/machines @@ -67,9 +67,6 @@ function _machines-apiSigned { _machines-api "$@" --certificate=$MACHINES_CONFIG/machines.crt --private-key=$MACHINES_CONFIG/machines.key } -function _machines-getQR { - _machines-apiSigned totp | qrencode -o - | feh - -} # APPLICATION KEYS & CERTIFICATE @@ -142,16 +139,16 @@ function _machines-getAkey { # network } function _machines-updateAkey { - KEY_FILE=$(mktemp) + MYKEY_FILE=$(mktemp) network=$(cat $MACHINES_CONFIG/this | grep '^network=' | cut -d '=' -f 2) - _machines-getAkey $network > $KEY_FILE + _machines-getAkey $network > "$MYKEY_FILE" if [ $? == 0 ]; then - yes | mv $KEY_FILE $MACHINES_HOME/.ssh/authorized_keys &> /dev/null + yes | mv $MYKEY_FILE $MACHINES_HOME/.ssh/authorized_keys &> /dev/null return 0 else - cat $KEY_FILE + cat $MYKEY_FILE echo "[ERROR] Authorized keys are not properly signed" - rm $KEY_FILE + rm $MYKEY_FILE exit 1 fi } @@ -171,12 +168,12 @@ function _machines-addElement { # element elementType default $EDITOR $FILE data=$(_machines-postFile $FILE) rm $FILE &> /dev/null - machines-apiSigned $2 --post-data "name=$1$data" + _machines-apiSigned $2 --post-data "name=$1$data" } function _machines-editElement { # element elementType FILE=$(mktemp) - _machines-apiSigned $2/$1 + _machines-apiSigned $2/$1 > $FILE $EDITOR $FILE data=$(_machines-postFile $FILE) rm $FILE &> /dev/null @@ -238,7 +235,6 @@ function machines_machine_add { # machine machines_machine_add_help exit 1 fi - _machines-addElement $1 machine "allowed[]=\nsecure=false" _machines-addElement $1 machine "host[]=\nnetwork=\nuserkey=\nhostkey=\nuser=" } @@ -435,6 +431,12 @@ function machines_update { _machines-updateAkey } +function machines_totp { + url=$(_machines-apiSigned totp) + echo "URL : $url" + echo "$url" | qrencode -o - | feh - +} + function machines_help { command="$1" @@ -457,6 +459,8 @@ function machines_help { echo " network|net|n Modify networks" echo " update-all Update all machines available via SSH" echo " regen-keys Regenerate system keys" + echo " sign Sign recent transactions for propagation" + echo " totp Get TOTP generating QR code / URL" return 0 } From 9874c9858c7d65b69339fa942614ca0c71bf1236 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sat, 7 Oct 2017 13:21:45 +0200 Subject: [PATCH 04/10] git git git git git git git git git git git git --- gitconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gitconfig b/gitconfig index 567f9dd..17d9812 100644 --- a/gitconfig +++ b/gitconfig @@ -6,3 +6,5 @@ excludesfile = ~/.gitignore [push] default = matching +[alias] + git = !exec git From 7dc0b690c41c62f2b79665b335962593d234409e Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sat, 7 Oct 2017 13:43:31 +0200 Subject: [PATCH 05/10] Dots --- .gitmodules | 3 --- .Xclients => Xclients | 0 termux/boot/symlink | 2 ++ .xsession => xsession | 0 4 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 .gitmodules rename .Xclients => Xclients (100%) rename .xsession => xsession (100%) diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 10cfc57..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "dotsync"] - path = dotsync - url = git@github.com:dotphiles/dotsync.git diff --git a/.Xclients b/Xclients similarity index 100% rename from .Xclients rename to Xclients diff --git a/termux/boot/symlink b/termux/boot/symlink index 224ed55..c29f45f 100755 --- a/termux/boot/symlink +++ b/termux/boot/symlink @@ -1,2 +1,4 @@ #!/data/data/com.termux/files/usr/bin/bash +echo "/system/bin/mount -o remount,rw /" | tsu echo "ln -s /data/data/com.termux/files/usr /usr" | tsu +echo "/system/bin/mount -o remount,ro /" | tsu diff --git a/.xsession b/xsession similarity index 100% rename from .xsession rename to xsession From 71e7cf6eaf27e72fe8698f2967508127cae46bf3 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Mon, 30 Oct 2017 11:44:12 +0100 Subject: [PATCH 06/10] huehuehuehuehue --- scripts/archive | 23 ++++++++++++++ scripts/gitghost | 70 +++++++++++++++++++++++++++++++++++++++++++ scripts/install-prefs | 4 +++ scripts/md2html | 40 +++++++++++++++++-------- 4 files changed, 124 insertions(+), 13 deletions(-) create mode 100755 scripts/archive create mode 100755 scripts/gitghost diff --git a/scripts/archive b/scripts/archive new file mode 100755 index 0000000..a30d4f6 --- /dev/null +++ b/scripts/archive @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +import os +import argparse + +parser = argparse.ArgumentParser(description="Place a folder in ~/Documents in ~/Documents/Archive and symlink it") +parser.add_argument('dir', metavar='DIRECTORY', type=str, help="The directory to archive") +args = parser.parse_args() + +source = os.path.realpath(args.dir) +assert(os.path.isdir(source)), source + " must be a directory" + +# Finding directories +assert('HOME' in os.environ), "Home directory unknown" +docs = os.path.realpath(os.path.join(os.environ['HOME'], 'Documents')) +assert(os.path.isdir(docs)), "Documents folder not found" +arcs = os.path.join(docs, 'Archives') +assert(os.path.isdir(arcs)), "Archives folder not found" + +assert(source.startswith(docs)), "Directory is not in the document folder" +assert(not source.startswith(arcs)), "Directory is already in the archive folder" + + diff --git a/scripts/gitghost b/scripts/gitghost new file mode 100755 index 0000000..dc24cf1 --- /dev/null +++ b/scripts/gitghost @@ -0,0 +1,70 @@ +#!/usr/bin/bash + +# Replace git folders with a placeholder containing the remote and the commit + +function prompt { # text + while true; do + read -p "$1 [yn] " yn + case $yn in + [Yy]* ) return 1;; + [Nn]* ) return 0;; + * ) echo "Please answer yes or no.";; + esac + done +} + +if [[ "$#" == 0 || "$#" > 2 ]] +then + echo "Usage: $0 gitfolder [-y]" + exit 1 +fi + +folder="$(echo "$1" | sed 's/\/*$//')" +if [ "$2" == "-y" ] +then + donotask=true +fi + +if [ ! -d "$folder/.git" ] +then + echo "$folder is not a git repository" + exit 1 +fi + +if [ -n "$(git -C "$folder" diff)" ] +then + echo "WARNING: There are unstaged change. Those will be discarded if you continue." +fi + +echo "Be sure that every commit in the repository is backed up somewhere else, since those will be discarded." + +TMPFILE=$(mktemp) + +(echo "[gitplaceholder]" +echo "lastcommit=$(git log --format="%H" -n 1)" +echo +echo "[remote]" +git -C "$folder" remote -v +echo +echo "[branch]" +git -C "$folder" branch -v +echo +echo "[diff]" +git -C "$folder" diff -v) > $TMPFILE 2> /dev/null + +if [ ! $donotask ] +then + less $TMPFILE + echo + echo "This will be written in place of $folder." + prompt "Do you want to continue ?" + if [ "$?" == 0 ] + then + echo "Canceled" + rm $TMPFILE + exit 0 + fi +fi +echo "Dummying..." +rm -rf "$folder" +mv $TMPFILE $folder diff --git a/scripts/install-prefs b/scripts/install-prefs index 42f7043..deddc9a 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -316,6 +316,10 @@ if [ $EXTRA == 1 ]; then if [ $ARCH == 1 ]; then inst jq altInst pdftk translate-shell git-lfs js-beautify insect visidata-git + else + # translate-shell + curl -L git.io/trans > ~/.bin/trans + chmod +x ~/.bin/trans fi # Extra GUI diff --git a/scripts/md2html b/scripts/md2html index d284ada..0e79ee1 100755 --- a/scripts/md2html +++ b/scripts/md2html @@ -37,11 +37,13 @@ if (argv.t) { template = fs.readFileSync(argv.t, "utf8"); } +var latex = true; +// TODO Arg // Settings var extraLangages = { - avrpseudo: function (hljs) { + avrpseudo: function(hljs) { lang = extend({}, highlight.getLanguage('avrasm')); lang.keywords.keyword += ' Si Alors Sinon FinSi TantQue FinTantQue Pour FinPour allant de à ←'; lang.keywords.keyword += ' Lire Sortir sur Appeler Retourner'; @@ -55,7 +57,7 @@ var extraLangages = { }); return lang; }, - avrasmplus: function (hljs) { + avrasmplus: function(hljs) { lang = extend({}, highlight.getLanguage('avrasm')); lang.keywords.keyword += ' si saut alors et ou if then goto && || <-'; lang.contains.push({ @@ -73,8 +75,10 @@ for (lang in extraLangages) { var renderer = new marked.Renderer(); marked.setOptions({ - highlight: function (code, lang) { - if (highlight.getLanguage(lang)) { + highlight: function(code, lang) { + if (lang == 'raw') { + return code; + } else if (highlight.getLanguage(lang)) { return highlight.highlight(lang, code).value; } else { // if (extraLangages[lang]) { @@ -93,17 +97,27 @@ marked.setOptions({ markdownString = fs.readFileSync(argv.i, "utf8"); // TeX -markdownString = markdownString.replace(/\\\$/g, '$') -markdownString = markdownString.replace(/\$\$([\s\S]+)\$\$/gm, function(glob, formula) { - return katex.renderToString(formula, {displayMode: true}); -}); -markdownString = markdownString.replace(/\$([^$]+)\$/g, function(glob, formula) { - return katex.renderToString(formula, {displayMode: false}); -}); +if (latex) { + markdownString = markdownString.replace(/\\\$/g, '$') + markdownString = markdownString.replace(/\$\$([\s\S]+)\$\$/gm, function(glob, formula) { + return katex.renderToString(formula, { + displayMode: true + }); + }); + markdownString = markdownString.replace(/\$([^$]+)\$/g, function(glob, formula) { + return katex.renderToString(formula, { + displayMode: false + }); + }); +} // Conversion -htmlString = marked(markdownString, {renderer: renderer}); -fullHtmlString = template.replace('%BODY%', htmlString); +htmlString = marked(markdownString, { + renderer: renderer +}); +// fullHtmlString = htmlString; +fullHtmlString = template.replace('%BODY%', () => { return htmlString }); + // Saving if (argv.o == '/dev/stdout') { From 441bd6b9a3e6402f86557f8c98ed01523d355cc9 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Thu, 2 Nov 2017 16:48:43 +0100 Subject: [PATCH 07/10] Modifications after reinstall --- Xresources.d/configure | 4 +- config/i3/config | 2 +- config/qutebrowser/qutebrowser.conf | 1602 --------------------------- scripts/install-arch | 86 +- scripts/install-prefs | 22 +- 5 files changed, 72 insertions(+), 1644 deletions(-) delete mode 100644 config/qutebrowser/qutebrowser.conf diff --git a/Xresources.d/configure b/Xresources.d/configure index 4c312ed..4d0d2d1 100755 --- a/Xresources.d/configure +++ b/Xresources.d/configure @@ -3,7 +3,7 @@ mkdir -p $HOME/.local/share/fonts echo $(for i in "" "%20Bold" "%20Oblique" "%20Bold%20Oblique"; do cd $HOME/.local/share/fonts - wget http://raw.githubusercontent.com/powerline/fonts/master/DejaVuSansMono/DejaVu%20Sans%20Mono$i%20for%20Powerline.ttf + wget -c http://raw.githubusercontent.com/powerline/fonts/master/DejaVuSansMono/DejaVu%20Sans%20Mono$i%20for%20Powerline.ttf done) -wget "https://aur.archlinux.org/cgit/aur.git/plain/icons.ttf?h=ttf-font-icons" -O $HOME/.local/share/fonts/icons.ttf +wget -c "https://aur.archlinux.org/cgit/aur.git/plain/icons.ttf?h=ttf-font-icons" -O $HOME/.local/share/fonts/icons.ttf diff --git a/config/i3/config b/config/i3/config index 281f907..2f0f311 100644 --- a/config/i3/config +++ b/config/i3/config @@ -234,7 +234,7 @@ assign [class="Clementine"] $WS10 assign [title="TweetDeck"] $WS8 # Open specific applications in floating mode -for_window [title="alsamixer"] floating enable border pixel 2 +for_window [title="pacmixer"] floating enable border pixel 2 for_window [class="Firefox"] layout tabbed for_window [class="qutebrowser"] layout tabbed diff --git a/config/qutebrowser/qutebrowser.conf b/config/qutebrowser/qutebrowser.conf deleted file mode 100644 index 3300234..0000000 --- a/config/qutebrowser/qutebrowser.conf +++ /dev/null @@ -1,1602 +0,0 @@ -# vim: ft=dosini - -# Configfile for qutebrowser. -# -# This configfile is parsed by python's configparser in extended -# interpolation mode. The format is very INI-like, so there are -# categories like [general] with "key = value"-pairs. -# -# Note that you shouldn't add your own comments, as this file is -# regenerated every time the config is saved. -# -# Interpolation looks like ${value} or ${section:value} and will be -# replaced by the respective value. -# -# Some settings will expand environment variables. Note that, since -# interpolation is run first, you will need to escape the $ char as -# described below. -# -# This is the default config, so if you want to remove anything from -# here (as opposed to change/add), for example a key binding, set it to -# an empty value. -# -# You will need to escape the following values: -# - # at the start of the line (at the first position of the key) (\#) -# - $ in a value ($$) - - -# General/miscellaneous options. -[general] - -# ignore-case (IgnoreCase): -# Whether to find text on a page case-insensitively. -# true: Search case-insensitively -# false: Search case-sensitively -# smart: Search case-sensitively if there are capital chars -# Default: smart -ignore-case = smart - -# startpage (List of String): -# The default page(s) to open at the start, separated by commas. -# Default: https://start.duckduckgo.com -startpage = https://geoffrey.frogeye.fr/home.php - -# yank-ignored-url-parameters (List of String): -# The URL parameters to strip with :yank url, separated by commas. -# Default: -# ref,utm_source,utm_medium,utm_campaign,utm_term,utm_content -yank-ignored-url-parameters = ref,utm_source,utm_medium,utm_campaign,utm_term,utm_content - -# default-open-dispatcher (String): -# The default program used to open downloads. Set to an empty string -# to use the default internal handler. -# Any {} in the string will be expanded to the filename, else the -# filename will be appended. -# Default: -default-open-dispatcher = - -# default-page (FuzzyUrl): -# The page to open if :open -t/-b/-w is used without URL. Use -# `about:blank` for a blank page. -# Default: ${startpage} -default-page = ${startpage} - -# auto-search (AutoSearch): -# Whether to start a search when something else than a URL is -# entered. -# naive: Use simple/naive check. -# dns: Use DNS requests (might be slow!). -# false: Never search automatically. -# Default: naive -auto-search = naive - -# auto-save-config (Bool): -# Whether to save the config automatically on quit. -# Valid values: true, false -# Default: true -auto-save-config = true - -# auto-save-interval (Int): -# How often (in milliseconds) to auto-save config/cookies/etc. -# Default: 15000 -auto-save-interval = 15000 - -# editor (ShellCommand): -# The editor (and arguments) to use for the `open-editor` command. -# The arguments get split like in a shell, so you can use `"` or `'` -# to quote them. -# `{}` gets replaced by the filename of the file to be edited. -# Default: gvim -f "{}" -editor = gvim -f "{}" - -# editor-encoding (Encoding): -# Encoding to use for editor. -# Default: utf-8 -editor-encoding = utf-8 - -# private-browsing (Bool): -# Open new windows in private browsing mode which does not record -# visited pages. -# Valid values: true, false -# Default: false -private-browsing = false - -# developer-extras (Bool): -# Enable extra tools for Web developers. -# This needs to be enabled for `:inspector` to work and also adds an -# _Inspect_ entry to the context menu. For QtWebEngine, see -# 'qutebrowser --help' instead. -# Valid values: true, false -# Default: false -developer-extras = true - -# print-element-backgrounds (Bool): -# Whether the background color and images are also drawn when the -# page is printed. -# This setting only works with Qt 5.8 or newer when using the -# QtWebEngine backend. -# Valid values: true, false -# Default: true -print-element-backgrounds = true - -# xss-auditing (Bool): -# Whether load requests should be monitored for cross-site scripting -# attempts. -# Suspicious scripts will be blocked and reported in the inspector's -# JavaScript console. Enabling this feature might have an impact on -# performance. -# Valid values: true, false -# Default: false -xss-auditing = false - -# default-encoding (String): -# Default encoding to use for websites. -# The encoding must be a string describing an encoding such as -# _utf-8_, _iso-8859-1_, etc. -# Default: iso-8859-1 -default-encoding = iso-8859-1 - -# new-instance-open-target (String): -# How to open links in an existing instance if a new one is -# launched. -# tab: Open a new tab in the existing window and activate the -# window. -# tab-bg: Open a new background tab in the existing window and -# activate the window. -# tab-silent: Open a new tab in the existing window without -# activating the window. -# tab-bg-silent: Open a new background tab in the existing -# window without activating the window. -# window: Open in a new window. -# Default: tab -new-instance-open-target = tab - -# new-instance-open-target.window (String): -# Which window to choose when opening links as new tabs. -# first-opened: Open new tabs in the first (oldest) opened -# window. -# last-opened: Open new tabs in the last (newest) opened window. -# last-focused: Open new tabs in the most recently focused -# window. -# last-visible: Open new tabs in the most recently visible -# window. -# Default: last-focused -new-instance-open-target.window = last-focused - -# log-javascript-console (String): -# How to log javascript console messages. -# none: Don't log messages. -# debug: Log messages with debug level. -# info: Log messages with info level. -# Default: debug -log-javascript-console = debug - -# save-session (Bool): -# Whether to always save the open pages. -# Valid values: true, false -# Default: false -save-session = false - -# session-default-name (SessionName): -# The name of the session to save by default, or empty for the last -# loaded session. -# Default: -session-default-name = - -# url-incdec-segments (FlagList): -# The URL segments where `:navigate increment/decrement` will search -# for a number. -# Valid values: host, path, query, anchor -# Default: path,query -url-incdec-segments = path,query - - -# General options related to the user interface. -[ui] - -# history-session-interval (Int): -# The maximum time in minutes between two history items for them to -# be considered being from the same session. Use -1 to disable -# separation. -# Default: 30 -history-session-interval = 30 - -# zoom-levels (List of Perc): -# The available zoom levels, separated by commas. -# Default: -# 25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,250%,300%,400%,500% -zoom-levels = 25%,33%,50%,67%,75%,90%,100%,110%,125%,150%,175%,200%,250%,300%,400%,500% - -# default-zoom (Perc): -# The default zoom level. -# Default: 100% -default-zoom = 100% - -# downloads-position (VerticalPosition): -# Where to show the downloaded files. -# Valid values: top, bottom -# Default: top -downloads-position = top - -# status-position (VerticalPosition): -# The position of the status bar. -# Valid values: top, bottom -# Default: bottom -status-position = bottom - -# message-timeout (Int): -# Time (in ms) to show messages in the statusbar for. -# Set to 0 to never clear messages. -# Default: 2000 -message-timeout = 2000 - -# message-unfocused (Bool): -# Whether to show messages in unfocused windows. -# Valid values: true, false -# Default: false -message-unfocused = false - -# confirm-quit (ConfirmQuit): -# Whether to confirm quitting the application. -# always: Always show a confirmation. -# multiple-tabs: Show a confirmation if multiple tabs are -# opened. -# downloads: Show a confirmation if downloads are running -# never: Never show a confirmation. -# Default: never -confirm-quit = never - -# zoom-text-only (Bool): -# Whether the zoom factor on a frame applies only to the text or to -# all content. -# Valid values: true, false -# Default: false -zoom-text-only = false - -# frame-flattening (Bool): -# Whether to expand each subframe to its contents. -# This will flatten all the frames to become one scrollable page. -# Valid values: true, false -# Default: false -frame-flattening = false - -# user-stylesheet (File): -# User stylesheet to use (absolute filename or filename relative to -# the config directory). Will expand environment variables. -# Default: -user-stylesheet = - -# hide-scrollbar (Bool): -# Hide the main scrollbar. -# Valid values: true, false -# Default: true -hide-scrollbar = true - -# smooth-scrolling (Bool): -# Whether to enable smooth scrolling for web pages. Note smooth -# scrolling does not work with the :scroll-px command. -# Valid values: true, false -# Default: false -smooth-scrolling = false - -# remove-finished-downloads (Int): -# Number of milliseconds to wait before removing finished downloads. -# Will not be removed if value is -1. -# Default: -1 -remove-finished-downloads = -1 - -# hide-statusbar (Bool): -# Whether to hide the statusbar unless a message is shown. -# Valid values: true, false -# Default: false -hide-statusbar = false - -# statusbar-padding (Padding): -# Padding for statusbar (top, bottom, left, right). -# Default: 1,1,0,0 -statusbar-padding = 1,1,0,0 - -# window-title-format (FormatString): -# The format to use for the window title. The following placeholders -# are defined: -# * `{perc}`: The percentage as a string like `[10%]`. -# * `{perc_raw}`: The raw percentage, e.g. `10` -# * `{title}`: The title of the current web page -# * `{title_sep}`: The string ` - ` if a title is set, empty -# otherwise. -# * `{id}`: The internal window ID of this window. -# * `{scroll_pos}`: The page scroll position. -# * `{host}`: The host of the current web page. -# * `{backend}`: Either 'webkit' or 'webengine' -# * `{private}` : Indicates when private mode is enabled. -# Default: {perc}{title}{title_sep}qutebrowser -window-title-format = {perc}{title}{title_sep}qutebrowser - -# modal-js-dialog (Bool): -# Use standard JavaScript modal dialog for alert() and confirm() -# Valid values: true, false -# Default: false -modal-js-dialog = false - -# hide-wayland-decoration (Bool): -# Hide the window decoration when using wayland (requires restart) -# Valid values: true, false -# Default: false -hide-wayland-decoration = false - -# keyhint-blacklist (List of String): -# Keychains that shouldn't be shown in the keyhint dialog -# Globs are supported, so ';*' will blacklist all keychainsstarting -# with ';'. Use '*' to disable keyhints -# Default: -keyhint-blacklist = - -# keyhint-delay (Int): -# Time from pressing a key to seeing the keyhint dialog (ms) -# Default: 500 -keyhint-delay = 500 - -# prompt-radius (Int): -# The rounding radius for the edges of prompts. -# Default: 8 -prompt-radius = 8 - -# prompt-filebrowser (Bool): -# Show a filebrowser in upload/download prompts. -# Valid values: true, false -# Default: true -prompt-filebrowser = true - - -# Settings related to the network. -[network] - -# do-not-track (Bool): -# Value to send in the `DNT` header. -# Valid values: true, false -# Default: true -do-not-track = true - -# accept-language (String): -# Value to send in the `accept-language` header. -# Default: en-US,en -accept-language = fr-FR,en-US,en - -# referer-header (String): -# Send the Referer header -# always: Always send. -# never: Never send; this is not recommended, as some sites may -# break. -# same-domain: Only send for the same domain. This will still -# protect your privacy, but shouldn't break any sites. -# Default: same-domain -referer-header = same-domain - -# user-agent (UserAgent): -# User agent to send. Empty to send the default. -# Default: -user-agent = - -# proxy (Proxy): -# The proxy to use. -# In addition to the listed values, you can use a `socks://...` or -# `http://...` URL. -# system: Use the system wide proxy. -# none: Don't use any proxy -# Default: system -proxy = system - -# proxy-dns-requests (Bool): -# Whether to send DNS requests over the configured proxy. -# Valid values: true, false -# Default: true -proxy-dns-requests = true - -# ssl-strict (BoolAsk): -# Whether to validate SSL handshakes. -# Valid values: true, false, ask -# Default: ask -ssl-strict = ask - -# dns-prefetch (Bool): -# Whether to try to pre-fetch DNS entries to speed up browsing. -# Valid values: true, false -# Default: true -dns-prefetch = true - -# custom-headers (HeaderDict): -# Set custom headers for qutebrowser HTTP requests. -# Default: -custom-headers = - -# netrc-file (File): -# Set location of a netrc-file for HTTP authentication. If empty, -# ~/.netrc is used. -# Default: -netrc-file = - - -# Options related to completion and command history. -[completion] - -# show (String): -# When to show the autocompletion window. -# always: Whenever a completion is available. -# auto: Whenever a completion is requested. -# never: Never. -# Default: always -show = always - -# download-path-suggestion (String): -# What to display in the download filename input. -# path: Show only the download path. -# filename: Show only download filename. -# both: Show download path and filename. -# Default: path -download-path-suggestion = path - -# timestamp-format (TimestampTemplate): -# How to format timestamps (e.g. for history) -# Default: %Y-%m-%d -timestamp-format = %Y-%m-%d - -# height (PercOrInt): -# The height of the completion, in px or as percentage of the -# window. -# Default: 50% -height = 50% - -# cmd-history-max-items (Int): -# How many commands to save in the command history. -# 0: no history / -1: unlimited -# Default: 100 -cmd-history-max-items = 100 - -# web-history-max-items (Int): -# How many URLs to show in the web history. -# 0: no history / -1: unlimited -# Default: 1000 -web-history-max-items = 1000 - -# quick-complete (Bool): -# Whether to move on to the next part when there's only one possible -# completion left. -# Valid values: true, false -# Default: true -quick-complete = true - -# shrink (Bool): -# Whether to shrink the completion to be smaller than the configured -# size if there are no scrollbars. -# Valid values: true, false -# Default: false -shrink = false - -# scrollbar-width (Int): -# Width of the scrollbar in the completion window (in px). -# Default: 12 -scrollbar-width = 12 - -# scrollbar-padding (Int): -# Padding of scrollbar handle in completion window (in px). -# Default: 2 -scrollbar-padding = 2 - - -# Options related to input modes. -[input] - -# timeout (Int): -# Timeout (in milliseconds) for ambiguous key bindings. -# If the current input forms both a complete match and a partial -# match, the complete match will be executed after this time. -# Default: 500 -timeout = 500 - -# partial-timeout (Int): -# Timeout (in milliseconds) for partially typed key bindings. -# If the current input forms only partial matches, the keystring -# will be cleared after this time. -# Default: 5000 -partial-timeout = 1000 - -# insert-mode-on-plugins (Bool): -# Whether to switch to insert mode when clicking flash and other -# plugins. -# Valid values: true, false -# Default: false -insert-mode-on-plugins = false - -# auto-leave-insert-mode (Bool): -# Whether to leave insert mode if a non-editable element is clicked. -# Valid values: true, false -# Default: true -auto-leave-insert-mode = true - -# auto-insert-mode (Bool): -# Whether to automatically enter insert mode if an editable element -# is focused after page load. -# Valid values: true, false -# Default: false -auto-insert-mode = false - -# forward-unbound-keys (String): -# Whether to forward unbound keys to the webview in normal mode. -# all: Forward all unbound keys. -# auto: Forward unbound non-alphanumeric keys. -# none: Don't forward any keys. -# Default: auto -forward-unbound-keys = auto - -# spatial-navigation (Bool): -# Enables or disables the Spatial Navigation feature. -# Spatial navigation consists in the ability to navigate between -# focusable elements in a Web page, such as hyperlinks and form -# controls, by using Left, Right, Up and Down arrow keys. For -# example, if a user presses the Right key, heuristics determine -# whether there is an element he might be trying to reach towards -# the right and which element he probably wants. -# Valid values: true, false -# Default: false -spatial-navigation = false - -# links-included-in-focus-chain (Bool): -# Whether hyperlinks should be included in the keyboard focus chain. -# Valid values: true, false -# Default: true -links-included-in-focus-chain = true - -# rocker-gestures (Bool): -# Whether to enable Opera-like mouse rocker gestures. This disables -# the context menu. -# Valid values: true, false -# Default: false -rocker-gestures = false - -# mouse-zoom-divider (Int): -# How much to divide the mouse wheel movements to translate them -# into zoom increments. -# Default: 512 -mouse-zoom-divider = 512 - - -# Configuration of the tab bar. -[tabs] - -# background-tabs (Bool): -# Whether to open new tabs (middleclick/ctrl+click) in background. -# Valid values: true, false -# Default: false -background-tabs = false - -# select-on-remove (SelectOnRemove): -# Which tab to select when the focused tab is removed. -# prev: Select the tab which came before the closed one (left in -# horizontal, above in vertical). -# next: Select the tab which came after the closed one (right in -# horizontal, below in vertical). -# last-used: Select the previously selected tab. -# Default: next -select-on-remove = next - -# new-tab-position (NewTabPosition): -# How new tabs are positioned. -# prev: Before the current tab. -# next: After the current tab. -# first: At the beginning. -# last: At the end. -# Default: next -new-tab-position = next - -# new-tab-position-explicit (NewTabPosition): -# How new tabs opened explicitly are positioned. -# prev: Before the current tab. -# next: After the current tab. -# first: At the beginning. -# last: At the end. -# Default: last -new-tab-position-explicit = last - -# last-close (String): -# Behavior when the last tab is closed. -# ignore: Don't do anything. -# blank: Load a blank page. -# startpage: Load the start page. -# default-page: Load the default page. -# close: Close the window. -# Default: ignore -last-close = ignore - -# show (String): -# When to show the tab bar -# always: Always show the tab bar. -# never: Always hide the tab bar. -# multiple: Hide the tab bar if only one tab is open. -# switching: Show the tab bar when switching tabs. -# Default: always -show = multiple - -# show-switching-delay (Int): -# Time to show the tab bar before hiding it when tabs->show is set -# to 'switching'. -# Default: 800 -show-switching-delay = 800 - -# wrap (Bool): -# Whether to wrap when changing tabs. -# Valid values: true, false -# Default: true -wrap = true - -# movable (Bool): -# Whether tabs should be movable. -# Valid values: true, false -# Default: true -movable = true - -# close-mouse-button (String): -# On which mouse button to close tabs. -# right: Close tabs on right-click. -# middle: Close tabs on middle-click. -# none: Don't close tabs using the mouse. -# Default: middle -close-mouse-button = middle - -# position (Position): -# The position of the tab bar. -# Valid values: top, bottom, left, right -# Default: top -position = top - -# show-favicons (Bool): -# Whether to show favicons in the tab bar. -# Valid values: true, false -# Default: true -show-favicons = true - -# favicon-scale (Float): -# Scale for favicons in the tab bar. The tab size is unchanged, so -# big favicons also require extra `tabs->padding`. -# Default: 1.0 -favicon-scale = 1.0 - -# width (PercOrInt): -# The width of the tab bar if it's vertical, in px or as percentage -# of the window. -# Default: 20% -width = 20% - -# pinned-width (Int): -# The width for pinned tabs with a horizontal tabbar, in px. -# Default: 43 -pinned-width = 43 - -# indicator-width (Int): -# Width of the progress indicator (0 to disable). -# Default: 3 -indicator-width = 3 - -# tabs-are-windows (Bool): -# Whether to open windows instead of tabs. -# Valid values: true, false -# Default: false -tabs-are-windows = true - -# title-format (FormatString): -# The format to use for the tab title. The following placeholders -# are defined: -# * `{perc}`: The percentage as a string like `[10%]`. -# * `{perc_raw}`: The raw percentage, e.g. `10` -# * `{title}`: The title of the current web page -# * `{title_sep}`: The string ` - ` if a title is set, empty -# otherwise. -# * `{index}`: The index of this tab. -# * `{id}`: The internal tab ID of this tab. -# * `{scroll_pos}`: The page scroll position. -# * `{host}`: The host of the current web page. -# * `{backend}`: Either 'webkit' or 'webengine' -# * `{private}` : Indicates when private mode is enabled. -# Default: {index}: {title} -title-format = {index}: {title} - -# title-format-pinned (FormatString): -# The format to use for the tab title for pinned tabs. The same -# placeholders like for title-format are defined. -# Default: {index} -title-format-pinned = {index} - -# title-alignment (TextAlignment): -# Alignment of the text inside of tabs -# Valid values: left, right, center -# Default: left -title-alignment = left - -# mousewheel-tab-switching (Bool): -# Switch between tabs using the mouse wheel. -# Valid values: true, false -# Default: true -mousewheel-tab-switching = true - -# padding (Padding): -# Padding for tabs (top, bottom, left, right). -# Default: 0,0,5,5 -padding = 0,0,5,5 - -# indicator-padding (Padding): -# Padding for indicators (top, bottom, left, right). -# Default: 2,2,0,4 -indicator-padding = 2,2,0,4 - - -# Settings related to cache and storage. -[storage] - -# download-directory (Directory): -# The directory to save downloads to. An empty value selects a -# sensible os-specific default. Will expand environment variables. -# Default: -download-directory = - -# prompt-download-directory (Bool): -# Whether to prompt the user for the download location. -# If set to false, 'download-directory' will be used. -# Valid values: true, false -# Default: true -prompt-download-directory = true - -# remember-download-directory (Bool): -# Whether to remember the last used download directory. -# Valid values: true, false -# Default: true -remember-download-directory = true - -# maximum-pages-in-cache (Int): -# The maximum number of pages to hold in the global memory page -# cache. -# The Page Cache allows for a nicer user experience when navigating -# forth or back to pages in the forward/back history, by pausing and -# resuming up to _n_ pages. -# For more information about the feature, please refer to: -# http://webkit.org/blog/427/webkit-page-cache-i-the-basics/ -# Default: 0 -maximum-pages-in-cache = 0 - -# offline-web-application-cache (Bool): -# Whether support for the HTML 5 web application cache feature is -# enabled. -# An application cache acts like an HTTP cache in some sense. For -# documents that use the application cache via JavaScript, the -# loader engine will first ask the application cache for the -# contents, before hitting the network. -# The feature is described in details at: -# http://dev.w3.org/html5/spec/Overview.html#appcache -# Valid values: true, false -# Default: true -offline-web-application-cache = true - -# local-storage (Bool): -# Whether support for HTML 5 local storage and Web SQL is enabled. -# Valid values: true, false -# Default: true -local-storage = true - -# cache-size (Int): -# Size of the HTTP network cache. Empty to use the default value. -# Default: -cache-size = 52428800 - - -# Loaded plugins/scripts and allowed actions. -[content] - -# allow-images (Bool): -# Whether images are automatically loaded in web pages. -# Valid values: true, false -# Default: true -allow-images = true - -# allow-javascript (Bool): -# Enables or disables the running of JavaScript programs. -# Valid values: true, false -# Default: true -allow-javascript = true - -# allow-plugins (Bool): -# Enables or disables plugins in Web pages. -# Qt plugins with a mimetype such as "application/x-qt-plugin" are -# not affected by this setting. -# Valid values: true, false -# Default: false -allow-plugins = false - -# webgl (Bool): -# Enables or disables WebGL. -# Valid values: true, false -# Default: true -webgl = true - -# hyperlink-auditing (Bool): -# Enable or disable hyperlink auditing (). -# Valid values: true, false -# Default: false -hyperlink-auditing = false - -# geolocation (BoolAsk): -# Allow websites to request geolocations. -# Valid values: true, false, ask -# Default: ask -geolocation = ask - -# notifications (BoolAsk): -# Allow websites to show notifications. -# Valid values: true, false, ask -# Default: ask -notifications = true - -# media-capture (BoolAsk): -# Allow websites to record audio/video. -# Valid values: true, false, ask -# Default: ask -media-capture = ask - -# javascript-can-open-windows-automatically (Bool): -# Whether JavaScript programs can open new windows without user -# interaction. -# Valid values: true, false -# Default: false -javascript-can-open-windows-automatically = false - -# javascript-can-close-windows (Bool): -# Whether JavaScript programs can close windows. -# Valid values: true, false -# Default: false -javascript-can-close-windows = false - -# javascript-can-access-clipboard (Bool): -# Whether JavaScript programs can read or write to the clipboard. -# With QtWebEngine, writing the clipboard as response to a user -# interaction is always allowed. -# Valid values: true, false -# Default: false -javascript-can-access-clipboard = false - -# ignore-javascript-prompt (Bool): -# Whether all javascript prompts should be ignored. -# Valid values: true, false -# Default: false -ignore-javascript-prompt = false - -# ignore-javascript-alert (Bool): -# Whether all javascript alerts should be ignored. -# Valid values: true, false -# Default: false -ignore-javascript-alert = false - -# local-content-can-access-remote-urls (Bool): -# Whether locally loaded documents are allowed to access remote -# urls. -# Valid values: true, false -# Default: false -local-content-can-access-remote-urls = false - -# local-content-can-access-file-urls (Bool): -# Whether locally loaded documents are allowed to access other local -# urls. -# Valid values: true, false -# Default: true -local-content-can-access-file-urls = true - -# cookies-accept (String): -# Control which cookies to accept. -# all: Accept all cookies. -# no-3rdparty: Accept cookies from the same origin only. -# no-unknown-3rdparty: Accept cookies from the same origin only, -# unless a cookie is already set for the domain. -# never: Don't accept cookies at all. -# Default: no-3rdparty -cookies-accept = no-3rdparty - -# cookies-store (Bool): -# Whether to store cookies. Note this option needs a restart with -# QtWebEngine on Qt < 5.9. -# Valid values: true, false -# Default: true -cookies-store = true - -# host-block-lists (List of Url): -# List of URLs of lists which contain hosts to block. -# The file can be in one of the following formats: -# - An '/etc/hosts'-like file -# - One host per line -# - A zip-file of any of the above, with either only one file, or a -# file named 'hosts' (with any extension). -# Default: -# https://www.malwaredomainlist.com/hostslist/hosts.txt,http://someonewhocares.org/hosts/hosts,http://winhelp2002.mvps.org/hosts.zip,http://malwaredomains.lehigh.edu/files/justdomains.zip,https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext -host-block-lists = http://www.malwaredomainlist.com/hostslist/hosts.txt,http://someonewhocares.org/hosts/hosts,http://winhelp2002.mvps.org/hosts.zip,http://malwaredomains.lehigh.edu/files/justdomains.zip,http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext - -# host-blocking-enabled (Bool): -# Whether host blocking is enabled. -# Valid values: true, false -# Default: true -host-blocking-enabled = true - -# host-blocking-whitelist (List of String): -# List of domains that should always be loaded, despite being -# ad-blocked. -# Domains may contain * and ? wildcards and are otherwise required -# to exactly match the requested domain. -# Local domains are always exempt from hostblocking. -# Default: piwik.org -host-blocking-whitelist = piwik.org - -# enable-pdfjs (Bool): -# Enable pdf.js to view PDF files in the browser. -# Note that the files can still be downloaded by clicking the -# download button in the pdf.js viewer. -# Valid values: true, false -# Default: false -enable-pdfjs = false - - -# Hinting settings. -[hints] - -# border (String): -# CSS border value for hints. -# Default: 1px solid #E3BE23 -border = 1px solid #E3BE23 - -# mode (String): -# Mode to use for hints. -# number: Use numeric hints. (In this mode you can also type -# letters form the hinted element to filter and reduce the number of -# elements that are hinted.) -# letter: Use the chars in the hints -> chars setting. -# word: Use hints words based on the html elements and the extra -# words. -# Default: letter -mode = letter - -# chars (UniqueCharString): -# Chars used for hint strings. -# Default: asdfghjkl -chars = asdfghjkl - -# min-chars (Int): -# Minimum number of chars used for hint strings. -# Default: 1 -min-chars = 1 - -# scatter (Bool): -# Whether to scatter hint key chains (like Vimium) or not (like -# dwb). Ignored for number hints. -# Valid values: true, false -# Default: true -scatter = true - -# uppercase (Bool): -# Make chars in hint strings uppercase. -# Valid values: true, false -# Default: false -uppercase = false - -# dictionary (File): -# The dictionary file to be used by the word hints. -# Default: /usr/share/dict/words -dictionary = /usr/share/dict/words - -# auto-follow (String): -# Controls when a hint can be automatically followed without the -# user pressing Enter. -# always: Auto-follow whenever there is only a single hint on a -# page. -# unique-match: Auto-follow whenever there is a unique non-empty -# match in either the hint string (word mode) or filter (number -# mode). -# full-match: Follow the hint when the user typed the whole hint -# (letter, word or number mode) or the element's text (only in -# number mode). -# never: The user will always need to press Enter to follow a -# hint. -# Default: unique-match -auto-follow = unique-match - -# auto-follow-timeout (Int): -# A timeout (in milliseconds) to inhibit normal-mode key bindings -# after a successful auto-follow. -# Default: 0 -auto-follow-timeout = 0 - -# next-regexes (List of Regex): -# A comma-separated list of regexes to use for 'next' links. -# Default: -# \bnext\b,\bmore\b,\bnewer\b,\b[>→≫]\b,\b(>>|»)\b,\bcontinue\b -next-regexes = \bnext\b,\bmore\b,\bnewer\b,\b[>→≫]\b,\b(>>|»)\b,\bcontinue\b - -# prev-regexes (List of Regex): -# A comma-separated list of regexes to use for 'prev' links. -# Default: \bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,\b(<<|«)\b -prev-regexes = \bprev(ious)?\b,\bback\b,\bolder\b,\b[<←≪]\b,\b(<<|«)\b - -# find-implementation (String): -# Which implementation to use to find elements to hint. -# javascript: Better but slower -# python: Slightly worse but faster -# Default: python -find-implementation = python - -# hide-unmatched-rapid-hints (Bool): -# Controls hiding unmatched hints in rapid mode. -# Valid values: true, false -# Default: true -hide-unmatched-rapid-hints = true - - -# Definitions of search engines which can be used via the address bar. -# The searchengine named `DEFAULT` is used when `general -> auto-search` -# is true and something else than a URL was entered to be opened. Other -# search engines can be used by prepending the search engine name to the -# search term, e.g. `:open google qutebrowser`. The string `{}` will be -# replaced by the search term, use `{{` and `}}` for literal `{`/`}` -# signs. -[searchengines] -DEFAULT = https://www.qwant.com/?t=web&q={} -arch = https://wiki.archlinux.org/?search={} -gfr = https://www.google.fr/search?hl=fr&q={} -archp = https://www.archlinux.org/packages/?q={} -github = https://github.com/search?q={} -yt = https://www.youtube.com/results?search_query={} -aur = https://aur.archlinux.org/packages/?K={} -gi = http://images.google.com/search?q={} -g = https://www.google.fr/search?q={} -wa = https://www.wolframalpha.com/input/?i={} -dockerhub = https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q={}&starCount=0 -npm = https://www.npmjs.com/search?q={} - - -# Aliases for commands. -# By default, no aliases are defined. Example which adds a new command -# `:qtb` to open qutebrowsers website: -# `qtb = open https://www.qutebrowser.org/` -[aliases] - - -# Colors used in the UI. -# A value can be in one of the following format: -# * `#RGB`/`#RRGGBB`/`#RRRGGGBBB`/`#RRRRGGGGBBBB` -# * An SVG color name as specified in http://www.w3.org/TR/SVG/types.html#ColorKeywords[the W3C specification]. -# * transparent (no color) -# * `rgb(r, g, b)` / `rgba(r, g, b, a)` (values 0-255 or percentages) -# * `hsv(h, s, v)` / `hsva(h, s, v, a)` (values 0-255, hue 0-359) -# * A gradient as explained in http://doc.qt.io/qt-5/stylesheet-reference.html#list-of-property-types[the Qt documentation] under ``Gradient''. -# A *.system value determines the color system to use for color -# interpolation between similarly-named *.start and *.stop entries, -# regardless of how they are defined in the options. Valid values are -# 'rgb', 'hsv', and 'hsl'. -# The `hints.*` values are a special case as they're real CSS colors, not Qt-CSS colors. There, for a gradient, you need to use `-webkit-gradient`, see https://www.webkit.org/blog/175/introducing-css-gradients/[the WebKit documentation]. -[colors] - -# completion.fg (QtColor): -# Text color of the completion widget. -# Default: white -completion.fg = #f1ebeb - -# completion.bg (QssColor): -# Background color of the completion widget. -# Default: #333333 -completion.bg = #58584e - -# completion.alternate-bg (QssColor): -# Alternating background color of the completion widget. -# Default: #444444 -completion.alternate-bg = #48483e - -# completion.category.fg (QtColor): -# Foreground color of completion widget category headers. -# Default: white -completion.category.fg = #f1ebeb - -# completion.category.bg (QssColor): -# Background color of the completion widget category headers. -# Default: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #888888, -# stop:1 #505050) -completion.category.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #76715e, stop:1 #48483e) - -# completion.category.border.top (QssColor): -# Top border color of the completion widget category headers. -# Default: black -completion.category.border.top = #272822 - -# completion.category.border.bottom (QssColor): -# Bottom border color of the completion widget category headers. -# Default: ${completion.category.border.top} -completion.category.border.bottom = ${completion.category.border.top} - -# completion.item.selected.fg (QtColor): -# Foreground color of the selected completion item. -# Default: black -completion.item.selected.fg = ${completion.fg} - -# completion.item.selected.bg (QssColor): -# Background color of the selected completion item. -# Default: #e8c000 -completion.item.selected.bg = #d4c96e - -# completion.item.selected.border.top (QssColor): -# Top border color of the completion widget category headers. -# Default: #bbbb00 -completion.item.selected.border.top = #e7db75 - -# completion.item.selected.border.bottom (QssColor): -# Bottom border color of the selected completion item. -# Default: ${completion.item.selected.border.top} -completion.item.selected.border.bottom = ${completion.item.selected.border.top} - -# completion.match.fg (QssColor): -# Foreground color of the matched text in the completion. -# Default: #ff4444 -completion.match.fg = #fa2772 - -# completion.scrollbar.fg (QssColor): -# Color of the scrollbar handle in completion view. -# Default: ${completion.fg} -completion.scrollbar.fg = ${completion.fg} - -# completion.scrollbar.bg (QssColor): -# Color of the scrollbar in completion view -# Default: ${completion.bg} -completion.scrollbar.bg = ${completion.bg} - -# statusbar.fg (QssColor): -# Foreground color of the statusbar. -# Default: white -statusbar.fg = #f1ebeb - -# statusbar.bg (QssColor): -# Background color of the statusbar. -# Default: black -statusbar.bg = #272822 - -# statusbar.fg.private (QssColor): -# Foreground color of the statusbar in private browsing mode. -# Default: ${statusbar.fg} -statusbar.fg.private = ${statusbar.fg} - -# statusbar.bg.private (QssColor): -# Background color of the statusbar in private browsing mode. -# Default: #666666 -statusbar.bg.private = #666666 - -# statusbar.fg.insert (QssColor): -# Foreground color of the statusbar in insert mode. -# Default: ${statusbar.fg} -statusbar.fg.insert = ${statusbar.fg} - -# statusbar.bg.insert (QssColor): -# Background color of the statusbar in insert mode. -# Default: darkgreen -statusbar.bg.insert = #8fc029 - -# statusbar.fg.command (QssColor): -# Foreground color of the statusbar in command mode. -# Default: ${statusbar.fg} -statusbar.fg.command = ${statusbar.fg} - -# statusbar.bg.command (QssColor): -# Background color of the statusbar in command mode. -# Default: ${statusbar.bg} -statusbar.bg.command = ${statusbar.bg} - -# statusbar.fg.command.private (QssColor): -# Foreground color of the statusbar in private browsing + command -# mode. -# Default: ${statusbar.fg.private} -statusbar.fg.command.private = ${statusbar.fg.private} - -# statusbar.bg.command.private (QssColor): -# Background color of the statusbar in private browsing + command -# mode. -# Default: ${statusbar.bg.private} -statusbar.bg.command.private = ${statusbar.bg.private} - -# statusbar.fg.caret (QssColor): -# Foreground color of the statusbar in caret mode. -# Default: ${statusbar.fg} -statusbar.fg.caret = ${statusbar.fg} - -# statusbar.bg.caret (QssColor): -# Background color of the statusbar in caret mode. -# Default: purple -statusbar.bg.caret = #9358fe - -# statusbar.fg.caret-selection (QssColor): -# Foreground color of the statusbar in caret mode with a selection -# Default: ${statusbar.fg} -statusbar.fg.caret-selection = ${statusbar.fg} - -# statusbar.bg.caret-selection (QssColor): -# Background color of the statusbar in caret mode with a selection -# Default: #a12dff -statusbar.bg.caret-selection = #55bcce - -# statusbar.progress.bg (QssColor): -# Background color of the progress bar. -# Default: white -statusbar.progress.bg = ${statusbar.fg} - -# statusbar.url.fg (QssColor): -# Default foreground color of the URL in the statusbar. -# Default: ${statusbar.fg} -statusbar.url.fg = ${statusbar.fg} - -# statusbar.url.fg.success (QssColor): -# Foreground color of the URL in the statusbar on successful load -# (http). -# Default: white -statusbar.url.fg.success = #66efd5 - -# statusbar.url.fg.success.https (QssColor): -# Foreground color of the URL in the statusbar on successful load -# (https). -# Default: lime -statusbar.url.fg.success.https = #a7e22e - -# statusbar.url.fg.error (QssColor): -# Foreground color of the URL in the statusbar on error. -# Default: orange -statusbar.url.fg.error = #fa2772 - -# statusbar.url.fg.warn (QssColor): -# Foreground color of the URL in the statusbar when there's a -# warning. -# Default: yellow -statusbar.url.fg.warn = #e7db75 - -# statusbar.url.fg.hover (QssColor): -# Foreground color of the URL in the statusbar for hovered links. -# Default: aqua -statusbar.url.fg.hover = #ae82ff - -# tabs.fg.odd (QtColor): -# Foreground color of unselected odd tabs. -# Default: white -tabs.fg.odd = ${completion.fg} - -# tabs.bg.odd (QtColor): -# Background color of unselected odd tabs. -# Default: grey -tabs.bg.odd = ${completion.bg} - -# tabs.fg.even (QtColor): -# Foreground color of unselected even tabs. -# Default: white -tabs.fg.even = ${completion.fg} - -# tabs.bg.even (QtColor): -# Background color of unselected even tabs. -# Default: darkgrey -tabs.bg.even = ${completion.alternate-bg} - -# tabs.fg.selected.odd (QtColor): -# Foreground color of selected odd tabs. -# Default: white -tabs.fg.selected.odd = ${completion.item.selected.fg} - -# tabs.bg.selected.odd (QtColor): -# Background color of selected odd tabs. -# Default: black -tabs.bg.selected.odd = ${completion.item.selected.bg} - -# tabs.fg.selected.even (QtColor): -# Foreground color of selected even tabs. -# Default: ${tabs.fg.selected.odd} -tabs.fg.selected.even = ${tabs.fg.selected.odd} - -# tabs.bg.selected.even (QtColor): -# Background color of selected even tabs. -# Default: ${tabs.bg.selected.odd} -tabs.bg.selected.even = ${tabs.bg.selected.odd} - -# tabs.bg.bar (QtColor): -# Background color of the tab bar. -# Default: #555555 -tabs.bg.bar = ${statusbar.bg} - -# tabs.indicator.start (QtColor): -# Color gradient start for the tab indicator. -# Default: #0000aa -tabs.indicator.start = #55bcce - -# tabs.indicator.stop (QtColor): -# Color gradient end for the tab indicator. -# Default: #00aa00 -tabs.indicator.stop = #8fc029 - -# tabs.indicator.error (QtColor): -# Color for the tab indicator on errors.. -# Default: #ff0000 -tabs.indicator.error = #dc2566 - -# tabs.indicator.system (ColorSystem): -# Color gradient interpolation system for the tab indicator. -# rgb: Interpolate in the RGB color system. -# hsv: Interpolate in the HSV color system. -# hsl: Interpolate in the HSL color system. -# none: Don't show a gradient. -# Default: rgb -tabs.indicator.system = rgb - -# hints.fg (QssColor): -# Font color for hints. -# Default: black -hints.fg = #272822 - -# hints.bg (QssColor): -# Background color for hints. Note that you can use a `rgba(...)` -# value for transparency. -# Default: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, -# 247, 133, 0.8), stop:1 rgba(255, 197, 66, 0.8)) -hints.bg = qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(212, 201, 110, 0.8), stop:1 rgba(231, 219, 117, 0.8)) - -# hints.fg.match (QssColor): -# Font color for the matched part of hints. -# Default: green -hints.fg.match = #8fc029 - -# downloads.bg.bar (QssColor): -# Background color for the download bar. -# Default: black -downloads.bg.bar = ${statusbar.bg} - -# downloads.fg.start (QtColor): -# Color gradient start for download text. -# Default: white -downloads.fg.start = ${statusbar.fg} - -# downloads.bg.start (QtColor): -# Color gradient start for download backgrounds. -# Default: #0000aa -downloads.bg.start = #48483e - -# downloads.fg.stop (QtColor): -# Color gradient end for download text. -# Default: ${downloads.fg.start} -downloads.fg.stop = ${downloads.fg.start} - -# downloads.bg.stop (QtColor): -# Color gradient stop for download backgrounds. -# Default: #00aa00 -downloads.bg.stop = #8fc029 - -# downloads.fg.system (ColorSystem): -# Color gradient interpolation system for download text. -# rgb: Interpolate in the RGB color system. -# hsv: Interpolate in the HSV color system. -# hsl: Interpolate in the HSL color system. -# none: Don't show a gradient. -# Default: rgb -downloads.fg.system = rgb - -# downloads.bg.system (ColorSystem): -# Color gradient interpolation system for download backgrounds. -# rgb: Interpolate in the RGB color system. -# hsv: Interpolate in the HSV color system. -# hsl: Interpolate in the HSL color system. -# none: Don't show a gradient. -# Default: rgb -downloads.bg.system = rgb - -# downloads.fg.error (QtColor): -# Foreground color for downloads with errors. -# Default: white -downloads.fg.error = ${downloads.fg.start} - -# downloads.bg.error (QtColor): -# Background color for downloads with errors. -# Default: red -downloads.bg.error = ${messages.bg.error} - -# webpage.bg (QtColor): -# Background color for webpages if unset (or empty to use the -# theme's color) -# Default: white -webpage.bg = white - -# keyhint.fg (QssColor): -# Text color for the keyhint widget. -# Default: #FFFFFF -keyhint.fg = #FFFFFF - -# keyhint.fg.suffix (CssColor): -# Highlight color for keys to complete the current keychain -# Default: #FFFF00 -keyhint.fg.suffix = #FFFF00 - -# keyhint.bg (QssColor): -# Background color of the keyhint widget. -# Default: rgba(0, 0, 0, 80%) -keyhint.bg = rgba(0, 0, 0, 80%) - -# messages.fg.error (QssColor): -# Foreground color of an error message. -# Default: white -messages.fg.error = ${statusbar.fg} - -# messages.bg.error (QssColor): -# Background color of an error message. -# Default: red -messages.bg.error = #dc2566 - -# messages.border.error (QssColor): -# Border color of an error message. -# Default: #bb0000 -messages.border.error = #fa2772 - -# messages.fg.warning (QssColor): -# Foreground color a warning message. -# Default: white -messages.fg.warning = ${statusbar.fg} - -# messages.bg.warning (QssColor): -# Background color of a warning message. -# Default: darkorange -messages.bg.warning = #d4c96e - -# messages.border.warning (QssColor): -# Border color of an error message. -# Default: #d47300 -messages.border.warning = #e7db75 - -# messages.fg.info (QssColor): -# Foreground color an info message. -# Default: white -messages.fg.info = ${statusbar.fg} - -# messages.bg.info (QssColor): -# Background color of an info message. -# Default: black -messages.bg.info = #55bcce - -# messages.border.info (QssColor): -# Border color of an info message. -# Default: #333333 -messages.border.info = #66d9ee - -# prompts.fg (QssColor): -# Foreground color for prompts. -# Default: white -prompts.fg = ${statusbar.fg} - -# prompts.bg (QssColor): -# Background color for prompts. -# Default: darkblue -prompts.bg = #56b7a5 - -# prompts.selected.bg (QssColor): -# Background color for the selected item in filename prompts. -# Default: #308cc6 -prompts.selected.bg = #55bcce - - -# Fonts used for the UI, with optional style/weight/size. -# * Style: `normal`/`italic`/`oblique` -# * Weight: `normal`, `bold`, `100`..`900` -# * Size: _number_ `px`/`pt` -[fonts] - -# _monospace (Font): -# Default monospace fonts. -# Default: xos4 Terminus, Terminus, Monospace, "DejaVu Sans Mono", -# Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", -# Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal -_monospace = Terminus, Monospace, "DejaVu Sans Mono", Monaco, "Bitstream Vera Sans Mono", "Andale Mono", "Courier New", Courier, "Liberation Mono", monospace, Fixed, Consolas, Terminal - -# completion (Font): -# Font used in the completion widget. -# Default: 8pt ${_monospace} -completion = 8pt ${_monospace} - -# completion.category (Font): -# Font used in the completion categories. -# Default: bold ${completion} -completion.category = bold ${completion} - -# tabbar (QtFont): -# Font used in the tab bar. -# Default: 8pt ${_monospace} -tabbar = 8pt ${_monospace} - -# statusbar (Font): -# Font used in the statusbar. -# Default: 8pt ${_monospace} -statusbar = 8pt ${_monospace} - -# downloads (Font): -# Font used for the downloadbar. -# Default: 8pt ${_monospace} -downloads = 8pt ${_monospace} - -# hints (Font): -# Font used for the hints. -# Default: bold 13px ${_monospace} -hints = bold 13px ${_monospace} - -# debug-console (QtFont): -# Font used for the debugging console. -# Default: 8pt ${_monospace} -debug-console = 8pt ${_monospace} - -# web-family-standard (FontFamily): -# Font family for standard fonts. -# Default: -web-family-standard = - -# web-family-fixed (FontFamily): -# Font family for fixed fonts. -# Default: -web-family-fixed = - -# web-family-serif (FontFamily): -# Font family for serif fonts. -# Default: -web-family-serif = - -# web-family-sans-serif (FontFamily): -# Font family for sans-serif fonts. -# Default: -web-family-sans-serif = - -# web-family-cursive (FontFamily): -# Font family for cursive fonts. -# Default: -web-family-cursive = - -# web-family-fantasy (FontFamily): -# Font family for fantasy fonts. -# Default: -web-family-fantasy = - -# web-size-minimum (Int): -# The hard minimum font size. -# Default: 0 -web-size-minimum = 0 - -# web-size-minimum-logical (Int): -# The minimum logical font size that is applied when zooming out. -# Default: 6 -web-size-minimum-logical = 6 - -# web-size-default (Int): -# The default font size for regular text. -# Default: 16 -web-size-default = 16 - -# web-size-default-fixed (Int): -# The default font size for fixed-pitch text. -# Default: 13 -web-size-default-fixed = 13 - -# keyhint (Font): -# Font used in the keyhint widget. -# Default: 8pt ${_monospace} -keyhint = 8pt ${_monospace} - -# messages.error (Font): -# Font used for error messages. -# Default: 8pt ${_monospace} -messages.error = 8pt ${_monospace} - -# messages.warning (Font): -# Font used for warning messages. -# Default: 8pt ${_monospace} -messages.warning = 8pt ${_monospace} - -# messages.info (Font): -# Font used for info messages. -# Default: 8pt ${_monospace} -messages.info = 8pt ${_monospace} - -# prompts (Font): -# Font used for prompts. -# Default: 8pt sans-serif -prompts = 8pt sans-serif diff --git a/scripts/install-arch b/scripts/install-arch index d0cb678..c9676c3 100755 --- a/scripts/install-arch +++ b/scripts/install-arch @@ -3,9 +3,9 @@ # Setups an Arch Linux system the way I like it # (requires sudo) -if which pacman &> /dev/null; then +if ! which pacman &> /dev/null; then echo "This is not an Arch Linux system (or pacman isn't installed)" - return 1 + exit 1 fi # Configuration @@ -21,21 +21,21 @@ function prompt { # text } # Don't ask for things that are already there -if which yaourt &> /dev/null; then - local YAOURT=1 +if which pacaur &> /dev/null; then + PACAUR=1 fi if which bauerbill &> /dev/null; then - local BAUERBILL=1 + BAUERBILL=1 fi -if [ -z $YAOURT ]; then - prompt "Do you want yaourt on this machine?" - local YAOURT=$? +if [ -z $PACAUR ]; then + prompt "Do you want pacaur on this machine?" + PACAUR=$? fi -if [ $YAOURT == 1 ]; then +if [ $PACAUR == 1 ]; then if [ -z $BAUERBILL ]; then prompt "Do you want bauerbill on this machine?" - local BAUERBILL=$? + BAUERBILL=$? fi else BAUERBILL=0 @@ -55,10 +55,11 @@ function inst { # Install package from PKGBUILD file function installPKGBUILD { # url + # TODO Download snapshots TMP_DIR="$(mktemp -d /tmp/pkgbuild.XXXXXXXXXX)" cd "$TMP_DIR" wget "$1" -O PKGBUILD - makepkg -si + makepkg -si --noconfirm cd - rm -rf "$TMP_DIR" } @@ -66,41 +67,62 @@ function installPKGBUILD { # url # SYSTEM inst wget -pacman -Q yaourt &> /dev/null -if [[ $YAOURT == 1 && $? == 1 ]]; then - installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=package-query" - installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=yaourt" +# Aur + +pacman -Q pacaur &> /dev/null +if [[ $PACAUR == 1 && $? == 1 ]]; then + installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=cower" + installPKGBUILD "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=pacaur" fi -if pacman -Q pamac ; then - sudo pacman -Rsc pamac +# Git for /etc +sudo pacman -S etckeeper --noconfirm --needed +sudo etckeeper init +sudo etckeeper commit "~/.dotfiles/scripts/install-arch commit" + +# Uninstall Manjaro's pamac +if pacman -Q pamac &> /dev/null ; then + sudo pacman -Rsc pamac --noconfirm fi +# Ccache +sudo pacman -S ccache --noconfirm --needed +sudo sed 's|BUILDENV=\(.\+\)!ccache\(.\+\)|BUILDENV=\1ccache\2|' /etc/makepkg.conf -i + +# Bauerbill pacman -Q bauerbill &> /dev/null if [[ $BAUERBILL == 1 && $? == 1 ]]; then - sudo pacman -Sy manjaro-{hotfixes,keyring,release,system} --noconfirm + sudo pacman -Sy gpg --recv-keys 1D1F0DC78F173680 installPKGBUILD http://xyne.archlinux.ca/projects/reflector/pkgbuild/PKGBUILD - yaourt -S bauerbill --noconfirm + pacaur -S bauerbill --noconfirm --noedit - bb-wrapper -Su - # TODO Prompt if all went well, if not restart + bauerbill -Su --noconfirm else sudo pacman -Syu fi -# Disable predictable network names -sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules - # TLP -# sudo pacman -S tlp -# sudo systemctl enable tlp.service tlp-sleep.service -# sudo systemctl disable systemd-rfkill +sudo pacman -S tlp --noconfirm --needed +sudo sed 's|SATA_LINKPWR_ON_BAT=min_power|SATA_LINKPWR_ON_BAT=max_performance|' /etc/default/tlp -i +sudo systemctl enable tlp.service tlp-sleep.service +sudo systemctl disable systemd-rfkill.service systemd-rfkill.socket +sudo tlp start -# TODO -# make -j8 in MAKEPKG -# time -# nfs -# hibernate +# Numlock on boot +echo -e "[Service]\nExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'" | sudo systemctl edit getty\@.service + +# Makeflags +sudo sed "s|#MAKEFLAGS=\"-j2\"|MAKEFLAGS=\"-j$(nproc)\"|" /etc/makepkg.conf -i + +# Time synchronisation +sudo pacman -S ntp --noconfirm --needed +sudo systemctl start ntpd +sudo systemctl enable ntpd + +# MANUAL + +# Hibernation +# Add resume=UUID= to GRUB_CMDLINE_LINUX_DEFAULT and run `sudo grub-mkconfig -o /boot/grub/grub.cfg` diff --git a/scripts/install-prefs b/scripts/install-prefs index deddc9a..eaa51aa 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -54,7 +54,14 @@ if which pacman &> /dev/null; then function installFileOne { # file sudo pacman -U "$1" } - if which yaourt &> /dev/null; then + if which pacaur &> /dev/null; then + function altInstallOne { # package + pacman -Q $1 &> /dev/null + if [ $? == 1 ]; then + pacaur -S "$1" --noconfirm --noedit + fi + } + elif which yaourt &> /dev/null; then function altInstallOne { # package pacman -Q $1 &> /dev/null if [ $? == 1 ]; then @@ -175,8 +182,8 @@ if [ $TERMUX == 1 ]; then fi inst moreutils screen ncdu lsof htop proxytunnel pv curl wget sshfs netcat mosh bash-completion rsync if [ $ARCH == 1 ]; then - inst gopass - altInst tldr-bash-git + inst bash-completion + altInst gopass else inst pass wget -qO ~/.bin/ https://raw.githubusercontent.com/pepa65/tldr-bash-client/master/tldr @@ -243,7 +250,8 @@ if [ $GUI == 1 ]; then # Desktop manager inst i3 i3lock dunst unclutter xautolock feh numlockx scrot xterm xclip if [ $ARCH == 1 ]; then - altInst polybar-git ttf-font-awesome autorandr-git keynav-enhanced + inst xorg-xinit + altInst polybar-git ttf-font-awesome autorandr-git keynav-enhanced pacmixer else # Compiling polybar if ! which polybar > /dev/null; then @@ -311,7 +319,7 @@ if [ $EXTRA == 1 ]; then inst cmake clang llvm npm # Extra CLI - inst sl ffmpeg youtube-dl optipng syncthing + inst sl ffmpeg youtube-dl optipng syncthing ccache if [ $ARCH == 1 ]; then inst jq @@ -324,11 +332,11 @@ if [ $EXTRA == 1 ]; then # Extra GUI if [ $GUI == 1 ]; then - inst vlc gimp mpd vimpc + inst vlc gimp mpd thunar if [ $ARCH == 1 ]; then inst simplescreenrecorder - altInst pacmixer + altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git fi fi From f513500c29dcafd1f34559d93a43fb8649818687 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sun, 26 Nov 2017 08:53:39 +0100 Subject: [PATCH 08/10] Qutebrowser, CUDA, pass & more --- config/i3/config | 4 +- config/i3/passmenu | 18 +- config/i3/test | 5 + config/polybar/config | 19 +- scripts/cudarun | 12 + scripts/install-prefs | 6 +- scripts/package-lock.json | 1043 +++++++++++++++++++++++++++++++++++++ scripts/sedrename | 2 +- 8 files changed, 1095 insertions(+), 14 deletions(-) create mode 100644 config/i3/test create mode 100755 scripts/cudarun create mode 100644 scripts/package-lock.json diff --git a/config/i3/config b/config/i3/config index 2f0f311..774c3fe 100644 --- a/config/i3/config +++ b/config/i3/config @@ -38,7 +38,7 @@ bindsym button2 kill bindsym $mod+F2 exec --no-startup-id ~/.config/i3/dmenu_run bindsym Mod1+F2 exec --no-startup-id ~/.config/i3/dmenu_run -bindsym $mod+c exec --no-startup-id ~/.config/i3/passmenu +bindsym $mod+c exec --no-startup-id ~/.config/i3/passmenu --type #bindsym $mod+x exec --no-startup-id ~/.config/i3/clipmenu bindsym $mod+asterisk exec --no-startup-id ~/.config/i3/sshmenu bindsym $mod+dollar exec --no-startup-id ~/.config/i3/sshmenu root @@ -356,7 +356,6 @@ bindsym $mod+F5 exec --no-startup-id xautolock -enable # Autostart applications -exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Password remembering exec --no-startup-id gnome-keyring-daemon # Password remembering exec --no-startup-id numlockx on # Activate Num lock @@ -367,6 +366,7 @@ exec --no-startup-id dunst # Notifications exec --no-startup-id keynav # Keyboard cursor controller #exec --no-startup-id $HOME/.config/i3/clipmenud # Clipboard manager exec --no-startup-id mpd # Music Player Daemon +exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it set $ignore #ff00000 diff --git a/config/i3/passmenu b/config/i3/passmenu index 8819029..9a4bf22 100755 --- a/config/i3/passmenu +++ b/config/i3/passmenu @@ -8,17 +8,23 @@ if [[ $1 == "--type" ]]; then shift fi -prefix=${PASSWORD_STORE_DIR-~/.password-store} -password_files=( "$prefix"/**/*.gpg ) -password_files=( "${password_files[@]#"$prefix"/}" ) -password_files=( "${password_files[@]%.gpg}" ) +if PASS=$(which gopass 2> /dev/null); then + password_files="$($PASS ls --flat)" +elif PASS=$(which pass 2> /dev/null); then + prefix=${PASSWORD_STORE_DIR-~/.password-store} + password_files=( "$prefix"/**/*.gpg ) + password_files=( "${password_files[@]#"$prefix"/}" ) + password_files=( "${password_files[@]%.gpg}" ) +else + exit +fi password=$(printf '%s\n' "${password_files[@]}" | $HOME/.config/i3/dmenu_cmd -p "Passwords" "$@") [[ -n $password ]] || exit if [[ $typeit -eq 0 ]]; then - pass show -c "$password" 2>/dev/null + $PASS show -c "$password" else - xdotool - <<<"type --clearmodifiers -- $(pass show "$password" | head -n 1)" + xdotool - <<<"type --clearmodifiers -- $($PASS show "$password" | head -n 1)" fi diff --git a/config/i3/test b/config/i3/test new file mode 100644 index 0000000..b3fb195 --- /dev/null +++ b/config/i3/test @@ -0,0 +1,5 @@ +prefix=${PASSWORD_STORE_DIR-~/.password-store} +password_files=( "$prefix"/**/*.gpg ) +password_files=( "${password_files[@]#"$prefix"/}" ) +password_files=( "${password_files[@]%.gpg}" ) +echo -e "${password_files[@]}" diff --git a/config/polybar/config b/config/polybar/config index 9ffb31a..0051a69 100644 --- a/config/polybar/config +++ b/config/polybar/config @@ -76,7 +76,7 @@ enable-ipc = true inherit = bar/base modules-center = mpd -modules-right = eth wlan xbacklight volume battery date +modules-right = vpncheck eth wlan bbswitch xbacklight volume battery date tray-position = right tray-padding = 2 @@ -84,7 +84,7 @@ tray-transparent = false [bar/secondary] inherit = bar/base -modules-right = cpu memory temperature ethMore wlanMore filesystem xbacklight volume date +modules-right = cpu memory temperature vpncheck ethMore wlanMore filesystem bbswitch xbacklight volume date [module/filesystem] @@ -174,6 +174,14 @@ icon-repeatone = 1 toggle-on-foreground = ${theme.foreground} toggle-off-foreground = #55 +[module/bbswitch] +type = custom/script +exec = grep -o '\w\+$' /proc/acpi/bbswitch | sed 's/OFF//' | sed 's/ON//' +exec-if = file /proc/acpi/bbswitch +interval = 5 +format-prefix =  +format-foreground = ${theme.redF} +format-prefix-foreground = ${theme.redF} [module/xbacklight] type = internal/xbacklight @@ -212,6 +220,13 @@ interval = 2 format-foreground = ${theme.greenF} label =  %gb_free% +[module/vpncheck] +type = custom/script +exec = echo  +exec-if = pgrep openvpn +interval = 5 +format-foreground = ${theme.blueF} + [module/eth] type = internal/network interface = ${env:ethI:eth0} diff --git a/scripts/cudarun b/scripts/cudarun new file mode 100755 index 0000000..551e597 --- /dev/null +++ b/scripts/cudarun @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +if [ -z $DISPLAY ] +then + sudo tee /proc/acpi/bbswitch <<< ON + "$@" + rmmod nvidia_uvm + rmmod nvidia + sudo tee /proc/acpi/bbswitch <<< OFF +else + PATH="/opt/cuda/bin:$PATH" LD_LIBRARY_PATH="/opt/cuda/lib64:$LD_LIBRARY_PATH" VBLANK=0 VGL_READBACK=pbo optirun -c yuv "$@" +fi diff --git a/scripts/install-prefs b/scripts/install-prefs index eaa51aa..30bc03e 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -180,7 +180,7 @@ if [ $TERMUX == 1 ]; then inst tsu fi fi -inst moreutils screen ncdu lsof htop proxytunnel pv curl wget sshfs netcat mosh bash-completion rsync +inst moreutils screen ncdu lsof htop proxytunnel pv curl wget sshfs netcat mosh bash-completion rsync pwgen if [ $ARCH == 1 ]; then inst bash-completion altInst gopass @@ -332,11 +332,11 @@ if [ $EXTRA == 1 ]; then # Extra GUI if [ $GUI == 1 ]; then - inst vlc gimp mpd thunar + inst vlc gimp mpd thunar noto-fonts-emoji musescore if [ $ARCH == 1 ]; then inst simplescreenrecorder - altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git + altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git mpc fi fi diff --git a/scripts/package-lock.json b/scripts/package-lock.json new file mode 100644 index 0000000..de912e1 --- /dev/null +++ b/scripts/package-lock.json @@ -0,0 +1,1043 @@ +{ + "name": "geoffreyfrogeye-dotfiles-scripts", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "optional": true + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + } + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "optional": true + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "optional": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + }, + "dependencies": { + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "optional": true, + "requires": { + "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + }, + "concat-stream": { + "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", + "optional": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + } + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "cross-spawn": { + "version": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + } + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", + "optional": true + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + } + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + } + }, + "es6-promise": { + "version": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", + "optional": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "optional": true + }, + "execa": { + "version": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "requires": { + "cross-spawn": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "get-stream": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "npm-run-path": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "p-finally": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "strip-eof": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + } + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "optional": true + }, + "extract-zip": { + "version": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", + "optional": true, + "requires": { + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "yauzl": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz" + } + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "fd-slicer": { + "version": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "optional": true, + "requires": { + "pend": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + } + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + } + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true, + "requires": { + "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + } + }, + "fs-extra": { + "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "klaw": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + } + }, + "generate-function": { + "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "optional": true + }, + "generate-object-property": { + "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "optional": true, + "requires": { + "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "optional": true + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "optional": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "optional": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "hasha": { + "version": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "optional": true, + "requires": { + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + }, + "highlight.js": { + "version": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.11.0.tgz", + "integrity": "sha1-R/mMc5mRhwDbLK8jDe0SzsQahK4=" + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" + }, + "html-pdf": { + "version": "https://registry.npmjs.org/html-pdf/-/html-pdf-2.1.0.tgz", + "integrity": "sha1-w01Rj3+AL/vINL+AJ5z859oszks=", + "requires": { + "phantomjs-prebuilt": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz" + } + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "optional": true, + "requires": { + "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "is-property": { + "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "optional": true + }, + "is-stream": { + "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "isexe": { + "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonfile": { + "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "optional": true + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "katex": { + "version": "https://registry.npmjs.org/katex/-/katex-0.7.1.tgz", + "integrity": "sha1-BrtSmO+tBeHnIoA1uo4VkfMGG48=", + "requires": { + "match-at": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz" + } + }, + "kew": { + "version": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "optional": true + }, + "klaw": { + "version": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "optional": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + } + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + } + }, + "locate-path": { + "version": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + } + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "yallist": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + } + }, + "marked": { + "version": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=" + }, + "match-at": { + "version": "https://registry.npmjs.org/match-at/-/match-at-0.1.0.tgz", + "integrity": "sha1-9WHncJ/5oQW4XMYsa47nwVvyTzE=" + }, + "mem": { + "version": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz" + } + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + } + }, + "mimic-fn": { + "version": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "optional": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "requires": { + "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + } + }, + "npm-run-path": { + "version": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + } + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "integrity": "sha1-FZGN7VEFIrge565aMJ1U9jn8OaQ=", + "requires": { + "execa": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "mem": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz" + } + }, + "p-finally": { + "version": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz" + } + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" + } + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-key": { + "version": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + } + }, + "pend": { + "version": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "optional": true + }, + "phantomjs-prebuilt": { + "version": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", + "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", + "optional": true, + "requires": { + "es6-promise": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", + "extract-zip": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", + "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "hasha": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "kew": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "request-progress": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "optional": true + }, + "progress": { + "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "optional": true + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "optional": true + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "path-type": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" + } + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "optional": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "optional": true, + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + } + }, + "request-progress": { + "version": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "optional": true, + "requires": { + "throttleit": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz" + } + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true, + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + } + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "optional": true, + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "requires": { + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "optional": true + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "optional": true + }, + "throttleit": { + "version": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "optional": true + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true, + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "optional": true + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typedarray": { + "version": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "optional": true + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "optional": true + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + } + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true, + "requires": { + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + } + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "requires": { + "isexe": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + } + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "dependencies": { + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "optional": true + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-8.0.1.tgz", + "integrity": "sha1-Qg73XoQMFFeoCtzKm8b6OEneUao=", + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-2.0.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz" + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + } + }, + "yauzl": { + "version": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "optional": true, + "requires": { + "fd-slicer": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz" + } + } + } +} diff --git a/scripts/sedrename b/scripts/sedrename index 9c0f6b4..42a6f23 100755 --- a/scripts/sedrename +++ b/scripts/sedrename @@ -38,7 +38,7 @@ do if [[ $dry == 0 ]]; then echo "$src" → "$dst" else - mv "$src" "$dst" + mv -- "$src" "$dst" fi done From 74c9d4012689648738767722dbcf0f39cf16ca72 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Mon, 8 Jan 2018 12:26:49 +0100 Subject: [PATCH 09/10] oldest / newest --- bashrc | 6 +--- config/polybar/config | 7 ++-- scripts/archive | 54 +++++++++++++++++++++++++++---- scripts/install-prefs | 5 +-- scripts/newestFile | 2 ++ scripts/oldestFile | 2 ++ scripts/optimize | 74 ++++++++++++++++++++++++++++++------------- 7 files changed, 111 insertions(+), 39 deletions(-) create mode 100755 scripts/newestFile create mode 100755 scripts/oldestFile diff --git a/bashrc b/bashrc index 43b9d7c..8cfddc5 100644 --- a/bashrc +++ b/bashrc @@ -51,17 +51,13 @@ alias systemclt=systemctl # Shortcuts for commonly used commands alias ll="ls -l $LS_OPTIONS" alias la="ls -la $LS_OPTIONS" -alias al=sl alias x='startx; logout' alias s='sudo -s -E' alias po='eval $(proxy off)' alias nw="sudo systemctl restart NetworkManager" alias mc="machines" alias tracefiles="strace -f -t -e trace=file" -alias vpn="sudo systemctl start openvpn-client@$HOSTNAME" -alias vpno="sudo systemctl stop openvpn-client@$HOSTNAME" -alias vpns="sudo systemctl status openvpn-client@$HOSTNAME" -alias vpnr="sudo systemctl restart openvpn-client@$HOSTNAME" + # Superseding commands with better ones if they are present if which vim &> /dev/null; then alias vi='vim' diff --git a/config/polybar/config b/config/polybar/config index 0051a69..e259ae7 100644 --- a/config/polybar/config +++ b/config/polybar/config @@ -176,12 +176,11 @@ toggle-off-foreground = #55 [module/bbswitch] type = custom/script -exec = grep -o '\w\+$' /proc/acpi/bbswitch | sed 's/OFF//' | sed 's/ON//' -exec-if = file /proc/acpi/bbswitch +exec = grep -o '\w\+$' /proc/acpi/bbswitch +exec-if = test -f /proc/acpi/bbswitch interval = 5 -format-prefix =  +prefix = format-foreground = ${theme.redF} -format-prefix-foreground = ${theme.redF} [module/xbacklight] type = internal/xbacklight diff --git a/scripts/archive b/scripts/archive index a30d4f6..379f30c 100755 --- a/scripts/archive +++ b/scripts/archive @@ -3,13 +3,11 @@ import os import argparse -parser = argparse.ArgumentParser(description="Place a folder in ~/Documents in ~/Documents/Archive and symlink it") +parser = argparse.ArgumentParser(description="Place a folder in ~/Documents in ~/Documents/Archives and symlink it") parser.add_argument('dir', metavar='DIRECTORY', type=str, help="The directory to archive") +parser.add_argument('-d', '--dry', action='store_true') args = parser.parse_args() -source = os.path.realpath(args.dir) -assert(os.path.isdir(source)), source + " must be a directory" - # Finding directories assert('HOME' in os.environ), "Home directory unknown" docs = os.path.realpath(os.path.join(os.environ['HOME'], 'Documents')) @@ -17,7 +15,51 @@ assert(os.path.isdir(docs)), "Documents folder not found" arcs = os.path.join(docs, 'Archives') assert(os.path.isdir(arcs)), "Archives folder not found" -assert(source.startswith(docs)), "Directory is not in the document folder" -assert(not source.startswith(arcs)), "Directory is already in the archive folder" +def archive(docdir): + docdir = os.path.realpath(args.dir) + assert(os.path.isdir(docdir)), docdir + " must be a directory" + + assert(docdir.startswith(docs)), "Directory is not in the document folder" + assert(not docdir.startswith(arcs)), "Directory is already in the archive folder" + + reldir = os.path.relpath(docdir, docs) + print("ARC", reldir) + + arcdir = os.path.join(arcs, reldir) + parentArcdir = os.path.realpath(os.path.join(arcdir, '..')) + parentDocdir = os.path.realpath(os.path.join(docdir, '..')) + linkDest = os.path.relpath(arcdir, parentDocdir) + + # BULLSHIT + + # If the directory exists + if os.path.isdir(arcdir): + return + # for f in os.listdir(arcdir): + # assert(os.path.isdir(f)), "Something unknown in Archive dir") + # archive(os.path.join(arcdir, f)) + + # If the directory doesn't exist, create the directories under it and move all the folder + else: + + if args.dry: + print("mkdir -p", parentArcdir) + else: + os.makedirs(parentArcdir, exist_ok=True) + + if args.dry: + print("mv", docdir, arcdir) + else: + os.rename(docdir, arcdir) + + if args.dry: + print("ln -s", linkDest, docdir) + else: + os.symlink(linkDest, docdir) + +def unarchive(arcdir): + return + +archive(args.dir) diff --git a/scripts/install-prefs b/scripts/install-prefs index 30bc03e..f7e5434 100755 --- a/scripts/install-prefs +++ b/scripts/install-prefs @@ -249,9 +249,10 @@ fi if [ $GUI == 1 ]; then # Desktop manager inst i3 i3lock dunst unclutter xautolock feh numlockx scrot xterm xclip + curl "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/a8386aae19e200ddb0f6845b5feeee5eb7013687/fonts/fontawesome-webfont.ttf" > ~/.local/share/fonts/fontawesome-webfont.ttf if [ $ARCH == 1 ]; then inst xorg-xinit - altInst polybar-git ttf-font-awesome autorandr-git keynav-enhanced pacmixer + altInst polybar-git autorandr-git keynav-enhanced pacmixer else # Compiling polybar if ! which polybar > /dev/null; then @@ -319,7 +320,7 @@ if [ $EXTRA == 1 ]; then inst cmake clang llvm npm # Extra CLI - inst sl ffmpeg youtube-dl optipng syncthing ccache + inst ffmpeg youtube-dl optipng syncthing ccache if [ $ARCH == 1 ]; then inst jq diff --git a/scripts/newestFile b/scripts/newestFile new file mode 100755 index 0000000..508a762 --- /dev/null +++ b/scripts/newestFile @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +find -type f -printf '%T+ %p\n' | sort | tail "$@" diff --git a/scripts/oldestFile b/scripts/oldestFile new file mode 100755 index 0000000..4f90f83 --- /dev/null +++ b/scripts/oldestFile @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +find -type f -printf '%T+ %p\n' | sort | head "$@" diff --git a/scripts/optimize b/scripts/optimize index 13a5737..bbb3543 100755 --- a/scripts/optimize +++ b/scripts/optimize @@ -7,6 +7,7 @@ # (executable) # TODO Run in parallel +# TODO Lots of dupplicated code there dir=${1:-$PWD} total=$(mktemp) @@ -20,7 +21,53 @@ function showtotal { trap showtotal SIGTERM SIGINT SIGFPE +function doReplace { # candidate original + mv "$c" "$o" + saved=$(($os - $cs)) + perc=$((100 * $saved / $os)) + echo "→ $os ⇒ $cs (saved $saved bytes, or ${perc}%)" + newtotal=$(($(cat $total) + $saved)) + echo -n $newtotal > $total +} + +function replace { # candidate original + c="$1" + o="$2" + + # File verifications + if [ ! -f "$o" ]; then + echo "→ Original is inexistant, skipping!" + return + fi + if [ ! -f "$c" ]; then + echo "→ Candidate is inexistant, skipping!" + return + fi + + # Size verifications + cs=$(wc -c "$c" | cut -d' ' -f1) + os=$(wc -c "$o" | cut -d' ' -f1) + if [ $cs -le 0 ]; then + echo "→ Candidate is empty, skipping!" + rm "$c" + return + fi + if [ $cs -eq $os ]; then + echo "→ Candidate weight the same, skipping." + rm "$c" + return + fi + if [ $cs -gt $os ]; then + echo "→ Candidate is larger, skipping." + rm "$c" + return + fi + + doReplace "$c" "$o" +} + function replaceImg { # candidate original + # With bitmap verification c="$1" o="$2" @@ -61,11 +108,7 @@ function replaceImg { # candidate original convert "$o" "$ppmo" if cmp --silent "$ppmo" "$ppmc"; then - mv "$c" "$o" - saved=$(($os - $cs)) - echo "→ $os ⇒ $cs (saved $saved bytes)" - newtotal=$(($(cat $total) + $saved)) - echo -n $newtotal > $total + doReplace "$c" "$o" else echo "→ Candidate don't have the same bit map as original, skipping!" fi @@ -82,22 +125,9 @@ do prog=$(mktemp --suffix .jpg) jpegtran -copy all -progressive "$image" > "$prog" echo "→ Progressive done" - - optz=$(mktemp --suffix .jpg) - jpegtran -copy all -optimize "$image" > "$optz" - echo "→ Optimize done" - progs=$(wc -c "$prog" | cut -d' ' -f1) - optzs=$(wc -c "$optz" | cut -d' ' -f1) - if [[ $progs -le $optzs ]]; then - echo "→ Using progressive" - replaceImg "$prog" "$image" - rm "$optz" - else - echo "→ Using optimized" - replaceImg "$optz" "$image" - rm "$prog" - fi + replace "$prog" "$image" + done <<< "$(find "$dir" -type f -iregex ".+.jpe?g$")" @@ -109,10 +139,10 @@ do temp=$(mktemp --suffix .png) cp "$image" "$temp" - optipng -o7 -quiet "$temp" + optipng -quiet "$temp" echo "→ Optimize done" - replaceImg "$temp" "$image" + replace "$temp" "$image" done <<< "$(find "$dir" -type f -iname "*.png")" From cbf17316328d4527af0cb17036941d9ca43214ed Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Mon, 22 Jan 2018 08:29:43 +0100 Subject: [PATCH 10/10] arch-kexec --- bashrc | 3 +++ bower | 1 + cargo | 1 + config/i3/config | 5 +++++ gem | 1 + go | 1 + m2 | 1 + npm | 1 + nv | 1 + scripts/arch-kexec | 3 +++ scripts/heavyPackages | 10 ++++++++++ vimpcrc | 7 +++++++ 12 files changed, 35 insertions(+) create mode 120000 bower create mode 120000 cargo create mode 120000 gem create mode 120000 go create mode 120000 m2 create mode 120000 npm create mode 120000 nv create mode 100755 scripts/arch-kexec create mode 100755 scripts/heavyPackages create mode 100644 vimpcrc diff --git a/bashrc b/bashrc index 8cfddc5..15fcf20 100644 --- a/bashrc +++ b/bashrc @@ -46,6 +46,9 @@ alias pacman='pacman --color auto' alias dmesg='dmesg --ctime' # Frequent mistakes +alias sl=ls +alias al=la +alias mdkir=mkdir alias systemclt=systemctl # Shortcuts for commonly used commands diff --git a/bower b/bower new file mode 120000 index 0000000..2176c40 --- /dev/null +++ b/bower @@ -0,0 +1 @@ +.cache/bower \ No newline at end of file diff --git a/cargo b/cargo new file mode 120000 index 0000000..b8adac1 --- /dev/null +++ b/cargo @@ -0,0 +1 @@ +.cache/cargo \ No newline at end of file diff --git a/config/i3/config b/config/i3/config index 774c3fe..04ffddd 100644 --- a/config/i3/config +++ b/config/i3/config @@ -145,14 +145,19 @@ set $WS10 10 # Workspace output workspace "$WS1" output LVDS1 workspace "$WS2" output VGA1 +workspace "$WS2" output HDMI1 workspace "$WS3" output LVDS1 workspace "$WS4" output VGA1 +workspace "$WS4" output HDMI1 workspace "$WS5" output LVDS1 workspace "$WS6" output VGA1 +workspace "$WS6" output HDMI1 workspace "$WS7" output LVDS1 workspace "$WS8" output VGA1 +workspace "$WS8" output HDMI1 workspace "$WS9" output LVDS1 workspace "$WS10" output VGA1 +workspace "$WS10" output HDMI1 # switch to workspace bindsym $mod+1 workspace $WS1 diff --git a/gem b/gem new file mode 120000 index 0000000..23390de --- /dev/null +++ b/gem @@ -0,0 +1 @@ +.cache/gem \ No newline at end of file diff --git a/go b/go new file mode 120000 index 0000000..3f37a1f --- /dev/null +++ b/go @@ -0,0 +1 @@ +.cache/go \ No newline at end of file diff --git a/m2 b/m2 new file mode 120000 index 0000000..6897d10 --- /dev/null +++ b/m2 @@ -0,0 +1 @@ +.cache/m2 \ No newline at end of file diff --git a/npm b/npm new file mode 120000 index 0000000..47f1d63 --- /dev/null +++ b/npm @@ -0,0 +1 @@ +.cache/npm \ No newline at end of file diff --git a/nv b/nv new file mode 120000 index 0000000..7392898 --- /dev/null +++ b/nv @@ -0,0 +1 @@ +.cache/nv \ No newline at end of file diff --git a/scripts/arch-kexec b/scripts/arch-kexec new file mode 100755 index 0000000..b65004e --- /dev/null +++ b/scripts/arch-kexec @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +sudo kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdlin +sudo systemctl kexec diff --git a/scripts/heavyPackages b/scripts/heavyPackages new file mode 100755 index 0000000..8235b61 --- /dev/null +++ b/scripts/heavyPackages @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# Return a list of packages sorted by size + +(echo PACKAGE SIZE; \ + for A in /var/lib/pacman/local/*/desc; do + (sed -n 2p $A; (grep '^%SIZE%$' $A -A1 | tail -1)) | tr '\n' ' '; echo + done \ + | sort -nrk2) \ +| column -t diff --git a/vimpcrc b/vimpcrc new file mode 100644 index 0000000..97f442c --- /dev/null +++ b/vimpcrc @@ -0,0 +1,7 @@ +map FF :browsegg/ +map à :set add nexta:set add end +map @ :set add nexta:set add end:next +map ° D:browseA:shuffle:play:playlist +set songformat {%a - %b: %t}|{%f}$E$R $H[$H%l$H]$H +set libraryformat %n \| {%t}|{%f}$E$R $H[$H%l$H]$H +set ignorecase