# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout somewhen, delete
# this file and re-run i3-config-wizard(1).
#

# Keyboard configuration
    input * xkb_layout "de,us"

#enable tab-to-click
    input "2:7:SynPS/2_Synaptics_TouchPad" {
       tap enabled
       scroll_method two_finger
    }

# set default font
    font -*-cure-medium-*-*-*-11-*-*-*-*-*-*-*

# set modifier keys for more clarity and readability in config
# mod is on most keyboards the "windows" key
    set $mod Mod4
    set $alt Mod1

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below. ISO 10646 = Unicode
    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, if you need a lot of unicode glyphs or
# right-to-left text rendering, you should instead use pango for rendering and
# chose a FreeType font, such as:
# font pango:DejaVu Sans Mono 10

# Use Mouse+$mod to drag floating windows to their wanted position
    floating_modifier $mod

#set the border of your windows
    bindsym $mod+t border normal
    bindsym $mod+y border 1pixel
    bindsym $mod+u border none

# start a terminal
# with some examples for other font or other terminal emulators
#    bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8:antialias=true" -letsp -1 -sh 20
#    bindsym $mod+Return exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:PragmataPro:size=8:antialias=true" -letsp -1 -sh 20
#    bindsym $mod+Return exec terminology
#    bindsym $mod+Return exec tilda
    bindsym $mod+Return exec termite

# kill focused window
    bindsym $mod+Shift+q kill
    bindsym $alt+F4 kill
# if this don't work, you can even start xkill
    bindsym $mod+Shift+k exec xkill

# enables a feature like on other windowmanagers or windows,
# to show running "processes" and switch between them
    bindsym $alt+Tab exec rofi -show window

# start dmenu (a program launcher)
#    bindsym $mod+d exec dmenu_run
# instead
#    set $menu dmenu_path | dmenu | xargs swaymsg exec --
#    set $menu j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'
    set $menu exec wofi --show drun
    bindsym $mod+d exec $menu
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop

# change focus - the vi way
# I don't use them, cause i need this keys for other purposes
# e.g. $mod+h for split horizontal
#    bindsym $mod+h focus left
#    bindsym $mod+j focus down
#    bindsym $mod+k focus up
#    bindsym $mod+l focus right

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

# move focused window - the vi way
# I don't use them, cause i need this keys for other purposes
# e.g. $mod+Shift+l for lock my Desktop
#    bindsym $mod+Shift+h move left
#    bindsym $mod+Shift+j move down
#    bindsym $mod+Shift+k move up
#    bindsym $mod+Shift+l move right

# 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+h split h

# split in vertical orientation
    bindsym $mod+v split v

# enter fullscreen mode for the focused container
    bindsym $mod+z 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

# focus the child container
#    bindsym $mod+d focus child

# switch to workspace
    bindsym $mod+1 workspace 1: 1: Text
    bindsym $mod+2 workspace 2: 2: Web
    bindsym $mod+3 workspace 3: 3: Office
    bindsym $mod+4 workspace 4: 4: KeePass
    bindsym $mod+5 workspace 5: 5: Mail
    bindsym $mod+6 workspace 6: 6: Chat
    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 1: 1: Text
    bindsym $mod+Shift+2 move container to workspace 2: 2: Web
    bindsym $mod+Shift+3 move container to workspace 3: 3: Office
    bindsym $mod+Shift+4 move container to workspace 4: 4: KeePass
    bindsym $mod+Shift+5 move container to workspace 5: 5: Mail
    bindsym $mod+Shift+6 move container to workspace 6: 6: Chat
    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

# reload the configuration file
    bindsym $mod+Shift+r reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
#    bindsym $mod+Shift+r restart

# exit i3 (logs you out of your X session)
#    bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
    bindsym $mod+Shift+e exec swaynagmode -t warning -m "Exit sway? This will end your Wayland session." -b "Exit sway" "swaymsg exit" -b "Reload" "swaymsg reload"

#    put task in background
    exec --no-startup-id swayidle -w \
        timeout 300 'light -G > /tmp/brightness && light -S 10' \
                resume 'light -S $(cat /tmp/brightness)' \
        timeout 600 'swaylock -f -c 000000' \
                resume 'light -S $(cat /tmp/brightness)' \
        timeout 900 'swaymsg "output * dpms off"' \
                resume 'swaymsg "output * dpms on" && light -S $(cat /tmp/brightness)' \
        before-sleep 'swaylock -f -c 000000'
#disable when firefox video is in fullscreen
    for_window [class="firefox"] inhibit_idle fullscreen
    for_window [app_id="firefox"] inhibit_idle fullscreen

    bindsym $mod+Shift+l exec swaylock -f -c 000000

# add the ability to reboot shutdown etc.
#.........
    bindsym $mod+Shift+Delete exec swaynagmode -t default -m "Sysmenu" -b "Exit" "swaymsg exit" -b "Reload" "swaymsg reload" -b "Halt" "exec sudo shutdown -P now" -b "Reboot" "exec sudo shutdown -r now"
#.........

# for Presentation and monitor output selection
#.........
    bindsym $mod+Shift+x exec swaynagmode -t default -m "Displaymenu" -b "Laptop only" 'swaymsg "output"' -b "DP mirror" 'swaymsg "output"' -b "DP extend" 'swaymsg "output"' -b "VGA mirror" 'swaymsg "output"' -b "VGA extend" 'swaymsg "output"'
#.........

    bindsym $mod+Prior move workspace to output left
    bindsym $mod+Next move workspace to output right

