A .config/.mpd/mpd.conf => .config/.mpd/mpd.conf +407 -0
@@ 0,0 1,407 @@
+# An example configuration file for MPD.
+# Read the user manual for documentation: http://www.musicpd.org/doc/user/
+
+bind_to_address "~/.config/mpd/socket"
+
+# Files and directories #######################################################
+#
+# This setting controls the top directory which MPD will search to discover the
+# available audio files and add them to the daemon's online database. This
+# setting defaults to the XDG directory, otherwise the music directory will be
+# be disabled and audio files will only be accepted over ipc socket (using
+# file:// protocol) or streaming files over an accepted protocol.
+#
+music_directory "/mnt/falcon/Music"
+#
+# This setting sets the MPD internal playlist directory. The purpose of this
+# directory is storage for playlists created by MPD. The server will use
+# playlist files not created by the server but only if they are in the MPD
+# format. This setting defaults to playlist saving being disabled.
+#
+playlist_directory "~/.config/mpd/playlists"
+#
+# This setting sets the location of the MPD database. This file is used to
+# load the database at server start up and store the database while the
+# server is not up. This setting defaults to disabled which will allow
+# MPD to accept files over ipc socket (using file:// protocol) or streaming
+# files over an accepted protocol.
+#
+db_file "~/.config/mpd/database"
+#
+# These settings are the locations for the daemon log files for the daemon.
+# These logs are great for troubleshooting, depending on your log_level
+# settings.
+#
+# The special value "syslog" makes MPD use the local syslog daemon. This
+# setting defaults to logging to syslog, otherwise logging is disabled.
+#
+log_file "~/.config/mpd/log"
+#
+# This setting sets the location of the file which stores the process ID
+# for use of mpd --kill and some init scripts. This setting is disabled by
+# default and the pid file will not be stored.
+#
+pid_file "~/.config/mpd/pid"
+#
+# This setting sets the location of the file which contains information about
+# most variables to get MPD back into the same general shape it was in before
+# it was brought down. This setting is disabled by default and the server
+# state will be reset on server start up.
+#
+state_file "~/.config/mpd/state"
+#
+# The location of the sticker database. This is a database which
+# manages dynamic information attached to songs.
+#
+sticker_file "~/.config/mpd/sticker.sql"
+#
+###############################################################################
+
+audio_output {
+ type "pulse"
+ name "DAC"
+}
+
+audio_output {
+ type "fifo"
+ name "my_fifo"
+ path "/tmp/mpd.fifo"
+ format "44100:16:2"
+}
+
+
+# General music daemon options ################################################
+#
+# This setting specifies the user that MPD will run as. MPD should never run as
+# root and you may use this setting to make MPD change its user ID after
+# initialization. This setting is disabled by default and MPD is run as the
+# current user.
+#
+user "andrei"
+#
+# This setting specifies the group that MPD will run as. If not specified
+# primary group of user specified with "user" setting will be used (if set).
+# This is useful if MPD needs to be a member of group such as "audio" to
+# have permission to use sound card.
+#
+#group "nogroup"
+#
+# This setting sets the address for the daemon to listen on. Careful attention
+# should be paid if this is assigned to anything other then the default, any.
+# This setting can deny access to control of the daemon. Not effective if
+# systemd socket activiation is in use.
+#
+# For network
+#bind_to_address "any"
+#
+# And for Unix Socket
+#bind_to_address "~/.mpd/socket"
+#
+# This setting is the TCP port that is desired for the daemon to get assigned
+# to.
+#
+#port "6600"
+#
+# This setting controls the type of information which is logged. Available
+# setting arguments are "default", "secure" or "verbose". The "verbose" setting
+# argument is recommended for troubleshooting, though can quickly stretch
+# available resources on limited hardware storage.
+#
+log_level "default"
+#
+# If you have a problem with your MP3s ending abruptly it is recommended that
+# you set this argument to "no" to attempt to fix the problem. If this solves
+# the problem, it is highly recommended to fix the MP3 files with vbrfix
+# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
+# point gapless MP3 playback can be enabled.
+#
+#gapless_mp3_playback "yes"
+#
+# Setting "restore_paused" to "yes" puts MPD into pause mode instead
+# of starting playback after startup.
+#
+#restore_paused "no"
+#
+# This setting enables MPD to create playlists in a format usable by other
+# music players.
+#
+#save_absolute_paths_in_playlists "no"
+#
+# This setting defines a list of tag types that will be extracted during the
+# audio file discovery process. The complete list of possible values can be
+# found in the user manual.
+#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
+#
+# This setting enables automatic update of MPD's database when files in
+# music_directory are changed.
+#
+#auto_update "yes"
+#
+# Limit the depth of the directories being watched, 0 means only watch
+# the music directory itself. There is no limit by default.
+#
+#auto_update_depth "3"
+#
+###############################################################################
+
+
+# Symbolic link behavior ######################################################
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links outside of the configured music_directory.
+#
+#follow_outside_symlinks "yes"
+#
+# If this setting is set to "yes", MPD will discover audio files by following
+# symbolic links inside of the configured music_directory.
+#
+#follow_inside_symlinks "yes"
+#
+###############################################################################
+
+
+# Zeroconf / Avahi Service Discovery ##########################################
+#
+# If this setting is set to "yes", service information will be published with
+# Zeroconf / Avahi.
+#
+#zeroconf_enabled "yes"
+#
+# The argument to this setting will be the Zeroconf / Avahi unique name for
+# this MPD server on the network.
+#
+#zeroconf_name "Music Player"
+#
+###############################################################################
+
+
+# Permissions #################################################################
+#
+# If this setting is set, MPD will require password authorization. The password
+# setting can be specified multiple times for different password profiles.
+#
+#password "password@read,add,control,admin"
+#
+# This setting specifies the permissions a user has who has not yet logged in.
+#
+#default_permissions "read,add,control,admin"
+#
+###############################################################################
+
+
+# Database #######################################################################
+#
+
+#database {
+# plugin "proxy"
+# host "other.mpd.host"
+# port "6600"
+#}
+
+# Input #######################################################################
+#
+
+input {
+ plugin "curl"
+# proxy "proxy.isp.com:8080"
+# proxy_user "user"
+# proxy_password "password"
+}
+
+#
+###############################################################################
+
+# Audio Output ################################################################
+#
+# MPD supports various audio output types, as well as playing through multiple
+# audio outputs at the same time, through multiple audio_output settings
+# blocks. Setting this block is optional, though the server will only attempt
+# autodetection for one sound card.
+#
+# An example of an ALSA output:
+#
+#audio_output {
+# type "alsa"
+# name "My ALSA Device"
+## device "hw:0,0" # optional
+## mixer_type "hardware" # optional
+## mixer_device "default" # optional
+## mixer_control "PCM" # optional
+## mixer_index "0" # optional
+#}
+#
+# An example of an OSS output:
+#
+#audio_output {
+# type "oss"
+# name "My OSS Device"
+## device "/dev/dsp" # optional
+## mixer_type "hardware" # optional
+## mixer_device "/dev/mixer" # optional
+## mixer_control "PCM" # optional
+#}
+#
+# An example of a shout output (for streaming to Icecast):
+#
+#audio_output {
+# type "shout"
+# encoder "vorbis" # optional
+# name "My Shout Stream"
+# host "localhost"
+# port "8000"
+# mount "/mpd.ogg"
+# password "hackme"
+# quality "5.0"
+# bitrate "128"
+# format "44100:16:1"
+## protocol "icecast2" # optional
+## user "source" # optional
+## description "My Stream Description" # optional
+## url "http://example.com" # optional
+## genre "jazz" # optional
+## public "no" # optional
+## timeout "2" # optional
+## mixer_type "software" # optional
+#}
+#
+# An example of a recorder output:
+#
+#audio_output {
+# type "recorder"
+# name "My recorder"
+# encoder "vorbis" # optional, vorbis or lame
+# path "/var/lib/mpd/recorder/mpd.ogg"
+## quality "5.0" # do not define if bitrate is defined
+# bitrate "128" # do not define if quality is defined
+# format "44100:16:1"
+#}
+#
+# An example of a httpd output (built-in HTTP streaming server):
+#
+#audio_output {
+# type "httpd"
+# name "My HTTP Stream"
+# encoder "vorbis" # optional, vorbis or lame
+# port "8000"
+# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
+## quality "5.0" # do not define if bitrate is defined
+# bitrate "128" # do not define if quality is defined
+# format "44100:16:1"
+# max_clients "0" # optional 0=no limit
+#}
+#
+# An example of a pulseaudio output (streaming to a remote pulseaudio server)
+#
+#audio_output {
+# type "pulse"
+# name "My Pulse Output"
+## server "remote_server" # optional
+## sink "remote_server_sink" # optional
+#}
+#
+# An example of a winmm output (Windows multimedia API).
+#
+#audio_output {
+# type "winmm"
+# name "My WinMM output"
+## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
+# or
+## device "0" # optional
+## mixer_type "hardware" # optional
+#}
+#
+# An example of an openal output.
+#
+#audio_output {
+# type "openal"
+# name "My OpenAL output"
+## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
+#}
+#
+# An example of an sndio output.
+#
+#audio_output {
+# type "sndio"
+# name "sndio output"
+# mixer_type "software"
+#}
+#
+# An example of an OS X output:
+#
+#audio_output {
+# type "osx"
+# name "My OS X Device"
+## device "Built-in Output" # optional
+## channel_map "-1,-1,0,1" # optional
+#}
+#
+## Example "pipe" output:
+#
+#audio_output {
+# type "pipe"
+# name "my pipe"
+# command "aplay -f cd 2>/dev/null"
+## Or if you're want to use AudioCompress
+# command "AudioCompress -m | aplay -f cd 2>/dev/null"
+## Or to send raw PCM stream through PCM:
+# command "nc example.org 8765"
+# format "44100:16:2"
+#}
+#
+## An example of a null output (for no audio output):
+#
+#audio_output {
+# type "null"
+# name "My Null Output"
+# mixer_type "none" # optional
+#}
+#
+###############################################################################
+
+
+# Normalization automatic volume adjustments ##################################
+#
+# This setting specifies the type of ReplayGain to use. This setting can have
+# the argument "off", "album", "track" or "auto". "auto" is a special mode that
+# chooses between "track" and "album" depending on the current state of
+# random playback. If random playback is enabled then "track" mode is used.
+# See <http://www.replaygain.org> for more details about ReplayGain.
+# This setting is off by default.
+#
+#replaygain "album"
+#
+# This setting sets the pre-amp used for files that have ReplayGain tags. By
+# default this setting is disabled.
+#
+#replaygain_preamp "0"
+#
+# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
+# By default this setting is disabled.
+#
+#replaygain_missing_preamp "0"
+#
+# This setting enables or disables ReplayGain limiting.
+# MPD calculates actual amplification based on the ReplayGain tags
+# and replaygain_preamp / replaygain_missing_preamp setting.
+# If replaygain_limit is enabled MPD will never amplify audio signal
+# above its original level. If replaygain_limit is disabled such amplification
+# might occur. By default this setting is enabled.
+#
+#replaygain_limit "yes"
+#
+# This setting enables on-the-fly normalization volume adjustment. This will
+# result in the volume of all playing audio to be adjusted so the output has
+# equal "loudness". This setting is disabled by default.
+#
+#volume_normalization "no"
+#
+###############################################################################
+
+# Character Encoding ##########################################################
+#
+# If file or directory names do not display correctly for your locale then you
+# may need to modify this setting.
+#
+#filesystem_charset "UTF-8"
+#
+###############################################################################
A .config/.termite/config => .config/.termite/config +87 -0
@@ 0,0 1,87 @@
+[options]
+#allow_bold = true
+#audible_bell = false
+#clickable_url = true
+#dynamic_title = true
+font = Inconsolata 11
+#font = Fira Code 10
+#fullscreen = true
+#geometry = 640x480
+#icon_name = terminal
+#mouse_autohide = false
+#scroll_on_output = false
+#scroll_on_keystroke = true
+# Length of the scrollback buffer, 0 disabled the scrollback buffer
+# and setting it to a negative value means "infinite scrollback"
+scrollback_lines = 10000
+#search_wrap = true
+#urgent_on_bell = true
+#hyperlinks = false
+
+# $BROWSER is used by default if set, with xdg-open as a fallback
+#browser = xdg-open
+
+# "system", "on" or "off"
+#cursor_blink = system
+
+# "block", "underline" or "ibeam"
+#cursor_shape = block
+
+# Hide links that are no longer valid in url select overlay mode
+#filter_unmatched_urls = true
+
+# Emit escape sequences for extra modified keys
+#modify_other_keys = false
+
+# set size hints for the window
+#size_hints = false
+
+# "off", "left" or "right"
+#scrollbar = off
+
+[colors]
+# If both of these are unset, cursor falls back to the foreground color,
+# and cursor_foreground falls back to the background color.
+#cursor = #dcdccc
+#cursor_foreground = #dcdccc
+
+#foreground = #dcdccc
+#foreground_bold = #ffffff
+#background = #3f3f3f
+
+# 20% background transparency (requires a compositor)
+#background = rgba(63, 63, 63, 0.8)
+
+# If unset, will reverse foreground and background
+highlight = #2f2f2f
+
+# Colors from color0 to color254 can be set
+color0 = #3f3f3f
+color1 = #705050
+color2 = #60b48a
+color3 = #dfaf8f
+color4 = #506070
+color5 = #dc8cc3
+color6 = #8cd0d3
+color7 = #dcdccc
+color8 = #709080
+color9 = #dca3a3
+color10 = #c3bf9f
+color11 = #f0dfaf
+color12 = #94bff3
+color13 = #ec93d3
+color14 = #93e0e3
+color15 = #ffffff
+
+[hints]
+#font = Monospace 12
+#foreground = #dcdccc
+#background = #3f3f3f
+#active_foreground = #e68080
+#active_background = #3f3f3f
+#padding = 2
+#border = #3f3f3f
+#border_width = 0.5
+#roundness = 2.0
+
+# vim: ft=dosini cms=#%s
A .i3/blocks/mpd.sh => .i3/blocks/mpd.sh +14 -0
@@ 0,0 1,14 @@
+#!/bin/bash
+NCMP=$(mpc -h ~/.config/mpd/socket | grep "^\[playing\]" | awk '{print $1}')
+NUM_NCMP=$(mpc -h ~/.config/mpd/socket | head -1 | wc -c )
+S_NCMP=$(mpc -h ~/.config/mpd/socket | head -1 | head -c 100)
+
+if [ "$NCMP" = "[playing]" ]; then
+ if [ "$NUM_NCMP" -lt 100 ]; then
+ echo -e ": $(mpc -h ~/.config/mpd/socket current)"
+ else
+ echo -e ": $S_NCMP..."
+ fi
+else
+ echo -e ": Pause "
+fi
A .i3/blocks/volume-pulseaudio => .i3/blocks/volume-pulseaudio +181 -0
@@ 0,0 1,181 @@
+#!/bin/bash
+# Displays the default device, volume, and mute status for i3blocks
+
+AUDIO_HIGH_SYMBOL=' '
+
+AUDIO_MED_THRESH=50
+AUDIO_MED_SYMBOL=' '
+
+AUDIO_LOW_THRESH=0
+AUDIO_LOW_SYMBOL=' '
+
+AUDIO_MUTED_SYMBOL=' '
+
+AUDIO_INTERVAL=5
+
+DEFAULT_COLOR="#ffffff"
+MUTED_COLOR="#a0a0a0"
+
+LONG_FORMAT=0
+SHORT_FORMAT=2
+USE_PERCENT=1
+USE_ALSA_NAME=0
+USE_DESCRIPTION=0
+
+SUBSCRIBE=0
+
+while getopts F:Sf:padH:M:L:X:T:t:C:c:i:m:s:h opt; do
+ case "$opt" in
+ S) SUBSCRIBE=1 ;;
+ F) LONG_FORMAT="$OPTARG" ;;
+ f) SHORT_FORMAT="$OPTARG" ;;
+ p) USE_PERCENT=0 ;;
+ a) USE_ALSA_NAME=1 ;;
+ d) USE_DESCRIPTION=1 ;;
+ H) AUDIO_HIGH_SYMBOL="$OPTARG" ;;
+ M) AUDIO_MED_SYMBOL="$OPTARG" ;;
+ L) AUDIO_LOW_SYMBOL="$OPTARG" ;;
+ X) AUDIO_MUTED_SYMBOL="$OPTARG" ;;
+ T) AUDIO_MED_THRESH="$OPTARG" ;;
+ t) AUDIO_LOW_THRESH="$OPTARG" ;;
+ C) DEFAULT_COLOR="$OPTARG" ;;
+ c) MUTED_COLOR="$OPTARG" ;;
+ i) AUDIO_INTERVAL="$OPTARG" ;;
+ m) MIXER="$OPTARG" ;;
+ s) SCONTROL="$OPTARG" ;;
+ h) printf \
+"Usage: volume-pulseaudio [-S] [-F format] [-f format] [-p] [-a|-d] [-H symb] [-M symb]
+ [-L symb] [-X symb] [-T thresh] [-t thresh] [-C color] [-c color] [-i inter]
+ [-m mixer] [-s scontrol] [-h]
+Options:
+-F, -f\tOutput format (-F long format, -f short format) to use, amongst:
+\t0\t symb vol [index:name]\t (default long)
+\t1\t symb vol [name]
+\t2\t symb vol [index]\t (default short)
+\t3\t symb vol
+-S\tSubscribe to volume events (requires persistent block, always uses long format)
+-p\tOmit the percent sign (%%) in volume
+-a\tUse ALSA name if possible
+-d\tUse device description instead of name if possible
+-H\tSymbol to use when audio level is high. Default: '$AUDIO_HIGH_SYMBOL'
+-M\tSymbol to use when audio level is medium. Default: '$AUDIO_MED_SYMBOL'
+-L\tSymbol to use when audio level is low. Default: '$AUDIO_LOW_SYMBOL'
+-X\tSymbol to use when audio is muted. Default: '$AUDIO_MUTED_SYMBOL'
+-T\tThreshold for medium audio level. Default: $AUDIO_MED_THRESH
+-t\tThreshold for low audio level. Default: $AUDIO_LOW_THRESH
+-C\tColor for non-muted audio. Default: $DEFAULT_COLOR
+-c\tColor for muted audio. Default: $MUTED_COLOR
+-i\tInterval size of volume increase/decrease. Default: $AUDIO_INTERVAL
+-m\tUse the given mixer.
+-s\tUse the given scontrol.
+-h\tShow this help text
+" && exit 0;;
+ esac
+done
+
+if [[ -z "$MIXER" ]] ; then
+ MIXER="default"
+ if amixer -D pulse info >/dev/null 2>&1 ; then
+ MIXER="pulse"
+ fi
+fi
+
+if [[ -z "$SCONTROL" ]] ; then
+ SCONTROL=$(amixer -D "$MIXER" scontrols | sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | head -n1)
+fi
+
+CAPABILITY=$(amixer -D $MIXER get $SCONTROL | sed -n "s/ Capabilities:.*cvolume.*/Capture/p")
+
+
+function move_sinks_to_new_default {
+ DEFAULT_SINK=$1
+ pacmd list-sink-inputs | grep index: | grep -o '[0-9]\+' | while read SINK
+ do
+ pacmd move-sink-input $SINK $DEFAULT_SINK
+ done
+}
+
+function set_default_playback_device_next {
+ inc=${1:-1}
+ num_devices=$(pacmd list-sinks | grep -c index:)
+ sink_arr=($(pacmd list-sinks | grep index: | grep -o '[0-9]\+'))
+ default_sink_index=$(( $(pacmd list-sinks | grep index: | grep -no '*' | grep -o '^[0-9]\+') - 1 ))
+ default_sink_index=$(( ($default_sink_index + $num_devices + $inc) % $num_devices ))
+ default_sink=${sink_arr[$default_sink_index]}
+ pacmd set-default-sink $default_sink
+ move_sinks_to_new_default $default_sink
+}
+
+case "$BLOCK_BUTTON" in
+ 1) set_default_playback_device_next ;;
+ 2) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY toggle ;;
+ 3) set_default_playback_device_next -1 ;;
+ 4) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%+ ;;
+ 5) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%- ;;
+esac
+
+function print_format {
+ PERCENT="%"
+ [[ $USE_PERCENT == 0 ]] && PERCENT=""
+ case "$1" in
+ 1) echo "$SYMBOL$VOL$PERCENT [$NAME]" ;;
+ 2) echo "$SYMBOL$VOL$PERCENT [$INDEX]";;
+ 3) echo "$SYMBOL$VOL$PERCENT" ;;
+ *) echo "$SYMBOL$VOL$PERCENT [$INDEX:$NAME]" ;;
+ esac
+}
+
+function print_block {
+ for name in INDEX NAME VOL MUTED; do
+ read $name
+ done < <(pacmd list-sinks | grep "index:\|name:\|volume: front\|muted:" | grep -A3 '*')
+ INDEX=$(echo "$INDEX" | grep -o '[0-9]\+')
+ VOL=$(echo "$VOL" | grep -o "[0-9]*%" | head -1 )
+ VOL="${VOL%?}"
+
+ NAME=$(echo "$NAME" | sed \
+'s/.*<.*\.\(.*\)>.*/\1/; t;'\
+'s/.*<\(.*\)>.*/\1/; t;'\
+'s/.*/unknown/')
+
+ if [[ $USE_ALSA_NAME == 1 ]] ; then
+ ALSA_NAME=$(pacmd list-sinks |\
+awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
+grep "alsa.name\|alsa.mixer_name" |\
+head -n1 |\
+sed 's/.*= "\(.*\)".*/\1/')
+ NAME=${ALSA_NAME:-$NAME}
+ elif [[ $USE_DESCRIPTION == 1 ]] ; then
+ DESCRIPTION=$(pacmd list-sinks |\
+awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
+grep "device.description" |\
+head -n1 |\
+sed 's/.*= "\(.*\)".*/\1/')
+ NAME=${DESCRIPTION:-$NAME}
+ fi
+
+ if [[ $MUTED =~ "no" ]] ; then
+ SYMBOL=$AUDIO_HIGH_SYMBOL
+ [[ $VOL -le $AUDIO_MED_THRESH ]] && SYMBOL=$AUDIO_MED_SYMBOL
+ [[ $VOL -le $AUDIO_LOW_THRESH ]] && SYMBOL=$AUDIO_LOW_SYMBOL
+ COLOR=$DEFAULT_COLOR
+ else
+ SYMBOL=$AUDIO_MUTED_SYMBOL
+ COLOR=$MUTED_COLOR
+ fi
+
+ if [[ $SUBSCRIBE == 1 ]] ; then
+ print_format "$LONG_FORMAT"
+ else
+ print_format "$LONG_FORMAT"
+ print_format "$SHORT_FORMAT"
+ echo "$COLOR"
+ fi
+}
+
+print_block
+if [[ $SUBSCRIBE == 1 ]] ; then
+ while read -r EVENT; do
+ print_block
+ done < <(pactl subscribe | stdbuf -oL grep change)
+fi
A .i3/config => .i3/config +86 -0
@@ 0,0 1,86 @@
+## font
+font pango:DejaVu Sans Mono 10
+
+## i3 ModKeys
+set $mod Mod4
+set $cmod Mod1
+
+gaps inner 10
+set $work1 "Neptune"
+set $work2 "Saturn"
+set $work3 "Titan"
+set $work4 "Venus"
+set $work5 "Jupiter"
+set $work6 "Mars"
+
+# default workspaces to each monitor
+workspace $work1 output DVI-I-1
+workspace $work2 output HDMI-0
+
+# startup applications
+exec_always feh --bg-scale ~/Pictures/Wallpapers/flower-right.jpg ~/Pictures/Wallpapers/flower-left.jpg
+
+## i3 Opts
+hide_edge_borders both
+new_window pixel 2
+
+# Floating mode
+#floating_modifer $mod
+
+# Focus keys
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# Move 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
+
+# Move workspaces
+bindsym $mod+1 workspace $work1
+bindsym $mod+2 workspace $work2
+bindsym $mod+3 workspace $work3
+bindsym $mod+4 workspace $work4
+bindsym $mod+5 workspace $work5
+bindsym $mod+6 workspace $work6
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace $work1
+bindsym $mod+Shift+2 move container to workspace $work2
+bindsym $mod+Shift+3 move container to workspace $work3
+bindsym $mod+Shift+4 move container to workspace $work4
+bindsym $mod+Shift+5 move container to workspace $work5
+bindsym $mod+Shift+6 move container to workspace $work6
+
+# assign programs to workspaces
+assign [class="Discord"] $work2
+assign [class="Thunderbird"] $work3
+
+# splits
+bindsym $mod+h split h
+bindsym $mod+v split v
+bindsym $mod+f fullscreen toggle
+
+
+## i3 Session keys
+bindsym $mod+Shift+c reload
+bindsym $mod+Shift+r restart
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3?' -b 'Yes, exit i3' 'i3-msg exit'"
+
+# General
+bindsym $mod+Return exec termite
+bindsym $mod+d exec dmenu_run
+bindsym $mod+Shift+w kill
+
+bar {
+ output DVI-I-1
+ tray_output DVI-I-1
+ position top
+ status_command i3blocks
+ modifier $mod
+ workspace_buttons yes
+ font pango: Source Code Pro 10
+}
A .weechat/irc.conf => .weechat/irc.conf +231 -0
@@ 0,0 1,231 @@
+#
+# weechat -- irc.conf
+#
+# WARNING: It is NOT recommended to edit this file by hand,
+# especially if WeeChat is running.
+#
+# Use /set or similar command to change settings in WeeChat.
+#
+# For more info, see: https://weechat.org/doc/quickstart
+#
+
+[look]
+buffer_open_before_autojoin = on
+buffer_open_before_join = off
+buffer_switch_autojoin = on
+buffer_switch_join = on
+color_nicks_in_names = off
+color_nicks_in_nicklist = on
+color_nicks_in_server_messages = on
+color_pv_nick_like_channel = on
+ctcp_time_format = "%a, %d %b %Y %T %z"
+display_away = local
+display_ctcp_blocked = on
+display_ctcp_reply = on
+display_ctcp_unknown = on
+display_host_join = off
+display_host_join_local = on
+display_host_quit = off
+display_join_message = "329,332,333,366"
+display_old_topic = on
+display_pv_away_once = on
+display_pv_back = on
+highlight_channel = "$nick"
+highlight_pv = "$nick"
+highlight_server = "$nick"
+highlight_tags_restrict = "irc_privmsg,irc_notice"
+item_channel_modes_hide_args = "k"
+item_display_server = buffer_plugin
+item_nick_modes = on
+item_nick_prefix = on
+join_auto_add_chantype = off
+msgbuffer_fallback = current
+new_channel_position = none
+new_pv_position = none
+nick_completion_smart = speakers
+nick_mode = prefix
+nick_mode_empty = off
+nicks_hide_password = "nickserv"
+notice_as_pv = auto
+notice_welcome_redirect = on
+notice_welcome_tags = ""
+notify_tags_ison = "notify_message"
+notify_tags_whois = "notify_message"
+part_closes_buffer = off
+pv_buffer = independent
+pv_tags = "notify_private"
+raw_messages = 256
+server_buffer = independent
+smart_filter = on
+smart_filter_delay = 5
+smart_filter_join = on
+smart_filter_join_unmask = 30
+smart_filter_mode = "+"
+smart_filter_nick = on
+smart_filter_quit = on
+temporary_servers = off
+topic_strip_colors = off
+
+[color]
+input_nick = lightcyan
+item_channel_modes = default
+item_lag_counting = default
+item_lag_finished = yellow
+item_nick_modes = default
+message_join = green
+message_quit = red
+mirc_remap = "1,-1:darkgray"
+nick_prefixes = "y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
+notice = green
+reason_quit = default
+topic_current = default
+topic_new = white
+topic_old = default
+
+[network]
+autoreconnect_delay_growing = 2
+autoreconnect_delay_max = 600
+ban_mask_default = "*!$ident@$host"
+channel_encode = off
+colors_receive = on
+colors_send = on
+lag_check = 60
+lag_max = 1800
+lag_min_show = 500
+lag_reconnect = 300
+lag_refresh_interval = 1
+notify_check_ison = 1
+notify_check_whois = 5
+sasl_fail_unavailable = on
+send_unknown_commands = off
+whois_double_nick = off
+
+[msgbuffer]
+
+[ctcp]
+
+[ignore]
+
+[server_default]
+addresses = ""
+anti_flood_prio_high = 2
+anti_flood_prio_low = 2
+autoconnect = off
+autojoin = ""
+autoreconnect = on
+autoreconnect_delay = 10
+autorejoin = off
+autorejoin_delay = 30
+away_check = 0
+away_check_max_nicks = 25
+capabilities = ""
+command = ""
+command_delay = 0
+connection_timeout = 60
+ipv6 = on
+local_hostname = ""
+msg_kick = ""
+msg_part = "WeeChat ${info:version}"
+msg_quit = "WeeChat ${info:version}"
+nicks = "andrewzah"
+nicks_alternate = on
+notify = ""
+password = ""
+proxy = ""
+realname = ""
+sasl_fail = continue
+sasl_key = ""
+sasl_mechanism = plain
+sasl_password = ""
+sasl_timeout = 15
+sasl_username = ""
+ssl = off
+ssl_cert = ""
+ssl_dhkey_size = 2048
+ssl_fingerprint = ""
+ssl_priorities = "NORMAL:-VERS-SSL3.0"
+ssl_verify = on
+usermode = ""
+username = "andrei"
+
+[server]
+znc_snoonet.addresses = "znc.andrewzah.com/6697"
+znc_snoonet.proxy
+znc_snoonet.ipv6
+znc_snoonet.ssl = on
+znc_snoonet.ssl_cert
+znc_snoonet.ssl_priorities
+znc_snoonet.ssl_dhkey_size
+znc_snoonet.ssl_fingerprint
+znc_snoonet.ssl_verify
+znc_snoonet.password = "${sec.data.znc_password}"
+znc_snoonet.capabilities
+znc_snoonet.sasl_mechanism
+znc_snoonet.sasl_username
+znc_snoonet.sasl_password
+znc_snoonet.sasl_key
+znc_snoonet.sasl_timeout
+znc_snoonet.sasl_fail
+znc_snoonet.autoconnect = on
+znc_snoonet.autoreconnect
+znc_snoonet.autoreconnect_delay
+znc_snoonet.nicks = "andrewzah, andrewzah1, andrewzah2, andrewzah3"
+znc_snoonet.nicks_alternate
+znc_snoonet.username = "andrei/snoonet"
+znc_snoonet.realname
+znc_snoonet.local_hostname
+znc_snoonet.usermode
+znc_snoonet.command
+znc_snoonet.command_delay
+znc_snoonet.autojoin
+znc_snoonet.autorejoin
+znc_snoonet.autorejoin_delay
+znc_snoonet.connection_timeout
+znc_snoonet.anti_flood_prio_high
+znc_snoonet.anti_flood_prio_low
+znc_snoonet.away_check
+znc_snoonet.away_check_max_nicks
+znc_snoonet.msg_kick
+znc_snoonet.msg_part
+znc_snoonet.msg_quit
+znc_snoonet.notify
+znc_freenode.addresses = "znc.andrewzah.com/6697"
+znc_freenode.proxy
+znc_freenode.ipv6
+znc_freenode.ssl = on
+znc_freenode.ssl_cert
+znc_freenode.ssl_priorities
+znc_freenode.ssl_dhkey_size
+znc_freenode.ssl_fingerprint
+znc_freenode.ssl_verify
+znc_freenode.password = "${sec.data.znc_password}"
+znc_freenode.capabilities
+znc_freenode.sasl_mechanism
+znc_freenode.sasl_username
+znc_freenode.sasl_password
+znc_freenode.sasl_key
+znc_freenode.sasl_timeout
+znc_freenode.sasl_fail
+znc_freenode.autoconnect = on
+znc_freenode.autoreconnect
+znc_freenode.autoreconnect_delay
+znc_freenode.nicks = "andreizah"
+znc_freenode.nicks_alternate
+znc_freenode.username = "andrei/freenode"
+znc_freenode.realname
+znc_freenode.local_hostname
+znc_freenode.usermode
+znc_freenode.command
+znc_freenode.command_delay
+znc_freenode.autojoin
+znc_freenode.autorejoin
+znc_freenode.autorejoin_delay
+znc_freenode.connection_timeout
+znc_freenode.anti_flood_prio_high
+znc_freenode.anti_flood_prio_low
+znc_freenode.away_check
+znc_freenode.away_check_max_nicks
+znc_freenode.msg_kick
+znc_freenode.msg_part
+znc_freenode.msg_quit
+znc_freenode.notify
A nvim/after/syntax/clojure.vim => nvim/after/syntax/clojure.vim +0 -0
A nvim/after/syntax/elm.vim => nvim/after/syntax/elm.vim +50 -0
@@ 0,0 1,50 @@
+"=============================================================================
+" What Is This: Add some conceal operator for your elm files
+" File: elm.vim (conceal enhancement)
+" Author: arcseldon
+" Last Change: 2018-01-30
+" Version: 1.0.1
+" Require:
+" set nocompatible
+" somewhere on your .vimrc
+"
+" Vim 7.3 or Vim compiled with conceal patch.
+" Use --with-features=big or huge in order to compile it in.
+"
+" Usage:
+" Drop this file in your
+" ~/.vim/after/syntax folder (Linux/MacOSX/BSD...)
+" ~/vimfiles/after/syntax folder (Windows)
+"
+" For this script to work, you have to set the encoding
+" to utf-8 :set enc=utf-8
+"
+" Additional:
+" * if you want to avoid the loading, add the following
+" line in your .vimrc :
+" let g:no_elixir_conceal = 1
+" Changelog:
+" - 1.0.1 Update pipe operator symbol and add few extra operator overrides
+" - 1.0.0 Initial release - just override pipe operator
+"
+if exists('g:no_elm_conceal') || !has('conceal') || &enc != 'utf-8'
+ finish
+endif
+"
+" if !has('conceal')
+" finish
+" endif
+
+syntax match exNiceOperator "|>" conceal cchar=▷
+" syntax match exNiceOperator "<-" conceal cchar=←
+syntax match exNiceOperator "->" conceal cchar=→
+" syntax match exNiceOperator "==" conceal cchar=≡
+" syntax match exNiceOperator "!=" conceal cchar=≢
+syntax match exNiceOperator "<=" conceal cchar=≤
+syntax match exNiceOperator ">=" conceal cchar=≥
+
+hi link exNiceOperator Operator
+hi! link Conceal Operator
+setlocal conceallevel=2
+
+
A nvim/after/syntax/ruby.vim => nvim/after/syntax/ruby.vim +21 -0
@@ 0,0 1,21 @@
+if !has('conceal')
+ finish
+endif
+
+syntax clear rubyOperator
+
+syntax keyword rubyOperator is
+
+syntax match rubyNiceOperator "<=" conceal cchar=≤
+syntax match rubyNiceOperator ">=" conceal cchar=≥
+
+syntax match rubyNiceOperator "=>" conceal cchar=⇾
+
+syntax match rubyNiceOperator "!=" conceal cchar=≠
+syntax keyword rubyNiceOperator lambda conceal cchar=λ
+
+hi link rubyNiceOperator Operator
+hi link rubyNiceStatement Statement
+hi! link Conceal Operator
+
+set conceallevel=2