diff --git a/git/gitconfig b/git/gitconfig index ecc8ba3..5c4f3df 100644 --- a/git/gitconfig +++ b/git/gitconfig @@ -1,5 +1,5 @@ [user] - name = Hannes Körber + name = Hannes Koerber email = hannes.koerber@gmail.com [alias] untrack = "rm --cached" @@ -21,6 +21,8 @@ logl = log --graph --decorate --pretty=oneline --abbrev-commit --all + pushall = "!sh -c 'for r in $(git remote) ; do echo \"[$r] \" ; git push $r $1; done' -" + [core] editor = vim pager = less diff --git a/i3/i3/config b/i3/i3/config index 62d2a0c..99aa04c 100644 --- a/i3/i3/config +++ b/i3/i3/config @@ -19,7 +19,7 @@ set $mod Mod4 # The default terminal - set $terminal ~/bin/start-urxvtc.sh + set $terminal urxvt #-e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME" # Path to the exit script @@ -200,16 +200,16 @@ # Pressing right will grow the window’s width. # Pressing up will shrink the window’s height. # Pressing down will grow the window’s height. - 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 + bindsym $left resize shrink width 5 px or 5 ppt + bindsym $down resize grow height 5 px or 5 ppt + bindsym $up resize shrink height 5 px or 5 ppt + bindsym $right resize grow width 5 px or 5 ppt # same bindings, but for the arrow keys - bindsym 113 resize shrink width 10 px or 10 ppt - bindsym 116 resize grow height 10 px or 10 ppt - bindsym 111 resize shrink height 10 px or 10 ppt - bindsym 114 resize grow width 10 px or 10 ppt + bindsym 113 resize shrink width 5 px or 5 ppt + bindsym 116 resize grow height 5 px or 5 ppt + bindsym 111 resize shrink height 5 px or 5 ppt + bindsym 114 resize grow width 5 px or 5 ppt # back to normal: Enter or Escape bindsym Return mode "default" @@ -245,14 +245,14 @@ # Do show borders at the screen edges hide_edge_borders none - focus_follows_mouse no + focus_follows_mouse yes # Only map a popup in fullscreen mode if it belongs to the fullscreen window # popup_during_fullscreen leave_fullscreen # Do not always wrap but change to a container on the same level instead - force_focus_wrapping yes + force_focus_wrapping no force_xinerama no @@ -309,6 +309,7 @@ client.urgent #2f343a #900000 #ffffff #900000 for_window [class="^Thunderbird$"] border none for_window [instance="^shutdown-menu$"] border normal for_window [class="^VirtualBox$" ] border normal + for_window [class="^Virt-manager$" ] border normal #assign [class="^Thunderbird"] $workspace9 assign [class="^Firefox$" ] $workspace1 @@ -320,6 +321,58 @@ client.urgent #2f343a #900000 #ffffff #900000 assign [class="^Zim$" ] $workspace8 assign [class="^Thunderbird$" ] $workspace9 assign [class="^Skype$"] $workspace10 + assign [class="^Mumble"] $workspace10 + assign [class="^Deluge$"] $workspace5 +# bind some keys +bindsym XF86Sleep exec --no-startup-id $path_i3exit suspend +bindsym XF86AudioMute exec --no-startup-id amixer set Master toggle +bindsym XF86AudioRaiseVolume exec --no-startup-id bash $HOME/.i3/scripts/pa-volume.bash set-vol +5 ; exec --no-startup-id "bash $HOME/.i3/scripts/update-status.bash" +bindsym XF86AudioLowerVolume exec --no-startup-id bash $HOME/.i3/scripts/pa-volume.bash set-vol -5 ; exec --no-startup-id "bash $HOME/.i3/scripts/update-status.bash" +# keys seemingly switched +bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -dec 5 ; exec --no-startup-id "bash $HOME/.i3/scripts/update-status.bash" +bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -inc 5 ; exec --no-startup-id "bash $HOME/.i3/scripts/update-status.bash" + +bindsym XF86AudioPlay exec --no-startup-id mpc toggle + +bindsym XF86AudioPrev exec --no-startup-id mpc prev +bindsym XF86AudioNext exec --no-startup-id mpc next + +# font for window titles. ISO 10646 = Unicode +font pango:DejaVu Sans Mono 11 + +bindsym $mod+o exec --no-startup-id "bash -c '~/dev/projects/xautorandr/xautorandr ; kill -SIGUSR2 $(cat $HOME/.var/run/wallchanger.pid)'" +bindsym $mod+p exec --no-startup-id "bash -c 'kill -SIGUSR1 $(cat $HOME/.var/run/wallchanger.pid)'" + +# start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + # always show at the top of the screen + mode dock + position top + + tray_output primary + + # show workspace buttons + workspace_buttons yes + + id bar-0 + + font pango:DejaVu Sans, Icons 11 + + colors { + background #000000 + statusline #ffffff + separator #e16b40 + + focused_workspace #e16b40 #000000 #ffffff + active_workspace #000000 #5f676a #ffffff + inactive_workspace #000000 #000000 #dddddd + urgent_workspace #D00000 #D00000 #000000 + } + + i3bar_command i3bar + status_command bash ~/.i3/scripts/i3bar_wrapper.bash ~/.i3/conky/statusbar.conkyrc +} diff --git a/tmux/tmux.conf b/tmux/tmux.conf index b739e64..eff77d8 100644 --- a/tmux/tmux.conf +++ b/tmux/tmux.conf @@ -1,8 +1,6 @@ -new-session -A -s 's-1' - set -g default-terminal 'screen-256color' -set -g utf8 on +set-option -g utf8 on set -g status-utf8 on set -g default-command "${SHELL}" @@ -68,7 +66,8 @@ set-window-option -g automatic-rename-format '#{pane_current_command}' set-window-option -g window-status-separator ' ' -set -g status-right '' ##[fg=colour226]#(uptime | cut -d ',' -f 2-)' +#set -g status-right '' ##[fg=colour226]#(uptime | cut -d ',' -f 2-)' +set -g status-right '' set -g message-fg white set -g message-bg black @@ -78,14 +77,16 @@ set -g pane-border-fg white set -g pane-active-border-fg red #set -g status-style 'bg=black,fg=white,none' -set -g status-left ' #[bg=#E5F200,fg=#000000] #{session_name} #[bg=default] #[bg=#90FF00,fg=#000000] #{host} #[bg=default] ' +if-shell 'test -z "$SSH_CONNECTION"' 'set -g status-left " #[bg=#E5F200,fg=#000000] #{session_name} #[bg=default] #[bg=#90FF00,fg=#000000] #{host} #[bg=default] "' 'set -g status-left " #[bg=#00A0FF,fg=#000000] !remote! #[bg=default] #[bg=#E5F200,fg=#000000] #{session_name} #[bg=default] #[bg=#90FF00,fg=#000000] #{host} #[bg=default] " ; set -g status-right " #[bg=#00A0FF,fg=#000000] !remote! #[bg=default] "' set -g status-left-length 100 # vertical = | in this case unbind % unbind '"' -bind-key s split-window -v -bind-key v split-window -h +bind-key s split-window -v -c "#{pane_current_path}" +bind-key v split-window -h -c "#{pane_current_path}" + +bind-key c new-window -c "#{pane_current_path}" bind-key -n S-down new-window bind-key -n S-left prev diff --git a/vim/vimrc b/vim/vimrc index 5a1f7a9..479c1e6 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -1,3 +1,5 @@ +" vim: set filetype=vim + " 01 important " 02 moving around, searching and patterns " 03 tags @@ -68,6 +70,12 @@ Plugin 'tpope/vim-fugitive' " python specific stuff Plugin 'klen/python-mode' +Plugin 'nblock/vim-dokuwiki' + +Plugin 'saltstack/salt-vim' + +Plugin 'lepture/vim-jinja' + " incremental visual mode "Plugin 'terryma/vim-expand-region' " @@ -87,6 +95,8 @@ Plugin 'kien/ctrlp.vim' " "Plugin 'flazz/vim-colorschemes' +Plugin 'reedes/vim-pencil' + call vundle#end() filetype plugin indent on @@ -98,7 +108,7 @@ let g:pymode_trim_whitespaces = 1 let g:pymode_lint_on_write = 0 let g:pymode_lint_unmodified = 0 let g:pymode_lint_on_fly = 0 -let g:pymoe_rope = 0 +let g:pymode_rope = 0 let g:pymode_rope_completion = 0 "let g:pymode_rope_completion_on_dot = 1 let g:pymode_rope_goto_definition_cmd = "new" @@ -119,6 +129,8 @@ colorscheme monokai let g:airline_theme='powerlineish' let g:airline_left_sep='' let g:airline_right_sep='' +let g:airline_section_x = '%{PencilMode()}' +let g:pencil#mode_indicators = {'hard': 'H', 'auto': 'A', 'soft': 'S', 'off': '',} "let g:airline_section_z='' " enable tabline at the top showing all buffers @@ -126,10 +138,10 @@ let g:airline_right_sep='' let g:ycm_complete_in_comments = 0 let g:ycm_complete_in_strings = 1 -let g:ycm_collect_identifiers_from_comments_and_strings = 0 +let g:ycm_collect_identifiers_from_comments_and_strings = 0 let g:ycm_seed_identifiers_with_syntax = 1 let g:ycm_add_preview_to_completeopt = 1 -let g:ycm_autoclose_preview_window_after_completion = 1 +let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_autoclose_preview_window_after_insertion = 1 set colorcolumn=79 @@ -140,7 +152,7 @@ set esckeys " enable cursor keys in insert mode set ttimeoutlen=50 set modeline " respect modelines in files -set modelines=4 +set modelines=5 set laststatus=2 " always show a status line diff --git a/x/xinitrc b/x/xinitrc index 89172db..2ee61de 100755 --- a/x/xinitrc +++ b/x/xinitrc @@ -1,9 +1,10 @@ #!/bin/bash -export LOGDIR="$HOME/.var/log/" +export LOGDIR="$HOME/.var/log" export RUNDIR="$HOME/.var/run" [[ ! -d "LOGDIR" ]] && mkdir -p "$LOGDIR" +[[ ! -d "RUNDIR" ]] && mkdir -p "$RUNDIR" LOGFILE="$LOGDIR/xinitrc.log" @@ -26,20 +27,8 @@ fi export LANG=en_US.UTF-8 start_wm() { - log "generating i3 config" - I3_LOG="$LOGDIR/i3/i3.log" - I3_LOGOLD="${I3_LOG}.old" - - # simple logrotate so we can still get info about the last session - if [[ -f "$I3_LOG" ]] ; then - log "moving old i3 log at $I3_LOG to $I3_LOGOLD" - mv -f "$I3_LOG" "$I3_LOGOLD" - fi - - [[ ! -d "$(dirname $I3_LOG)" ]] && mkdir -p "$(dirname $I3_LOG)" - SESSION_CONF=$(bash "$HOME/.i3/scripts/genconfig.bash") - log "generated, starting i3" - exec i3 -c "$SESSION_CONF" >> "$LOGDIR/i3/i3.log" + log "starting i3" + exec i3 -c "$HOME/.i3/config" >> "$LOGDIR/i3/i3.log" } @@ -47,10 +36,10 @@ start_wm() { keyboard_layout=de keyboard_variant=nodeadkeys keyboard_repeat_delay=150 -keyboard_repeat_speed=30 +keyboard_repeat_speed=50 # path and options for the wallpaper changer script -path_wallchanger="$HOME/development/projects/wallchanger/wallchanger" +path_wallchanger="$HOME/dev/projects/wallchanger/wallchanger" wallchanger_pidfile="$RUNDIR/wallchanger.pid" wallpaper_directory="$HOME/pictures/wallpaper/misc" wallpaper_logfile="$LOGDIR/wallpaper.log" @@ -80,11 +69,11 @@ pasystray & &>> $LOGFILE log "starting dropboxd" nice -n 10 ionice -c 3 dropboxd & &>> $LOGFILE -log "starting conky clock on desktop" -{ - sleep 1 - conky -c "$HOME/.conky/clock.conkyrc" -} & &>> $LOGFILE +#log "starting conky clock on desktop" +#{ +# sleep 1 +# conky -c "$HOME/.conky/clock.conkyrc" +#} & &>> $LOGFILE # start the wallpaper changer log "starting $path_wallchanger" @@ -115,10 +104,16 @@ xcompmgr & &>> $LOGFILE log "starting network tray application" nm-applet & &>> $LOGFILE +log "starting seafile" +seafile-applet & &>> $LOGFILE + # disable auto screen disable xset -dpms & &>> $LOGFILE xset s off & &>> $LOGFILE + +xrandr --output eDP1 --primary + # execute the host-specific .xinitrc-addition hostfile="$HOME/.xinitrc.d/$(hostname --short).xinitrc" log "looking for host specific xinitrc addition at $hostfile" @@ -136,4 +131,9 @@ else log "~/.Xresources not found" fi +synclient VertEdgeScroll=0 +synclient VertTwoFingerScroll=1 +synclient MaxSpeed=2.2 +synclient AccelFactor=0.08 + start_wm diff --git a/zsh/zprofile b/zsh/zprofile index ef3830a..dc8a20b 100644 --- a/zsh/zprofile +++ b/zsh/zprofile @@ -1,10 +1,28 @@ # exec startx breaks some logind fuckery, without exec it works #tmux start-server & -eval $(ssh-agent -s) +_path=("$HOME/bin" + "/usr/local/sbin" + "/usr/local/bin" + "/usr/sbin" + "/usr/bin" + "/sbin" + "/bin" + "/usr/games") + +PATH="" +for part in ${_path} ; do + PATH="$PATH:${part}" +done +PATH="${PATH#:}" +export PATH export EDITOR="vim" export VISUAL="vim" -export PATH="$HOME/bin:$PATH" export BROWSER="firefox" -[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx +if [[ -z "$SSH_CONNECTION" ]] ; then + eval $(ssh-agent -s) + + [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx +fi + diff --git a/zsh/zshrc b/zsh/zshrc index 9d82ad1..1d2d49f 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -140,7 +140,14 @@ alias wow="git status" alias v="vim" alias g="git" +alias t="tmux" +alias c="cd" +alias l="ls" +alias calc='python3 -ic "from math import *; import cmath"' + +# show non-printable characters by default +alias cat="cat -v" # rebase the current branch onto WTF ARE YOU DOING YOU ARE DRUNNK TO GO BED ##alias rebase="git rebase -i $(git branch --contains HEAD | grep -v '\*.*' | head -1)" @@ -148,6 +155,10 @@ alias g="git" ### FUNCTIONS +_remote() { + [[ -n "$SSH_CONNECTION" ]] +} + slideshow() { delay=$1 [[ -z "$delay" ]] && { echo "wrong usage" ; return 1 ; } @@ -217,8 +228,10 @@ ruler() { done } -if ! (ssh-add -l | grep -q 'id_rsa') ; then - ssh-add +if ! _remote ; then + if ! (ssh-add -l | grep -q 'id_rsa') ; then + ssh-add + fi fi addext() { @@ -261,7 +274,7 @@ serve() { } manpdf() { - [[ -z "$1" ]] && { echo >&2 "$(man)" ; exit 1 ; } + [[ -z "$1" ]] && { printf '%s' >&2 "$(man)" ; return ; } man -t "$1" | ps2pdf - - | zathura - } @@ -306,21 +319,16 @@ zstyle ':vcs_info:git*' formats "%{${fg[cyan]}%}[%{${fg[green]}%}%s%{${fg[cyan]} setprompt() { setopt prompt_subst - if [[ -n "$SSH_CLIENT" ]]; then - SSHINFO="[ssh] " - else - SSHINFO="" + topstr="%{$fg[green]%}%n@%m%{$fg[white]%} ─ %{%B$fg[yellow]%}%~${vcs_info_msg_0_}%{%b%} %{$fg[white]%}" + botstr="%B${PINFO}%#%b " + + if _remote ; then + topstr="%{$fg[red]%}[remote]%{$fg[white]%} ${topstr}" fi -# if git status ; then -# GITINFO=" " -# else -# GITINFO="" -# fi - - PROMPT="%{$fg[white]%}┌─ %{$fg[green]%}%n@%M%{$fg[white]%} ─ %{$fg[cyan]%}%*%{$fg[white]%} ─ %{%B$fg[yellow]%}%~${vcs_info_msg_0_}%{%b%} -%{$fg[white]%}└─ %B${PINFO}%#%b " - RPROMPT="" + PROMPT="%{$fg[white]%}┌─ ${topstr} +└─ ${botstr}" + RPROMPT="%{$fg[cyan]%}%*%{$fg[white]%} ─ [%?]" } setprompt @@ -328,3 +336,51 @@ setprompt gensshport() { echo $(( $(od -v -An -N4 -tu4 < /dev/urandom) % (2**16-2**10) + 2**10 )) } + +#ssh() { +# if [[ -n "$TMUX" ]] ; then +# echo "$0 $@" > "$HOME/.var/run/tmux.$(tmux display-message -p '#S').cmd" +# tmux detach-client >/dev/null 2>&1 +# else +# command ssh "$@" +# fi +#} + +tmux_after() { + cmdfile="$HOME/.var/run/tmux.$1.cmd" + if [[ -e "$cmdfile" ]] ; then + command $(<"$cmdfile") + rm "$cmdfile" + if tmux has-session -t "$1" ; then + tmux_wrap attach-session -t "$1" + fi + fi + exit +} + +tmux_wrap() { + tmux "$1" "$2" "$3" + tmux_after "$3" +} + +# desired behavior is like this: +# if a shell is started, it automatically attaches to the lowest "s-x" session that has +# no attached clients + +return + +[[ -n "$TMUX" ]] && return + +for (( id=1 ;; id++ )) ; do + sessionname="s-${id}" + if tmux has-session -t "${sessionname}" ; then + if [[ -z "$(tmux list-clients -t "${sessionname}")" ]] ; then + tmux_wrap attach-session -t "${sessionname}" + else + continue + fi + else + tmux_wrap new-session -s "${sessionname}" + fi +done +