initial commit

This commit is contained in:
hoellen 2018-03-01 00:47:14 +01:00
commit 304f883c1e
45 changed files with 2651 additions and 0 deletions

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
# nvim folders
/config/nvim/*/
# tmux plugins
/rc/tmux/tmux
#nextcloud stuff
/._sync*
/.owncloud*
/tmp

3
README.MD Normal file
View File

@ -0,0 +1,3 @@
# hoellen/dotfiles
This is not cleaned up. Still in development [WIP].

58
config/aliases Normal file
View File

@ -0,0 +1,58 @@
#
# aliases
#
alias setclip='xclip -selection c'
alias getclip='xclip -selection clipboard -o'
alias open='xdg-open $1'
alias vi='nvim'
alias vim='nvim'
alias l="ls -lFh"
alias la="ls -lAFh"
alias ll="ls -l"
alias ls='ls --color=auto'
alias j="jump"
# config files
alias zshrc="nvim ~/.zshrc"
alias bashrc="nvim ~/.bashrc"
alias aliases="nvim ~/.config/aliases"
alias nviminit="nvim ~/.config/nvim/init.vim"
alias i3conf="nvim ~/.i3/config"
alias bspwmconf="nvim ~/.config/bspwm/bspwmrc"
alias sxhkdconf="nvim ~/.config/sxhkd/sxhkdrc"
alias tmuxconf="nvim ~/.tmux.conf"
# Git aliases
alias gs="git status"
alias gd="git diff"
alias gdh="git diff HEAD"
alias gc="git clone $1 $2"
alias gcm="git commit -m "$1""
alias gaa="git add -A ."
alias gpo="git push origin $1"
alias glo="git log --oneline"
alias grhh="git reset --hard HEAD"
alias gcp="git cherry-pick $1"
# npm aliases
#alias ni="npm install";
#alias niS="npm i -S "
#alias niD="npm i -D "
#alias nrs="npm run start";
#alias nrb="npm run build";
#alias nrt="npm run test";
alias xres="xrdb ~/.Xresources"
# Pacman
alias pacman="pacman --color=auto $@"
alias pm="pacman $@"
alias pms="pacman -Ss $@"
alias pmi="sudo pacman -S --color=auto $@"
alias pmu="sudo pacman -Syu $@"
alias cower="cower --color=auto $@"

63
config/bspwm/bspwmrc Executable file
View File

@ -0,0 +1,63 @@
#! /bin/sh
sxhkd &
bspc monitor -d web term code IV V VI VII VIII IX music
bspc config border_width 2
bspc config window_gap 12
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config click_to_focus true
bspc rule -a Gimp desktop='^8' state=floating follow=on
#bspc rule -a Chromium desktop='^2'
#bspc rule -a mplayer2 state=floating
#bspc rule -a Kupfer.py focus=on
#bspc rule -a Screenkey manage=off
bspc rule -a Nautilus state=floating
bspc rule -a Gedit state=floating
bspc rule -a Gnome-system-monitor state=floating
bspc rule -a Nextcloud desktop='^9' state=floating
# set wallpaper
feh --bg-scale ~/Bilder/Wallpapers/wallpaper.jpg
# map CAPS LOCK to CTRL
xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
#xmodmap -e "add Lock = Shift_L + Shift_R"
# toggle keyboard language de, us with alt+shift
setxkbmap -option grp:alt_space_toggle de,us
#xmodmap -e "add Control = Caps_Lock"
#xmodmap -e "add Lock = Shift_L+Shift_R"
#remove Control = Control_L
#keysym Control_L = Caps_Lock
#keysym Caps_Lock = Control_L
#add Lock = Caps_Lock
# enable touchpad tap-to-click
#xinput set-prop 12 276 1
$HOME/.dotfiles/scripts/touchpad_enable_tapping.sh
# set default mouse cursor (no X)
xsetroot -cursor_name left_ptr
# move/resize window with alt + mouse
bspc config pointer_modifier mod1
# compton (effects)
compton --config ~/.config/bspwm/compton.conf -b &
# autolock after 5 min
xautolock -time 5 -locker '~/.dotfiles/scripts/lock.sh' &
# panel
polybar top &
polybar bottom &
# autostart
$HOME/.dotfiles/scripts/autostart.sh &

71
config/bspwm/compton.conf Normal file
View File

@ -0,0 +1,71 @@
backend = "glx";
glx-no-stencil = true;
glx-copy-from-front = false;
glx-swap-method = 1;
##blur-background = true;
##blur-kern = "7x7box";
# Shadow
shadow = true; # Enabled client-side shadows on windows.
no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
no-dnd-shadow = true; # Don't draw shadows on DND windows.
clear-shadow = true; # Zero the part of the shadow's mask behind the window (experimental).
shadow-radius = 2; # The blur radius for shadows. (default 12)
shadow-offset-x = 1; # The left offset for shadows. (default -15)
shadow-offset-y = 1; # The top offset for shadows. (default -15)
shadow-opacity = 0.6;
menu-opacity = 1;
shadow-exclude = [
#"! name~=''",
"n:e:Notification",
"n:e:Dunst",
"n:e:dzen",
"name = 'dzen slave'",
"name = 'gnome-screenshot'",
#"n:e:Docky",
#"g:e:Synapse",
#"g:e:Kupfer",
"g:e:Conky",
#"n:w:Firefox",
"n:w:*Chrome*",
#"n:w:*Chromium*",
"class_g ?= 'dzen'",
"class_g ?= 'gnome-screenshot'",
"class_g ?= 'Notify-osd'"
#"class_g ?= 'Cairo-dock'",
#"class_g ?= 'Xfce4-notifyd'",
#"class_g ?= 'Xfce4-power-manager'"
];
blur-background-exclude = [
"name = 'gnome-screenshot'",
"class_g ?= 'gnome-screenshot'"
];
#opacity-rule = ["85:class_g = 'gnome-terminal'"];
opacity-rule = [
"50:class_g = 'Bspwm' && class_i = 'presel_feedback'",
"75:class_g = 'URxvt'"
];
# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher.
# Fading
fading = true; # Fade windows during opacity changes.
fade-delta = 4; # The time between steps in a fade in milliseconds. (default 10).
fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
no-fading-openclose = false; # Fade windows in/out when opening/closing
detect-client-opacity = true; # This prevents opacity being ignored for some apps. For example without this enabled my xfce4-notifyd is 100% opacity no matter what.
#Window type settings
wintypes:
{
tooltip = { fade = true; shadow = false; };
menu = { shadow = false; };
dropdown_menu = { shadow = false; };
popup_menu = { shadow = false; };
};

163
config/i3/config Normal file
View File

@ -0,0 +1,163 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sas Mono 8
font pango:DejaVu Sas Mono 8
# Before i3 v4.8, we used to recommend this one as the default:
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, its unicode glyph coverage is limited, the old
# X core fonts rendering does not support right-to-left and this being a bitmap
# font, it doesnt scale on retina/hidpi displays.
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
#bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Return exec gnome-terminal
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
###bindsym $mod+d exec dmenu_run
bindsym $mod+d exec rofi -show run
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# change focus
#bindsym $mod+j focus left
#bindsym $mod+k focus down
#bindsym $mod+l focus up
#bindsym $mod+odiaeresis focus right
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
bindsym $mod+h focus left
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
bindsym $mod+Shift+h move left
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+minus split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym h resize shrink width 10 px or 10 ppt
bindsym j resize grow height 10 px or 10 ppt
bindsym k resize shrink height 10 px or 10 ppt
bindsym l resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
}

85
config/lemonbar/i3_lemonbar.sh Executable file
View File

@ -0,0 +1,85 @@
#! /bin/bash
#
# I3 bar with https://github.com/LemonBoy/bar
. $(dirname $0)/i3_lemonbar_config
if [ $(pgrep -cx $(basename $0)) -gt 1 ] ; then
printf "%s\n" "The status bar is already running." >&2
exit 1
fi
trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
[ -e "${panel_fifo}" ] && rm "${panel_fifo}"
mkfifo "${panel_fifo}"
# echo "=== Starting up bar at $(date +%c)" >> bar.log
### EVENTS METERS
# Window title, "WIN"
xprop -spy -root _NET_ACTIVE_WINDOW | sed -un 's/.*\(0x.*\)/WIN\1/p' > "${panel_fifo}" &
# i3 Workspaces, "WSP"
$(dirname $0)/i3_workspaces.py > ${panel_fifo} &
# IRC, "IRC"
# only for init
# ~/bin/irc_warn &
# Conky, "SYS"
conky -c $(dirname $0)/i3_lemonbar_conky > "${panel_fifo}" &
### UPDATE INTERVAL METERS
cnt_vol=${upd_vol}
cnt_mail=${upd_mail}
cnt_mpd=${upd_mpd}
cnt_bat=${upd_bat}
cnt_win=${upd_win}
while :; do
# Volume, "VOL"
if [ $((cnt_vol++)) -ge ${upd_vol} ]; then
echo "VOL$(alsa-status)" > "${panel_fifo}" &
cnt_vol=0
fi
# GMAIL, "GMA"
# if [ $((cnt_mail++)) -ge ${upd_mail} ]; then
# printf "%s%s\n" "GMA" "$(~/bin/gmail.sh)" > "${panel_fifo}"
# cnt_mail=0
# fi
# MPD
if [ $((cnt_mpd++)) -ge ${upd_mpd} ]; then
#printf "%s%s\n" "MPD" "$(ncmpcpp --now-playing '{%a - %t}|{%f}' | head -c 60)" > "${panel_fifo}"
printf "%s%s\n" "MPD" "$(mpc current -f '[[%artist% - ]%title%]|[%file%]' 2>&1 | head -c 70)" > "${panel_fifo}"
cnt_mpd=0
fi
# Battey, "BAT"
if [ $((cnt_bat++)) -ge ${upd_bat} ]; then
echo "$(batstat)" > "${panel_fifo}" &
cnt_bat=0
fi
# Periodic Window title update (Ticket #1)
if [ $((cnt_win++)) -ge ${upd_win} ]; then
echo "WIN`mywin`" > "${panel_fifo}" &
cnt_win=0
fi
# Finally, wait 1 second
sleep 1s;
done &
#### LOOP FIFO
cat "${panel_fifo}" | $(dirname $0)/i3_lemonbar_parser.sh \
| bar -p -f "${font}" -f "${iconfont}" -f "${plfont}" -g "${geometry}" -B "${color_back}" -F "${color_fore}" &
wait

View File

@ -0,0 +1,132 @@
#!\bin\bash
# i3 panel config. Powerline style.
panel_fifo="/tmp/i3_lemonbar_${USER}"
geometry="x14"
#font="-xos4-terminesspowerline-medium-r-normal--12-120-72-72-c-60-iso10646-1"
#font="--powerlinesymbols-medium-----------"
iconfont="-wuncon-siji-medium-r-normal--10-100-75-75-c-80-iso10646-1"
res_w=$(xrandr | grep "current" | awk '{print $8a}')
# Alarm settings
cpu_alert=75 # % cpu use
net_alert=5 # K net use
# update setting, in seconds (conky update in i3_lemonbar_conky
upd_vol=3 # Volume update
upd_mail=300 # Mail check update
upd_mpd=5 # MPD song update
upd_bat=5 # Battey update
upd_win=1 # Window title (xprop -spy only updates on focus change)
# --- APPLY XRES BEGIN
c_red_l="#ffCC6666"
c_green_l="#ffBDE077"
c_cyan_d="#ff72AD8C"
c_cursor="#fffff000"
c_yellow_d="#ffFEA63C"
c_green_d="#ffB7CE42"
c_yellow_l="#ffFFE863"
c_foreground="#ffddeedd"
c_blue_l="#ffAACCBB"
c_magenta_l="#ffff5879"
c_black_d="#ff25374A"
c_background="#ff131D24"
c_magenta_d="#ffF26B9E"
c_black_l="#ff3A526B"
c_blue_d="#ff66AABB"
c_white_l="#ffFFFFFF"
c_cyan_l="#ff9FE3BC"
c_red_d="#ffBD4A4A"
c_white_d="#ffDDEEDD"
# --- APPLY XRES END
# color definitions
color_back="$c_background" # Default background
color_fore="$c_white_l" # Default foreground
color_head="$c_yellow_d" # Background for unselected workspaces
color_wsp="$c_yellow_l" # Background for selected workspace
color_sec_b1="$c_black_d" # Background for section 1
color_sec_b2="$c_black_l" # Background for section 2
color_sec_b3="$c_white_d" # Background for section 3
color_icon="$c_white_d" # For icons
color_mail="$c_magenta_l" # Background color for mail alert
color_chat="$c_magenta_l" # Background color for chat alert
color_cpu="$c_magenta_l" # Background color for cpu alert
color_net="$c_white_l" # Background color for net alert
color_disable="$c_black_l" # Foreground for disable elements
color_clock="$c_yellow_d" # Color for clock
color_clock_edge="$c_yellow_l" # Color for clock
color_success="$c_green_d" # Positive color for good times
color_warning="$c_yellow_l" # Yellow color for warnings (eg, low battery)
color_critical="$c_magenta_l" # Red color for critical meters
#default space between sections
if [ ${res_w} -gt 1024 ]; then
stab=' '
else
stab=' '
fi
# Char glyps for powerline fonts
sep_left="" # Powerline separator left
sep_right="" # Powerline separator right
sep_l_left="" # Powerline light separator left
sep_l_right="" # Powerline light sepatator right
# Icon glyphs from Terminusicons2
# icon_clock="Õ" # Clock icon
# icon_cpu="Ï" # CPU icon
# icon_mem="Þ" # MEM icon
# icon_dl="Ð" # Download icon
# icon_ul="Ñ" # Upload icon
# icon_vol="Ô" # Volume icon
# icon_hd="À" # HD / icon
# icon_home="Æ" # HD /home icon
# icon_mail="Ó" # Mail icon
# icon_chat="Ò" # IRC/Chat icon
# icon_music="Î" # Music icon
# icon_prog="Â" # Window icon
# icon_contact="Á" # Contact icon
# icon_wsp="Ç" # Workspace icon
# icon_battery="" # Battery icon
# icon_charging="+" # Charging icon
# Icon glyphs from Siji
icon_clock="" # Clock icon
icon_cpu="" # CPU icon
icon_mem="" # MEM icon
icon_dl="" # Download icon
icon_ul="" # Upload icon
icon_vol="" # Volume icon
icon_mute=""
icon_hd="À" # HD / icon
icon_home="Æ" # HD /home icon
icon_mail="Ó" # Mail icon
icon_chat="Ò" # IRC/Chat icon
icon_music="" # Music icon
icon_music_playing=""
icon_music_paused=""
icon_prog="" # Window icon
icon_contact="Á" # Contact icon
icon_wsp="" # Workspace icon
icon_battery="         "
icon_charging=""
# Ionicon glyphs
# icon_battery="" # Battery icon (half-ish full)
# icon_clock="" # Clock icon
# icon_cpu="?" # CPU icon
# icon_globe="" # Globe icon
# icon_home="" # Home icon (also linux)
# icon_laptop="" # Laptop icon
# icon_linux="" # Linux (Tux) icon
# icon_mail="" # Email icon
# icon_mem="?" # Memory icon
# icon_music="" # Music icon
# icon_paw="" # Paw icon
# icon_prog="" # Window icon
# icon_shell="" # Shell icon
# icon_vol="" # Volume icon
# icon_wsp="" # Workspace icon (paw duplicate for now)

View File

@ -0,0 +1,23 @@
conky.config = {
background = false,
update_interval = 2,
total_run_times = 0,
override_utf8_locale = true,
short_units = true,
uppercase = false,
out_to_console = true,
out_to_x = false,
if_up_strictness = 'address',
format_human_readable = true
}
conky.text = [[
SYS\
${time %a %d %b %I:%M%p} \
${cpu} \
${mem} \
${fs_used_perc /} \
${fs_used_perc /home} \
${if_up wlp9s0}${downspeedf wlp2s0} ${upspeedf wlp2s0} \
${else} down down ${endif}\
]]

View File

@ -0,0 +1,219 @@
#!/bin/bash
#
# Input parser for i3 bar
# 14 ago 2015 - Electro7
# config
. $(dirname $0)/i3_lemonbar_config
# min init
irc_n_high=0
title="%{F${color_head} B${color_sec_b2}}${sep_right}%{F${color_head} B${color_sec_b2}%{T2} ${icon_prog} %{F${color_sec_b2} B-}${sep_right}%{F- B- T1}"
# parser
while read -r line ; do
case $line in
SYS*)
# conky=, 0 = wday, 1 = mday, 2 = month, 3 = time, 4 = cpu, 5 = mem, 6 = disk /, 7 = disk /home, 8-9 = up/down wlan, 10-11 = up/down eth, 12-13=speed
sys_arr=(${line#???})
# date
if [ ${res_w} -gt 1024 ]; then
date="${sys_arr[0]} ${sys_arr[1]} ${sys_arr[2]}"
else
date="${sys_arr[1]} ${sys_arr[2]}"
fi
date="%{F${color_sec_b1}}${sep_left}%{F${color_icon} B${color_sec_b1}} %{T2}${icon_clock}%{F- T1} ${date}"
# time
time="%{F${color_clock_edge}}${sep_left}%{F${color_clock} B${color_clock_edge}}${sep_left}%{F${color_back} B${color_clock}} ${sys_arr[3]} %{F- B-}"
# cpu
if [ ${sys_arr[4]} -gt ${cpu_alert} ]; then
cpu_cback=${color_cpu}; cpu_cicon=${color_back}; cpu_cfore=${color_back};
else
cpu_cback=${color_sec_b2}; cpu_cicon=${color_icon}; cpu_cfore=${color_fore};
fi
cpu="%{F${cpu_cback}}${sep_left}%{F${cpu_cicon} B${cpu_cback}} %{T2}${icon_cpu}%{F${cpu_cfore} T1} ${sys_arr[4]}%%"
# mem
mem="%{F${cpu_cicon}}${sep_l_left} %{T2}${icon_mem}%{F${cpu_cfore} T1} ${sys_arr[5]}"
# disk /
# diskr="%{F${color_sec_b1}}${sep_left}%{F${color_icon} B${color_sec_b1}} %{T2}${icon_hd}%{F- T1} ${sys_arr[6]}%%"
# disk home
# diskh="%{F${color_icon}}${sep_l_left} %{T2}${icon_home}%{F- T1} ${sys_arr[7]}%%"
# wlan
if [ "${sys_arr[8]}" == "down" ]; then
wland_v="×"; wlanu_v="×";
wlan_cback=${color_sec_b2}; wlan_cicon=${color_sec_b3}; wlan_cfore=${color_sec_b3};
else
wland_v=${sys_arr[8]}K; wlanu_v=${sys_arr[9]}K;
if [ ${wland_v:0:-3} -gt ${net_alert} ] || [ ${wlanu_v:0:-3} -gt ${net_alert} ]; then
wlan_cback=${color_net}; wlan_cicon=${color_back}; wlan_cfore=${color_back};
else
wlan_cback=${color_sec_b2}; wlan_cicon=${color_icon}; wlan_cfore=${color_fore};
fi
fi
wland="%{F${wlan_cback}}${sep_left}%{F${wlan_cicon} B${wlan_cback}} %{T2}${icon_dl}%{F${wlan_cfore} T1} ${wland_v}"
wlanu="%{F${wlan_cicon}}${sep_l_left} %{T2}${icon_ul}%{F${wlan_cfore} T1} ${wlanu_v}"
# eth
# if [ "${sys_arr[10]}" == "down" ]; then
# ethd_v="×"; ethu_v="×";
# eth_cback=${color_sec_b1}; eth_cicon=${color_disable}; eth_cfore=${color_disable};
# else
# ethd_v=${sys_arr[10]}K; ethu_v=${sys_arr[11]}K;
# if [ ${ethd_v:0:-3} -gt ${net_alert} ] || [ ${ethu_v:0:-3} -gt ${net_alert} ]; then
# eth_cback=${color_net}; eth_cicon=${color_back}; eth_cfore=${color_back};
# else
# eth_cback=${color_sec_b1}; eth_cicon=${color_icon}; eth_cfore=${color_fore};
# fi
# fi
# ethd="%{F${eth_cback}}${sep_left}%{F${eth_cicon} B${eth_cback}} %{T2}${icon_dl}%{F${eth_cfore} T1} ${ethd_v}"
# ethu="%{F${eth_cicon}}${sep_l_left} %{T2}${icon_ul}%{F${eth_cfore} T1} ${ethu_v}"
;;
VOL*)
# Volume:
# [0] Muted indicator: (M=Muted / (anything else)=Unmuted)
# [1] On/off (muted) status (1=Unmuted / 0=Muted)
vol_arr=(${line#???})
vol_bkg=$color_sec_b2
vol_frg=$color_fore
vol_ico=$icon_vol
vol_txt=${vol_arr[1]}
if [[ ${vol_arr[0]} == "M" ]]; then
vol_bkg=$color_sec_b1
vol_frg=$color_icon
vol_ico=$icon_mute
fi
vol="%{F${vol_bkg}}${sep_left}%{F${color_icon} B${vol_bkg}} %{T2}${vol_ico}%{F${vol_frg} T1} $vol_txt%{F${color_fore}}"
;;
GMA*)
# Gmail
gmail="${line#???}"
if [ "${gmail}" != "0" ]; then
mail_cback=${color_mail}; mail_cicon=${color_back}; mail_cfore=${color_back}
else
mail_cback=${color_sec_b1}; mail_cicon=${color_icon}; mail_cfore=${color_fore}
fi
gmail="%{F${mail_cback}}${sep_left}%{F${mail_cicon} B${mail_cback}} %{T2}${icon_mail}%{F${mail_cfore} T1} ${gmail}"
;;
IRC*)
# IRC highlight (script irc_warn)
if [ "${line#???}" != "0" ]; then
((irc_n_high++)); irc_high="${line#???}";
irc_cback=${color_chat}; irc_cicon=${color_back}; irc_cfore=${color_back}
else
irc_n_high=0; [ -z "${irc_high}" ] && irc_high="none";
irc_cback=${color_sec_b2}; irc_cicon=${color_icon}; irc_cfore=${color_fore}
fi
irc="%{F${irc_cback}}${sep_left}%{F${irc_cicon} B${irc_cback}} %{T2}${icon_chat}%{F${irc_cfore} T1} ${irc_n_high} %{F${irc_cicon}}${sep_l_left} %{T2}${icon_contact}%{F${irc_cfore} T1} ${irc_high}"
;;
MPD*)
# Music
mpd_arr=(${line#???})
if [ -z "${line#???}" ]; then
song="none";
elif [ "${mpd_arr[1]}" == "error:" ]; then
song="mpd off";
else
song="${line#???}";
fi
mpd="%{F${color_sec_b2}}${sep_left}%{B${color_sec_b2}}%{F${color_sec_b1}}${sep_left}%{F${color_icon} B${color_sec_b1}} %{T2}${icon_music}%{F${color_fore} T1} ${song}"
# echo "Setting music display to ${song}" >> bar.log
;;
BAT*)
# Battery readout:
# [0] = integer part
# [1] = charging status (D(ischarging), C(harging))
# [2] = power level (F(ull), N(ormal), L(ow), C(ritical))
bat_arr=(${line#???})
bat_icons=($icon_battery)
ico="${bat_icons[$(((${bat_arr[0]}*(${#bat_icons[@]}-1))/100))]}"
bkg="${color_sec_b1}"
frg="${color_fore}"
if [[ ${bat_arr[2]} == "L" ]]; then
bkg="${color_warning}"
frg="${color_back}"
elif [[ ${bat_arr[2]} == "C" ]]; then
bkg="${color_critical}"
frg="${color_back}"
elif [[ ${bat_arr[2]} == "F" ]]; then
bkg="${c_green_d}"
frg="${c_white_l}"
fi
batamt="%{F${bkg}}${sep_left}%{B${bkg}} %{F${frg}} ${ico} ${bat_arr[0]}%%"
if [[ ${bat_arr[1]} == "C" ]]; then
batamt="%{F${color_fore}}${sep_left}%{F${color_back} B${color_fore}}${icon_charging}${batamt}"
fi
;;
WSP*)
# I3 Workspaces
wsp="%{F${color_back} B${color_head}} %{T2}${icon_wsp}%{T1} "
set -- ${line#???}
while [ $# -gt 0 ] ; do
case $1 in
FOC*)
wsp="${wsp}%{F${color_head} B${color_wsp}}${sep_right}%{F${color_back} B${color_wsp} T1} ${1##????} %{F${color_wsp} B${color_head}}${sep_right}"
;;
INA*|URG*|ACT*)
wsp="${wsp}%{F${color_back} T1} ${1##????} "
;;
esac
shift
done
;;
WIN*)
# window title
title=$(xprop -id ${line#???} | awk '/_NET_WM_NAME/{$1=$2="";print}' | cut -d'"' -f2)
title="%{F${color_head} B${color_sec_b2} T1}${sep_right}%{F${color_icon} B${color_sec_b2} T2} ${icon_prog} %{F${color_sec_b2} B- T1}${sep_right}%{F- B- T1} ${title}"
;;
WNM*)
# Window title (string)
title=$(echo ${line#???} | xargs)
title="%{F${color_head} B${color_sec_b2} T1}${sep_right}%{F${color_icon} B${color_sec_b2} T2} ${icon_prog} %{F${color_sec_b2} B- T1}${sep_right}%{F- B- T1} ${title}"
;;
VIS*)
# Visual effects
viscmds=(${line#???})
;;
MSG*)
viscmds=(`echo "fill ${color_sec_b2} ${color_fore}"`)
msg=${line#???}
;;
WRN*)
viscmds=(`echo "fill ${color_warning} ${color_back}"`)
msg=${line#???}
;;
ALT*)
viscmds=(`echo "fill ${color_critical} ${color_back}"`)
msg=${line#???}
;;
esac
# And finally, output
if [[ ${viscmds[0]} == "fill" ]]; then
printf "%s\n" "%{l}%{B${viscmds[2]}} %{B${viscmds[1]} F${viscmds[2]}}${sep_right} ${msg} %{r}%{B${viscmds[1]} F${viscmds[2]}}"
else
printf "%s\n" "%{l}${wsp}${title} %{r}${mpd}${stab}${wland}${stab}${wlanu}${stab}${vol}${stab}${cpu}${stab}${mem}${stab}${batamt}${stab}${date}${stab}${time}"
fi
done

View File

@ -0,0 +1,138 @@
#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab:ft=perl
#
# Print i3 workspaces on every change.
#
# Format:
# For every workspace (x = workspace name)
# - "FOCx" -> Focused workspace
# - "INAx" -> Inactive workspace
# - "ACTx" -> Ative workspace
# - "URGx" -> Urgent workspace
#
# Uses AnyEvent I3 0.8 -> https://metacpan.org/module/AnyEvent::I3
# Based in i3-wsbar of Michael Stapelberg -> http://code.stapelberg.de/git/i3/tree/contrib/i3-wsbar
#
# 16 feb 2015 - Electro7
use strict;
use warnings;
use AnyEvent::I3;
use AnyEvent;
use v5.10;
my $socket_path = undef;
my ($workspaces, $outputs) = ([], {});
my $w = AnyEvent->timer(
after => 3,
cb => sub {
die "Connection to i3 timed out. Verify socket path ($socket_path)";
exit 1;
}
);
my $i3 = i3($socket_path);
# Disable buffering
$| = 1;
STDERR->autoflush;
STDOUT->autoflush;
# Wait a short amount of time and try to connect to i3 again
sub reconnect {
print "reconecting\n";
my $timer;
$i3 = i3($socket_path);
if (!defined($w)) {
$w = AnyEvent->timer(
after => 3,
cb => sub {
die "Connection to i3 timed out. Verify socket path ($socket_path)";
exit 1;
}
);
}
my $c = sub {
$timer = AnyEvent->timer(
after => 0.01,
cb => sub { $i3->connect->cb(\&connected) }
);
};
$c->();
}
# Connection attempt succeeded or failed
sub connected {
my ($cv) = @_;
if (!$cv->recv) {
reconnect();
return;
}
$w = undef;
$i3->subscribe({
workspace => \&ws_change,
output => \&output_change,
_error => sub { reconnect() }
});
ws_change();
output_change();
}
# Called when a ws changes
sub ws_change {
# Request the current workspaces and update the output afterwards
$i3->get_workspaces->cb(
sub {
my ($cv) = @_;
$workspaces = $cv->recv;
update_output();
});
}
# Called when the reply to the GET_OUTPUTS message arrives
sub got_outputs {
my $reply = shift->recv;
my %new = map { ($_->{name}, $_) } grep { $_->{active} } @{$reply};
for my $name (keys %new) {
$outputs->{$name} = $new{$name};
}
update_output();
}
sub output_change {
$i3->get_outputs->cb(\&got_outputs)
}
sub update_output {
my $out;
for my $name (keys %{$outputs}) {
$out .= "WSP";
for my $ws (@{$workspaces}) {
my $state = "INA";
$state = "ACT" if $ws->{visible};
$state = "URG" if $ws->{urgent};
$state = "FOC" if $ws->{focused};
my $name = $ws->{name};
$out .= qq|$state$name |;
}
$out .= "\n";
print $out;
}
}
$i3->connect->cb(\&connected);
# let AnyEvent do the rest ("endless loop")
AnyEvent->condvar->recv

102
config/lemonbar/i3_workspaces.py Executable file
View File

@ -0,0 +1,102 @@
#!/usr/bin/env python
#
# Print i3 workspaces on every change.
#
# Format:
# For every workspace (x = workspace name)
# - "FOCx" -> Focused workspace
# - "INAx" -> Inactive workspace
# - "ACTx" -> Ative workspace
# - "URGx" -> Urgent workspace
#
# Uses i3py.py -> https://github.com/ziberna/i3-py
# Based in wsbar.py en examples dir
#
# 16 feb 2015 - Electro7
import sys
import time
import subprocess
import i3
class State(object):
# workspace states
focused = 'FOC'
active = 'ACT'
inactive = 'INA'
urgent = 'URG'
def get_state(self, workspace, output):
if workspace['focused']:
if output['current_workspace'] == workspace['name']:
return self.focused
else:
return self.active
if workspace['urgent']:
return self.urgent
else:
return self.inactive
class i3ws(object):
ws_format = '%s%s '
end_format = 'WSP%s'
state = State()
def __init__(self, state=None):
if state:
self.state = state
# socket
self.socket = i3.Socket()
# Output to console
workspaces = self.socket.get('get_workspaces')
outputs = self.socket.get('get_outputs')
self.display(self.format(workspaces, outputs))
# Subscribe to an event
callback = lambda data, event, _: self.change(data, event)
self.subscription = i3.Subscription(callback, 'workspace')
def change(self, event, workspaces):
# Receives event and workspace data
if 'change' in event:
outputs = self.socket.get('get_outputs')
text = self.format(workspaces, outputs)
self.display(text)
def format(self, workspaces, outputs):
# Formats the text according to the workspace data given.
out = ''
for workspace in workspaces:
output = None
for output_ in outputs:
if output_['name'] == workspace['output']:
output = output_
break
if not output:
continue
st = self.state.get_state(workspace, output)
name = workspace['name']
item= self.ws_format % (st, name)
out += item
return self.end_format % out
def display(self, text):
# Displays the text in stout
print(text)
sys.stdout.flush()
def quit(self):
# Quits the i3ws; closes the subscription and terminates
self.subscription.close()
if __name__ == '__main__':
ws = i3ws()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print('') # force new line
finally:
ws.quit()

89
config/lemonbar/lemonbar.sh Executable file
View File

@ -0,0 +1,89 @@
#! /bin/bash
#
# BSPWM bar with https://github.com/LemonBoy/bar
. $(dirname $0)/i3_lemonbar_config
if [ $(pgrep -cx $(basename $0)) -gt 1 ] ; then
printf "%s\n" "The status bar is already running." >&2
exit 1
fi
trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
[ -e "${panel_fifo}" ] && rm "${panel_fifo}"
mkfifo "${panel_fifo}"
# echo "=== Starting up bar at $(date +%c)" >> bar.log
### EVENTS METERS
# Window title, "WIN"
xprop -spy -root _NET_ACTIVE_WINDOW | sed -un 's/.*\(0x.*\)/WIN\1/p' > "${panel_fifo}" &
# i3 Workspaces, "WSP"
#$(dirname $0)/i3_workspaces.py > ${panel_fifo} &
# IRC, "IRC"
# only for init
# ~/bin/irc_warn &
# Conky, "SYS"
conky -c $(dirname $0)/i3_lemonbar_conky > "${panel_fifo}" &
### UPDATE INTERVAL METERS
cnt_vol=${upd_vol}
cnt_mail=${upd_mail}
cnt_mpd=${upd_mpd}
cnt_bat=${upd_bat}
cnt_win=${upd_win}
while :; do
# Volume, "VOL"
if [ $((cnt_vol++)) -ge ${upd_vol} ]; then
#echo "VOL$(alsa-status)" > "${panel_fifo}" &
echo "VOL20" > "${panel_fifo}" &
cnt_vol=0
fi
# GMAIL, "GMA"
# if [ $((cnt_mail++)) -ge ${upd_mail} ]; then
# printf "%s%s\n" "GMA" "$(~/bin/gmail.sh)" > "${panel_fifo}"
# cnt_mail=0
# fi
# MPD
#if [ $((cnt_mpd++)) -ge ${upd_mpd} ]; then
##printf "%s%s\n" "MPD" "$(ncmpcpp --now-playing '{%a - %t}|{%f}' | head -c 60)" > "${panel_fifo}"
#printf "%s%s\n" "MPD" "$(mpc current -f '[[%artist% - ]%title%]|[%file%]' 2>&1 | head -c 70)" > "${panel_fifo}"
#cnt_mpd=0
#fi
# Battery, "BAT"
if [ $((cnt_bat++)) -ge ${upd_bat} ]; then
#echo "$(batstat)" > "${panel_fifo}" &
echo "BAT99" > "${panel_fifo}" &
cnt_bat=0
fi
# Periodic Window title update (Ticket #1)
#if [ $((cnt_win++)) -ge ${upd_win} ]; then
#echo "WIN`mywin`" > "${panel_fifo}" &
#cnt_win=0
#fi
# Finally, wait 1 second
sleep 1s;
done &
#### LOOP FIFO
#cat "${panel_fifo}" | $(dirname $0)/i3_lemonbar_parser.sh \
#| bar -p -f "${font}" -f "${iconfont}" -f "${plfont}" -g "${geometry}" -B "${color_back}" -F "${color_fore}" &
cat "${panel_fifo}" | $(dirname $0)/i3_lemonbar_parser.sh \
| lemonbar -p -f "${font}" -f "${iconfont}" -f "${plfont}" -g "${geometry}" -B "${color_back}" -F "${color_fore}" &
wait

32
config/muttrc Normal file
View File

@ -0,0 +1,32 @@
set sidebar_visible
set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S"
set mail_check_stats
set folder = imaps://url.com/
set imap_user = roman@url.com
#set imap_pass = your-imap-password
set spoolfile = +INBOX
mailboxes = +INBOX
# Store message headers locally to speed things up.
# If hcache is a folder, Mutt will create sub cache folders for each account which may speeds things up even more.
set header_cache = ~/.cache/mutt
# Store messages locally to speed things up, like searching message bodies.
# Can be the same folder as header_cache.
# This will cost important disk usage according to your e-mail amount.
set message_cachedir = "~/.cache/mutt"
# Specify where to save and/or look for postponed messages.
set postponed = +[url.com]/Drafts
# Allow Mutt to open a new IMAP connection automatically.
unset imap_passive
# Keep the IMAP connection alive by polling intermittently (time in seconds).
set imap_keepalive = 300
# How often to check for new mail (time in seconds).
set mail_check = 120

217
config/nvim/init.vim Normal file
View File

@ -0,0 +1,217 @@
"Many ideas from https://github.com/nicknisi/dotfiles/blob/master/config/nvim/init.vim
"https://github.com/mhartington/dotfiles/blob/master/vimrc
"and https://dougblack.io/words/a-good-vimrc.html
" Plugins
call plug#begin('~/.config/nvim/plugged')
Plug 'vim-airline/vim-airline' " fancy statusline
Plug 'vim-airline/vim-airline-themes' " themes for vim-airline
Plug 'scrooloose/nerdtree' " file tree browser
Plug 'ctrlpvim/ctrlp.vim' " fuzzy file finder
Plug 'bronson/vim-trailing-whitespace'
Plug 'altercation/vim-colors-solarized'
Plug 'ryanoasis/vim-devicons' " awesome icons
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
Plug 'ashisha/image.vim' " Display images in vim
Plug 'Yggdroot/indentLine' " Display indent line
Plug 'neomake/neomake' " asynchronous make functionality :NeoMake!
Plug 'Shougo/deoplete.nvim' " autocomplete function
"Plug 'Shougo/neocomplcache.vim'
"Plug 'terryma/vim-multiple-cursors' "Sublime multiple cursor support
Plug 'Shougo/neosnippet.vim' " snippet manager
Plug 'Shougo/neosnippet-snippets' " default snippets
Plug 'Raimondi/delimitMate' " automatic closing of quotes, parenthesis, brackets, etc.
Plug 'tpope/vim-commentary' " comment stuff out
Plug 'tpope/vim-ragtag' " endings for html, xml, etc. - ehances surround
Plug 'tpope/vim-surround' " mappings to easily delete, change and add such
Plug 'tpope/vim-fugitive' " Git support
Plug 'airblade/vim-gitgutter' " show git diff in gutter
" surroundings in pairs, such as quotes, parens, etc.
Plug 'simnalamburt/vim-mundo' " undo tree visualizer DOESN'T WORK ATM
"Plug 'junegunn/limelight.vim', { 'on': 'Limelight' } " focus tool. Dim text. Good for presentating with vim
"language-specific plugins
" html
Plug 'gregsexton/MatchTag' "highlight the current tag
" latex
Plug 'lervag/vimtex'
call plug#end()
" Theme
syntax enable
"set background=dark
colorscheme solarized
if has('gui_running')
set background=light
else
set background=dark
endif
" Enable snipMate compatibility feature.
"let g:neosnippet#enable_snipmate_compatibility = 1
"let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets'
"deoplete settings
let g:deoplete#enable_at_startup = 1
let g:deoplete#ignore_sources = {}
"let g:deoplete#ignore_sources._ = ["neosnippet"]
" I want to use my tab more smarter. If we are inside a completion menu jump
" to the next item. Otherwise check if there is any snippet to expand, if yes
" expand it. Also if inside a snippet and we need to jump tab jumps. If none
" of the above matches we just call our usual 'tab'.
function! s:neosnippet_complete()
if pumvisible()
return "\<c-n>"
else
if neosnippet#expandable_or_jumpable()
return "\<Plug>(neosnippet_expand_or_jump)"
endif
return "\<tab>"
endif
endfunction
imap <expr><TAB> <SID>neosnippet_complete()
:inoremap <lt>/ </<C-X><C-O>
" nerdtree setting
" start with vim if no file is specified
if has("autocmd")
autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" close vim if only nerd tree is open
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
endif
map <C-n> :NERDTreeToggle<CR>
" Highlight full name (not only icons)
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1
" Disable uncommon file extensions highlighting (good idea if lag when scrolling)
let g:NERDTreeLimitedSyntax = 1
" after a re-source, fix syntax matching issues (concealing brackets):
if exists('g:loaded_webdevicons')
call webdevicons#refresh()
endif
" toggle gundo
nnoremap <leader>u :MundoToggle<CR>
" Toggle number lines
map <C-S-l> :set number!<CR>:set relativenumber!<CR>
set relativenumber
set number
set history=200 "set Ex command history
set autoread " detect when a file is changed
set cursorline
" enable global undo
set undofile
set undodir=~/.config/nvim/undo
" jump to the last position when reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
set shortmess=I "disable intro message
" Tab control
set expandtab " insert spaces rather than tabs for <Tab> [noexpandtab for invert]
set smarttab " tab respects 'tabstop', 'shiftwidth', and 'softtabstop'
set tabstop=2 " the visible width of tabs
set softtabstop=2 " edit as if the tabs are 4 characters wide
set shiftwidth=2 " number of spaces to use for indent and unindent
set shiftround " round indent to a multiple of 'shiftwidth'
set completeopt+=longest
" Vim Splits
set splitbelow
set splitright
" substitute live preview
set inccommand=nosplit
" Key Bindings
"ReMap leader key
let mapleader = ","
" for learning: disable arrow keys
" noremap <Up> <NOP>
" noremap <Down> <NOP>
" noremap <Left> <NOP>
" noremap <Right> <NOP>
" better movement in Vim Splits
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" enable copy to clipboard
map <Leader>y "+y
map <Leader>p "*p
" move vertically by visual line
" if there is a very long line that gets visually wrapped to two lines, wouldn't skip over the "fake" part of the visual line
nnoremap <UP> gk
nnoremap <DOWN> gj
nnoremap j gj
nnoremap k gk
" fast movement
nnoremap J 5j
nnoremap K 5k
" cursor to begin or end of line
nnoremap B ^
nnoremap E $
" Align block of text and keep them selected
vmap < <gv
vmap > >gv
" Faster delete. Doesnt work actually
inoremap <C-BS> db
inoremap <C-Del> dw
" turn off last search highlight
map <esc> :noh<cr>
" highlight last inserted text
nnoremap gV `[v`]
" jk is escape
inoremap jk <ESC>
call togglebg#map("<F5>") "Toggle background dark/light
map <F6> :IndentLinesToggle<CR>
" vim-airline
let g:airline_theme='badwolf'
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols_branch = ''
let g:airline_symbols_readonly = ''
let g:airline_symbols_linenr = ''
let g:airline_powerline_fonts = 1 "required for devicons
" Enable Airline Tabbar
let g:airline#extensions#tabline#enabled = 1
set encoding=utf8
set guifont=DroidSansMonoForPowerline\ Nerd\ Font
" EOF

BIN
config/nvim/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

View File

@ -0,0 +1,12 @@
[Desktop Entry]
Categories=Utility;TextEditor;
Comment=Edit file in NeoVim
Exec=nvim %f
GenericName=Text Editor Vim
Hidden=false
Icon=/home/roman/.config/nvim/logo.png
Name=NeoVim
Terminal=true
Type=Application
Version=1.0

356
config/polybar/config Normal file
View File

@ -0,0 +1,356 @@
[bar/top]
monitor = eDP-1
width = 100%
height = 34
;wm-restack = bspwm
background = #002292B8
foreground = #ccf1e6F7
line-color = ${bar/top.background}
line-size = 2
spacing = 2
padding-right = 5
module-margin = 4
font-0 = NotoSans-Regular:size=10;2
font-1 = MaterialIcons:size=14;4
font-2 = Termsynu:size=8:antialias=false;-2
font-3 = FontAwesome:size=12;2
font-4 = NotoSans-Regular:size=12;2
modules-left = bspwm
modules-center = xwindow
modules-right = wireless-network wired-network battery date
[bar/bottom]
monitor = eDP-1
bottom = true
width = 100%
height = 27
background = #000c3944
foreground = ${bar/top.foreground}
line-color = ${bar/top.background}
line-size = 2
spacing = 3
padding-right = 4
padding-left = 4
module-margin-left = 0
module-margin-right = 6
font-0 = NotoSans-Regular:size=8;0
font-1 = unifont:size=6;0
font-2 = FontAwesome:size=8;2
font-3 = NotoSans-Regular:size=8;-1
font-4 = MaterialIcons:size=10;2
font-5 = Termsynu:size=8:antialias=false;0
font-6 = NotoSans-Regular:size=20;10
modules-left = keyboard battery volume backlight
modules-right = cpu memory powermenu
[module/xwindow]
type = internal/xwindow
label = %{T5}%title:0:60:...%
[module/keyboard]
type = internal/xkeyboard
blacklist-0 = num lock
[module/battery]
type = internal/battery
full-at = 98
battery = BAT1
adapter = ADP1
format-charging = <animation-charging> <label-charging>
format-discharging = <ramp-capacity> <label-discharging>
format-full = <ramp-capacity> <label-full>
ramp-capacity-0 = 
ramp-capacity-0-foreground = #f53c3c
ramp-capacity-1 = 
ramp-capacity-1-foreground = #ffa900
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
bar-capacity-width = 10
bar-capacity-format = %{+u}%{+o}%fill%%empty%%{-u}%{-o}
bar-capacity-fill = █
bar-capacity-fill-foreground = #ddffffff
bar-capacity-fill-font = 3
bar-capacity-empty = █
bar-capacity-empty-font = 3
bar-capacity-empty-foreground = #44ffffff
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
animation-charging-framerate = 750
[module/bspwm]
type = internal/bspwm
ws-icon-0 = term;
ws-icon-1 = web;
ws-icon-2 = code;
ws-icon-3 = music;
ws-icon-4 = irssi;
ws-icon-default = 
format = <label-state> <label-mode>
label-dimmed-underline = ${root.background}
label-focused = %icon%
label-focused-foreground = #fff
label-focused-background = #773f3f3f
label-focused-underline = #ffffff
label-focused-font = 4
label-focused-padding = 4
label-occupied = %icon%
label-occupied-foreground = #dd
label-occupied-underline = #f7ed91
label-occupied-font = 4
label-occupied-padding = 4
label-urgent = %icon%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-underline = #9b0a20
label-urgent-font = 4
label-urgent-padding = 4
label-empty = %icon%
label-empty-foreground = #55
label-empty-font = 4
label-empty-padding = 4
label-monocle = 
label-monocle-underline = ${module/bspwm.label-focused-underline}
label-monocle-background = #33ffffff
label-monocle-padding = 2
label-locked = 
label-locked-foreground = #bd2c40
label-locked-underline = ${module/bspwm.label-monocle-underline}
label-locked-padding = ${module/bspwm.label-monocle-padding}
label-sticky = 
label-sticky-foreground = #fba922
label-sticky-underline = ${module/bspwm.label-monocle-underline}
label-sticky-padding = ${module/bspwm.label-monocle-padding}
label-private = 
label-private-foreground = #bd2c40
label-private-underline = ${module/bspwm.label-monocle-underline}
label-private-padding = ${module/bspwm.label-monocle-padding}
[module/bspwm-tmp]
type = internal/bspwm
format = <label-state>
label-active = 
label-active-padding = 1
label-occupied = 
label-occupied-padding = 1
label-empty = 
label-empty-padding = 1
[module/cpu]
type = internal/cpu
format = <label> <ramp-coreload>
label = CPU
interval = 1
ramp-coreload-0 = ▁
ramp-coreload-0-font = 2
ramp-coreload-0-foreground = #aaff77
ramp-coreload-1 = ▂
ramp-coreload-1-font = 2
ramp-coreload-1-foreground = #aaff77
ramp-coreload-2 = ▃
ramp-coreload-2-font = 2
ramp-coreload-2-foreground = #aaff77
ramp-coreload-3 = ▄
ramp-coreload-3-font = 2
ramp-coreload-3-foreground = #aaff77
ramp-coreload-4 = ▅
ramp-coreload-4-font = 2
ramp-coreload-4-foreground = #fba922
ramp-coreload-5 = ▆
ramp-coreload-5-font = 2
ramp-coreload-5-foreground = #fba922
ramp-coreload-6 = ▇
ramp-coreload-6-font = 2
ramp-coreload-6-foreground = #ff5555
ramp-coreload-7 = █
ramp-coreload-7-font = 2
ramp-coreload-7-foreground = #ff5555
[module/date]
type = internal/date
date =  %%{F#99}%Y-%m-%d%%{F-} %a %%{F#fff}%H:%M%%{F-}
date-alt = %%{F#fff}%A, %d %B %Y %%{F#fff}%H:%M%%{F#666}:%%{F#fba922}%S%%{F-}
[module/memory]
type = internal/memory
format = <label> <bar-used>
label = RAM
interval = 3
bar-used-width = 30
bar-used-foreground-0 = #aaff77
bar-used-foreground-1 = #aaff77
bar-used-foreground-2 = #fba922
bar-used-foreground-3 = #ff5555
bar-used-indicator = |
bar-used-indicator-font = 6
bar-used-indicator-foreground = #ff
bar-used-fill = ─
bar-used-fill-font = 6
bar-used-empty = ─
bar-used-empty-font = 6
bar-used-empty-foreground = #444444
[module/mpd]
type = internal/mpd
format-online = <icon-prev> <icon-stop> <toggle> <icon-next> <icon-repeat> <icon-random> <bar-progress> <label-time> <label-song>
icon-play = 
icon-pause = 
icon-stop = 
icon-prev = 
icon-next = 
icon-random = 
icon-repeat = 
toggle-on-foreground =
toggle-off-foreground = #55
bar-progress-width = 45
bar-progress-format = %{A4:mpdseek+2: A5:mpdseek-2:}%fill%%indicator%%empty%%{A A}
bar-progress-indicator = |
bar-progress-indicator-foreground = #ff
bar-progress-indicator-font = 3
bar-progress-fill = ─
bar-progress-fill-foreground = #bb
bar-progress-fill-font = 3
bar-progress-empty = ─
bar-progress-empty-font = 3
bar-progress-empty-foreground = #44
[module/wired-network]
type = internal/network
interface = enp4s0
interval = 10
ping-interval = 10
format-connected = %{A1:gnome-control-center network:} <label-connected>%{A}
label-connected =  %local_ip%
label-disconnected =
animation-packetloss-0 = 
animation-packetloss-0-foreground = #ffa64c
animation-packetloss-1 = 
animation-packetloss-1-foreground = ${bar/top.foreground}
animation-packetloss-framerate = 500
[module/wireless-network]
type = internal/network
interface = wlp9s0
interval = 5.0
ping-interval = 10
format-connected = %{A1:gnome-control-center network:}<ramp-signal> <label-connected>%{A}
label-connected = %essid%
label-disconnected =  not connected
label-disconnected-foreground = #66
ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-3 = 
ramp-signal-4 = 
animation-packetloss-0 = 
animation-packetloss-0-foreground = #ffa64c
animation-packetloss-1 = 
animation-packetloss-1-foreground = ${bar/top.foreground}
animation-packetloss-framerate = 500
[module/volume]
type = internal/volume
; Soundcard to be used
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
master-mixer = Master
mapping = true
format-volume = %{A3:gnome-control-center sound:}<ramp-volume> <label-volume>%{A}
label-muted =  muted
label-muted-foreground = #66
ramp-volume-0 = 
ramp-volume-1 = 
ramp-volume-2 = 
ramp-volume-3 = 
#[module/vpn]
#type = custom/script
#interval = 2
#label = %output%
#exec = ~/.config/polybar/vpn.sh
[module/backlight]
type = custom/script
interval = 2
label = " %output%%"
exec = xbacklight | cut -f1 -d"."
scroll-up = xbacklight -inc 10
scroll-down = xbacklight -dec 10
[module/powermenu]
type = custom/menu
#format-padding = 5
label-separator = |
label-open = 
label-close = 
menu-0-0 = Terminate WM
menu-0-0-foreground = #fba922
menu-0-0-exec = bspc quit -1
menu-0-1 = " "
menu-0-1-foreground = #fba922
menu-0-1-exec = systemctl suspend
menu-0-2 = Power
menu-0-2-foreground = #fba922
menu-0-2-exec = menu-open-1
menu-1-0 = Cancel
menu-1-0-foreground = #fba922
menu-1-0-exec = menu-open-0
menu-1-1 = Reboot
menu-1-1-foreground = #fba922
menu-1-1-exec = systemctl reboot
menu-1-2 = Power off
menu-1-2-foreground = #fba922
menu-1-2-exec = systemctl poweroff
; vim:ft=dosini

208
config/sxhkd/sxhkdrc Normal file
View File

@ -0,0 +1,208 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
gnome-terminal
# system monitor
control + shift + Escape
gnome-system-monitor
# program launcher
super + r
rofi -show run
super + space
rofi -show drun
#dmenu_run
# open file explorer
super + e
nautilus
# make sxhkd reload its configuration files:
super + ctrl + Escape
pkill -USR1 -x sxhkd
# lock screen
super + Escape
~/.dotfiles/scripts/lock.sh
#
# screenshot keys
#
Print
scrot 'Screenshot_%Y-%m-%d_%H-%M-%S.png' -e 'mv $f ~/Bilder/' && \
notify-send --icon=gtk-info "Screenshot taken"
alt + @Print
scrot -u 'Screenshot_%Y-%m-%d_%H-%M-%S.png' -e 'mv $f ~/Bilder/' && \
notify-send --icon=gtk-info "Screenshot taken"
shift + @Print
scrot -s -d 0.5 'Screenshot_%Y-%m-%d_%H-%M-%S.png' -e 'mv $f ~/Bilder/' && \
notify-send --icon=gtk-info "Screenshot taken"
#
# notebook funtion keys
#
# brightness
XF86MonBrightnessUp
~/.dotfiles/scripts/notify_brightness.sh && \
xbacklight -inc 10
XF86MonBrightnessDown
~/.dotfiles/scripts/notify_brightness.sh && \
xbacklight -dec 10
# audio keys
XF86AudioRaiseVolume
amixer sset Master 5%+ unmute && \
~/.dotfiles/scripts/notify_sound.sh
XF86AudioLowerVolume
amixer sset Master 5%- unmute && \
~/.dotfiles/scripts/notify_sound.sh
XF86AudioMute
amixer sset Master toggle && \
~/.dotfiles/scripts/notify_sound.sh
# standby key
XF86Sleep
systemctl suspend
# display key
XF86Display
lxrandr
#gnome-control-center display
#
# bspwm hotkeys
#
# quit bspwm normally
super + alt + Escape
bspc quit
# reload bspwm config
super + shift + c
sh ~/.config/bspwm/bspwmrc
# close and kill
super + {_,shift + }w
bspc node -{c,k}
alt + F4
bspc node -c
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# if the current node is automatic, send it to the last manual, otherwise pull the last leaf
super + y
bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused
# swap the current node and the biggest node
super + g
bspc node -s biggest
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# set the node flags
super + ctrl + {x,y,z}
bspc node -g {locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous node
super + {_,shift + }c
bspc node -f {next,prev}
# focus the next/previous desktop
super + bracket{left,right}
bspc desktop -f {prev,next}
# focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
#
# mouse bindings
#
# Move or resize window
#alt + button{1-3}
#bspc pointer -g {move,resize_side,resize_corner}
# Needed for ^^^^
#alt + !button{1-3}
#bspc pointer -t %i %i
#alt + @button{1-3}
#bspc pointer -u

BIN
files/icons/email.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
files/icons/firefox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

17
files/icons/folder.svg Normal file
View File

@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256">
<defs>
<radialGradient id="radialGradient3816" cx="-25" cy="203.5" r="35" gradientTransform="matrix(1,0,0,0.78571429,0,43.607143)" gradientUnits="userSpaceOnUse">
<stop style="stop-color:#000;stop-opacity:1"/>
<stop offset="1" style="stop-color:#000;stop-opacity:0"/>
</radialGradient>
</defs>
<g transform="translate(0,-796.3622)">
<path d="m 10 203.5 a 35 27.5 0 1 1 -70 0 35 27.5 0 1 1 70 0 z" transform="matrix(5.0857143,0,0,1.0909091,255.14286,788.3622)" style="fill:url(#radialGradient3816);opacity:0.55;fill-opacity:1;stroke:none"/>
<path d="m 0 832.6 0 171.29 256 0 0 -85.65 -12.19 -73.41 l -95.81 -0.47 l -12 -24 -123.81 0 c -6.095 0 -12.19 6.118 -12.19 12.235 z" style="fill:#ef6c00;fill-opacity:1;stroke:none"/>
<rect width="126.29" height="47.529" x="20" y="852.36" style="fill:#fffdf0;fill-opacity:1;stroke:none"/>
<path d="m 12.25 820.36 c -6.095 0 -12.25 6.132 -12.25 12.25 l 0 8 c 0 -6.118 6.155 -12.25 12.25 -12.25 l 119.75 0 12 24 99.75 0.5 12.25 73.38 0 -8 -12.25 -73.37 -95.75 -0.5 -12 -24 z" style="fill:#000;opacity:0.03;fill-opacity:1;stroke:none"/>
<path d="m 256 857.07 0 171.29 -256 0 0 -160 120 0 12 -24 111.81 0.47 c 6.095 0 12.19 6.118 12.19 12.236 z" style="fill:#ffa726;fill-opacity:1;stroke:none"/>
<path d="m 0 1020.36 0 8 256 0 0 -8 z" style="fill:#000;opacity:0.15;fill-opacity:1;stroke:none"/>
<path d="m 132 844.36 -12 24 -120 0 0 8 124 0 12 -24 107.75 0.5 c 6.095 0 12.25 6.132 12.25 12.25 l 0 -8 c 0 -6.118 -6.155 -12.25 -12.25 -12.25 z" style="fill:#000;opacity:0.03;fill-opacity:1;stroke:none"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
files/icons/terminal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
files/screen-lock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
files/screen-lock2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
files/screen-lock_big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

59
install/bspwm.sh Normal file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# text settings
ORANGE='\033[0;33m'
NC='\033[0m' # No Color
BOLD=$(tput bold)
NORMAL=$(tput sgr0)
INSTALL="sudo pacman -S"
AUR_DOWNLOAD="cower -d"
INSTALL_DIR="./bspwm_install"
if [ -d $INSTALL_DIR ] then
mkdir $INSTALL_DIR
fi
# install packages
# core
echo -e "Installing bspwm and sxhkd:"
$INSTALL bspwm sxhkd
echo -e "Installing xrandr gui:"
$INSTALL lxrandr
echo -e "Installing wmame:"
$INSTALL wmname
echo -e "Installing rofi:"
$INSTALL rofi
echo -e "Installing notification daemon"
$INSTALL notify-osd
echo -e "Installing i3lock for lockscreen:"
$INSTALL i3lock xautolock
# change background image
echo -e "Installing background image controller:"
$INSTALL feh
# audio and backlight control
echo -e "Installing audio and backlight controller:"
$INSTALL alsa-utils xorg-xbacklight
# modify key mapping
echo -e "Installing key mapping modifier:"
$INSTALL xorg-xmodmap
echo -e "Installing Compton (wm effects):"
$INSTALL compton
echo -e "Installing scort for screenshots:"
$INSTALL scrot
echo -e "${BOLD}You need to install Polybar from AUR"
$AUR_DOWNLOAD polybar -t $INSTALL_DIR
echo -e "${BOLD}You need to install the following fonts from AUR:${NORMAL}"
echo -e "${ORANGE} ttf-font-awesome${NC}"
echo -e "${ORANGE} ttf-material-design-icons${NC}"
$AUR_DOWNLOAD ttf-font-awesome -t $INSTALL_DIR
$AUR_DOWNLOAD ttf-material-design-icons -t $INSTALL_DIR
# link config files
# TODO

23
install/install.sh Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
echo "Installing dotfiles"
echo "Updating git submodules"
git submodule update --init
echo "Installing packages"
source install/pacman.sh
#echo "set up gnome-terminal colorscheme"
#source gnome-terminal/gnome-terminal-colors-solarized/install.sh
echo "linking config files"
source install/link.sh
echo "Configuring zsh as default shell"
chsh -s $(which zsh)
source $HOME/.config/base16-shell/base16-brewer.dark.sh

17
install/link.sh Normal file
View File

@ -0,0 +1,17 @@
#!/bin/bash
DOTFILES=$HOME/.dotfiles
echo -e "\nCreating symlinks"
echo "=============================="
echo "tmux:"
ln -s $DOTFILES/tmux/tmux.conf $HOME/.tmux.conf
ln -s $DOTFILES/tmux/tmux $HOME/.tmux
echo "zsh:"
ln -s $DOTFILES/zsh/zshrc $HOME/.zshrc
echo "base16:"
ln -s $DOTFILES/base16/* $HOME/.config

13
install/pacman.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/sh
type pacman > /dev/null 2>&1 || { echo >&2 "I require pacman but it's not installed. Aborting."; exit 1; }
echo "Installing packages..."
pacman -S git
pacman -S tmux
pacman -S zsh
pacman -S powerline
pacman -S nvim
exit 0

48
rc/bashrc Normal file
View File

@ -0,0 +1,48 @@
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
#set dircolor to solarized-dark
#eval `dircolors ~/.dotfiles/gnome-terminal/dircolors-solarized/dircolors.ansi-dark`
#export PATH=~/bin:$PATH
export EDITOR="nvim"
#
# load aliases
#
source ~/.config/aliases
# add ruby to path
#PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
#
# Prompt
#
exitstatus()
{
if [[ $? == 0 ]]; then
echo ''
else
echo '! '
fi
}
user()
{
if [[ $USER == 'roman' ]]; then
echo ''
else
echo '\u@\h '
fi
}
PS1='[$(exitstatus)$(user)\w]\$ '

117
rc/tmux/tmux.conf Normal file
View File

@ -0,0 +1,117 @@
# tmux display things in 256 colors
set -g default-terminal "screen-256color"
# set new history limit
set -g history-limit 30000
# screesaver after 600 sek
set -g lock-after-time 600
set -g lock-command "/usr/bin/cmatrix -C blue -s"
# automatically renumber tmux windows
set -g renumber-windows on
# set new prefix key
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Activity Monitoring
setw -g monitor-activity off
set -g visual-activity off
# Rather than constraining window size to the maximum size of any client
# connected to the *session*, constrain window size to the maximum size of any
# client connected to *that window*. Much more reasonable.
#setw -g aggressive-resize on
# make delay shorter
set -sg escape-time 0
# tile all windows
#unbind =
#bind = select-layout tiled
# make window/pane index start with 1
set -g base-index 1
setw -g pane-base-index 1
new-session -A -s main
set-option -g set-titles on
set-option -g set-titles-string "#T - #W"
set-window-option -g automatic-rename on
# set config reload key
bind-key r source-file ~/.tmux.conf \; display "Config reloaded!"
# enable mouse scrolling
set -g mouse on
bind -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M"
bind -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M"
######################
#### Key Bindings ####
######################
# quickly open a new window
bind N new-window
# split window and fix path for tmux 1.9
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
# pane movement shortcuts
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Resize pane shortcuts
bind -r H resize-pane -L 10
bind -r J resize-pane -D 10
bind -r K resize-pane -U 10
bind -r L resize-pane -R 10
# maximizing and restoring windows
unbind Up
bind Up new-window -d -n fullscreen \; swap-pane -s fullscreen.1 \; select-window -t fullscreen
unbind Down
bind Down last-window \; swap-pane -s fullscreen.1 \; kill-window -t fullscreen
# set vi mode for copy mode
setw -g mode-keys vi
# more settings to make copy-mode more vim-like
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
##############################
### Color & Style Settings ###
##############################
source ~/.tmux/theme.sh
##############################
### Plugins ###
##############################
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sidebar'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-open'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

33
rc/zshrc Normal file
View File

@ -0,0 +1,33 @@
export ZSH=/home/roman/.oh-my-zsh
DEFAULT_USER="roman"
ZSH_THEME="agnoster"
COMPLETION_WAITING_DOTS="true"
ZSH_TMUX_AUTOSTART="true"
ZSH_TMUX_AUTOQUIT="true"
plugins=(tmux jump)
CASE_SENSITIVE="true"
#set dircolor to solarized-dark
eval `dircolors ~/.dotfiles/gnome-terminal/dircolors-solarized/dircolors.ansi-dark`
#export PATH=~/bin:$PATH
source $ZSH/oh-my-zsh.sh
export EDITOR="nvim"
# load aliases
source ~/.config/aliases
#BASE16_SHELL="$HOME/.config/base16-shell/base16-brewer.dark.sh"
#[[ -s $BASE16_SHELL ]] && source $BASE16_SHELL
#export NVM_DIR="/home/booker/.nvm"
#[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
# add ruby to path
PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"

3
scripts/autostart.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
nextcloud &

13
scripts/battery.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
STATUS="$(cat /sys/class/power_supply/BAT1/status)"
BAT="$(cat /sys/class/power_supply/BAT1/capacity)"
OUTPUT="♥ "
if [ "$STATUS" == "charging" ]
then
OUTPUT=$OUTPUT"l"
fi
echo "$OUTPUT$BAT%"

11
scripts/bin/spotify Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
spotify=/usr/bin/spotify
if [[ -x $spotify && -x /usr/bin/blockify ]];
then
blockify &
block_pid=$!
$spotify
trap "kill -9 $block_pid" SIGINT SIGTERM EXIT
fi

37
scripts/lock.sh Executable file
View File

@ -0,0 +1,37 @@
#!/bin/bash
lock_icon="$HOME/.dotfiles/screen-lock.png"
scrot /tmp/screen.png
convert /tmp/screen.png -scale 20% -scale 500% /tmp/screen.png
if [[ -f $lock_icon ]]
then
# placement x/y
PX=0
PY=0
# lockscreen image info
R=$(file $lock_icon | grep -o '[0-9]* x [0-9]*')
RX=$(echo $R | cut -d' ' -f 1)
RY=$(echo $R | cut -d' ' -f 3)
SR=$(xrandr --query | grep ' connected' | sed 's/primary //' | cut -f3 -d' ')
for RES in $SR
do
# monitor position/offset
SRX=$(echo $RES | cut -d'x' -f 1) # x pos
SRY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 1) # y pos
SROX=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 2) # x offset
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))
convert /tmp/screen.png $lock_icon -geometry +$PX+$PY -composite -matte /tmp/screen.png
echo "done"
done
fi
# dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop
i3lock -e -n -u -i /tmp/screen.png
# Turn the screen off after a delay.
sleep 60; pgrep i3lock && xset dpms force off

22
scripts/notify_brightness.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
brightness=$((`xbacklight|cut -f1 -d"."` + 1 ))
echo $brightness
if [ $brightness -lt 10 ]
then
status="notification-display-brightness-off"
elif [ $brightness -lt "30" ]
then
status="notification-display-brightness-low"
elif [ $brightness -lt "60" ]
then
status="notification-display-brightness-medium"
elif [ $brightness -lt "95" ]
then
status="notification-display-brightness-high"
else
status="notification-display-brightness-full"
fi
notify-send " " -i $status -h int:value:$brightness -h string:x-canonical-private-synchronous:brightness

62
scripts/notify_examples.sh Executable file
View File

@ -0,0 +1,62 @@
#!/bin/sh
notify-send "Take note" "The next example will test the icon-only layout-case" -i dialog-info
sleep 2
notify-send "Eject" -i notification-device-eject -h string:x-canonical-private-icon-only:
sleep 2
notify-send "WiFi signal found" -i notification-network-wireless-medium
sleep 2
notify-send "WiFi signal lost" -i notification-network-wireless-disconnected
sleep 2
notify-send "Volume" -i notification-audio-volume-medium -h int:value:75 -h string:x-canonical-private-synchronous:
sleep 2
notify-send "Volume" -i notification-audio-volume-low -h int:value:30 -h string:x-canonical-private-synchronous:
sleep 2
notify-send "Brightness" -i notification-display-brightness-high -h int:value:101 -h string:x-canonical-private-synchronous:
sleep 2
notify-send "Brightness" -i notification-keyboard-brightness-medium -h int:value:45 -h string:x-canonical-private-synchronous:
sleep 2
notify-send "Testing markup" "Some <b>bold</b>, <u>underlined</u>, <i>italic</i> text. Note, you should not see any marked up text."
sleep 2
notify-send "Jamshed Kakar" "Hey, what about this restaurant? http://www.blafasel.org
Would you go from your place by train or should I pick you up from work? What do you think?"
sleep 2
notify-send "English bubble" "The quick brown fox jumps over the lazy dog." -i network
sleep 2
notify-send "Bubble from Germany" "Polyfon zwitschernd aßen Mäxchens Vögel Rüben, Joghurt und Quark." -i gnome-system
sleep 2
notify-send "Very russian" "Съешь ещё этих мягких французских булок, да выпей чаю." -i dialog-info
sleep 2
notify-send "More from Germany" "Oje, Qualm verwölkt Dix zig Farbtriptychons." -i gnome-globe
sleep 2
notify-send "Filter the world 1/3" "<a href=\"http://www.ubuntu.com/\">Ubuntu</a>
Don't rock the boat
Kick him while he&apos;s down
\"Film spectators are quiet vampires.\"
Peace &amp; Love
War & Peace
Law &#38; Order
Love &#x26; War
7 > 3
7 &gt; 3"
sleep 2
notify-send "Filter the world 2/3" "7 &#62; 3
7 &#x3e; 3
14 < 42
14 &lt; 42
14 &#60; 42
14 &#x3c; 42
><
<>
< this is not a tag >
<i>Not italic</i>"
sleep 2
notify-send "Filter the world 3/3" "<b>So broken</i>
<img src=\"foobar.png\" />Nothing to see
<u>Test</u>
<b>Bold</b>
<span>Span</span>
<s>E-flat</s>
<sub>Sandwich</sub>
<small>Fry</small>
<tt>Testing tag</tt>"

29
scripts/notify_sound.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
volume=$(amixer sget Master | grep % | cut -f 7 -d " " | grep "[0-9]*" -o | head -1)
muted=$(amixer sget Master | grep % | cut -f 8 -d " " | head -1 | grep "off" -o)
echo $volume
if [ $muted == "off" ]
then
notify-send " " -i notification-audio-volume-muted -h int:value:0 -h string:x-canonical-private-synchronous:audio
exit
fi
if [ $volume -eq 0 ]
then
status="notification-audio-volume-muted"
elif [ $volume -lt 20 ]
then
status="notification-audio-volume-off"
elif [ $volume -lt "50" ]
then
status="notification-audio-volume-low"
elif [ $volume -lt "80" ]
then
status="notification-audio-volume-medium"
else
status="notification-audio-volume-high"
fi
notify-send " " -i $status -h int:value:$volume -h string:x-canonical-private-synchronous:audio

View File

@ -0,0 +1,99 @@
#!/bin/bash
# CHANGELOG
# [Quentin PÂRIS] (2012-05-05 14-45)
# Wine version set to 1.5.3, Outlook 2010 compatiblity
# [Quentin PÂRIS] (2012-05-05 15-05)
# Check winbind presence on Linux, required to install
# Adding gettext support
# [Quentin PÂRIS] (2012-05-12 18-36)
# Requires 4.0.18
# [SuperPlumus] (2013-06-09 14-44)
# gettext
# [Quentin PÂRIS] (2014-07-21 17-09)
# Updating with the latest WineHQ version
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
PREFIX="Office2010"
WINEVERSION="2.12"
TITLE="Microsoft Office 2010"
POL_GetSetupImages "http://files.playonlinux.com/resources/setups/Office/top.jpg" "http://files.playonlinux.com/resources/setups/Office/left.png" "$TITLE"
POL_SetupWindow_Init
POL_SetupWindow_SetID 801
POL_SetupWindow_presentation "$TITLE" "Microsoft" "http://www.microsoft.com" "Quentin PÂRIS" "$PREFIX"
POL_RequiredVersion 4.0.18 || POL_Debug_Fatal "$TITLE won't work with $APPLICATION_TITLE $VERSION\nPlease update"
if [ "$POL_OS" = "Linux" ]; then
wbinfo -V || POL_Debug_Fatal "Please install winbind before installing $TITLE"
fi
POL_Debug_Init
POL_System_SetArch "x86"
POL_SetupWindow_InstallMethod "LOCAL,DVD"
if [ "$INSTALL_METHOD" = "DVD" ]; then
POL_SetupWindow_cdrom
POL_SetupWindow_check_cdrom "x86/setup.exe" "setup.exe"
SetupIs="$CDROM_SETUP"
cd "$CDROM"
else
POL_SetupWindow_browse "$(eval_gettext 'Please select the setup file to run')" "$TITLE"
SetupIs="$APP_ANSWER"
fi
POL_Wine_SelectPrefix "$PREFIX"
POL_Wine_PrefixCreate "$WINEVERSION"
if [ "$POL_OS" = "Mac" ]; then
# Samba support
POL_Call POL_GetTool_samba3
source "$POL_USER_ROOT/tools/samba3/init"
fi
POL_Wine_WaitBefore "$TITLE"
[ "$CDROM" ] && cd "$CDROM"
if [ ! "$(file $SetupIs | grep 'x86-64')" = "" ]; then
POL_Debug_Fatal "$(eval_gettext "The 64bits version is not compatible! Sorry")";
fi
POL_Wine "$SetupIs"
POL_Wine_WaitExit "$TITLE"
# See http://forum.winehq.org/viewtopic.php?f=8&t=23126&p=95555#p95555
POL_Wine_OverrideDLL "native,builtin" "riched20"
# Fix a crash when loading a file
POL_Call POL_Install_msxml6
POL_Shortcut "WINWORD.EXE" "Microsoft Word 2010" "" "" "Office;WordProcessor;"
POL_Shortcut "EXCEL.EXE" "Microsoft Excel 2010" "" "" "Office;Spreadsheet;"
POL_Shortcut "POWERPNT.EXE" "Microsoft Powerpoint 2010" "" "" "Office;Presentation;"
POL_Shortcut "ONENOTE.EXE" "Microsoft OneNote 2010" "" "" "Network;InstantMessaging;" # No category for collaborative work?
POL_Shortcut "OUTLOOK.EXE" "Microsoft Outlook 2010" "" "" "Network;Email;" # Calendar;ContactManagement; ? :p
POL_Extension_Write doc "Microsoft Word 2010"
POL_Extension_Write docx "Microsoft Word 2010"
POL_Extension_Write xls "Microsoft Excel 2010"
POL_Extension_Write xlsx "Microsoft Excel 2010"
POL_Extension_Write ppt "Microsoft Powerpoint 2010"
POL_Extension_Write pptx "Microsoft Powerpoint 2010"
if [ "$POL_OS" = "Mac" ]; then
POL_Shortcut_InsertBeforeWine "Microsoft Word 2010" "source \"$POL_USER_ROOT/tools/samba3/init\""
POL_Shortcut_InsertBeforeWine "Microsoft Excel 2010" "source \"$POL_USER_ROOT/tools/samba3/init\""
POL_Shortcut_InsertBeforeWine "Microsoft Powerpoint 2010" "source \"$POL_USER_ROOT/tools/samba3/init\""
POL_Shortcut_InsertBeforeWine "Microsoft OneNote 2010" "source \"$POL_USER_ROOT/tools/samba3/init\""
POL_Shortcut_InsertBeforeWine "Microsoft Outlook 2010" "source \"$POL_USER_ROOT/tools/samba3/init\""
fi
POL_SetupWindow_message "$(eval_gettext '$TITLE has been installed successfully\n\nIf an installation Windows prevent your programs from running, you must remove and reinstall $TITLE')" "$TITLE"
POL_SetupWindow_Close
exit

10
scripts/toggle_monitor.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
left=HDMI-0
right=DVI-I-3
#if xrandr | grep "$right disconnected"; then
if ! xrandr --listmonitors | grep "$right"; then
xrandr --output "$right" --primary --auto --output "$left" --left-of "$right" --auto
else
xrandr --output "$right" --off --output "$left" --auto
fi

View File

@ -0,0 +1,6 @@
#!/bin/bash
device=$(xinput | grep Touchpad | grep -o "id=[0-9]*" | cut -f 2 -d "=")
prop=$(xinput list-props $device | grep "Tapping Enabled" | head -n 1 | grep -o "([0-9]*)" | grep -o "[0-9]*")
xinput set-prop $device $prop 1

44
scripts/tunes.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash
# https://community.spotify.com/t5/Help-Desktop-Linux-Windows-Web/Conky-Spotify-quot-Now-Playing-quot-scripts/m-p/812541#M88825
SYMBOL="♫ "
ARTIST="$(dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'|egrep -A 2 "artist"|egrep -v "artist"|egrep -v "array"|cut -b 27-|cut -d '"' -f 1|egrep -v ^$)"
TITLE="$(dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'|egrep -A 1 "title"|egrep -v "title"|cut -b 44-|cut -d '"' -f 1|egrep -v ^$)"
#TIME="$(dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'|egrep -A 2 "time"|cut -d " " -f 3|cut -c 6-)"
#if [ ! -f "/tmp/tunes_time" ] ; then
# TIME_OLD=0
#else
# TIME_OLD=$(cat /tmp/tunes_time)
#fi
#
#if [ $TIME == $TIME_OLD ]
# then
# exit 0
#fi
#echo "$TIME" > /tmp/tunes_time
if [ -n "$ARTIST" ]
then
index=$(expr index "$ARTIST" -)
if [ $index -gt 0 ]
then
length=$((${#ARTIST} - $index + 2))
ARTIST=${ttest::-$length}
fi
OUTPUT="$SYMBOL $ARTIST - $TITLE"
if [ ${#OUTPUT} -gt 35 ]
then
OUTPUT="$SYMBOL $TITLE"
fi
else
OUTPUT=""
fi
echo "$OUTPUT"

View File

@ -0,0 +1,7 @@
#!/bin/bash
# for e.g. nextcloud client, if it doesn't sync anymore
echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf
sudo sysctl --system