# vim:ft=conf:

changequote([,])
define([hostname], esyscmd([echo -n `hostname`]))

define([forloop], [pushdef([$1], [$2])_forloop($@)popdef([$1])])
define([_forloop],
       [$4[]ifelse($1, [$3], [], [define([$1], incr($1))$0($@)])])

exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP

set $mod Mod4

font pango:monospace 8

default_border none
hide_edge_borders both

focus_on_window_activation urgent

floating_modifier $mod

bindsym $mod+Return exec alacritty

bindsym $mod+Shift+q kill

bindsym $mod+d exec rofi -show run
bindsym $mod+Tab exec ~/etc/rofi-windows
bindsym $mod+shift+Tab exec ~/etc/rofi-windows movehere
bindsym $mod+p exec ~/etc/my-rofi-pass

define([dir_bind], [
  bindsym $mod+$2         focus $1
  bindsym $mod+Shift+$2   move $1
  bindsym $mod+Mod1+$2    move workspace to output $1
])

dir_bind(left, h)   dir_bind(left, Left)
dir_bind(down, j)   dir_bind(down, Down)
dir_bind(up, k)     dir_bind(up, Up)
dir_bind(right, l)  dir_bind(right, Right)

bindsym $mod+v split h
bindsym $mod+g split v

bindsym $mod+f fullscreen toggle

bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split

bindsym $mod+Shift+space floating toggle
bindsym $mod+Ctrl+space focus mode_toggle

bindsym $mod+a focus parent
bindsym $mod+b focus child

forloop([i], 1,9, [
  bindsym $mod+i          workspace i
  bindsym $mod+Shift+i    move container to workspace i
])

# reload the configuration file
# bindsym $mod+Shift+c reload
bindsym $mod+Shift+r exec bash -c "sleep 1; swaymsg reload"

ifelse(hostname, [petalius], [
  # brightness control
  bindsym XF86MonBrightnessDown exec light -U 10
  bindsym XF86MonBrightnessUp exec light -A 10
  bindsym Shift+XF86MonBrightnessDown exec light -U 1
  bindsym Shift+XF86MonBrightnessUp exec light -A 1
])

bindsym --locked XF86AudioPlay exec playerctl play
bindsym --locked XF86AudioPause exec playerctl pause
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous

# resize window (you can also use the mouse for that)
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 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

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

mode "moveit" {
        bindsym h move left 25 px
        bindsym j move down 25 px
        bindsym k move up 25 px
        bindsym l move right 25 px

        # same bindings, but for the arrow keys
        bindsym Left move left 25 px
        bindsym Down move down 25 px
        bindsym Up move up 25 px
        bindsym Right move right 25 px

        # back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
}
bindsym $mod+m mode "moveit"

define([defcolor], [define(base$1, ["[#]$2"])])
include([base16.m4])

client.focused base0D base0D base00 base01
client.focused_inactive base02 base02 base03 base01
client.unfocused base01 base01 base03 base01
client.urgent base02 base08 base07 base08

bar {
    swaybar_command waybar
}

# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
# bar {
#     swaybar_command waybar
#     status_command i3status
#     font pango:DejaVu Sans, Noto Sans CJK JP 11
#     icon_theme Adwaita
#
#     tray_output *
#
#     colors {
#         separator base03
#         background base01
#         statusline base05
#         focused_workspace base0C base0D base00
#         active_workspace base02 base02 base07
#         inactive_workspace base01 base01 base03
#         urgent_workspace base08 base08 base07
#     }
# }

exec --no-startup-id mako
exec --no-startup-id gsd-xsettings
exec --no-startup-id fcitx
exec --no-startup-id nm-applet --indicator
# exec --no-startup-id pa-applet
# exec --no-startup-id blueman-applet

bindsym $mod+Ctrl+l exec --no-startup-id ~/etc/swaylock.sh
exec swayidle -w \
         timeout 240 /home/gebner/etc/swaylock.sh \
         timeout 330 'swaymsg "output * dpms off"' \
              resume 'swaymsg "output * dpms on"' \
         before-sleep /home/gebner/etc/swaylock.sh

output * bg /home/gebner/Desktop/background.png fill "#aaaaaa"

input * xkb_layout us
input * xkb_variant altgr-intl
input * xkb_options ctrl:nocaps

# seat * hide_cursor 1200

# fcitx cannot capture super+space
bindsym $mod+Space exec fcitx-remote -t

ifelse(hostname, [flammea], [
  define(bigmonitor, "BenQ Corporation BenQ LCD 58F01595SL0")
  define(smallmonitor, "Dell Inc. DELL U2713HM 7JNY549C813S")
  define(television, "Samsung Electric Company SAMSUNG 0x00000001")
  define(projector, "BenQ Corporation BenQ PJ 0x0000057F")

  output bigmonitor pos 0 0 res 3840x2160
  output smallmonitor pos 3840 0 res 2560x1440 transform 270
  output projector pos 455 2758
  output television pos 2733 2758

  workspace 8 output television
  workspace 9 output projector

  input "9580:109:HUION_Huion_Tablet_Pen" {
    map_to_output bigmonitor
  }

  bindsym $mod+f11 output bigmonitor dpms off, output smallmonitor dpms off
  bindsym $mod+shift+f11 output bigmonitor dpms on, output smallmonitor dpms on
])

ifelse(hostname, [decoysnail], [
  output DP-2 pos 0 0 res 2560x1440
  output DP-1 pos 2560 0 res 1920x1200 transform 90
# exec --no-startup-id ~/.screenlayout/desk.sh
])

ifelse(hostname, [petalius], [
  output eDP-1 pos 0 0 res 2560x1440 scale 1
])

# pdfpc
assign [[window_role="presenter"]] 1
assign [[window_role="presentation"]] 9