mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
Merge remote-tracking branch 'origin/master' into surface-docked
This commit is contained in:
commit
a394c223c9
30
.Xresources
30
.Xresources
@ -61,12 +61,18 @@ urxvt*highlightSelection: true
|
||||
urxvt*colorMode: on
|
||||
|
||||
! black
|
||||
*.color0: #263238
|
||||
*.color8: #37474f
|
||||
*.color0: #333638
|
||||
|
||||
!white
|
||||
*.color15: #eceff1
|
||||
|
||||
! gray
|
||||
*.color7: #8b9396
|
||||
*.color8: #475760
|
||||
|
||||
! red
|
||||
*.color1: #ff9800
|
||||
*.color9: #ffa74d
|
||||
*.color1: #ff3f00
|
||||
*.color9: #ef5345
|
||||
|
||||
! green
|
||||
*.color2: #8bc34a
|
||||
@ -77,20 +83,16 @@ urxvt*colorMode: on
|
||||
*.color11: #ffa000
|
||||
|
||||
! blue
|
||||
*.color4: #03a9f4
|
||||
*.color12: #81d4fa
|
||||
*.color4: #0266f4
|
||||
*.color12: #3f86da
|
||||
|
||||
! magenta
|
||||
*.color5: #e91e63
|
||||
*.color13: #A56ECC
|
||||
*.color5: #cc17cc
|
||||
*.color13: #a56ecC
|
||||
|
||||
! cyan
|
||||
*.color6: #009688
|
||||
*.color14: #26a69a
|
||||
|
||||
! white
|
||||
*.color7: #cfd8dc
|
||||
*.color15: #eceff1
|
||||
*.color6: #10aeba
|
||||
*.color14: #5ddae2
|
||||
|
||||
|
||||
!-----------------------------
|
||||
|
@ -1,2 +0,0 @@
|
||||
[Qt]
|
||||
style=GTK+
|
@ -29,7 +29,7 @@ alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasin
|
||||
#inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity.
|
||||
inactive-opacity-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ];
|
||||
blur-background = true; # Blur background of transparent windows.
|
||||
blur-background-exclude = [ "class_g = 'Peek'" ];
|
||||
blur-background-exclude = [ "class_g = 'Peek'", "class_g = 'Onboard'", "class_g = 'slop'" ];
|
||||
blur-background-frame = false; # Blur background of opaque windows with transparent
|
||||
# frames as well.
|
||||
blur-background-fixed = true; # Do not let blur radius adjust based on window opacity.
|
||||
@ -51,7 +51,7 @@ backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typical
|
||||
# much faster but depends on a sane driver.
|
||||
mark-wmwin-focused = true; # Try to detect WM windows and mark them as active.
|
||||
mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus).
|
||||
use-ewmh-active-win = false; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused
|
||||
use-ewmh-active-win = true; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused
|
||||
# instead of using FocusIn/Out events. Usually more reliable but
|
||||
# depends on a EWMH-compliant WM.
|
||||
detect-rounded-corners = false; # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
|
||||
|
@ -11,7 +11,7 @@
|
||||
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
|
||||
# If markup is not allowed, those tags will be stripped out of the
|
||||
# message.
|
||||
allow_markup = yes
|
||||
markup = yes
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
@ -143,15 +143,14 @@
|
||||
# Browser for opening urls in context menu.
|
||||
browser = /usr/bin/chromium
|
||||
|
||||
# Align icons left/right/off
|
||||
icon_position = left
|
||||
# Align icons left/right/off
|
||||
icon_position = off
|
||||
|
||||
# Paths to default icons.
|
||||
icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
||||
|
||||
[frame]
|
||||
width = 3
|
||||
color = "#404552"
|
||||
frame_width = 3
|
||||
frame_color = "#404552"
|
||||
|
||||
[shortcuts]
|
||||
|
||||
|
@ -1,24 +1,41 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||
<fontconfig>
|
||||
<alias>
|
||||
<family>serif</family>
|
||||
<prefer>
|
||||
<family>Noto Serif</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans-serif</family>
|
||||
<prefer>
|
||||
<family>Noto Sans</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>monospace</family>
|
||||
<prefer>
|
||||
<family>Sauce Code Pro</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<match>
|
||||
<test name="family">
|
||||
<string>sans-serif</string>
|
||||
</test>
|
||||
<edit name="family" mode="prepend" binding="weak">
|
||||
<string>Noto Sans</string>
|
||||
<string>Noto Color Emoji</string>
|
||||
</edit>
|
||||
</match>
|
||||
<match>
|
||||
<test name="family">
|
||||
<string>serif</string>
|
||||
</test>
|
||||
<edit name="family" mode="prepend" binding="weak">
|
||||
<string>Noto Serif</string>
|
||||
<string>Noto Color Emoji</string>
|
||||
</edit>
|
||||
</match>
|
||||
<match>
|
||||
<test name="family">
|
||||
<string>monospace</string>
|
||||
</test>
|
||||
<edit name="family" mode="prepend" binding="weak">
|
||||
<string>Sauce Code Pro</string>
|
||||
<string>Noto Color Emoji</string>
|
||||
</edit>
|
||||
</match>
|
||||
<match>
|
||||
<test name="family">
|
||||
<string>Apple Color Emoji</string>
|
||||
</test>
|
||||
<edit name="family" mode="prepend" binding="weak">
|
||||
<string>Noto Color Emoji</string>
|
||||
</edit>
|
||||
</match>
|
||||
<match target="font">
|
||||
<edit name="hintstyle" mode="assign">
|
||||
<const>hintfull</const>
|
||||
|
@ -2,13 +2,13 @@
|
||||
name = Joe Groocock
|
||||
email = frebib@gmail.com
|
||||
signingkey = CFBB6A86
|
||||
|
||||
[commit]
|
||||
gpgsign = true
|
||||
gpgsign = true
|
||||
[color]
|
||||
ui = auto
|
||||
[alias]
|
||||
verbs = !git log --pretty=format:'%s' | cut -d \" \" -f 1 | sort | uniq -c | sort -nr
|
||||
verbs = !git log --pretty=format:'%s' | cut -d \" \" -f 1 | sort | uniq -c | sort -nr
|
||||
pushall = !git remote | xargs -L1 git push
|
||||
[rebase]
|
||||
autoStash = true
|
||||
[push]
|
||||
@ -20,3 +20,13 @@
|
||||
rebase = true
|
||||
[core]
|
||||
autocrlf = input
|
||||
excludesfile = /home/frebib/.config/git/gitignore
|
||||
[diff]
|
||||
algorithm = patience
|
||||
[sendemail]
|
||||
from = Joe Groocock <frebib@gmail.com>
|
||||
smtpserver = smtp.gmail.com
|
||||
smtpuser = frebib@gmail.com
|
||||
smtpencryption = tls
|
||||
smtpserverport = 587
|
||||
suppresscc = self
|
||||
|
2
.config/git/gitignore
Normal file
2
.config/git/gitignore
Normal file
@ -0,0 +1,2 @@
|
||||
.idea/
|
||||
cmake-build-*/
|
@ -1,5 +1,5 @@
|
||||
VteTerminal,
|
||||
TerminalScreen,
|
||||
vte-terminal {
|
||||
padding: 4px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
@ -41,15 +41,14 @@ separator_block_width=12
|
||||
#interval=persist
|
||||
|
||||
[volume]
|
||||
instance=Master
|
||||
interval=10
|
||||
interval=persist
|
||||
signal=10
|
||||
|
||||
[separator]
|
||||
|
||||
[iface]
|
||||
label=
|
||||
interval=300
|
||||
interval=60
|
||||
signal=15
|
||||
|
||||
[separator]
|
||||
@ -57,12 +56,13 @@ signal=15
|
||||
[updates]
|
||||
label=
|
||||
interval=600
|
||||
signal=5
|
||||
|
||||
[separator]
|
||||
|
||||
[cpu_usage]
|
||||
label=
|
||||
interval=2
|
||||
interval=persist
|
||||
|
||||
[separator]
|
||||
|
||||
|
@ -1,53 +1,31 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
|
||||
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
|
||||
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
|
||||
#
|
||||
# Licensed under the terms of the GNU GPL v3, or any later version.
|
||||
#!/bin/bash
|
||||
# by Paul Colby (http://colby.id.au), no rights reserved ;)
|
||||
# https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use utf8;
|
||||
use Getopt::Long;
|
||||
PREV_TOTAL=0
|
||||
PREV_IDLE=0
|
||||
|
||||
# default values
|
||||
my $t_warn = 50;
|
||||
my $t_crit = 80;
|
||||
my $cpu_usage = -1;
|
||||
while true; do
|
||||
# Get the total CPU statistics, discarding the 'cpu ' prefix.
|
||||
CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
|
||||
IDLE=${CPU[3]} # Just the idle CPU time.
|
||||
|
||||
sub help {
|
||||
print "Usage: cpu_usage [-w <warning>] [-c <critical>]\n";
|
||||
print "-w <percent>: warning threshold to become yellow\n";
|
||||
print "-c <percent>: critical threshold to become red\n";
|
||||
exit 0;
|
||||
}
|
||||
# Calculate the total CPU time.
|
||||
TOTAL=0
|
||||
for VALUE in "${CPU[@]}"; do
|
||||
let "TOTAL=$TOTAL+$VALUE"
|
||||
done
|
||||
|
||||
GetOptions("help|h" => \&help,
|
||||
"w=i" => \$t_warn,
|
||||
"c=i" => \$t_crit);
|
||||
# Calculate the CPU usage since we last checked.
|
||||
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
|
||||
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
|
||||
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
|
||||
echo -e "$DIFF_USAGE%\n$DIFF_USAGE%"
|
||||
|
||||
# Get CPU usage
|
||||
$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is
|
||||
open (MPSTAT, 'mpstat 1 1 |') or die 'Cannot run mpstat';
|
||||
while (<MPSTAT>) {
|
||||
if (/^.*\s+(\d+\.\d+)\s+$/) {
|
||||
$cpu_usage = 100 - $1; # 100% - %idle
|
||||
last;
|
||||
}
|
||||
}
|
||||
close(MPSTAT);
|
||||
# Remember the total and idle CPU times for the next check.
|
||||
PREV_TOTAL="$TOTAL"
|
||||
PREV_IDLE="$IDLE"
|
||||
|
||||
#$cpu_usage eq -1 and die 'Can\'t find CPU information';
|
||||
|
||||
# Print short_text, full_text
|
||||
printf "%.0f%%\n"x2, $cpu_usage;
|
||||
|
||||
# Print color, if needed
|
||||
if ($cpu_usage >= $t_crit) {
|
||||
print "#FF0000\n";
|
||||
} elsif ($cpu_usage >= $t_warn) {
|
||||
print "#FFCB00\n";
|
||||
}
|
||||
|
||||
exit 0;
|
||||
# Wait before checking again.
|
||||
sleep 1
|
||||
done
|
||||
|
@ -51,6 +51,6 @@ LOCIP=$(ip addr show $IF | perl -n -e "/$AF ([^\/]+).* scope global/ && print \$
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) echo $(curl -s http://whatismijnip.nl | cut -d " " -f 5);;
|
||||
1) curl -s https://api.ipify.org;;
|
||||
*) echo "$LOCIP";;
|
||||
esac
|
||||
|
@ -1,13 +1,31 @@
|
||||
#!/bin/python2
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
import commands
|
||||
import os
|
||||
for p in pacaur yaourt pacman; do
|
||||
if $p --version &>/dev/null; then
|
||||
PAC="$p"
|
||||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
button = os.environ.get('BLOCK_BUTTON')
|
||||
if button == '1':
|
||||
os.system("i3-sensible-terminal -r i3blocks-update-term -e 'pacaur -Syu'")
|
||||
if [ -z "$PAC" ]; then
|
||||
>&2 echo "Error: No Arch package manager found?"
|
||||
fi
|
||||
|
||||
updates = commands.getstatusoutput("/usr/bin/checkupdates | wc -l")[1]
|
||||
if updates and updates != '0':
|
||||
print updates
|
||||
print updates
|
||||
if [ "$BLOCK_BUTTON" == 1 ]; then
|
||||
nohup i3-sensible-terminal -r i3blocks-update-term -e "sh -c '$PAC -Syu; pkill -RTMIN+5 i3blocks'" &>/dev/null &
|
||||
disown
|
||||
fi
|
||||
|
||||
if [ $p = "pacman" ]; then
|
||||
exec 3< <(checkupdates)
|
||||
else
|
||||
exec 3< <({ checkupdates & cower -u & })
|
||||
fi
|
||||
|
||||
count="$(wc -l <&3)"
|
||||
|
||||
if [ -n "$count" -a "$count" -gt 0 ]; then
|
||||
echo $count
|
||||
echo $count
|
||||
fi
|
||||
|
@ -1,93 +1,182 @@
|
||||
#!/bin/bash
|
||||
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
|
||||
# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
|
||||
# Displays the default device, volume, and mute status for i3blocks
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
AUDIO_HIGH_SYMBOL=' '
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
AUDIO_MED_THRESH=59
|
||||
AUDIO_MED_SYMBOL=' '
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
AUDIO_LOW_THRESH=0
|
||||
AUDIO_LOW_SYMBOL=' '
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
AUDIO_MUTED_SYMBOL='X'
|
||||
|
||||
# The second parameter overrides the mixer selection
|
||||
# For PulseAudio users, use "pulse"
|
||||
# For Jack/Jack2 users, use "jackplug"
|
||||
# For ALSA users, you may use "default" for your primary card
|
||||
# or you may use hw:# where # is the number of the card desired
|
||||
MIXER="default"
|
||||
[ -n "$(lsmod | grep pulse)" ] && MIXER="pulse"
|
||||
[ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
|
||||
MIXER="${2:-$MIXER}"
|
||||
AUDIO_INTERVAL=5
|
||||
|
||||
# The instance option sets the control to report and configure
|
||||
# This defaults to the first control of your selected mixer
|
||||
# For a list of the available, use `amixer -D $Your_Mixer scontrols`
|
||||
SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
|
||||
sed -n "s/Simple mixer control '\([A-Za-z ]*\)',0/\1/p" |
|
||||
head -n1
|
||||
)}"
|
||||
DEFAULT_COLOR="#ffffff"
|
||||
MUTED_COLOR="#a0a0a0"
|
||||
|
||||
# The first parameter sets the step to change the volume by (and units to display)
|
||||
# This may be in in % or dB (eg. 5% or 3dB)
|
||||
STEP="${1:-2%}"
|
||||
LONG_FORMAT=0
|
||||
SHORT_FORMAT=3
|
||||
USE_PERCENT=0
|
||||
USE_ALSA_NAME=0
|
||||
USE_DESCRIPTION=0
|
||||
|
||||
SUBSCRIBE=1
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
while getopts F:Sf:padH:M:L:X:T:t:C:c:i:m:s:h opt; do
|
||||
case "$opt" in
|
||||
S) SUBSCRIBE=1 ;;
|
||||
F) LONG_FORMAT="$OPTARG" ;;
|
||||
f) SHORT_FORMAT="$OPTARG" ;;
|
||||
p) USE_PERCENT=0 ;;
|
||||
a) USE_ALSA_NAME=1 ;;
|
||||
d) USE_DESCRIPTION=1 ;;
|
||||
H) AUDIO_HIGH_SYMBOL="$OPTARG" ;;
|
||||
M) AUDIO_MED_SYMBOL="$OPTARG" ;;
|
||||
L) AUDIO_LOW_SYMBOL="$OPTARG" ;;
|
||||
X) AUDIO_MUTED_SYMBOL="$OPTARG" ;;
|
||||
T) AUDIO_MED_THRESH="$OPTARG" ;;
|
||||
t) AUDIO_LOW_THRESH="$OPTARG" ;;
|
||||
C) DEFAULT_COLOR="$OPTARG" ;;
|
||||
c) MUTED_COLOR="$OPTARG" ;;
|
||||
i) AUDIO_INTERVAL="$OPTARG" ;;
|
||||
m) MIXER="$OPTARG" ;;
|
||||
s) SCONTROL="$OPTARG" ;;
|
||||
h) printf \
|
||||
"Usage: volume-pulseaudio [-S] [-F format] [-f format] [-p] [-a|-d] [-H symb] [-M symb]
|
||||
[-L symb] [-X symb] [-T thresh] [-t thresh] [-C color] [-c color] [-i inter]
|
||||
[-m mixer] [-s scontrol] [-h]
|
||||
Options:
|
||||
-F, -f\tOutput format (-F long format, -f short format) to use, amongst:
|
||||
\t0\t symb vol [index:name]\t (default long)
|
||||
\t1\t symb vol [name]
|
||||
\t2\t symb vol [index]\t (default short)
|
||||
\t3\t symb vol
|
||||
-S\tSubscribe to volume events (requires persistent block, always uses long format)
|
||||
-p\tOmit the percent sign (%%) in volume
|
||||
-a\tUse ALSA name if possible
|
||||
-d\tUse device description instead of name if possible
|
||||
-H\tSymbol to use when audio level is high. Default: '$AUDIO_HIGH_SYMBOL'
|
||||
-M\tSymbol to use when audio level is medium. Default: '$AUDIO_MED_SYMBOL'
|
||||
-L\tSymbol to use when audio level is low. Default: '$AUDIO_LOW_SYMBOL'
|
||||
-X\tSymbol to use when audio is muted. Default: '$AUDIO_MUTED_SYMBOL'
|
||||
-T\tThreshold for medium audio level. Default: $AUDIO_MED_THRESH
|
||||
-t\tThreshold for low audio level. Default: $AUDIO_LOW_THRESH
|
||||
-C\tColor for non-muted audio. Default: $DEFAULT_COLOR
|
||||
-c\tColor for muted audio. Default: $MUTED_COLOR
|
||||
-i\tInterval size of volume increase/decrease. Default: $AUDIO_INTERVAL
|
||||
-m\tUse the given mixer.
|
||||
-s\tUse the given scontrol.
|
||||
-h\tShow this help text
|
||||
" && exit 0;;
|
||||
esac
|
||||
done
|
||||
|
||||
capability() { # Return "Capture" if the device is a capture device
|
||||
amixer -D $MIXER get $SCONTROL |
|
||||
sed -n "s/ Capabilities:.*cvolume.*/Capture/p"
|
||||
}
|
||||
|
||||
volume() {
|
||||
amixer -D $MIXER get $SCONTROL $(capability)
|
||||
}
|
||||
|
||||
format() {
|
||||
perl_filter='if (/.*\[(\d+)%\] (\[(-?\d+.\d+)dB\] )?\[(on|off)\]/)'
|
||||
perl_filter+='{CORE::say $4 eq "off" ? "-1" : "'
|
||||
perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1')
|
||||
perl_filter+='"; exit}'
|
||||
perl -ne "$perl_filter"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
case $BLOCK_BUTTON in
|
||||
1) pavucontrol &>/dev/null &;;
|
||||
2) ~/.config/i3/cycleaudio.py;;
|
||||
3) amixer -q -D $MIXER sset $SCONTROL $(capability) toggle ;; # right click, mute/unmute
|
||||
4) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;; # scroll up, increase
|
||||
5) amixer -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;; # scroll down, decrease
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
VOL=$(volume | format)
|
||||
|
||||
ACTIVE=$(pacmd list-sinks | grep '* index' | awk -F": " '{print $2}')
|
||||
|
||||
if pactl list short sinks | grep -q \^$ACTIVE".*Yeti"; then
|
||||
printf ""
|
||||
elif pactl list short sinks | grep -q \^$ACTIVE".*bluez"; then
|
||||
printf " "
|
||||
elif [ "$VOL" -eq -1 ]; then
|
||||
printf "X"
|
||||
exit 0
|
||||
elif [ "$VOL" -eq 0 ]; then
|
||||
printf ""
|
||||
elif [ "$VOL" -gt 59 ]; then
|
||||
printf ""
|
||||
else
|
||||
printf ""
|
||||
if [[ -z "$MIXER" ]] ; then
|
||||
MIXER="default"
|
||||
if amixer -D pulse info >/dev/null 2>&1 ; then
|
||||
MIXER="pulse"
|
||||
fi
|
||||
fi
|
||||
|
||||
printf " $VOL"
|
||||
if [[ -z "$SCONTROL" ]] ; then
|
||||
SCONTROL=$(amixer -D "$MIXER" scontrols | sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | head -n1)
|
||||
fi
|
||||
|
||||
CAPABILITY=$(amixer -D $MIXER get $SCONTROL | sed -n "s/ Capabilities:.*cvolume.*/Capture/p")
|
||||
|
||||
|
||||
function move_sinks_to_new_default {
|
||||
DEFAULT_SINK=$1
|
||||
pacmd list-sink-inputs | grep index: | grep -o '[0-9]\+' | while read SINK
|
||||
do
|
||||
pacmd move-sink-input $SINK $DEFAULT_SINK
|
||||
done
|
||||
}
|
||||
|
||||
function set_default_playback_device_next {
|
||||
inc=${1:-1}
|
||||
num_devices=$(pacmd list-sinks | grep -c index:)
|
||||
sink_arr=($(pacmd list-sinks | grep index: | grep -o '[0-9]\+'))
|
||||
default_sink_index=$(( $(pacmd list-sinks | grep index: | grep -no '*' | grep -o '^[0-9]\+') - 1 ))
|
||||
default_sink_index=$(( ($default_sink_index + $num_devices + $inc) % $num_devices ))
|
||||
default_sink=${sink_arr[$default_sink_index]}
|
||||
pacmd set-default-sink $default_sink
|
||||
move_sinks_to_new_default $default_sink
|
||||
}
|
||||
|
||||
case "$BLOCK_BUTTON" in
|
||||
1) set_default_playback_device_next ;;
|
||||
2) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY toggle ;;
|
||||
3) set_default_playback_device_next -1 ;;
|
||||
4) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%+ ;;
|
||||
5) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%- ;;
|
||||
esac
|
||||
|
||||
function print_format {
|
||||
PERCENT="%"
|
||||
[[ $USE_PERCENT == 0 ]] && PERCENT=""
|
||||
case "$1" in
|
||||
1) echo "$SYMBOL$VOL$PERCENT [$NAME]" ;;
|
||||
2) echo "$SYMBOL$VOL$PERCENT [$INDEX]";;
|
||||
3) echo "$SYMBOL$VOL$PERCENT" ;;
|
||||
*) echo "$SYMBOL$VOL$PERCENT [$INDEX:$NAME]" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
function print_block {
|
||||
for name in INDEX NAME VOL MUTED; do
|
||||
read $name
|
||||
done < <(pacmd list-sinks | grep "index:\|name:\|volume: front\|muted:" | grep -A3 '*')
|
||||
INDEX=$(echo "$INDEX" | grep -o '[0-9]\+')
|
||||
VOL=$(echo "$VOL" | grep -o "[0-9]*%" | head -1 )
|
||||
VOL="${VOL%?}"
|
||||
|
||||
NAME=$(echo "$NAME" | sed \
|
||||
's/.*<.*\.\(.*\)>.*/\1/; t;'\
|
||||
's/.*<\(.*\)>.*/\1/; t;'\
|
||||
's/.*/unknown/')
|
||||
|
||||
if [[ $USE_ALSA_NAME == 1 ]] ; then
|
||||
ALSA_NAME=$(pacmd list-sinks |\
|
||||
awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
|
||||
grep "alsa.name\|alsa.mixer_name" |\
|
||||
head -n1 |\
|
||||
sed 's/.*= "\(.*\)".*/\1/')
|
||||
NAME=${ALSA_NAME:-$NAME}
|
||||
elif [[ $USE_DESCRIPTION == 1 ]] ; then
|
||||
DESCRIPTION=$(pacmd list-sinks |\
|
||||
awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
|
||||
grep "device.description" |\
|
||||
head -n1 |\
|
||||
sed 's/.*= "\(.*\)".*/\1/')
|
||||
NAME=${DESCRIPTION:-$NAME}
|
||||
fi
|
||||
|
||||
if [[ $MUTED =~ "no" ]] ; then
|
||||
SYMBOL=$AUDIO_HIGH_SYMBOL
|
||||
[[ $VOL -le $AUDIO_MED_THRESH ]] && SYMBOL=$AUDIO_MED_SYMBOL
|
||||
[[ $VOL -le $AUDIO_LOW_THRESH ]] && SYMBOL=$AUDIO_LOW_SYMBOL
|
||||
COLOR=$DEFAULT_COLOR
|
||||
else
|
||||
SYMBOL=$AUDIO_MUTED_SYMBOL
|
||||
COLOR=$MUTED_COLOR
|
||||
VOL=""
|
||||
fi
|
||||
|
||||
# if [[ $SUBSCRIBE == 1 ]] ; then
|
||||
# print_format "$LONG_FORMAT"
|
||||
# else
|
||||
# print_format "$LONG_FORMAT"
|
||||
print_format "$SHORT_FORMAT"
|
||||
# echo "$COLOR"
|
||||
# fi
|
||||
}
|
||||
|
||||
print_block
|
||||
if [[ $SUBSCRIBE == 1 ]] ; then
|
||||
while read -r EVENT; do
|
||||
print_block
|
||||
done < <(pactl subscribe | stdbuf -oL grep change)
|
||||
fi
|
||||
|
@ -118,12 +118,14 @@ bar {
|
||||
}
|
||||
|
||||
# Window rules
|
||||
for_window [class="Pinentry"] floating enable
|
||||
for_window [class="Pavucontrol"] floating enable
|
||||
for_window [class="Blueman-manager"] floating enable
|
||||
for_window [window_role="floating-term"] floating enable
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="i3blocks-update-term"] floating enable
|
||||
for_window [window_role="i3blocks-clock-term"] floating enable
|
||||
for_window [title="rofi"] floating enable
|
||||
for_window [title="^rofi$"] floating enable
|
||||
|
||||
new_window pixel 5
|
||||
new_float none
|
||||
@ -136,7 +138,7 @@ focus_follows_mouse yes
|
||||
|
||||
# keybindings
|
||||
bindsym $mod+Shift+j reload
|
||||
bindsym $mod+Shift+p restart
|
||||
#bindsym $mod+Shift+p restart
|
||||
bindsym $mod+c exec chromium
|
||||
bindsym $mod+v exec "i3-sensible-terminal -e \\"$SHELL -c vim;$SHELL\\"
|
||||
bindsym $mod+Ctrl+v exec "i3-sensible-terminal -r floating-term -e \\"$SHELL -c vim;$SHELL\\"
|
||||
@ -148,10 +150,12 @@ bindsym $mod+Ctrl+Shift+Return exec i3-sensible-terminal -r floating-term --ge
|
||||
bindsym $mod+l exec ~/.config/i3/lock.sh
|
||||
# -fg "#CCD3DAE3" -bg "#CC383C4A" -hlbg "#CC5294E2"
|
||||
bindsym $mod+space exec "pkill rofi; rofi -show run -sidebar-mode -terminal i3-sensible-terminal -normal-window"
|
||||
bindsym $mod+Shift+p exec rofi-pass
|
||||
bindsym $mod+Shift+e exec rofi-emoji
|
||||
bindsym --release Print exec imgur-screenshot
|
||||
bindsym --release $mod+Print exec imgur-screenshot -f
|
||||
bindsym $mod+Mod1+space exec --no-startup-id ~/.config/i3/cycleaudio.py && pkill -RTMIN+10 i3blocks
|
||||
bindsym $mod+numbersign exec notify-send "$(xclip -o | gpg --decrypt 2>&1)"
|
||||
bindsym $mod+numbersign exec "termite -e 'sh -c xclip\ -o\ |\ gpg\ --decrypt\ 2>&1\ &&\ read'"
|
||||
bindsym $mod+g exec "LINK=$(gist -PRpc); notify-send -c transfer \\"<a href=\\\\"$LINK\\\\">$LINK</a>\\""
|
||||
|
||||
# Media player controls
|
||||
@ -160,30 +164,29 @@ bindsym XF86AudioPause exec --no-startup-id mpc pause
|
||||
bindsym XF86AudioStop exec --no-startup-id mpc stop
|
||||
bindsym XF86AudioNext exec --no-startup-id mpc next
|
||||
bindsym XF86AudioPrev exec --no-startup-id mpc previous
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +2% && pkill -RTMIN+10 i3blocks
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -2% && pkill -RTMIN+10 i3blocks
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && pkill -RTMIN+10 i3blocks
|
||||
exec --no-startup-id "ip monitor | while read line; do pkill -RTMIN+15 i3blocks; done"
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1000
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1000
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
bindsym XF86MonBrightnessUp exec xbacklight -inc 5 && pkill -RTMIN+12 i3blocks
|
||||
bindsym XF86MonBrightnessDown exec xbacklight -dec 5 && pkill -RTMIN+12 i3blocks
|
||||
exec --no-startup-id "ip monitor | while read; do pkill -RTMIN+15 i3blocks; done"
|
||||
|
||||
# app launch shortcuts
|
||||
exec --no-startup-id ~/.fehbg
|
||||
exec --no-startup-id ~/.config/i3/disable-standby-fs.py
|
||||
exec xautolock -time 5 -locker ~/.config/i3/lock.sh
|
||||
exec --no-startup-id xautolock -time 5 -locker ~/.config/i3/lock.sh -nocloseout -nocloseerr
|
||||
|
||||
# startup programs
|
||||
exec --no-startup-id pulseaudio
|
||||
exec --no-startup-id dropbox
|
||||
exec --no-startup-id insync start
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id nextcloud
|
||||
exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id redshift
|
||||
exec --no-startup-id xbindkeys
|
||||
exec --no-startup-id onboard
|
||||
exec --no-startup-id ~/.local/share/surface-scripts/rotationd
|
||||
exec --no-startup-id compton -b --config ~/.config/compton.conf
|
||||
exec --no-startup-id chromium --no-startup-window
|
||||
|
||||
exec i3-msg 'workspace 1; exec sleep 2 && chromium'
|
||||
exec i3-msg 'workspace 2; exec i3-sensible-terminal'
|
||||
exec i3-msg 'workspace 3; exec sleep 2 && chromium'
|
||||
|
||||
# vim:ft=i3
|
||||
|
12
.config/i3/disable-standby-fs.py
Normal file → Executable file
12
.config/i3/disable-standby-fs.py
Normal file → Executable file
@ -16,16 +16,16 @@ args = parser.parse_args()
|
||||
|
||||
def on_fullscreen_mode(i3, e):
|
||||
if e.container.props.fullscreen_mode:
|
||||
call(['xset', 's', 'off'])
|
||||
call(['xset', '-dpms'])
|
||||
call(['xautolock', '-disable'])
|
||||
print("disabling autolock")
|
||||
else:
|
||||
call(['xset', 's', 'on'])
|
||||
call(['xset', '+dpms'])
|
||||
call(['xautolock', '-enable'])
|
||||
print("enabling autolock")
|
||||
|
||||
def on_window_close(i3, e):
|
||||
if e.container.props.fullscreen_mode:
|
||||
call(['xset', 's', 'on'])
|
||||
call(['xset', '+dpms'])
|
||||
call(['xautolock', '-enable'])
|
||||
print("enabling autolock")
|
||||
|
||||
i3.on('window::fullscreen_mode', on_fullscreen_mode)
|
||||
i3.on('window::close', on_window_close)
|
||||
|
@ -5,9 +5,6 @@ tmpbg='/tmp/screen.png'
|
||||
|
||||
(( $# )) && { icon=$1; }
|
||||
|
||||
# screenshot
|
||||
scrot "$tmpbg"
|
||||
|
||||
PX=0
|
||||
PY=0
|
||||
# lockscreen image info
|
||||
@ -25,17 +22,19 @@ SROY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 3) # y offset
|
||||
PX=$(($SROX + $SRX/2 - $RX/2))
|
||||
PY=$(($SROY + $SRY/2 - $RY/2))
|
||||
|
||||
# screenshot, pixelise and overlay
|
||||
maim | convert - -scale 5% -scale 2000% $icon -geometry +$PX+$PY -composite -matte $tmpbg
|
||||
|
||||
# pixelize and add lock icon
|
||||
convert $tmpbg -scale 5% -scale 2000% $tmpbg
|
||||
convert $tmpbg $icon -geometry +$PX+$PY -composite -matte $tmpbg
|
||||
|
||||
playing=$(mpc status | grep playing | wc -l)
|
||||
[[ $playing == 1 ]] && mpc pause
|
||||
if command mpc 2>&1 1>/dev/null; then
|
||||
playing=$(mpc status | grep playing | wc -l)
|
||||
[[ $playing == 1 ]] && mpc pause
|
||||
fi
|
||||
|
||||
i3lock -i "$tmpbg" -n -e
|
||||
|
||||
[[ $playing == 1 ]] && mpc play
|
||||
if command mpc 2>&1 1>/dev/null; then
|
||||
[[ $playing == 1 ]] && mpc play
|
||||
fi
|
||||
|
||||
|
||||
rm "$tmpbg"
|
||||
|
@ -11,7 +11,7 @@ case $option in
|
||||
windows)
|
||||
windows=`efibootmgr | grep -Po -m1 'Boot\K(\d{4}).*Windows.*' | head -c4`
|
||||
sudo efibootmgr -n $windows
|
||||
reboot;;
|
||||
systemctl reboot;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
@ -1,11 +1,13 @@
|
||||
imgur_icon_path="$HOME/.config/imgur-screenshot/imgur.ico"
|
||||
imgur_acct_key=""
|
||||
imgur_secret=""
|
||||
login="false"
|
||||
log_file="$HOME/.config/imgur-screenshot/imgur-screenshot.log"
|
||||
credentials_file="$HOME/.config/imgur-screenshot/credentials.conf"
|
||||
file_name_format="scrot-%Y-%m-%d--%H:%M:%S.png" # when using scrot, must end with .png!
|
||||
file_name_format="screenshot-%Y-%m-%d-%H%M%S.png" # when using scrot, must end with .png!
|
||||
file_dir="$HOME/pictures/screenshots"
|
||||
screenshot_select_command="scrot -s %img"
|
||||
screenshot_window_command="scrot %img"
|
||||
screenshot_select_command="maim -m 10 -us %img"
|
||||
screenshot_window_command="maim -m 10 -uw %img"
|
||||
edit_command="gimp %img"
|
||||
edit="false"
|
||||
exit_on_selection_fail="true"
|
||||
|
@ -11,11 +11,15 @@ background = rgba(56, 60, 74, 0.95)
|
||||
highlight = #5294E2
|
||||
|
||||
# black
|
||||
color0 = #263238
|
||||
color8 = #37474f
|
||||
color0 = #333638
|
||||
# white
|
||||
color15 = #eceff1
|
||||
# gray
|
||||
color7 = #8b9396
|
||||
color8 = #475760
|
||||
# red
|
||||
color1 = #ff9800
|
||||
color9 = #ffa74d
|
||||
color1 = #ff3f00
|
||||
color9 = #ef5345
|
||||
# green
|
||||
color2 = #8bc34a
|
||||
color10 = #9ccc65
|
||||
@ -23,16 +27,13 @@ color10 = #9ccc65
|
||||
color3 = #ffc107
|
||||
color11 = #ffa000
|
||||
# blue
|
||||
color4 = #03a9f4
|
||||
color12 = #81d4fa
|
||||
color4 = #0266f4
|
||||
color12 = #81b3f9
|
||||
# magenta
|
||||
color5 = #e91e63
|
||||
color13 = #A56ECC
|
||||
color5 = #cc17cc
|
||||
color13 = #a56ecc
|
||||
# cyan
|
||||
color6 = #009688
|
||||
color14 = #26a69a
|
||||
# white
|
||||
color7 = #cfd8dc
|
||||
color15 = #eceff1
|
||||
color6 = #10aeba
|
||||
color14 = #5ddae2
|
||||
|
||||
# vim: ft=dosini cms=#%s
|
||||
|
@ -5,11 +5,11 @@
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/desktop"
|
||||
XDG_DESKTOP_DIR="$HOME/documents"
|
||||
XDG_DOCUMENTS_DIR="$HOME/documents"
|
||||
XDG_DOWNLOAD_DIR="$HOME/downloads"
|
||||
XDG_MUSIC_DIR="$HOME/music"
|
||||
XDG_PICTURES_DIR="$HOME/pictures"
|
||||
XDG_VIDEOS_DIR="$HOME/music"
|
||||
XDG_PUBLICSHARE_DIR="$HOME"
|
||||
XDG_TEMPLATES_DIR="$HOME/"
|
||||
XDG_TEMPLATES_DIR="$HOME"
|
||||
|
6
.config/vim/.gitignore
vendored
Normal file
6
.config/vim/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/bundle/
|
||||
/spell/
|
||||
/swapfiles/
|
||||
/viminfo
|
||||
/vim-latex
|
||||
/.netrwhist
|
@ -1,53 +1,84 @@
|
||||
set nocompatible " be iMproved, required
|
||||
|
||||
" Reconfigure Vim to be clean!
|
||||
set rtp+=~/.config/vim
|
||||
set directory=.,~/.config/vim
|
||||
set viminfo+=n~/.config/vim/viminfo
|
||||
set directory=$HOME/.config/vim/swapfiles//
|
||||
|
||||
syntax enable
|
||||
filetype plugin on
|
||||
|
||||
set tabstop=4
|
||||
set shiftwidth=0 " Use tabstop
|
||||
set softtabstop=-1 " Use tabstop
|
||||
set expandtab
|
||||
set smarttab
|
||||
set smartindent
|
||||
set number
|
||||
set linebreak
|
||||
set autoindent
|
||||
set laststatus=2
|
||||
set mouse=a
|
||||
set encoding=utf-8
|
||||
set background=dark
|
||||
set directory=$HOME/.vim/swapfiles//
|
||||
set omnifunc=syntaxcomplete#Complete
|
||||
set title
|
||||
set clipboard=unnamed
|
||||
set wildmenu
|
||||
set report=0
|
||||
set lazyredraw
|
||||
set ttyfast
|
||||
set autoread
|
||||
set showmatch
|
||||
set scrolloff=6
|
||||
set nojoinspaces
|
||||
|
||||
" Autosave settings
|
||||
set autowrite
|
||||
autocmd InsertLeave * save
|
||||
|
||||
" Search options
|
||||
set hlsearch
|
||||
set ignorecase
|
||||
set smartcase
|
||||
|
||||
" GVim settings
|
||||
set guifont=Sauce\ Code\ Pro\ 10.5
|
||||
set guioptions=
|
||||
|
||||
" Change to dvorak-mapped keys
|
||||
let g:use_dvorak = 1
|
||||
" Whitespace highlight settings
|
||||
set list
|
||||
set listchars=eol:$,space:.,tab:>-,trail:~,extends:>,precedes:<
|
||||
highlight SpecialKey ctermfg=7
|
||||
|
||||
|
||||
" set the runtime path to include Vundle and initialize
|
||||
set rtp+=~/.vim/bundle/Vundle.vim
|
||||
set rtp+=~/.config/vim/bundle/Vundle.vim
|
||||
call vundle#begin()
|
||||
call vundle#rc('~/.config/vim/bundle')
|
||||
|
||||
Plugin 'VundleVim/Vundle.vim'
|
||||
Plugin 'Valloric/YouCompleteMe'
|
||||
Plugin 'scrooloose/syntastic'
|
||||
Plugin 'tpope/vim-sensible'
|
||||
Plugin 'vim-scripts/vim-auto-save'
|
||||
Plugin 'tpope/vim-fugitive'
|
||||
Plugin 'tpope/vim-rhubarb'
|
||||
Plugin 'tpope/vim-abolish'
|
||||
Plugin 'airblade/vim-gitgutter'
|
||||
Plugin 'ryanoasis/vim-devicons'
|
||||
Plugin 'vim-airline/vim-airline'
|
||||
Plugin 'vim-airline/vim-airline-themes'
|
||||
Plugin 'PotatoesMaster/i3-vim-syntax'
|
||||
Plugin 'solarnz/thrift.vim'
|
||||
Plugin 'lervag/vimtex'
|
||||
Plugin 'JamshedVesuna/vim-markdown-preview'
|
||||
|
||||
call vundle#end()
|
||||
|
||||
let g:opamshare = substitute(system('opam config var share'),'\n$','','''')
|
||||
execute "set rtp+=" . g:opamshare . "/merlin/vim"
|
||||
execute "set rtp+=" . g:opamshare . "/vim/syntax/ocp-indent.vim"
|
||||
let g:syntastic_ocaml_checkers = ['merlin']
|
||||
let g:syntastic_ignore_files = ['\m\c.(mll|mly)$']
|
||||
set omnifunc=syntaxcomplete#Complete
|
||||
" Change to dvorak-mapped keys
|
||||
let g:use_dvorak = 1
|
||||
|
||||
" YouCompleteMe python fix
|
||||
let g:ycm_server_python_interpreter = '/usr/bin/python3'
|
||||
" YouCompleteMe config
|
||||
let g:ycm_confirm_extra_conf = 0
|
||||
|
||||
" Vim-Airline config
|
||||
let g:Powerline_symbols = 'fancy'
|
||||
@ -55,8 +86,17 @@ let g:airline_powerline_fonts = 1
|
||||
let g:airline_theme='solarized'
|
||||
let g:airline#extensions#tabline#enabled = 1
|
||||
|
||||
" vim-auto-save
|
||||
let g:auto_save = 1 " enable AutoSave on Vim startup
|
||||
" vim-markdown plugin
|
||||
let vim_markdown_preview_toggle=0
|
||||
let vim_markdown_preview_browser='Chromium'
|
||||
let vim_markdown_preview_use_xdg_open=1
|
||||
let vim_markdown_preview_github=1
|
||||
|
||||
|
||||
" Disable mouse
|
||||
set mouse=nicr
|
||||
nnoremap <LeftMouse> <nop>
|
||||
nnoremap <RightMouse> <nop>
|
||||
|
||||
let mapleader="\<space>"
|
||||
" Unbind arrow keys
|
||||
@ -108,10 +148,10 @@ if (exists("g:use_dvorak") && g:use_dvorak == 1)
|
||||
nnoremap <C-w><C-t> <C-w><C-k>
|
||||
nnoremap <C-w><C-n> <C-w><C-l>
|
||||
|
||||
"nnoremap <C-d> <C-w>h
|
||||
"nnoremap <C-h> <C-w>j
|
||||
"nnoremap <C-t> <C-w>k
|
||||
"nnoremap <C-n> <C-w>l
|
||||
nnoremap <C-d> <C-w>h
|
||||
nnoremap <C-h> <C-w>j
|
||||
nnoremap <C-t> <C-w>k
|
||||
nnoremap <C-n> <C-w>l
|
||||
|
||||
" Account for tag jumping
|
||||
nnoremap <C-j> <C-t>
|
||||
@ -122,7 +162,7 @@ if (exists("g:use_dvorak") && g:use_dvorak == 1)
|
||||
|
||||
" Remappings for the T key
|
||||
noremap j t
|
||||
noremap J T
|
||||
"noremap J T
|
||||
|
||||
" Remapping for the L key
|
||||
noremap l n
|
||||
@ -136,19 +176,14 @@ if (exists("g:use_dvorak") && g:use_dvorak == 1)
|
||||
noremap zh zj
|
||||
noremap zt zk
|
||||
|
||||
" Disable some default vimtex mappings that conflict with rebound keys
|
||||
let g:vimtex_mappings_disable = {
|
||||
\ 'n': ['tse', 'tsd', 'tsD', 'tsc', 'dse', 'dsc', 'ds$', 'dsd'],
|
||||
\ 'x': ['tsd', 'tsD'],
|
||||
\}
|
||||
|
||||
endif
|
||||
|
||||
" Interface with system clipboard
|
||||
noremap <Leader>y "*y
|
||||
noremap <Leader>p "*p
|
||||
noremap <Leader>Y "+y
|
||||
noremap <Leader>P "+p
|
||||
|
||||
" Search options
|
||||
set hlsearch
|
||||
set ignorecase
|
||||
set smartcase
|
||||
|
||||
" Save aliases.
|
||||
noremap <Leader>q :wq<CR>
|
||||
com W w
|
||||
@ -157,3 +192,7 @@ com Wq wq
|
||||
com WQ wq
|
||||
" Write with sudo
|
||||
cmap w!! w !sudo tee > /dev/null %
|
||||
|
||||
autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et
|
||||
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et
|
||||
autocmd FileType tex silent VimtexCompile
|
83
.config/zsh/plugins/fish-theme.zsh
Normal file
83
.config/zsh/plugins/fish-theme.zsh
Normal file
@ -0,0 +1,83 @@
|
||||
# ZSH Theme emulating the Fish shell's default prompt.
|
||||
|
||||
_fishy_collapsed_wd() {
|
||||
echo $(pwd | perl -pe '
|
||||
BEGIN {
|
||||
binmode STDIN, ":encoding(UTF-8)";
|
||||
binmode STDOUT, ":encoding(UTF-8)";
|
||||
}; s|^$ENV{HOME}|~|g; s|/([^/.])[^/]*(?=/)|/$1|g; s|/\.([^/])[^/]*(?=/)|/.$1|g
|
||||
')
|
||||
}
|
||||
|
||||
git_prompt_info() {
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
||||
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
||||
}
|
||||
git_prompt_status() {
|
||||
# Get the status of the working tree
|
||||
INDEX=$(command git status --porcelain -b 2> /dev/null)
|
||||
STATUS=""
|
||||
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
|
||||
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
|
||||
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
|
||||
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
||||
elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
||||
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
||||
fi
|
||||
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS"
|
||||
fi
|
||||
if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then
|
||||
STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS"
|
||||
fi
|
||||
echo $STATUS
|
||||
}
|
||||
|
||||
# Required for dynamic prompt
|
||||
setopt prompt_subst
|
||||
|
||||
local user_color='green'; [ $UID -eq 0 ] && user_color='red'
|
||||
PROMPT="%n@%m %F{$user_color}\$(_fishy_collapsed_wd)%f%(!.#.>) "
|
||||
PROMPT2='%F{red}\ %f'
|
||||
|
||||
local return_status="%F{red}%(?..%?)%f"
|
||||
RPROMPT='${return_status}$(git_prompt_info)$(git_prompt_status)%{$reset_color%}'
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" "
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX=""
|
||||
ZSH_THEME_GIT_PROMPT_DIRTY=""
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_ADDED="%{$fg_bold[green]%}+"
|
||||
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg_bold[blue]%}!"
|
||||
ZSH_THEME_GIT_PROMPT_DELETED="%{$fg_bold[red]%}-"
|
||||
ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg_bold[magenta]%}>"
|
||||
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg_bold[yellow]%}#"
|
||||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[cyan]%}?"
|
23
.config/zsh/plugins/sudo.zsh
Normal file
23
.config/zsh/plugins/sudo.zsh
Normal file
@ -0,0 +1,23 @@
|
||||
# Source: https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/sudo/sudo.plugin.zsh
|
||||
|
||||
sudo-command-line() {
|
||||
[[ -z $BUFFER ]] && zle up-history
|
||||
if [[ $BUFFER == sudo\ * ]]; then
|
||||
LBUFFER="${LBUFFER#sudo }"
|
||||
elif [[ $BUFFER == $EDITOR\ * ]] || [[ $BUFFER == vi\ * ]]; then
|
||||
LBUFFER="${LBUFFER#$EDITOR }"
|
||||
LBUFFER="${LBUFFER#vi }"
|
||||
LBUFFER="svi $LBUFFER"
|
||||
elif [[ $BUFFER == sudoedit\ * ]] || [[ $BUFFER == svi\ * ]]; then
|
||||
LBUFFER="${LBUFFER#sudoedit }"
|
||||
LBUFFER="${LBUFFER#svi }"
|
||||
LBUFFER="$EDITOR $LBUFFER"
|
||||
else
|
||||
LBUFFER="sudo $LBUFFER"
|
||||
fi
|
||||
|
||||
_zsh_highlight
|
||||
}
|
||||
zle -N sudo-command-line
|
||||
# Defined shortcut keys: [Esc] [Esc]
|
||||
bindkey "\e\e" sudo-command-line
|
2
.fehbg
2
.fehbg
@ -1,2 +1,2 @@
|
||||
#!/bin/sh
|
||||
feh --no-xinerama --bg-fill '/home/frebib/pictures/lakesidesunrise.jpg'
|
||||
'feh' '--no-xinerama' '--bg-fill' '/home/frebib/pictures/lakesidesunrise.jpg'
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,6 @@
|
||||
bookmarks
|
||||
.config/secrets
|
||||
.config/imgur-screenshot/credentials.conf
|
||||
|
||||
*.log
|
||||
.xournal/recent-files
|
||||
|
43
.profile
43
.profile
@ -2,29 +2,46 @@ export LC_ALL=en_GB.UTF-8
|
||||
export LANG=en_GB.UTF-8
|
||||
export LC_NUMERIC=en_GB
|
||||
|
||||
export CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
export DOTFILES=$CONFIG_DIR/dotfiles
|
||||
export CONFIG_DIR="$HOME/.config"
|
||||
export XDG_CONFIG_HOME="$CONFIG_DIR"
|
||||
export DOTFILES="$CONFIG_DIR/dotfiles"
|
||||
export PATH="${PATH}:$DOTFILES/scripts"
|
||||
export XDG_CURRENT_DESKTOP="GNOME" # Fixes xdg-open
|
||||
|
||||
# Allow Vim to load from ~/.config/vim
|
||||
export VIMDIR="$CONFIG_DIR/vim"
|
||||
export MYVIMRC="$VIMDIR/vimrc"
|
||||
export VIMINIT=":so $MYVIMRC"
|
||||
|
||||
export EDITOR="vim"
|
||||
export VISUAL="vim"
|
||||
export PAGER="less -R"
|
||||
export LESS="-RNI"
|
||||
export PAGER="less $LESS"
|
||||
export MANPAGER="less -+N"
|
||||
export TERMINAL="termite"
|
||||
export BROWSER="chromium"
|
||||
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
|
||||
export QT_STYLE_OVERRIDE=GTK+
|
||||
export QT_QPA_PLATFORMTHEME=gtk2
|
||||
|
||||
# Merge system clipboards
|
||||
if ! [ -z $DISPLAY ] && which autocutsel &>/dev/null; then
|
||||
autocutsel -fork &
|
||||
autocutsel -selection PRIMARY -fork &
|
||||
# Source secret keys and values into environment
|
||||
if [ -f "$CONFIG_DIR/secrets" ]; then
|
||||
set -o allexport
|
||||
source $CONFIG_DIR/secrets
|
||||
set +o allexport
|
||||
fi
|
||||
|
||||
# Start an ssh-agent
|
||||
if [ -z $SSH_AUTH_SOCK ]; then
|
||||
eval `ssh-agent`
|
||||
# Merge system clipboards
|
||||
if [ -n "$DISPLAY" ] && which autocutsel >/dev/null 2>&1; then
|
||||
autocutsel -fork
|
||||
autocutsel -selection PRIMARY -fork
|
||||
fi
|
||||
|
||||
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && which dbus-launch >/dev/null 2>&1; then
|
||||
eval $(dbus-launch --sh-syntax --exit-with-session)
|
||||
dbus-update-activation-environment --systemd DISPLAY
|
||||
fi
|
||||
|
||||
# Start the gnome-keyring if it's installed
|
||||
if which gnome-keyring-daemon >/dev/null 2>&1; then
|
||||
export $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gnupg)
|
||||
fi
|
||||
# Always add SSH key to the running agent; local or remote
|
||||
ssh-add
|
||||
|
28
.xbindkeysrc
28
.xbindkeysrc
@ -1,15 +1,15 @@
|
||||
# thumb wheel up => increase volume and unmute
|
||||
"amixer -D pulse set Master 1000+ unmute ; pkill -RTMIN+10 i3blocks"
|
||||
b:6
|
||||
|
||||
# thumb wheel down => lower volume
|
||||
"amixer -D pulse set Master 1000- ; pkill -RTMIN+10 i3blocks"
|
||||
b:7
|
||||
|
||||
# backward button => previous song
|
||||
"xte 'key XF86AudioPrev'"
|
||||
b:8
|
||||
|
||||
# forward button => next song
|
||||
"xte 'key XF86AudioNext'"
|
||||
# thumb wheel up => increase volume and unmute
|
||||
"xdotool key --clearmodifiers XF86AudioRaiseVolume"
|
||||
b:6
|
||||
|
||||
# thumb wheel down => lower volume
|
||||
"xdotool key --clearmodifiers XF86AudioLowerVolume"
|
||||
b:7
|
||||
|
||||
# backward button => previous song
|
||||
"xte 'key XF86AudioPrev'"
|
||||
b:8
|
||||
|
||||
# forward button => next song
|
||||
"xte 'key XF86AudioNext'"
|
||||
b:9
|
||||
|
8
.xinitrc
8
.xinitrc
@ -1,9 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
source ~/.profile
|
||||
source ~/.xsession
|
||||
xrdb -merge ~/.Xresources
|
||||
|
||||
# Run all system xinitrc shell scripts
|
||||
xinitdir="/etc/X11/xinit/xinitrc.d"
|
||||
if [ -d "$xinitdir" ]; then
|
||||
@ -15,6 +11,8 @@ if [ -d "$xinitdir" ]; then
|
||||
done
|
||||
fi
|
||||
|
||||
~/.local/share/surfacetools/rotationd --once
|
||||
source ~/.profile
|
||||
source ~/.xsession
|
||||
xrdb -merge ~/.Xresources
|
||||
|
||||
exec i3
|
||||
|
141
.zshrc
141
.zshrc
@ -1,30 +1,78 @@
|
||||
unsetopt MULTIBYTE
|
||||
|
||||
# Path to your oh-my-zsh installation.
|
||||
ZSH=$HOME/.local/share/oh-my-zsh
|
||||
|
||||
# Set the theme
|
||||
ZSH_THEME="fishy"
|
||||
#DISABLE_AUTO_UPDATE="true"
|
||||
|
||||
# Config and cache directory paths
|
||||
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
ZSH_CONFIG_DIR=$CONFIG_DIR/zsh
|
||||
ZSH_CACHE_DIR=$CONFIG_DIR/oh-my-zsh/cache
|
||||
mkdir -p $ZSH_CACHE_DIR $ZSH_CONFIG_DIR
|
||||
ZSH_DIR="$CONFIG_DIR/zsh"
|
||||
ZSH_CACHE_DIR="$CONFIG_DIR/oh-my-zsh/cache"
|
||||
ADOTDIR="$ZSH_DIR/antigen" # Antigen directory
|
||||
ANTIGEN_LOG="$ADOTDIR/log/antigen-$(date +"%Y_%m_%d_%I_%M_%p").log"
|
||||
|
||||
HISTFILE=$ZSH_CONFIG_DIR/histfile
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=100000
|
||||
setopt sharehistory histignoredups histignorespace histreduceblanks autocd autopushd extendedglob globcomplete alwaystoend dvorak
|
||||
mkdir -p "$ZSH_CACHE_DIR" "$ZSH_DIR" "$ADOTDIR/log"
|
||||
|
||||
export WORDCHARS='*?_[]~=&;!#$%^(){}'
|
||||
HISTFILE="$ZSH_DIR/histfile"
|
||||
HISTSIZE=999999
|
||||
SAVEHIST=999999
|
||||
|
||||
# Only set tty if running interactively
|
||||
if tty -s; then
|
||||
# Resolve at shell runtime
|
||||
export GPG_TTY="$(tty)"
|
||||
fi
|
||||
|
||||
# Set some useful ZSH/Bash options
|
||||
setopt sharehistory histignorealldups histignorespace histreduceblanks
|
||||
setopt pathdirs autocd autopushd extendedglob alwaystoend dvorak
|
||||
|
||||
|
||||
# Completion initialisation
|
||||
autoload -U compinit ; compinit
|
||||
autoload -U bashcompinit ; bashcompinit
|
||||
|
||||
# gopass completion
|
||||
if gopass --help &>/dev/null; then
|
||||
source <(gopass completion bash)
|
||||
fi
|
||||
|
||||
zstyle ':completion:*:sudo|_::' environ PATH="/sbin:/usr/sbin:$PATH" HOME="/root"
|
||||
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' rehash true
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
|
||||
zstyle ':compinstall' filename "$HOME/.zshrc"
|
||||
|
||||
|
||||
# Load antigen & plugins
|
||||
antigen_src="$ZSH_DIR/antigen.zsh"
|
||||
if [ ! -f "$antigen_src" ]; then
|
||||
if which curl &>/dev/null; then
|
||||
getcmd='curl -L'
|
||||
else
|
||||
getcmd='wget -qO-'
|
||||
fi
|
||||
eval $getcmd git.io/antigen > "$antigen_src"
|
||||
fi
|
||||
source "$antigen_src"
|
||||
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
antigen bundle zsh-users/zsh-autosuggestions
|
||||
antigen bundle Tarrasch/zsh-syntax-highlighting
|
||||
antigen bundle zsh-users/zsh-history-substring-search
|
||||
|
||||
antigen apply
|
||||
|
||||
|
||||
# Set some key-binds
|
||||
bindkey -e
|
||||
bindkey "\e[1;3C" forward-word
|
||||
bindkey "\e[1;3D" backward-word
|
||||
bindkey "^[[1;3C" forward-word
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;3D" backward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
bindkey "^[[7~" beginning-of-line
|
||||
bindkey "^[[8~" end-of-line
|
||||
bindkey "^[[3~" delete-char
|
||||
bindkey "^[[3;3~" delete-word
|
||||
|
||||
export WORDCHARS='*?_[]~=&;!#$%^(){}'
|
||||
x-bash-backward-kill-word(){
|
||||
WORDCHARS='' zle kill-word
|
||||
}
|
||||
@ -32,57 +80,48 @@ zle -N x-bash-backward-kill-word
|
||||
bindkey '^[^[[3~' x-bash-backward-kill-word
|
||||
bindkey '^[^[[3^' x-bash-backward-kill-word
|
||||
|
||||
autoload -U up-line-or-beginning-search
|
||||
autoload -U down-line-or-beginning-search
|
||||
zle -N up-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
bindkey "^[[A" up-line-or-beginning-search # Up
|
||||
bindkey "^[^[[A" up-line-or-beginning-search # Up
|
||||
bindkey "^[[B" down-line-or-beginning-search # Down
|
||||
bindkey "^[^[[B" down-line-or-beginning-search # Down
|
||||
bindkey '^[[A' history-substring-search-up
|
||||
bindkey '^[[B' history-substring-search-down
|
||||
|
||||
zstyle ':completion:*:sudo::' environ PATH="/sbin:/usr/sbin:$PATH" HOME="/root"
|
||||
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**' 'l:|=* r:|=*'
|
||||
zstyle :compinstall filename "$HOME/.zshrc"
|
||||
|
||||
autoload -U compinit ; compinit
|
||||
|
||||
plugins=(command-not-found history-substring-search sudo zsh-autosuggestions zsh-completions)
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
source $ZSH/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}")
|
||||
ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(history-substring-search-up history-substring-search-down)
|
||||
|
||||
ZSH_HIGHLIGHT_STYLES[default]='fg=blue'
|
||||
HISTORY_SUBSTRING_SEARCH_FUZZY=true
|
||||
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true
|
||||
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='underline'
|
||||
|
||||
typeset -A ZSH_HIGHLIGHT_STYLES
|
||||
ZSH_HIGHLIGHT_STYLES[default]='fg=12'
|
||||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow'
|
||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=63'
|
||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=green,underline'
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=63'
|
||||
ZSH_HIGHLIGHT_STYLES[function]='fg=63'
|
||||
ZSH_HIGHLIGHT_STYLES[command]='fg=63'
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=63'
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[function]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[command]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'
|
||||
ZSH_HIGHLIGHT_STYLES[path]='fg=63,underline'
|
||||
ZSH_HIGHLIGHT_STYLES[path]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=yellow,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[path_approx]='fg=red,bold,underline'
|
||||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=red'
|
||||
ZSH_HIGHLIGHT_STYLES[comment]='fg=7'
|
||||
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='none'
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=12'
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=12'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=magenta'
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow'
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=yellow'
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[assign]='none'
|
||||
ZSH_HIGHLIGHT_STYLES[redirection]='none'
|
||||
ZSH_HIGHLIGHT_STYLES[assign]='fg=green'
|
||||
ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan'
|
||||
|
||||
source $DOTFILES/aliases
|
||||
source "$DOTFILES/aliases"
|
||||
|
||||
# OPAM configuration
|
||||
. /home/frebib/.opam/opam-init/init.zsh > /dev/null 2> /dev/null || true
|
||||
# Load some manual plugins
|
||||
source "$ZSH_DIR/plugins/sudo.zsh"
|
||||
source "$ZSH_DIR/plugins/fish-theme.zsh"
|
||||
|
136
aliases
136
aliases
@ -11,15 +11,16 @@ alias ..ll="cd..;ll"
|
||||
alias ..l="..ll"
|
||||
|
||||
alias l=ll
|
||||
alias ll="ls -lFh"
|
||||
alias la="ls -lAFh"
|
||||
alias lat='la -t'
|
||||
alias ll="ls -lFh --group-directories-first"
|
||||
alias la="ls -lAFh --group-directories-first"
|
||||
alias lt='ls -lAFh --sort=time'
|
||||
alias al=la # No, I don't need the Mono Assembly Linker
|
||||
|
||||
alias md="mkdir -p"
|
||||
mcd(){
|
||||
mkdir -p $1 && cd $1
|
||||
}
|
||||
alias rd="rmdir -p"
|
||||
mcd(){ mkdir -p $@ && cd $@; }
|
||||
alias -- -='cd -'
|
||||
alias cdt='cd `mktemp -d`'
|
||||
alias grep='grep --color'
|
||||
alias -g H='| head'
|
||||
alias -g T='| tail'
|
||||
@ -34,9 +35,7 @@ alias -g NUL="&> /dev/null"
|
||||
alias -g BG="&;disown"
|
||||
alias -g COL="| column -t"
|
||||
alias -g CLIP="| xclip -i -selection primary -f | xclip -i -selection clipboard"
|
||||
calc() {
|
||||
echo "$@" | bc -l
|
||||
}
|
||||
calc() { bc -l <<< "$@"; }
|
||||
|
||||
alias svi=sudoedit
|
||||
# This will enable us to use aliases in sudo.
|
||||
@ -52,12 +51,25 @@ alias mv='mv -i'
|
||||
alias cp='cp -ir'
|
||||
alias pacman='pacman --color=always'
|
||||
alias pacaur='pacaur --color=always'
|
||||
alias less='less -R'
|
||||
alias tree='tree --dirsfirst -C -F'
|
||||
alias make="make -j$(nproc)"
|
||||
alias dd='dd status=progress'
|
||||
alias env='env | sort'
|
||||
alias ssh="ssh -tt"
|
||||
alias grip='grip --user=frebib --pass=$GRIP_API_KEY'
|
||||
which gopass &>/dev/null && alias pass='gopass'
|
||||
alias abuild='docker run -ti --rm \
|
||||
-e USER \
|
||||
-e PWD \
|
||||
-w $PWD \
|
||||
-v $PWD:$PWD \
|
||||
-v ~/.abuild:/home/$USER/.abuild \
|
||||
-v ~/.config/git:/home/$USER/.config/git:ro \
|
||||
-v ~/.gnupg:/home/$USER/.gnupg \
|
||||
frebib/alpine-sdk:edge abuild'
|
||||
|
||||
# System aliases
|
||||
alias s=systemctl
|
||||
alias s="sudo systemctl"
|
||||
alias j=journalctl
|
||||
alias p=pacaur
|
||||
alias ps='ps aux'
|
||||
@ -75,24 +87,25 @@ alias -s rar="unrar l"
|
||||
alias -s tar="tar tf"
|
||||
alias -s gz="tar tf"
|
||||
alias -s jar="java -jar"
|
||||
alias -s git="git clone"
|
||||
alias -s git="git clone --recursive"
|
||||
|
||||
|
||||
# Git Aliases
|
||||
alias g=git
|
||||
alias gignore='$EDITOR .gitignore'
|
||||
alias ggignore='$EDITOR ~/.config/git/gitignore'
|
||||
alias gcl="git clone --recursive"
|
||||
alias gco="git checkout"
|
||||
alias gcom="git checkout master"
|
||||
alias ga="git add"
|
||||
alias gap="git -c interactive.diffFilter=\"git diff --color-words\" add -p"
|
||||
alias gaa="ga -A"
|
||||
alias grm="git rm"
|
||||
alias gc="git commit"
|
||||
alias gcm="gc -m"
|
||||
alias gcma="git commit --amend -m"
|
||||
alias gcman="git commit --amend --no-edit -m"
|
||||
alias gca="git commit --amend"
|
||||
alias gcan="git commit --amend --no-edit"
|
||||
alias gcam="git commit --amend -m"
|
||||
alias gst="git status"
|
||||
|
||||
alias gm="git merge"
|
||||
@ -106,18 +119,20 @@ alias gp="git push"
|
||||
alias gpf="gp --force"
|
||||
alias gpsu="git push --set-upstream"
|
||||
alias gpsuom="git push --set-upstream origin master"
|
||||
alias gpall="git remote | xargs -L1 git push"
|
||||
alias gl="git pull --rebase"
|
||||
alias glp="gl && gp"
|
||||
gd() {
|
||||
local commit=$1
|
||||
if [ -z "$commit" ] || [ ${commit:0:1} != '@' ]; then
|
||||
git diff $@
|
||||
git diff --color-words $@
|
||||
return
|
||||
else
|
||||
git diff "@~${commit:1}^!"
|
||||
git diff --color-words "@~${commit:1}^!"
|
||||
fi
|
||||
}
|
||||
alias gds="git diff --staged"
|
||||
alias gds="git diff --staged --color-words"
|
||||
alias gsh="git show --color-words"
|
||||
alias glg="git log --stat --color"
|
||||
alias glog="git log --oneline --decorate --color --graph"
|
||||
|
||||
@ -126,6 +141,7 @@ alias gundo="git reset @~1"
|
||||
alias gclean="git clean"
|
||||
alias gbr="git branch"
|
||||
alias gr="git remote"
|
||||
alias grv="git remote -v"
|
||||
alias gra="gr add"
|
||||
alias grr="gr rm"
|
||||
alias grao="gra origin"
|
||||
@ -133,7 +149,7 @@ alias grro="grr origin"
|
||||
|
||||
alias gsta='git stash'
|
||||
alias gstd='gsta drop'
|
||||
alias gstl='gsta list'
|
||||
alias gstl='gsta list --stat --color'
|
||||
alias gstp='gsta pop'
|
||||
alias gstv="gsta show -p stash@{0}"
|
||||
|
||||
@ -148,7 +164,7 @@ alias dbl='docker build --pull'
|
||||
alias dbl.='docker build --pull .'
|
||||
alias drun='docker run -ti'
|
||||
alias dkl='docker kill'
|
||||
dklrm() { docker kill $1 ; docker rm $1 }
|
||||
dklrm() { docker kill $@ ; docker rm $@ }
|
||||
alias dst='docker stop'
|
||||
alias drst='docker restart'
|
||||
alias dnet='docker network'
|
||||
@ -157,21 +173,63 @@ alias dlg='docker logs -f'
|
||||
alias dalpine='docker run -ti --rm alpine /bin/sh'
|
||||
alias drm-stopped='docker container prune'
|
||||
alias drmi-untag='docker image prune'
|
||||
alias dsh='_dsh exec'
|
||||
alias drsh='_dsh "run --rm"'
|
||||
alias dprune='docker system prune -f'
|
||||
alias dsh='_CMD=dsh _dsh exec'
|
||||
alias drsh='_CMD=drsh _dsh run --rm --entrypoint='
|
||||
_dsh() {
|
||||
local dowhat="$1"
|
||||
local user=$(echo "$2" | cut -d'@' -f1 -s)
|
||||
local prog="${@:3:$#}"
|
||||
local usercmd=""
|
||||
if [ -z "$user" ]; then
|
||||
host="$2"
|
||||
else
|
||||
host=`echo $2 | cut -d'@' -f2 -s`
|
||||
usercmd="--user=$user "
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "Usage: ${_CMD:-$0} [user@]container [program [args]]" >&2
|
||||
return 64
|
||||
fi
|
||||
|
||||
eval "docker $dowhat -ti $usercmd$host ${prog:-"/bin/sh"}"
|
||||
local dowhat="$1"
|
||||
local docker_args=()
|
||||
shift
|
||||
|
||||
while [ "${1:0:1}" = '-' ]; do
|
||||
if [ "${1:0:2}" != '--' ]; then
|
||||
docker_args+=("$1")
|
||||
shift
|
||||
fi
|
||||
docker_args+=("$1")
|
||||
shift
|
||||
done
|
||||
|
||||
local user="$(echo "$1" | cut -d'@' -f1 -s)"
|
||||
local prog="${@:2:$#}"
|
||||
local usercmd=""
|
||||
if [ -z "$user" ]; then
|
||||
host="$1"
|
||||
else
|
||||
host=`echo $1 | cut -d'@' -f2 -s`
|
||||
usercmd="--user=$user"
|
||||
fi
|
||||
|
||||
if [ "$dowhat" = 'exec' -a -z "$(docker ps -q -f name="$host")" <&- ]; then
|
||||
echo "No such container $host" >&2
|
||||
return 5
|
||||
fi
|
||||
|
||||
if [ -z "$prog" ]; then
|
||||
set -o pipefail
|
||||
local rm=
|
||||
if [ "$dowhat" = 'run' ]; then
|
||||
rm='--rm --entrypoint='
|
||||
fi
|
||||
for shell in bash sh; do
|
||||
if shell_path="$(eval "docker $dowhat $rm $host which $shell" <&- | sed 's|[\r\n]||g')"; then
|
||||
prog="$shell_path"
|
||||
break
|
||||
fi
|
||||
done
|
||||
set +o pipefail
|
||||
if [ -z "$prog" ]; then
|
||||
echo "Warning: No shell found in path.. trying /bin/sh" >&2
|
||||
prog=/bin/sh
|
||||
fi
|
||||
fi
|
||||
|
||||
docker $dowhat ${docker_args[@]} -ti $usercmd $host $(xargs <<< $prog)
|
||||
}
|
||||
|
||||
alias dm='docker-machine'
|
||||
@ -188,15 +246,12 @@ alias zpool='sudo zpool'
|
||||
alias z=zfs
|
||||
alias zp=zpool
|
||||
|
||||
# Packer, Vagrant aliases
|
||||
alias pk=packer
|
||||
alias v=vagrant
|
||||
|
||||
# General Aliases
|
||||
alias ssha='eval `ssh-agent` ; ssh-add'
|
||||
alias aliases="$EDITOR $DOTFILES/aliases ; source ~/.zshrc"
|
||||
alias vimrc="$EDITOR ~/.vimrc"
|
||||
alias zshrc="$EDITOR ~/.zshrc ; source ~/.zshrc"
|
||||
alias aliases="$EDITOR $DOTFILES/aliases ; exec zsh"
|
||||
alias vimrc="$EDITOR $MYVIMRC"
|
||||
alias zshrc="$EDITOR ~/.zshrc ; exec zsh"
|
||||
alias gitrc="$EDITOR ~/.config/git/config"
|
||||
alias xinitrc="$EDITOR ~/.xinitrc"
|
||||
alias xresources="$EDITOR ~/.Xresources ; xrdb merge ~/.Xresources"
|
||||
alias xsession="$EDITOR ~/.xsession"
|
||||
@ -209,9 +264,8 @@ i3b() {
|
||||
}
|
||||
alias sf=screenfetch
|
||||
alias nf=neofetch
|
||||
randstr() {
|
||||
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $1 | head -n 1
|
||||
}
|
||||
randstr() { tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w $1 | head -n 1; }
|
||||
alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"
|
||||
|
||||
alias lab="ssh -tt tw '~/ctl' 2>/dev/null"
|
||||
|
||||
|
@ -1,9 +1,14 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
xrandr --output DP-0.1 --primary --mode 1920x1080 --pos 0x1080 --rotate normal \
|
||||
--output DP-0.2.1 --mode 1920x1080 --pos 0x0 --rotate inverted \
|
||||
--output DP-0.2.2.1 --mode 1920x1080 --pos 1920x0 --rotate inverted \
|
||||
--output DP-0.2.2.2.1 --mode 1920x1080 --pos 1920x1080 --rotate normal
|
||||
TOP_LEFT="DP-1"
|
||||
TOP_RIGHT="DP-3"
|
||||
BOTTOM_LEFT="DP-5"
|
||||
BOTTOM_RIGHT="HDMI-0"
|
||||
|
||||
xrandr --output $BOTTOM_LEFT --primary --mode 1920x1080 --pos 0x1080 --rotate normal \
|
||||
--output $TOP_LEFT --mode 1920x1080 --pos 0x0 --rotate inverted \
|
||||
--output $TOP_RIGHT --mode 1920x1080 --pos 1920x0 --rotate inverted \
|
||||
--output $BOTTOM_RIGHT --mode 1920x1080 --pos 1920x1080 --rotate normal
|
||||
|
||||
[ -e ~/.fehbg ] && ~/.fehbg
|
||||
|
86
scripts/rofi-emoji
Executable file
86
scripts/rofi-emoji
Executable file
@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Use rofi to pick emoji because that's what this
|
||||
# century is about apparently...
|
||||
#
|
||||
# Requirements:
|
||||
# rofi, xsel, xdotool, curl, xmllint
|
||||
#
|
||||
# Usage:
|
||||
# 1. Download all emoji
|
||||
# $ rofi-emoji --download
|
||||
#
|
||||
# 2. Run it!
|
||||
# $ rofi-emoji
|
||||
#
|
||||
# Notes:
|
||||
# * You'll need a emoji font like "Noto Emoji" or "EmojiOne".
|
||||
# * Confirming an item will automatically paste it WITHOUT
|
||||
# writing it to your clipboard.
|
||||
# * Ctrl+C will copy it to your clipboard WITHOUT pasting it.
|
||||
#
|
||||
|
||||
# Where to save the emojis file.
|
||||
EMOJI_FILE="$HOME/.cache/emojis.txt"
|
||||
|
||||
# Urls of emoji to download.
|
||||
# You can remove what you don't need.
|
||||
URLS=(
|
||||
'https://emojipedia.org/people/'
|
||||
'https://emojipedia.org/nature/'
|
||||
'https://emojipedia.org/food-drink/'
|
||||
'https://emojipedia.org/activity/'
|
||||
'https://emojipedia.org/travel-places/'
|
||||
'https://emojipedia.org/objects/'
|
||||
'https://emojipedia.org/symbols/'
|
||||
'https://emojipedia.org/flags/'
|
||||
)
|
||||
|
||||
|
||||
function download() {
|
||||
echo "" > "$EMOJI_FILE"
|
||||
|
||||
for url in "${URLS[@]}"; do
|
||||
echo "Downloading: $url"
|
||||
|
||||
# Download the list of emoji and remove all the junk around it
|
||||
emojis=$(curl -s "$url" | \
|
||||
xmllint --html \
|
||||
--xpath '//ul[@class="emoji-list"]' - 2>/dev/null)
|
||||
|
||||
# Get rid of starting/closing ul tags
|
||||
emojis=$(echo "$emojis" | head -n -1 | tail -n +1)
|
||||
|
||||
# Extract the emoji and its description
|
||||
emojis=$(echo "$emojis" | \
|
||||
sed -rn 's/.*<span class="emoji">(.*)<\/span> (.*)<\/a><\/li>/\1 \2/p')
|
||||
|
||||
echo "$emojis" >> "$EMOJI_FILE"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
function display() {
|
||||
emoji=$(cat "$EMOJI_FILE" | grep -v '#' | grep -v '^[[:space:]]*$')
|
||||
line=$(echo "$emoji" | rofi -dmenu -i -p emoji -kb-custom-1 Ctrl+c $@)
|
||||
exit_code=$?
|
||||
|
||||
line=($line)
|
||||
|
||||
if [ $exit_code == 0 ]; then
|
||||
xdotool type --clearmodifiers "${line[0]}"
|
||||
elif [ $exit_code == 10 ]; then
|
||||
echo -n "${line[0]}" | xsel -i -b
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if [[ "$1" =~ -D|--download ]]; then
|
||||
download
|
||||
exit 0
|
||||
elif [[ "$1" =~ -h|--help ]]; then
|
||||
echo "usage: $0 [-D|--download]"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
display
|
@ -1,18 +1,29 @@
|
||||
YCM=~/.vim/bundle/YouCompleteMe
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
sudo pacman -S python cmake --needed --noconfirm
|
||||
############################
|
||||
## Check for dependencies ##
|
||||
############################
|
||||
error() { >&2 printf "Error: %s" "$1"; exit 1; }
|
||||
|
||||
which cmake >/dev/null 2>&1 || error 'cmake is not installed'
|
||||
which clang >/dev/null 2>&1 || error 'clang is not installed'
|
||||
which python >/dev/null 2>&1 || error 'python is not installed'
|
||||
|
||||
[ -z "$VIMDIR" ] && error '$VIMDIR is not set'
|
||||
|
||||
#######################
|
||||
## Initialise Vundle ##
|
||||
#######################
|
||||
mkdir -p ~/.vim/{bundle,swapfiles}
|
||||
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
|
||||
vim +PluginInstall +qall
|
||||
|
||||
mkdir -p "$VIMDIR/bundle" "$VIMDIR/swapfiles"
|
||||
if [ ! -d "$VIMDIR/bundle/Vundle.vim" ]; then
|
||||
git clone https://github.com/VundleVim/Vundle.vim.git "$VIMDIR/bundle/Vundle.vim"
|
||||
fi
|
||||
vim +PluginUpdate +qall
|
||||
|
||||
#########################
|
||||
## Setup YouCompleteMe ##
|
||||
#########################
|
||||
cd "$YCM"
|
||||
cd "$VIMDIR/bundle/YouCompleteMe"
|
||||
git submodule update --init --recursive
|
||||
./install.py --clang-completer
|
||||
./install.py --system-libclang --clang-completer
|
||||
|
@ -2,9 +2,9 @@
|
||||
set -e
|
||||
|
||||
# Install pkgfile for command-not-found support
|
||||
sudo pacman -S pkgfile --no-confirm --needed
|
||||
sudo pacman -S pkgfile --noconfirm --needed
|
||||
sudo systemctl enable --now pkgfile-update.service
|
||||
pkgfile --update
|
||||
sudo pkgfile --update
|
||||
|
||||
dest="$HOME/.local/share"
|
||||
mkdir -p "$dest"
|
||||
|
Loading…
Reference in New Issue
Block a user