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

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

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

#gaps
gaps inner 13
gaps outer 5

###border
new_window pixel 3

# focus follows mouse
focus_follows_mouse yes


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

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

# Sound softkeys management
bindsym Print                   exec ~/.i3/util/volnotid.sh down
bindsym Scroll_Lock             exec ~/.i3/util/volnotid.sh up
bindsym Pause                   exec ~/.i3/util/volnotid.sh mute

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

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

# jauth two factor authenticator
bindsym $mod+F1                 exec ~/.i3/util/authenticator.sh google
bindsym $mod+F2                 exec ~/.i3/util/authenticator.sh facebook
bindsym $mod+F3                 exec ~/.i3/util/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                    #
##############################################

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

# Solarized colorscheme
set $BACKGROUND     #20444d
set $FOREGROUND     #93a1a1
set $LIGHTGREY      #dc322f
set $GREEN          #b0cc54
set $BROWN          #b58900
set $BLUE           #268bd2
set $VIOLET         #6c71c4
set $MAGENTA        #2aa198
set $WHITE          #fdf6e3

client.background       #ffffff

# Darkbrown colorscheme
# name                  #border     #background  #text        #indicator   #child_border
#client.focused          $DARKBROWN  $LIGHTBROWN  $DARKBROWN   $LIGHTBROWN  $DARKBROWN
#client.unfocused        $DARKBROWN  $DARKBROWN   $LIGHTBROWN  $LIGHTBROWN  $DARKBROWN
#client.focused_inactive $DARKBROWN  $DARKBROWN   $LIGHTBROWN  $LIGHTBROWN  $DARKBROWN
#client.urgent           $DARKBROWN  $DARKBROWN   $LIGHTBROWN  $LIGHTBROWN  $DARKBROWN

# Solarized colorscheme
# name                  #border     #background #text       #indicator #child_border
client.focused          $MAGENTA    $BACKGROUND $GREEN      $GREEN     $MAGENTA
client.unfocused        $BACKGROUND $BACKGROUND $GREEN      $GREEN     $BACKGROUND
client.focused_inactive $BACKGROUND $BACKGROUND $GREEN      $GREEN     $BACKGROUND
client.urgent           $BACKGROUND $BACKGROUND $BACKGROUND $GREEN     $BACKGROUND



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

bar {
    position                top
    font                    $font
    i3bar_command           /usr/bin/i3bar
    status_command          i3status -c ~/.i3/i3status.conf
    separator_symbol        "  "
    
    # Solarized colorscheme
    colors {
        statusline  $GREEN
        background  $BACKGROUND
        separator   $MAGENTA

        # name             #border     #bg         #text
        focused_workspace  $MAGENTA    $BACKGROUND $GREEN
        active_workspace   $BACKGROUND $BACKGROUND $GREEN
        inactive_workspace $BACKGROUND $BACKGROUND $GREEN
        urgent_workspace   $BACKGROUND $BACKGROUND $GREEN
    }
}

#############################################
#            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

# 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             #
#############################################

# less eye pain
exec --no-startup-id redshift-gtk
exec --no-startup-id compton --config ~/.compton.conf

# fucking 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 nitrogen --restore

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

# dropbox daemon
exec dropbox start

# telegram
exec /bin/telegram-desktop
