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', \ }