# vim: filetype=i3
# i3 config file (v4)
# Please see http://i3wm.org/docs/userguide.html for a complete reference!

# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod4
set $term termite
set $browser "qutebrowser"

# set default desktop layout (default is tiling)
# workspace_layout tabbed <stacking|tabbed>

# Configure border style <normal|1pixel|pixel xx|none|pixel>
default_border pixel 2
default_floating_border pixel 2

# Hide borders
# hide_edge_borders both

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:BlexMono Nerd Font Mono 9

# Use Mouse+$mod to drag floating windows
floating_modifier $mod

# GTK theme and icons
set $gnome-schema org.gnome.desktop.interface
exec_always {
  gsettings set $gnome-schema gtk-theme 'oomox-materia-dark'
  gsettings set $gnome-schema icon-theme 'Papirus-Dark'
}

##### Startup scripts and programs #####
# Waybar
exec --no-startup-id waybar_launch
# music daemon
exec --no-startup-id mpd
# Bluetooth adapter applet
exec_always --no-startup-id blueman-applet
# Notification handler
exec --no-startup-id mako
# Environment variables for cron scripts
exec_always --no-startup-id setsessionenv

# Workspace names
# to display names or symbols instead of plain workspace numbers you can use
# something like: set $ws1 1:mail
#                 set $ws2 2:
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
set $ws10 10

# Open specific applications in specific modes
for_window [title="alsamixer"] floating enable
for_window [title="ncpamixer"] floating enable
for_window [title="pacmixer"] floating enable
for_window [title="nmtui"] floating enable
for_window [title="i3_help"] floating enable, sticky enable
for_window [class="Lightdm-settings"] floating enable
for_window [class="Lxappearance"] floating enable, sticky enable
for_window [class="Pavucontrol"] floating enable
for_window [class="qt5ct"] floating enable, sticky enable
for_window [class="(?i)System-config-printer.py"] floating enable
for_window [title="wl-clipboard"] floating enable

# Webcam window
for_window [title="mpvfloat"] floating enable, sticky enable
no_focus [title="mpvfloat"]

# Dropdown-like windows

# VK Messenger
for_window [instance="vk" window_role="browser-window"] floating enable, sticky enable
# for_window [class="VK"] move scratchpad

# Telegram Desktop
for_window [app_id="telegramdesktop"] floating enable, sticky enable
# for_window [class="TelegramDesktop"] move scratchpad

# Quake-like Terminal dropdown
for_window [title="quakemite"] floating enable, sticky enable
for_window [title="quakemite"] border none

# Theme colors
# class                   border  backgr. text    indic.  child_border
  client.focused          #7FAC96 #7FAC96 #1B1E25 #D8DEE9 #7FAC96
  client.focused_inactive #3B4252 #3B4252 #7FAC96 #1d2021 #3B4252
  client.unfocused        #2B2C2B #3B4252 #D8DEE9 #1d2021 #3B4252
  client.urgent           #CB4B16 #FDF6E3 #1ABC9C #268BD2 #CB4B16
  client.placeholder      #FFFFFF #0C0C0C #FFFFFF #FFFFFF #3F6E90

  client.background       #2B2C2B

# Laptop lid
bindswitch --reload --locked lid:on exec "swaysession suspend"

# Trackpoint (Thinkpad)
input 2:10:TPPS/2_IBM_TrackPoint pointer_accel 1

# Outputs
output "*" background ~/.config/wall1.png fill
# Laptop display
output "eDP-1" scale 1.6 pos 0 0 scale_filter linear

# Keymaps
input type:keyboard {
  xkb_layout "us,es,ru"
  xkb_options "lv3:ralt_switch,grp:alt_shift_toggle,misc:typo,caps:escape,grp_led:scroll"
}

# Set inner/outer gaps
gaps inner 15
gaps outer 0

# Smart gaps (gaps used if only more than one container on the workspace)
# smart_gaps on

# Smart borders (draw borders around container only if it is not the only container on this workspace)
# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
smart_borders no_gaps

