############# 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 $(echo $WIFINAME) password $(echo $WIFIPASS) name net
#exec --no-startup-id exec redshift-gtk
exec --no-startup-id exec nitrogen --restore
exec --no-startup-id exec setxkbmap "us,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+Shift+apostrophe exec "rofi -show run"
bindsym $mod+Shift+Return exec "rofi -show drun"
bindsym $mod+Escape exec ~/.script/dmenu/dmenu-power.sh -h 24
bindsym $mod+Control+u exec ~/.script/dmenu/dmenu-config-edit.sh -h 24
bindsym $mod+Control+i exec passmenu -h 24 -p Passwords

### Applications
bindsym $mod+Return exec $terminal
bindsym $mod+F2 exec $browser 
bindsym $mod+F4 exec $filemanager
bindsym --release $mod+Shift+Escape exec xkill
bindsym $mod+$alt+t exec $terminal nvim .todo


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

##### Restart focused window ######
bindsym $mod+Control+h resize shrink width 20 px or 20 ppt
bindsym $mod+Control+Left resize shrink width 20 px or 20 ppt
bindsym $mod+Control+j resize grow height 20 px or 20 ppt
bindsym $mod+Control+Down resize grow height 20 px or 20 ppt
bindsym $mod+Control+k resize shrink height 20 px or 20 ppt
bindsym $mod+Control+Up resize shrink height 20 px or 20 ppt
bindsym $mod+Control+l resize grow width 20 px or 20 ppt
bindsym $mod+Control+Right resize grow width 20 px or 20 ppt

############ 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+g mode "gaps"
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          #008DCD  #008DCD  #FFFFFF  #008DCD   #008DCD
client.focused_inactive #008DCD  #002b36  #DFDFDF  #002b36   #002b36
client.unfocused        #262A2B  #262A2B  #DFDFDF  #262A2B   #262A2B
client.urgent           #002b36  #262A2B  #FFFFFF  #262A2B   #262A2B
client.placeholder      #000000  #000000  #FFFFFF  #000000   #000000
client.background       #FFFFFF
