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

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

# font
set $font "pango:Roboto Mono for Powerline 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

##border
new_window pixel 3


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

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

# sound softkeys management
bindsym XF86AudioRaiseVolume    exec ~/.i3/util/volnotid.sh down
bindsym XF86AudioLowerVolume    exec ~/.i3/util/volnotid.sh up
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+F4                 exec --no-startup-id "gnome-screenshot -w"

# start dmenu-launcher
#bindsym $mod+d                  exec ~/.i3/util/i3dmenu-wrapper.sh
bindsym $mod+d                  exec rofi -show drun -theme solarized_alternate -font "mono 10"

# lock i3 with i3lock
bindsym $mod+Shift+x            exec i3lock-fancy-dualmonitor

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

# start terminal
#bindsym $mod+Return             exec --no-startup-id urxvt
bindsym $mod+Return             exec --no-startup-id urxvtc

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

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

# move focused window vim Style
bindsym $mod+Shift+h            move left
bindsym $mod+Shift+l            move right
bindsym $mod+Shift+k            move up
bindsym $mod+Shift+j            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 $IMPORTANT      #43d5f2
set $BACKGROUND     #1c5b98
set $FOREGROUND     #93a1a1
set $LIGHTGREY      #dc322f
set $LIGHTBLUE      #75aaff
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          $FOREGROUND  $MAGENTA      $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        ""

# Darkbrown colorscheme
#    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
#  }

    # Solarized colorscheme
    colors {
        statusline  $LIGHTBLUE
        background  $BACKGROUND
        separator   $MAGENTA

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

#############################################
#            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="teamspeak3"]     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             #
#############################################

# composite manager
exec --no-startup-id compton -cCGfb -m1 -D3 --xrender-sync --xrender-sync-fence

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

# less eye pain
#exec --no-startup-id redshift

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

# Nextcloud Sync
exec --no-startup-id nextcloud

# nm-applet
exec --no-startup-id nm-applet

# dunst for notifications and volnoti daemon
exec --no-startup-id dunst -conf ~/.dunstrc

# wallpapers
exec --no-startup-id feh --bg-fill ~/.wallpapers/puzzle2.png
