diff --git a/Xresources b/Xresources
index ebdba57..6a06d00 100644
--- a/Xresources
+++ b/Xresources
@@ -1,3 +1,4 @@
#include ".Xresources.d/xft"
#include ".Xresources.d/theme"
#include ".Xresources.d/xterm"
+#include ".Xresources.d/urxvt"
diff --git a/Xresources.d/urxvt b/Xresources.d/urxvt
new file mode 100644
index 0000000..53f39b1
--- /dev/null
+++ b/Xresources.d/urxvt
@@ -0,0 +1,56 @@
+! Scrollback position
+! TODO Do not work
+
+! do not scroll with output
+URxvt*scrollTtyOutput: false
+
+! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
+URxvt*scrollWithBuffer: true
+
+! scroll back to the bottom on keypress
+URxvt*scrollTtyKeypress: true
+
+
+! Scrollback buffer in secondary screen
+! TODO Do not work
+URxvt.secondaryScreen: 1
+URxvt.secondaryScroll: 0
+
+
+! Font declaration
+URxvt.font: xft:DejaVu Sans Mono for Powerline:size=12:antialias=true
+
+! Font spacing
+URxvt.letterSpace: 0
+
+! No scroll bar
+URxvt*scrollBar: false
+
+! Disable Ctrl+Shift default bindings
+URxvt.iso14755: false
+URxvt.iso14755_52: false
+
+! Copy/Paste CLIPBOARD selection with Ctrl+Shift+C/V
+URxvt.keysym.C-S-C: eval:selection_to_clipboard
+URxvt.keysym.C-S-V: eval:paste_clipboard
+
+
+! Extensions
+URxvt.perl-ext-common: default,matcher,resize-font
+
+! Clickable URL (extension: matcher)
+URxvt.url-launcher: /usr/bin/xdg-open
+URxvt.matcher.button: 1
+
+! Changing font size on the fly (extension: resize-font, package: urxvt-resize-font-git)
+URxvt.keysym.C-KP_Subtract: resize-font:smaller
+URxvt.keysym.C-KP_Add: resize-font:bigger
+
+! Fake transparency (without compositing manager)
+urxvt*transparent: true
+urxvt*shading: 30
+
+! True transparency (with compositing manager)
+!urxvt*depth: 32
+!urxvt*background: rgba:2700/2800/2200/c800
+
diff --git a/bashrc b/bashrc
index 8cfddc5..37a045a 100644
--- a/bashrc
+++ b/bashrc
@@ -12,9 +12,9 @@ export BROWSER=qutebrowser
# Some programs need those changes
export PATH="/usr/lib/ccache/bin/:$PATH"
-if [ -d $HOME/.gem/ruby/2.4.0/bin ]; then
- export PATH="$HOME/.gem/ruby/2.4.0/bin/:$PATH"
-fi
+# if [ -d $HOME/.gem/ruby/2.4.0/bin ]; then
+# export PATH="$HOME/.gem/ruby/2.4.0/bin/:$PATH"
+# fi
if [ -d /data/data/com.termux/ ]; then
export PATH="$HOME/.termux/scripts:$HOME/.termux/bin:$PATH"
fi
@@ -43,9 +43,13 @@ alias rm='rm -Iv --one-file-system'
alias free='free -m'
alias df='df -h'
alias pacman='pacman --color auto'
+alias pacaur='pacaur --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
@@ -59,15 +63,30 @@ alias mc="machines"
alias tracefiles="strace -f -t -e trace=file"
# Superseding commands with better ones if they are present
-if which vim &> /dev/null; then
- alias vi='vim'
-fi
-if which gopass &> /dev/null; then
- alias pass='gopass'
-fi
-if which wakeonlan &> /dev/null; then
- alias wol='wakeonlan'
-fi
+function vi() {
+ if which vim &> /dev/null; then
+ alias vi='vim'
+ fi
+ vim "$@"
+}
+function pass() {
+ if which gopass &> /dev/null; then
+ alias pass='gopass'
+ fi
+ gopass "$@"
+}
+function wol() {
+ if which wakeonlan &> /dev/null; then
+ alias wol='wakeonlan'
+ fi
+ wakeonlan "$@"
+}
+function mutt() {
+ if which neomutt &> /dev/null; then
+ alias mutt='neomutt'
+ fi
+ neomutt "$@"
+}
# SHELL CUSTOMIZATION
@@ -84,7 +103,8 @@ shopt -s hostcomplete
export HISTSIZE=100000
export HISTFILESIZE=${HISTSIZE}
-export HISTCONTROL=ignoreboth
+export HISTCONTROL=ignorespace:erasedups
+export HISTTIMEFORMAT="%d/%m/%y %H:%M:%S "
# PROMPT CUSTOMIZATION
@@ -99,6 +119,7 @@ export PS1="\[\e]2;\u@\h \w\a\]\[\e[0;37m\][\[\e[0;${col}m\]\u\[\e[0;37m\]@\[\e[
export PS2="> "
export PS3="+ "
export PS4="- "
+export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"'
# CUSTOM SCRIPTS
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/compton.conf b/config/compton.conf
deleted file mode 100644
index 34eb7df..0000000
--- a/config/compton.conf
+++ /dev/null
@@ -1,53 +0,0 @@
-shadow = false;
-no-dnd-shadow = true;
-no-dock-shadow = true;
-clear-shadow = true;
-
-menu-opacity = 0.9;
-inactive-opacity = 0.93;
-active-opacity = 1;
-alpha-step = 0.01;
-inactive-dim = 0.0;
-blur-background = false;
-blur-kern = "3x3box";
-
-fading = false;
-fade-delta = 1;
-fade-in-step = 0.03;
-fade-out-step = 0.03;
-fade-exclude = [ ];
-
-backend = "xrender";
-mark-wmwin-focused = true;
-mark-ovredir-focused = true;
-detect-rounded-corners = true;
-detect-client-opacity = true;
-unredir-if-possible = true;
-refresh-rate = 0;
-vsync = "none";
-dbe = false;
-paint-on-overlay = true;
-focus-exclude = [ "class_g = 'Cairo-clock'" ];
-detect-transient = true;
-detect-client-leader = true;
-invert-color-include = [ ];
-glx-copy-from-front = false;
-glx-swap-method = "undefined";
-
-wintypes :
-{
- tooltip :
- {
- fade = true;
- shadow = false;
- opacity = 0.75;
- focus = true;
- };
- fullscreen :
- {
- fade = true;
- shadow = false;
- opacity = 1;
- focus = true;
- };
-};
diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc
index eead4c9..63e6c2a 100644
--- a/config/dunst/dunstrc
+++ b/config/dunst/dunstrc
@@ -1,300 +1,63 @@
[global]
- font = Cantarell 10
-
- # Allow a small subset of html markup:
- # bold
- # italic
- # strikethrough
- # underline
- #
- # For a complete reference see
- # .
- # If markup is not allowed, those tags will be stripped out of the
- # message.
- allow_markup = yes
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # Markup is allowed
- format = "%s %p\n%b"
-
- # Sort messages by urgency.
- sort = no
-
- # Show how many messages are currently hidden (because of geometry).
- indicate_hidden = yes
-
- # Alignment of message text.
- # Possible values are "left", "center" and "right".
alignment = left
-
- # The frequency with wich text that is longer than the notification
- # window allows bounces back and forth.
- # This option conflicts with "word_wrap".
- # Set to 0 to disable.
- bounce_freq = 5
-
-
- # Show age of message if message is older than show_age_threshold
- # seconds.
- # Set to -1 to disable.
- show_age_threshold = 60
-
- # Split notifications into multiple lines if they don't fit into
- # geometry.
- word_wrap = no
-
- # Ignore newlines '\n' in notifications.
- ignore_newline = no
-
-
- # The geometry of the window:
- # [{width}]x{height}[+/-{x}+/-{y}]
- # The geometry of the message window.
- # The height is measured in number of notifications everything else
- # in pixels. If the width is omitted but the height is given
- # ("-geometry x2"), the message window expands over the whole screen
- # (dmenu-like). If width is 0, the window expands to the longest
- # message displayed. A positive x is measured from the left, a
- # negative from the right side of the screen. Y is measured from
- # the top and down respectevly.
- # The width can be negative. In this case the actual width is the
- # screen width minus the width defined in within the geometry option.
- geometry = "0x0-25+25"
-
- # Shrink window if it's smaller than the width. Will be ignored if
- # width is 0.
- shrink = yes
-
- # The transparency of the window. Range: [0; 100].
- # This option will only work if a compositing windowmanager is
- # present (e.g. xcompmgr, compiz, etc.).
- transparency = 17
-
- # Don't remove messages, if the user is idle (no mouse or keyboard input)
- # for longer than idle_threshold seconds.
- # Set to 0 to disable.
- # default 120
- idle_threshold = 120
-
- # Which monitor should the notifications be displayed on.
- monitor = 0
-
- # Display notification on focused monitor. Possible modes are:
- # mouse: follow mouse pointer
- # keyboard: follow window with keyboard focus
- # none: don't follow anything
- #
- # "keyboard" needs a windowmanager that exports the
- # _NET_ACTIVE_WINDOW property.
- # This should be the case for almost all modern windowmanagers.
- #
- # If this option is set to mouse or keyboard, the monitor option
- # will be ignored.
- follow = none
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
- sticky_history = yes
-
- # Maximum amount of notifications kept in history
- history_length = 20
-
- # Display indicators for URLs (U) and actions (A).
- show_indicators = yes
-
- # The height of a single line. If the height is smaller than the
- # font height, it will get raised to the font height.
- # This adds empty space above and under the text.
- line_height = 0
-
- # Draw a line of "separator_height" pixel height between two
- # notifications.
- # Set to 0 to disable.
- separator_height = 1
-
- # Padding between text and separator.
- # padding = 8
- padding = 8
-
- # Horizontal padding.
- horizontal_padding = 10
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = #2ECC71
-
- # Print a notification on startup.
- # This is mainly for error detection, since dbus (re-)starts dunst
- # automatically after a crash.
- startup_notification = false
-
- # dmenu path.
+ always_run_script = true
+ browser = /usr/bin/qutebrowser
+ class = Dunst
dmenu = /usr/bin/dmenu -p dunst:
-
- # Browser for opening urls in context menu.
- browser = firefox
-
- # Align icons left/right/off
+ ellipsize = middle
+ follow = none
+ font = DejaVu Sans 10
+ force_xinerama = false
+ format = "%s %p\n%b"
+ frame_color = "#A6E22E"
+ frame_width = 3
+ geometry = "500x5-30+20"
+ hide_duplicate_count = false
+ history_length = 20
+ horizontal_padding = 8
+ icon_path = /usr/share/icons/gnome/256x256/status/:/usr/share/icons/gnome/256x256/devices/
icon_position = left
-
- # Paths to default icons.
- icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
-
-[frame]
- width = 1
- color = "#2ECC71"
-
+ idle_threshold = 120
+ ignore_newline = no
+ indicate_hidden = yes
+ line_height = 0
+ markup = full
+ max_icon_size = 48
+ monitor = 0
+ notification_height = 0
+ padding = 8
+ separator_color = frame
+ separator_height = 2
+ show_age_threshold = 60
+ show_indicators = yes
+ shrink = no
+ sort = yes
+ stack_duplicates = true
+ startup_notification = false
+ sticky_history = yes
+ title = Dunst
+ transparency = 0
+ verbosity = mesg
+ word_wrap = yes
+[experimental]
+ per_monitor_dpi = false
[shortcuts]
-
- # Shortcuts are specified as [modifier+][modifier+]...key
- # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
- # "mod3" and "mod4" (windows-key).
- # Xev might be helpful to find names for keys.
-
- # Close notification.
- close = mod4+n
-
- # Close all notifications.
- # close_all = ctrl+shift+space
close_all = ctrl+mod4+n
-
- # Redisplay last message(s).
- # On the US keyboard layout "grave" is normally above TAB and left
- # of "1".
- history = shift+mod4+n
-
- # Context menu.
+ close = mod4+n
context = mod1+mod4+n
-
+ history = shift+mod4+n
[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#000000"
- foreground = "#888888"
+ background = "#272822"
+ foreground = "#F8F8F2"
+ frame_color = "#A6E22E"
timeout = 10
-
[urgency_normal]
- background = "#000000"
- foreground = "#ffffff"
+ background = "#272822"
+ foreground = "#F8F8F2"
+ frame_color = "#F4BF75"
timeout = 10
-
[urgency_critical]
- background = "#900000"
- foreground = "#ffffff"
+ background = "#272822"
+ foreground = "#F8F8F2"
+ frame_color = "#F92672"
timeout = 0
-
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-# Messages can be matched by "appname", "summary", "body", "icon", "category",
-# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
-# "background", "new_icon" and "format".
-# Shell-like globbing will get expanded.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: if you don't want a notification to be displayed, set the format
-# to "".
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# format = ""
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-#[Claws Mail]
-# appname = claws-mail
-# category = email.arrived
-# urgency = normal
-# background = "#2F899E"
-# foreground = "#FFA247"
-#
-#[mute.sh]
-# appname = mute
-# category = mute.sound
-# script = mute.sh
-#
-#[JDownloader]
-# appname = JDownloader
-# category = JD
-# background = "#FFA247"
-# foreground = "#FFFFFF"
-#
-#[newsbeuter]
-# summary = *Feeds*
-# background = "#A8EB41"
-# foreground = "#FFFFFF"
-#
-[irc]
- appname = weechat
- timeout = 0
- background = "#0033bb"
- foreground = "#dddddd"
-#
-[weechat hl]
- appname = weechat
- category = weechat.HL
- background = "#FF5C47"
- foreground = "#FFFFFF"
-#
-[weechat pn]
- appname = weechat
- category = weechat.PM
- background = "#D53B84"
- foreground = "#FFFFFF"
-#
-#[CMUS]
-# appname = CMUS
-# category = cmus
-# background = "#6C4AB7"
-# foreground = "#FFE756"
-#
-#
-# background = "#30AB70"
-# foreground = "#F67245"
-#
-# vim: ft=cfg
diff --git a/config/i3/ashuffle b/config/i3/ashuffle
new file mode 100755
index 0000000..77168ef
--- /dev/null
+++ b/config/i3/ashuffle
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+while true
+do
+ ashuffle
+ sleep 1
+done
diff --git a/config/i3/batteryNotify b/config/i3/batteryNotify
new file mode 100755
index 0000000..a6a1ed2
--- /dev/null
+++ b/config/i3/batteryNotify
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+
+BATT="/sys/class/power_supply/BAT0"
+LOW=10
+CRIT=3
+LASTSTATE="$HOME/.cache/batteryState"
+
+function setState() { # state [...notify-send arguments]
+ state="$1"
+ last="$(cat "$LASTSTATE" 2> /dev/null)"
+ shift
+
+ echo "Battery state: $state"
+
+ if [ "$state" != "$last" ]
+ then
+ notify-send "$@"
+ echo "$state" > "$LASTSTATE"
+ fi
+}
+
+function computeState() {
+ acpiStatus="$(cat "$BATT/status")"
+ acpiCapacity="$(cat "$BATT/capacity")"
+
+ if [ "$acpiStatus" == "Discharging" ]
+ then
+ if [ $acpiCapacity -le $CRIT ]
+ then
+ setState "CRIT" -u critical -i battery-caution "Battery level is critical" "$acpiCapacity %"
+ elif [ $acpiCapacity -le $LOW ]
+ then
+ setState "LOW" -u critical -i battery-low "Battery level is low" "$acpiCapacity %"
+ else
+ setState "DISCHARGING" -i battery-good "Battery is discharging" "$acpiCapacity %"
+ fi
+ elif [ "$acpiStatus" == "Charging" ]
+ then
+ setState "CHARGING" -u normal -i battery-good-charging "Battery is charging" "$acpiCapacity %"
+ elif [ "$acpiStatus" == "Full" ]
+ then
+ setState "FULL" -u low -i battery-full-charged "Battery is full" "$acpiCapacity %"
+ fi
+}
+
+if [ "$1" == "-d" ]
+then
+ while true
+ do
+ computeState
+ sleep 10
+ done
+else
+ computeState
+fi
diff --git a/config/i3/config b/config/i3/config
index 774c3fe..19298d7 100644
--- a/config/i3/config
+++ b/config/i3/config
@@ -22,8 +22,7 @@ hide_edge_borders both
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
-font pango:Source Code Pro 8
-font pango:DejaVu Sans Mono 8
+font pango:DejaVu Sans 8
font pango:Sans 8
# Use Mouse+$mod to drag floating windows
@@ -47,7 +46,7 @@ bindsym $mod+dollar exec --no-startup-id ~/.config/i3/sshmenu root
bindsym $mod+d exec --no-startup-id ~/.config/i3/dmenu_run
# Start Applications
-bindsym $mod+Return exec xterm
+bindsym $mod+Return exec urxvtc
bindsym $mod+p exec thunar
bindsym $mod+m exec qutebrowser --override-restore --backend=webengine
@@ -60,8 +59,8 @@ bindsym $mod+F7 exec pactl suspend-sink @DEFAULT_SINK@ 1; exec pactl suspend-sin
bindsym $mod+F8 exec mpc prev
bindsym $mod+F9 exec mpc toggle
bindsym $mod+F10 exec mpc next
-bindsym $mod+F11 exec xterm -e 'pacmixer'
-bindsym $mod+F12 exec xterm -e 'pacmixer'
+bindsym $mod+F11 exec urxvtc -e 'pacmixer'
+bindsym $mod+F12 exec urxvtc -e 'pacmixer'
#Brightness control
bindsym XF86MonBrightnessDown exec xbacklight -dec 20
@@ -145,14 +144,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
@@ -356,17 +360,18 @@ bindsym $mod+F5 exec --no-startup-id xautolock -enable
# Autostart applications
-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 /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # Password remembering
+#exec --no-startup-id gnome-keyring-daemon # Password remembering
+exec --no-startup-id urxvtd -q -f # urxvt daemon
exec --no-startup-id numlockx on # Activate Num lock
-#exec --no-startup-id nm-applet # Network manager tray icon
-#exec --no-startup-id compton -b # Compositing manager
exec --no-startup-id unclutter # Hide mouse cursor after some time
-exec --no-startup-id dunst # Notifications
+#exec --no-startup-id dunst # Notifications (handled by systemd)
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 mpd # Music Player Daemon (handled by systemd)
+exec --no-startup-id ~/.config/i3/ashuffle # MPD Auto-refill
exec --no-startup-id autorandr --change # Screen configuration and everything that depends on it
+exec --no-startup-id ~/.config/i3/batteryNotify -d # Battery state notification
set $ignore #ff00000
diff --git a/config/khal/config b/config/khal/config
new file mode 100644
index 0000000..f32ce2b
--- /dev/null
+++ b/config/khal/config
@@ -0,0 +1,34 @@
+[calendars]
+[[calendars]]
+path = ~/.vdirsyncer/calendars/*
+type = discover
+
+# [[birthdays]]
+# type=birthdays
+# path = ~/.vdirsyncer/contacts/contacts/
+# color = light magenta
+
+[locale]
+timeformat = %H:%M
+dateformat = %d/%m
+longdateformat = %d/%m/%Y
+datetimeformat = %d/%m %H:%M
+longdatetimeformat = %d/%m/%Y %H:%M
+local_timezone = Europe/Paris
+
+[default]
+default_calendar = "Personnel"
+default_command = interactive
+highlight_event_days = True
+show_all_days = True
+timedelta = 7d
+
+[highlight_days]
+
+[view]
+agenda_day_format = "{bold}{name}, {date-long}{reset}"
+agenda_event_format = "{calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol} | {location}{reset}"
+bold_for_light_color = False
+event_format = "{calendar-color}{cancelled}{start}-{end} {title}{repeat-symbol} | {location}{reset}"
+event_view_always_visible = True
+frame = color
diff --git a/config/khard/khard.conf b/config/khard/khard.conf
new file mode 100644
index 0000000..eee27d6
--- /dev/null
+++ b/config/khard/khard.conf
@@ -0,0 +1,43 @@
+# example configuration file for khard version >= 0.11.0
+# place it under $HOME/.config/khard/khard.conf
+
+[addressbooks]
+[[contacts]]
+path = ~/.vdirsyncer/contacts/contacts/
+
+[general]
+debug = no
+default_action = list
+editor = vim
+merge_editor = vimdiff
+
+[contact table]
+# display names by first or last name: first_name / last_name
+display = first_name
+# group by address book: yes / no
+group_by_addressbook = no
+# reverse table ordering: yes / no
+reverse = no
+# append nicknames to name column: yes / no
+show_nicknames = no
+# show uid table column: yes / no
+show_uids = yes
+# sort by first or last name: first_name / last_name
+sort = last_name
+# localize dates: yes / no
+localize_dates = yes
+
+[vcard]
+# extend contacts with your own private objects
+# these objects are stored with a leading "X-" before the object name in the vcard files
+# every object label may only contain letters, digits and the - character
+# example:
+# private_objects = Jabber, Skype, Twitter
+private_objects = Jabber, Skype, Twitter
+# preferred vcard version: 3.0 / 4.0
+preferred_version = 3.0
+# Look into source vcf files to speed up search queries: yes / no
+search_in_source_files = no
+# skip unparsable vcard files: yes / no
+skip_unparsable = no
+
diff --git a/config/offlineimap.py b/config/offlineimap.py
new file mode 100644
index 0000000..3d80ac9
--- /dev/null
+++ b/config/offlineimap.py
@@ -0,0 +1,10 @@
+#! /usr/bin/env python2
+from subprocess import check_output
+
+
+def get_pass(account):
+ return check_output("pass " + account, shell=True).splitlines()[0]
+
+def beep():
+ check_output("play -n synth sine E4 sine A5 remix 1-2 fade 0.5 1.2 0.5 2", shell=True)
+
diff --git a/config/polybar/bbswitch b/config/polybar/bbswitch
new file mode 100755
index 0000000..03507c6
--- /dev/null
+++ b/config/polybar/bbswitch
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+state="$(grep -o '\w\+$' /proc/acpi/bbswitch)"
+if [ "$state" == "ON" ]
+then
+ echo ""
+elif [ "$state" == "OFF" ]
+then
+ echo ""
+else
+ echo "?"
+fi
diff --git a/config/polybar/config b/config/polybar/config
index e259ae7..9106d62 100644
--- a/config/polybar/config
+++ b/config/polybar/config
@@ -76,7 +76,7 @@ enable-ipc = true
inherit = bar/base
modules-center = mpd
-modules-right = vpncheck eth wlan bbswitch xbacklight volume battery date
+modules-right = mail todo vpncheck eth wlan bbswitch xbacklight volume battery shortdate
tray-position = right
tray-padding = 2
@@ -84,7 +84,7 @@ tray-transparent = false
[bar/secondary]
inherit = bar/base
-modules-right = cpu memory temperature vpncheck ethMore wlanMore filesystem bbswitch xbacklight volume date
+modules-right = cpu memory temperature vpncheck ethMore wlanMore filesystem linuxmismatch bbswitch xbacklight volume date
[module/filesystem]
@@ -176,12 +176,35 @@ toggle-off-foreground = #55
[module/bbswitch]
type = custom/script
-exec = grep -o '\w\+$' /proc/acpi/bbswitch
+exec = ~/.config/polybar/bbswitch
exec-if = test -f /proc/acpi/bbswitch
interval = 5
-prefix =
+format-prefix =
format-foreground = ${theme.redF}
+[module/todo]
+type = custom/script
+exec = ~/.config/polybar/todo
+interval = 30
+format-prefix =
+format-foreground = ${theme.yellowF}
+
+[module/mail]
+type = custom/script
+exec = cat ~/.cache/mutt/status
+interval = 1
+format-prefix =
+format-foreground = ${theme.magentaF}
+; format-background = ${theme.magentaB}
+
+[module/linuxmismatch]
+type = custom/script
+exec = echo
+exec-if = ~/.config/polybar/linuxmismatch
+interval = 30
+format-foreground = ${theme.yellowF}
+; format-background = ${theme.yellowF}
+
[module/xbacklight]
type = internal/xbacklight
output = ${env:display:LVDS1}
@@ -201,7 +224,7 @@ card = intel_backlight
[module/cpu]
type = internal/cpu
-interval = 0.5
+interval = 1
format =
format-foreground = ${theme.redF}
ramp-coreload-0 = ▁
@@ -215,7 +238,7 @@ ramp-coreload-7 = █
[module/memory]
type = internal/memory
-interval = 2
+interval = 1
format-foreground = ${theme.greenF}
label = %gb_free%
@@ -229,7 +252,7 @@ format-foreground = ${theme.blueF}
[module/eth]
type = internal/network
interface = ${env:ethI:eth0}
-interval = 1
+interval = 5
format-connected =
label-connected = %local_ip%
@@ -244,7 +267,7 @@ label-connected = ↑%upspeed% ↓%downspeed%
[module/wlan]
type = internal/network
interface = ${env:wlanI:wlan0}
-interval = 1
+interval = 5
format-connected =
label-connected = %local_ip% %essid%
@@ -281,6 +304,11 @@ format-foreground = ${theme.cyanF}
label = %date% %time%
+[module/shortdate]
+inherit = module/date
+date = " %d/%m"
+
+
[module/volume]
type = internal/volume
@@ -307,11 +335,12 @@ label-full =
format-charging =
format-charging-foreground = ${theme.yellowF}
+format-charging-prefix =
label-charging = %percentage%% (%time%)
format-discharging =
format-discharging-foreground = ${self.format-charging-foreground}
-format-discharging-background = ${theme.redB}
+; format-discharging-background = ${theme.redB}
label-discharging = %percentage%% (%time%)
format-full-prefix = " "
diff --git a/config/polybar/linuxmismatch b/config/polybar/linuxmismatch
new file mode 100755
index 0000000..a36e5fe
--- /dev/null
+++ b/config/polybar/linuxmismatch
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+if ! which pacman &> /dev/null
+then
+ exit 1
+fi
+
+packageVersion=$(pacman -Q linux | cut -d' ' -f2)
+runningVersion=$(uname -r)
+
+if echo "$runningVersion" | grep "^$packageVersion" &> /dev/null
+then
+ exit 1
+else
+ exit 0
+fi
+
diff --git a/config/polybar/todo b/config/polybar/todo
new file mode 100755
index 0000000..e739acd
--- /dev/null
+++ b/config/polybar/todo
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+CALDIR="$HOME/.vdirsyncer/currentCalendars"
+
+function status() {
+ ls "$CALDIR" | while read account
+ do
+ displayname="$(cat "$CALDIR/$account/displayname")"
+ color="$(cat "$CALDIR/$account/color")"
+ nb="$(todo list "$displayname" | grep -v "^$" | wc -l)"
+
+ if [ $nb -gt 0 ]
+ then
+ echo -n " %{F$color}$nb%{F-}"
+ fi
+ done
+ # Newline to tell polybar to update in any case
+ echo
+}
+
+status
diff --git a/config/systemd/user/default.target.wants/dunst.service b/config/systemd/user/default.target.wants/dunst.service
new file mode 120000
index 0000000..b24d3b1
--- /dev/null
+++ b/config/systemd/user/default.target.wants/dunst.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/dunst.service
\ No newline at end of file
diff --git a/config/systemd/user/default.target.wants/mpd.service b/config/systemd/user/default.target.wants/mpd.service
new file mode 120000
index 0000000..0524f66
--- /dev/null
+++ b/config/systemd/user/default.target.wants/mpd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/mpd.service
\ No newline at end of file
diff --git a/config/systemd/user/default.target.wants/offlineimap.service b/config/systemd/user/default.target.wants/offlineimap.service
new file mode 120000
index 0000000..aacc641
--- /dev/null
+++ b/config/systemd/user/default.target.wants/offlineimap.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/offlineimap.service
\ No newline at end of file
diff --git a/config/systemd/user/default.target.wants/syncthing.service b/config/systemd/user/default.target.wants/syncthing.service
new file mode 120000
index 0000000..d55cc27
--- /dev/null
+++ b/config/systemd/user/default.target.wants/syncthing.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/syncthing.service
\ No newline at end of file
diff --git a/config/systemd/user/timers.target.wants/vdirsyncer.timer b/config/systemd/user/timers.target.wants/vdirsyncer.timer
new file mode 120000
index 0000000..cc84adf
--- /dev/null
+++ b/config/systemd/user/timers.target.wants/vdirsyncer.timer
@@ -0,0 +1 @@
+/usr/lib/systemd/user/vdirsyncer.timer
\ No newline at end of file
diff --git a/config/todoman/todoman.conf b/config/todoman/todoman.conf
new file mode 100644
index 0000000..74a4616
--- /dev/null
+++ b/config/todoman/todoman.conf
@@ -0,0 +1,4 @@
+[main]
+path = ~/.vdirsyncer/currentCalendars/*
+default_list = Personnel
+humanize = True
diff --git a/config/vdirsyncer/.dfrecur b/config/vdirsyncer/.dfrecur
new file mode 100644
index 0000000..e69de29
diff --git a/config/vdirsyncer/config b/config/vdirsyncer/config
new file mode 100644
index 0000000..148fa0e
--- /dev/null
+++ b/config/vdirsyncer/config
@@ -0,0 +1,68 @@
+# An example configuration for vdirsyncer.
+#
+# Move it to ~/.vdirsyncer/config or ~/.config/vdirsyncer/config and edit it.
+# Run `vdirsyncer --help` for CLI usage.
+#
+# Optional parameters are commented out.
+# This file doesn't document all available parameters, see
+# http://vdirsyncer.pimutils.org/ for the rest of them.
+
+[general]
+# A folder where vdirsyncer can store some metadata about each pair.
+status_path = "~/.vdirsyncer/status/"
+
+# # CARDDAV
+[pair geoffrey_contacts]
+# A `[pair ]` block defines two storages `a` and `b` that should be
+# synchronized. The definition of these storages follows in `[storage ]`
+# blocks. This is similar to accounts in OfflineIMAP.
+a = "geoffrey_contacts_local"
+b = "geoffrey_contacts_remote"
+
+# Synchronize all collections that can be found.
+# You need to run `vdirsyncer discover` if new calendars/addressbooks are added
+# on the server.
+
+collections = ["from a", "from b"]
+
+# Synchronize the "display name" property into a local file (~/.contacts/displayname).
+metadata = ["displayname"]
+
+# To resolve a conflict the following values are possible:
+# `null` - abort when collisions occur (default)
+# `"a wins"` - assume a's items to be more up-to-date
+# `"b wins"` - assume b's items to be more up-to-date
+#conflict_resolution = null
+
+[storage geoffrey_contacts_local]
+# A storage references actual data on a remote server or on the local disk.
+# Similar to repositories in OfflineIMAP.
+type = "filesystem"
+path = "~/.vdirsyncer/contacts/"
+fileext = ".vcf"
+
+[storage geoffrey_contacts_remote]
+type = "carddav"
+url = "https://dav.frogeye.fr/caldav.php/"
+username = "geoffrey"
+password.fetch = ["command", "sh", "-c", "cat ~/.config/vdirsyncer/pass"]
+
+# CALDAV
+[pair geoffrey_calendar]
+a = "geoffrey_calendar_local"
+b = "geoffrey_calendar_remote"
+collections = ["from a", "from b"]
+
+# Calendars also have a color property
+metadata = ["displayname", "color"]
+
+[storage geoffrey_calendar_local]
+type = "filesystem"
+path = "~/.vdirsyncer/calendars/"
+fileext = ".ics"
+
+[storage geoffrey_calendar_remote]
+type = "caldav"
+url = "https://dav.frogeye.fr/caldav.php/"
+username = "geoffrey"
+password.fetch = ["command", "sh", "-c", "cat ~/.config/vdirsyncer/pass"]
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/gitconfig b/gitconfig
index 17d9812..6860844 100644
--- a/gitconfig
+++ b/gitconfig
@@ -8,3 +8,8 @@
default = matching
[alias]
git = !exec git
+[filter "lfs"]
+ clean = git-lfs clean -- %f
+ smudge = git-lfs smudge -- %f
+ process = git-lfs filter-process
+ required = true
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..d5bdc48
--- /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-cmdline
+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/scripts/install-prefs b/scripts/install-prefs
index f7e5434..314a063 100755
--- a/scripts/install-prefs
+++ b/scripts/install-prefs
@@ -167,6 +167,10 @@ function altInst {
done
}
+function systemdUserUnit {
+ systemctl enable "$1"
+ systemctl start "$1"
+}
# Common CLI
@@ -248,7 +252,7 @@ fi
if [ $GUI == 1 ]; then
# Desktop manager
- inst i3 i3lock dunst unclutter xautolock feh numlockx scrot xterm xclip
+ inst i3 i3lock dunst unclutter xautolock feh numlockx scrot rxvt-unicode 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
@@ -315,16 +319,23 @@ if [ $GUI == 1 ]; then
fi
fi
+
if [ $EXTRA == 1 ]; then
# Extra dev
inst cmake clang llvm npm
# Extra CLI
- inst ffmpeg youtube-dl optipng syncthing ccache
-
+ inst ffmpeg youtube-dl optipng syncthing ccache mutt
+ systemdUserUnit syncthing.service
if [ $ARCH == 1 ]; then
inst jq
altInst pdftk translate-shell git-lfs js-beautify insect visidata-git
+
+ # Orga
+ # TODO For others
+ inst vdirsyncer khard
+ altInst khal todoman offlineimap
+ systemdUserUnit vdirsyncer.timer
else
# translate-shell
curl -L git.io/trans > ~/.bin/trans
@@ -337,7 +348,7 @@ if [ $EXTRA == 1 ]; then
if [ $ARCH == 1 ]; then
inst simplescreenrecorder
- altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git mpc
+ altInst pacmixer xcursor-menda-git menda-themes-git menda-maia-icon-theme vimpc-git mpc ashuffle-git
fi
fi
diff --git a/scripts/machines b/scripts/machines
index fecc1e8..95fe7e9 100755
--- a/scripts/machines
+++ b/scripts/machines
@@ -52,7 +52,7 @@ function _machines-api {
wget $MACHINES_API/$route --content-on-error --quiet --output-document=- "$@"
result=$?
if [ $result != 0 ]; then
- echo "[ERROR] wget returned $result..."
+ echo "[ERROR] wget returned $result..." > /dev/stderr
exit 2
fi
}
@@ -77,7 +77,7 @@ function _machines-pubFromCrt {
function _machines-verifyCertificate {
return
if openssl verify $MACHINES_CONFIG/machines.crt | grep -v 'error 18' | grep 'error' --quiet; then
- echo "[ERROR] Invalid certificate"
+ echo "[ERROR] Invalid certificate" > /dev/stderr
exit 1
fi
}
@@ -92,7 +92,7 @@ function _machines-ensurePub {
if [ $? == 1 ]; then
mv $CERT_FILE $MACHINES_CONFIG/machines.crt &> /dev/null
else
- echo "[ERROR] Certificate rejected."
+ echo "[ERROR] Certificate rejected." > /dev/stderr
exit 1
fi
fi
@@ -105,7 +105,7 @@ function _machines-ensurePub {
function _machines-ensureAdmin {
if [ ! -f $MACHINES_CONFIG/machines.key ]; then
- echo "[ERROR] You need have to have the private key to do that"
+ echo "[ERROR] You need have to have the private key to do that" > /dev/stderr
exit 1
fi
}
@@ -127,6 +127,10 @@ function _machines-getAkey { # network
SIGN_FILE=$(mktemp)
_machines-api akey/$1 > $KEY_FILE
_machines-api akey/$1?signature > $SIGN_FILE
+ md5sum $KEY_FILE &> /dev/stderr
+ md5sum $SIGN_FILE &> /dev/stderr
+ md5sum $MACHINES_CONFIG/machines.pub &> /dev/stderr
+
openssl dgst -sha256 -verify $MACHINES_CONFIG/machines.pub -signature $SIGN_FILE $KEY_FILE &> /dev/null
if [ $? == 0 ]; then
cat $KEY_FILE
@@ -147,7 +151,7 @@ function _machines-updateAkey {
return 0
else
cat $MYKEY_FILE
- echo "[ERROR] Authorized keys are not properly signed"
+ echo "[ERROR] Authorized keys are not properly signed" > /dev/stderr
rm $MYKEY_FILE
exit 1
fi
@@ -365,15 +369,16 @@ machines_net_help() { machines_network_help "$@"; }
machines_n_help() { machines_network_help "$@"; }
function machines_update-all {
- machines_list | while read machine; do
+ machines_machine_list | while read machine; do
echo "Updating $machine..."
- ssh $machine 'machines-update' &
+ ssh $machine 'machines update' &
+ ssh $machine 'cd .dotfiles && git pull' &
done
}
function machines_regen-keys {
if [[ -e $MACHINES_CONFIG/machines.key || -e $MACHINES_CONFIG/machines.pub || -e $MACHINES_CONFIG/machines.crt ]]; then
- echo "[ERROR] Please delete the pem files manually to prove you know what you're doing."
+ echo "[ERROR] Please delete the pem files manually to prove you know what you're doing." > /dev/stderr
exit 1
else
openssl genrsa -out $MACHINES_CONFIG/machines.key 4096
@@ -389,7 +394,7 @@ function machines_regen-keys {
function machines_setup {
if [ -e $MACHINES_CONFIG/this.name ]; then
- echo "[ERROR] This machine is already set up"
+ echo "[ERROR] This machine is already set up" > /dev/stderr
exit 1
fi
diff --git a/scripts/pdfpages b/scripts/pdfpages
new file mode 100755
index 0000000..e805435
--- /dev/null
+++ b/scripts/pdfpages
@@ -0,0 +1,4 @@
+#!/usr/bin/bash
+
+# From https://stackoverflow.com/a/14736593
+pdftk "$1" dump_data | grep NumberOfPages | awk '{print $2}'
diff --git a/scripts/rep b/scripts/rep
index a7b2d84..789f25f 100755
--- a/scripts/rep
+++ b/scripts/rep
@@ -2,7 +2,7 @@
# Moves a file to another place and put a symbolic link in place
-function proxy_help {
+function rep_help {
echo "Usage: $0 SOURCE DEST"
echo
echo "Arguments:"
@@ -17,9 +17,9 @@ ln -s "$2" "$1"
# MAIN
command="$1"
shift
-if type "proxy_$command" &> /dev/null; then
- "proxy_$command" "$@"
+if type "rep_$command" &> /dev/null; then
+ "rep_$command" "$@"
else
- proxy_help
+ rep_help
fi
diff --git a/scripts/rms b/scripts/rms
new file mode 100755
index 0000000..885b287
--- /dev/null
+++ b/scripts/rms
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+find . -name "*.sync-conflict-*" -delete
diff --git a/terminfo/a/alacritty b/terminfo/a/alacritty
new file mode 100644
index 0000000..d02394c
Binary files /dev/null and b/terminfo/a/alacritty differ
diff --git a/terminfo/a/alacritty-256color b/terminfo/a/alacritty-256color
new file mode 100644
index 0000000..a76418f
Binary files /dev/null and b/terminfo/a/alacritty-256color differ
diff --git a/terminfo/r/rxvt-unicode b/terminfo/r/rxvt-unicode
new file mode 100644
index 0000000..7650d3c
Binary files /dev/null and b/terminfo/r/rxvt-unicode differ
diff --git a/terminfo/r/rxvt-unicode-256color b/terminfo/r/rxvt-unicode-256color
new file mode 100644
index 0000000..3f43d0d
Binary files /dev/null and b/terminfo/r/rxvt-unicode-256color differ
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
diff --git a/vimrc b/vimrc
index 6e10446..487093a 100644
--- a/vimrc
+++ b/vimrc
@@ -36,6 +36,7 @@ Plugin 'tomtom/tcomment_vim'
Plugin 'Shougo/denite.nvim'
Plugin 'tomlion/vim-solidity'
Plugin 'godlygeek/tabular'
+Plugin 'jrozner/vim-antlr'
call vundle#end() " required
filetype plugin indent on " required
@@ -48,7 +49,7 @@ nmap :UndotreeToggle:UndotreeFocus
let g:ctrlp_custom_ignore = {
\ 'dir': '\v([\/]\.(git|hg|svn)|log|node_modules|bower_components|__pycache__|vendor|output|buildroot|doc)$',
- \ 'file': '\v\.(exe|so|dll|o|pyc)$',
+ \ 'file': '\v\.(exe|so|dll|o|pyc|a)$',
\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
\ }