##### Bindsyms (layout-independent) #####
bindsym --to-code {

    # start a terminal
    $mod+Return exec $term

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

    # bemenu program launcher (-x force run through xwayland, -t run in terminal)
    $mod+d exec --no-startup-id menurun
    $mod+Shift+d exec --no-startup-id "menurun -t"
    $mod+Ctrl+d exec --no-startup-id "menurun -x"

    # Mako (notifications)
    $mod+Ctrl+space exec "makoctl dismiss"
    # $mod+Ctrl+grave exec "makoctl list"

    # Screen brightness controls
    XF86MonBrightnessUp exec "xbacklight -inc 5"
    XF86MonBrightnessDown exec "xbacklight -dec 5"
    $mod+Ctrl+Up exec "xbacklight -inc 5"
    $mod+Ctrl+Down exec "xbacklight -dec 5"

    # Media keys
    XF86AudioPrev		exec --no-startup-id "lmc prev"
    XF86AudioPlay		exec --no-startup-id "lmc toggle"
    XF86AudioNext		exec --no-startup-id "lmc next"
    XF86AudioRaiseVolume		exec --no-startup-id lmc up 5
    XF86AudioLowerVolume		exec --no-startup-id lmc down 5
    XF86AudioMute exec --no-startup-id lmc mute

    $mod+Shift+F5   exec mpc seek -10
    $mod+F5     		exec lmc prev
    $mod+F6     		exec lmc toggle
    $mod+F7     		exec lmc next
    $mod+Shift+F7   exec mpc seek +10

    # Start Applications
    $mod+Shift+w exec --no-startup-id $browser
    $mod+Ctrl+w exec --no-startup-id chromium
    $mod+F2 exec menumako
    $mod+F3 exec menudisplay
    $mod+F4 exec menublk
    $mod+F12 exec menutz
    $mod+r exec kitty -e ranger
    $mod+s exec "xway steam"
    $mod+m exec $term -e ncmpcpp
    $mod+n exec $term -e newsboat && killall -42 waybar
    $mod+a exec $term -e aerc
    $mod+Ctrl+v exec $term -e vis
    $mod+o exec --no-startup-id notistats
    $mod+c exec --no-startup-id camtoggle
    $mod+grave exec --no-startup-id menuemoji
    $mod+Ctrl+grave exec --no-startup-id menuwebsurf
    $mod+Shift+grave exec --no-startup-id menuwebsurf paste
    $mod+apostrophe exec --no-startup-id menupass
    $mod+Shift+apostrophe exec --no-startup-id "menupass -l"
    $mod+Ctrl+apostrophe exec --no-startup-id "menupass -f"
    $mod+Ctrl+Shift+apostrophe exec --no-startup-id "menupass -s"

    # Network management
    $mod+Shift+c exec togglevpn
    $mod+Shift+n exec $term -e 'nmtui'

    # Screenshot and recording
    Print exec --no-startup-id menugrim -q
    $mod+Print exec --no-startup-id menugrim
    Shift+Print exec --no-startup-id "swayrecord screencast"
    Ctrl+Print exec --no-startup-id swayrecord

    # Sound
    $mod+Shift+m exec $term -e 'pacmixer'
    $mod+Ctrl+m exec --no-startup-id menuoutput

    # Applications that start with no gaps
    $mod+g		exec --no-startup-id gimp; gaps inner current set 0; gaps outer current set 0
    $mod+i		exec --no-startup-id inkscape; gaps inner current set 0; gaps outer current set 0

    # Dropdown/scratchpad applications
    $mod+Shift+v exec --no-startup-id ddvk
    $mod+Shift+t exec --no-startup-id ddtelegram
    $mod+Shift+p exec --no-startup-id ddquakemite

    # Sticky float to a bottom corner
    $mod+Shift+b floating toggle; sticky toggle; exec --no-startup-id picinpic
    $mod+Ctrl+b floating toggle; sticky toggle; exec --no-startup-id picinpic left

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

    # alternatively, you can use the cursor keys:
    $mod+Left focus left
    $mod+Down focus down
    $mod+Up focus up
    $mod+Right focus right

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

    # alternatively, you can use the cursor keys:
    $mod+Shift+Left move left
    $mod+Shift+Down move down
    $mod+Shift+Up move up
    $mod+Shift+Right move right

    # split orientation
    $mod+b split h
    $mod+v split v

    # toggle fullscreen mode for the focused container
    $mod+f fullscreen toggle

    # change container layout (stacked, tabbed, toggle split)
    $mod+slash layout stacking
    $mod+w layout tabbed
    $mod+e layout toggle split

    # toggle tiling / floating
    $mod+Shift+space floating toggle

    # change focus between tiling / floating windows
    $mod+space focus mode_toggle

    # toggle sticky
    $mod+Shift+s sticky toggle

    # move the currently focused window to the scratchpad
    $mod+Shift+minus move scratchpad

    # Show the next scratchpad window or hide the focused scratchpad window.
    # If there are multiple scratchpad windows, this command cycles through them.
    $mod+minus scratchpad show

    #navigate workspaces next / previous
    $mod+Tab		workspace next
    $mod+Shift+Tab		workspace prev

    # switch to workspace
    $mod+1 workspace $ws1
    $mod+2 workspace $ws2
    $mod+3 workspace $ws3
    $mod+4 workspace $ws4
    $mod+5 workspace $ws5
    $mod+6 workspace $ws6
    $mod+7 workspace $ws7
    $mod+8 workspace $ws8
    $mod+9 workspace $ws9
    $mod+0 workspace $ws10

    # Move focused container to workspace
    $mod+Ctrl+1 move container to workspace $ws1
    $mod+Ctrl+2 move container to workspace $ws2
    $mod+Ctrl+3 move container to workspace $ws3
    $mod+Ctrl+4 move container to workspace $ws4
    $mod+Ctrl+5 move container to workspace $ws5
    $mod+Ctrl+6 move container to workspace $ws6
    $mod+Ctrl+7 move container to workspace $ws7
    $mod+Ctrl+8 move container to workspace $ws8
    $mod+Ctrl+9 move container to workspace $ws9
    $mod+Ctrl+0 move container to workspace $ws10

    # Move to workspace with focused container
    $mod+Shift+1 move container to workspace $ws1; workspace $ws1
    $mod+Shift+2 move container to workspace $ws2; workspace $ws2
    $mod+Shift+3 move container to workspace $ws3; workspace $ws3
    $mod+Shift+4 move container to workspace $ws4; workspace $ws4
    $mod+Shift+5 move container to workspace $ws5; workspace $ws5
    $mod+Shift+6 move container to workspace $ws6; workspace $ws6
    $mod+Shift+7 move container to workspace $ws7; workspace $ws7
    $mod+Shift+8 move container to workspace $ws8; workspace $ws8
    $mod+Shift+9 move container to workspace $ws9; workspace $ws9
    $mod+Shift+0 move container to workspace $ws10; workspace $ws10

    # reload the configuration file
    $mod+Shift+r reload

    # restart waybar
    $mod+Ctrl+r exec --no-startup-id waybar_launch

    # show/hide waybar
    $mod+F1 exec --no-startup-id "killall -10 waybar"

    # Shut down, restart and locking features
    $mod+Shift+e exec menusession

    $mod+Shift+y exec --no-startup-id swayresize left
    $mod+Shift+u exec --no-startup-id swayresize down
    $mod+Shift+i exec --no-startup-id swayresize up
    $mod+Shift+o exec --no-startup-id swayresize right

    # Lock screen
    $mod+x exec --no-startup-id lock-color

    # Gaps
    $mod+semicolon		      gaps inner current set 15; gaps outer current set 0
    $mod+Shift+semicolon		gaps inner current set 0; gaps outer current set 0
    $mod+period			    gaps outer current plus 5
    $mod+Shift+period		gaps outer current minus 5
    $mod+comma		      gaps inner current plus 5
    $mod+Shift+comma		gaps inner current minus 5
}

# bar {
    # position top
    # separator_symbol  "|"

    # status_command i3blocks

    # colors {
        # statusline #ffffff
        # background #000000AA
        # active_workspace #689d6a #323232 #689d6a
        # focused_workspace #8ec07c #689d6a #ffffff
    # }
# }