# resize window (you can also use the mouse for that)
#.........
    bindsym $mod+r mode "resize"

    mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym j resize shrink width 10 px or 10 ppt
        bindsym k resize grow height 10 px or 10 ppt
        bindsym l resize shrink height 10 px or 10 ppt
        bindsym odiaeresis resize grow width 10 px or 10 ppt

        # same bindings, but for the arrow keys
        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

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }
#........

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
    bar {
        swaybar_command waybar
    }

#
# Scratchpad:
#
    # Sway has a "scratchpad", which is a bag of holding for windows.
    # You can send windows there and get them back later.

    # Move the currently focused window to the scratchpad
    bindsym $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.
    bindsym $mod+minus scratchpad show


# snipping/screenshot Tool
    #bindsym --release Print exec scrot -s -e 'mv $f ~/Bilder/Screenshots/screenshot_%Y-%m-%d_%H%M%S.png'
    #bindsym --release Print exec maim -s ~/Bilder/Screenshots/screenshot_$(date +%s).png
    bindsym --release Print exec grim -g "$(slurp)" ~/library/Bilder/Screenshots/screenshot_$(date +%s).png


## Media keys
    bindsym XF86AudioRaiseVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5%
    bindsym XF86AudioLowerVolume exec pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -5%
    bindsym XF86AudioMute exec pamixer -t

## Adjust Brightness
#    bindsym XF86MonBrightnessDown exec light -U 10
#    bindsym XF86MonBrightnessUp exec light -A 10

# Enable GLX Graphics
# used especially for Laptop and enable/disable discrete graphics
#   bindsym $mod+g exec /home/templis/dri.sh

# control swaynag with keyboard
# needs to be swaynadmode installed
    swaynag_command swaynagmode
    set $nag exec swaynagmode
    mode "nag" {
        bindsym {
            Ctrl+d    mode "default"

            Ctrl+c    $nag --exit
            q         $nag --exit
            Escape    $nag --exit

            Return    $nag --confirm

            Tab       $nag --select prev
            Shift+Tab $nag --select next

            Left      $nag --select next
            Right     $nag --select prev

            Up        $nag --select next
            Down      $nag --select prev
        }
}

# Set floating Windows for special applications
    workspace_layout tabbed
    for_window [window_role="pop-up"] floating enable,move absolute center
    for_window [class="Pinentry"] floating enable
    for_window [class="Eog"] floating enable
    for_window [class="Geary"] floating enable
    for_window [class="Gcr-prompter"] floating enable
    for_window [class="Tipswindow.py"] floating enable
    for_window [class="XVroot"] floating enable
    for_window [class="XVcontrols"] floating enable
    for_window [class="Vlc"] floating enable
    for_window [class="Synergy"] floating enable
    for_window [class="libreoffice-writer"] floating enable
    for_window [class="Shotwell"] floating enable
    for_window [class="UpLauncher"] floating enable
    for_window [title="^Minecraft .*"] floating enable
    for_window [title="Steam - Update News"] kill
    for_window [title="Preferences$"] floating enable
    for_window [class="^Pidgin$" window_role="^conversation$"] resize grow width 0 px or 30 ppt

# Assign special applications to defined workspaces
    assign [class="Chromium"] 2: 2: Web
    assign [class="chrome"] 2: 2: Web
    assign [class="Firefox"] 2: 2: Web
    assign [class="firefox"] 2: 2: Web
    assign [class="libreoffice"] 3: 3: Office
    assign [class="Gimp"] 3: 3: Office
    assign [class="^Minecraft Launcher .*"] 3: 3: Office
    assign [class="Linphone"] 3: 3: Office
    assign [class="keepassxc"] 4: 4: KeePass
    assign [class="KeePassXC"] 4: 4: KeePass
    assign [class="(?i)thunderbird"] 5: 5: Mail
    assign [class="Signal"] 6: 6: Chat
# include modules etc.
    include ~/.config/sway/conf.d/*

# Start some needet applications
# Please take care to install/configure it, if you intend to include it!

#fix graphical gltiches
    exec xrdb -load ~/.Xresources
    exec xrdb -merge ~/.Xresources

# start Sound Daemon
    exec pulseaudio --kill
    exec sleep 3 pulseaudio --start
    exec /usr/bin/pasystray

# BROWSERS!!!11!elf!
    exec firefox
    #exec chromium
    #exec google-chrome-stable

# networkmanager gui
    exec nm-applet --indicator

# eye saver
#    Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night.
    exec redshift-gtk -l 48.52160730:9.05050278

# nextcloud
    exec nextcloud

# start one terminal on workspace 1 for failure management etc.
#    exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd -ip -fg white -sl 10000 +sb -fn "xft:inconsolata:size=8" -letsp -1 -sh 20'
    exec --no-startup-id i3-msg 'workspace 1: 1: Text; exec  termite'

# trayicon to listen to some radio stations
    exec radiotray-ng

# start i3 with a random wallpaper
#    exec feh --randomize --bg-fill ~/Bilder/Wallpaper/*
#    exec feh --randomize --bg-fill ~/library/Bilder/Wallpaper/*
    output "*" bg ~/library/Bilder/Wallpaper/Desktopography_2016_Kevin_May_2560x1440px-1-32g2c1w5jiz6gj086a9tkw.jpg fill

# autodetect and automount USB Sticks and external media
    exec udisksvm >/dev/null &

# needet for my Razer Chomatic Keyboard
#    exec razercommander -q
#    exec_always –no-startup-id flashfocus

# Start Signal
    exec signal-desktop-beta

# Start keepassxc
    exec keepassxc
    exec ~/.scripts/start_keyring.sh

#start polybar
#    exec_always --no-startup-id ~/polybar.sh
