#######################################
#  _____  ____                        #
# |_   _||___ \                       #
#   | |    __) |__      __ _ __ ___   #
#   | |   |__ < \ \ /\ / /| '_ ` _ \  #
#  _| |_  ___) | \ V  V / | | | | | | #
# |_____||____/   \_/\_/  |_| |_| |_| #
#                                     #
#######################################

#############################################
#         General configurations            #
#############################################

# font
set $font "pango:RobotoMono 10"
font $font

# floating modifier
# mod1 = Alt (xmodmap to show)
# mod4 = Winkey (xmodmap to show)
set $mod mod4
floating_modifier $mod

# remove window decorations
new_window pixel

# focus follows mouse
focus_follows_mouse yes


#############################################
#              Script Section               #
#############################################

# 
# "xev" and "showkeys" can be usefull to determine the keycodes.
# 

# sound softkeys management
bindsym XF86AudioRaiseVolume    exec ~/.i3/util/volnotid.sh up
bindsym XF86AudioLowerVolume    exec ~/.i3/util/volnotid.sh down
bindsym XF86AudioMute           exec ~/.i3/util/volnotid.sh mute

# display brightness management
bindsym XF86MonBrightnessUp     exec "xbacklight +10"
bindsym XF86MonBrightnessDown   exec "xbacklight -10"

# webcam
bindym XF86WebCam               exec /bin/cheese

# lenovo Key wifi-menu
bindsym XF86Launch1             exec  urxvt -e sh -c "sudo wifi-menu wlp3s0"

# jauth two factor authenticator
bindsym $mod+F1                 exec /opt/JAuth/Authenticator.sh google
bindsym $mod+F2                 exec /opt/JAuth/Authenticator.sh facebook
bindsym $mod+F3                 exec /opt/JAuth/Authenticator.sh dropbox

# start dmenu-launcher
bindsym $mod+d                  exec ~/.i3/util/i3dmenu-wrapper.sh

# lock i3 with i3lock
bindsym $mod+Shift+x            exec ~/.i3/util/i3blur.py && systemctl suspend

#############################################
#                  Keymaps                  #
#############################################

# start terminal
bindsym $mod+Return             exec --no-startup-id i3-sensible-terminal

# kill focused window
bindsym $mod+Shift+q            kill

# change focus vim Style
bindsym $mod+h                  focus left
bindsym $mod+l                  focus right
bindsym $mod+j                  focus up
bindsym $mod+k                  focus down

# move focused window vim Style
bindsym $mod+Shift+h            move left
bindsym $mod+Shift+l            move right
bindsym $mod+Shift+j            move up
bindsym $mod+Shift+k            move down

# 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+v                  split h

# split in vertical orientation
bindsym $mod+c                  split v

# enter fullscreen mode for the focused container
bindsym $mod+f                  fullscreen

# 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

# reload the configuration file
bindsym $mod+Shift+c            reload

# restart i3 inplace
bindsym $mod+Shift+r            restart

# exit i3
bindsym $mod+Shift+e            exec "i3-nagbar -t warning -m 'Exit i3?' -b 'Yes' 'i3-msg exit'"

# enter the resize mode
bindsym $mod+r                  mode "resize"

# scratchpad
bindsym $mod+y                  scratchpad show
bindsym $mod+x                  move scratchpad
    
#############################################
#             Workspace & Tags              #
#############################################

# name for the workspaces
set $tag1 "1 Terminal"
set $tag2 "2 Internet"
set $tag3 "3 Coding"
set $tag4 "4 Music"

# switch to workspace
bindsym $mod+1                  workspace $tag1
bindsym $mod+2                  workspace $tag2
bindsym $mod+3                  workspace $tag3
bindsym $mod+4                  workspace $tag4
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 $tag1
bindsym $mod+Shift+2 move container to workspace $tag2
bindsym $mod+Shift+3 move container to workspace $tag3
bindsym $mod+Shift+4 move container to workspace $tag4
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

#############################################
#             Resize handling               #
#############################################

mode "resize" {
    # bindings to resize
    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

    # back to normal
    bindsym Return              mode "default"
    bindsym Escape              mode "default"
}

#############################################
#                 Colors                    #
#############################################

# colorscheme
set $DARKBROWN      #402e2e
set $LIGHTBROWN     #978965
set $DARKGREY       #1f1f1f
set $DARKRED        #9b0e0e

# name                  #top        #border     #text
client.focused          $DARKBROWN  $LIGHTBROWN $DARKBROWN
client.unfocused        $DARKBROWN  $DARKBROWN  $LIGHTBROWN
client.focused_inactive $DARKBROWN  $DARKBROWN  $LIGHTBROWN
client.urgent           $DARKBROWN  $DARKBROWN  $LIGHTBROWN


#############################################
#                 i3-bar                    #
#############################################

bar {
    position                top
    font                    $font
    i3bar_command           /usr/bin/i3bar
    status_command          i3status -c ~/.i3/i3status.conf
    separator_symbol        ".::"
    
    colors {
        statusline  $LIGHTBROWN
        background  $DARKGREY
        separator   $DARKRED

        # name             #border      #bg         #text
        focused_workspace  $LIGHTBROWN  $DARKBROWN  $LIGHTBROWN
        active_workspace   $DARKBROWN   $DARKBROWN  $LIGHTBROWN
        inactive_workspace $DARKBROWN   $DARKBROWN  $LIGHTBROWN
        urgent_workspace   $DARKBROWN   $DARKBROWN  $LIGHTBROWN
  }
}

#############################################
#            specific windows               #
#############################################

# always floating
for_window [class="Thunar"]         floating enable
for_window [class="Nautilus"]       floating enable
for_window [class="GParted"]        floating enable
for_window [class="Gedit"]          floating enable
for_window [class="Evince"]         floating enable
for_window [class="Telegram"]       floating enable
for_window [class="teamspeak3"]     floating enable
for_window [class="rhythmbox"]      floating enable
for_window [class="LibreOffice"]    floating enable
for_window [class="JAuth"]          floating enable
for_window [class="plecs"]          floating enable

# 0px Border 
for_window [class="chrome"]         border none
for_window [class="Firefox"]        border none

# 1px Border
for_window [class="URxvt" ]         border 1pixel

#############################################
#            auto start with i3             #
#############################################

# terminal daemon
exec --no-startup-id urxvtd -f

# less eye pain
exec --no-startup-id redshift-gtk
exec --no-startup-id compton -cCGb

# no beep!
exec --no-startup-id xset b off

# set dpi for my monitor
#exec --no-startup-id xrandr --dpi 81

# set mouse accel
#exec --no-startup-id xset m 1/4 1

# volnoti volume changer
exec --no-startup-id volnoti

# numlock on by default
#exec --no-startup-id numlockx on

# wallpapers
exec --no-startup-id ~/.i3/util/wallpapers.sh

# archlinux update notifier
exec --no-startup-id aarchup

# telegram
exec telegram-desktop

# dropbox daemon
exec dropbox start
