############# General #############
# Bind $MOD(super) key
set $mod Mod4
set $alt Mod1
floating_modifier $mod

# Font
font monospace 10
font pango:JetBrains Mono 10

# Disable window title
default_border pixel
new_float pixel

# Borders
hide_edge_borders smart

############ Variables ###########
set $terminal kitty
set $browser firefox 
set $filemanager pcmanfm

############ Autostart ############
exec --no-startup-id exec picom -b
exec --no-startup-id exec nmcli radio wifi on; nmcli device wifi connect Pechenka password 24032006 name net
exec --no-startup-id exec redshift-gtk 
exec --no-startup-id exec nitrogen --restore
exec --no-startup-id exec setxkbmap "us,ru,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps"
exec --no-startup-id exec org.telegram.desktop
exec --no-startup-id exec conky
#exec --no-startup-id exec discord
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec_always --no-startup-id $HOME/.config/i3/bar.sh

############ Key bindings #########

### I3
# Kill focus window
bindsym $mod+q kill
# Restart i3wm
bindsym $mod+Control+r restart
# Focus the parent container
bindsym $mod+a focus parent
# Floating window
bindsym $mod+Shift+space floating toggle
# Splits
bindsym $mod+b split h
bindsym $mod+v split v
# Change container layout(stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Scratchpad
bindsym $mod+Shift+grave move scratchpad
bindsym $mod+grave scratchpad show, floating disable

### Launchers
bindsym $mod+p exec "dmenu_run -h 24 -p Run"
bindsym $mod+Shift+Return exec "rofi -show drun -drun-display-format '{name}'"
bindsym $mod+Escape exec "~/.script/dmenu/dmenu-power.sh"
bindsym $mod+Control+u exec ~/.script/dmenu/dmenu-config-edit.sh
bindsym $mod+Control+i exec passmenu -h 24 -p Passwords
bindsym $alt+Tab exec "rofi -show window -show-icons"
bindsym $mod+$alt+t exec $terminal nvim .todo


### Applications
bindsym $mod+Return exec $terminal
bindsym $mod+F2 exec $browser 
bindsym $mod+F3 exec gnvim
bindsym $mod+F4 exec $filemanager
bindsym --release $mod+Shift+Escape exec xkill


### Sceenshot
bindsym --release Print exec "scrot -s /home/${USER}/$(date +%Y-%m-%d-%H-%M-%S).png"
bindsym --release Shift+Print exec "scrot /home/${USER}/$(date +%Y-%m-%d-%H-%M-%S).png"


### Volume
bindsym $mod+plus exec "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5%"
bindsym $mod+minus exec "pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo  -5%"
bindsym $mod+Shift+minus exec "pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo toggle"

######### Window preferens ########
#assign [class="Kitty"] $ws1
#assign [class="(?i)chromium|firefox|qutebrowser"] $ws2
#assign [class="(?i)subl|code|emacs"] $ws3
#assign [class="(?i)thunar"] $ws4
#assign [title="Notable|Simplenote"] $ws5
assign [class="(?i)telegram|discord|viber"] $ws6
assign [title="KeePassXC"] $ws7
#for_window [title="Ranger_FM"] move to workspace $ws4
#for_window [class="Spotify"] move to workspace $ws9
for_window [class="(?i)mousepad"] floating enable
for_window [class="(?i)lxappearance|qt5ct"] floating enable
for_window [class="(?i)nitrogen"] floating enable
for_window [class="(?i)virtualbox"] floating enable
#focus_on_window_activation focus

############## Gaps ###############
#gaps inner 4
#smart_gaps on

##### Change containet focus ######
bindsym $mod+h focus left
bindsym $mod+Left focus left
bindsym $mod+j focus down
bindsym $mod+Down focus down
bindsym $mod+k focus up
bindsym $mod+Up focus up
bindsym $mod+l focus right
bindsym $mod+Right focus right

##### Move focused container ######
bindsym $mod+Shift+h move left
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+l move right
bindsym $mod+Shift+Right move right

############ Workspaces ###########
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"

bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9

bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9

############## Modes ##############
bindsym $mod+r mode "resize"
bindsym $mod+g mode "gaps"
mode "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

    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 Return mode "default"
    bindsym Escape mode "default"
    bindsym $mod+r mode "default"
}
mode "gaps" {
        bindsym plus  gaps inner current plus 2
        bindsym minus gaps inner current minus 2
        bindsym 0     gaps inner current set 0

        bindsym Shift+plus  gaps inner all plus 4
        bindsym Shift+minus gaps inner all minus 4
        bindsym Shift+0     gaps inner all set 0

        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+g mode "default"
}

############## Colors #############
#        Class          Border   Backgr   Text     Indicator Child_border
client.focused          #268bd2  #268bd2  #dfdfdf  #268bd2   #268bd2
client.focused_inactive #002b36  #002b36  #dfdfdf  #002b36   #002b36
client.unfocused        #002b36  #002b36  #586e75  #002b36   #002b36
client.urgent           #002b36  #002b36  #ffffff  #002b36   #002b36
client.placeholder      #000000  #000000  #ffffff  #000000   #000000
client.background       #ffffff
