#include /home/oh/.config/sway/basic_key_bindings
#include /home/oh/.config/sway/windows_rules
#include /home/oh/.config/sway/input_config
#include /home/oh/.config/sway/colors
#include /home/oh/.config/sway/workspaces_rules
#include /home/oh/.config/sway/app_assignment
#include /home/oh/.config/sway/layout
# include /home/oh/.config/sway/utilities


### Variables
bindgesture swipe:up workspace prev
bindgesture swipe:down workspace next

# Logo key. Use Mod1 for Alt.
set $mod Mod4
set $mod1 Alt
# Home row direction keys, like vim
set $left k
set $down l
set $up o
set $right m

# screens
set $laptop eDP-1
set $external HDMI-A-1

## Preferred apps
set $term foot
set $menu wofi --show drun
set $file nautilus
set $browser flatpak run app.zen_browser.zen

include /etc/sway/config-vars.d/*

# autoload when start wm
exec /usr/libexec/polkit-mate-authentication-agent-1
exec wlsunset
exec wl-paste -t text --watch clipman store
exec wl-paste -p -t text --watch clipman store -P --histpath="~/.local/share/clipman-primary.json"
exec clipman restore
exec swaync

### Output configuration

# using "swaybg" just put file path as below and end with 'fill'
output * background ~/.config/sway/wallpapers/frieren.png fill
#

output HDMI-A-1 resolution 1920x1080 position 1920,0


exec swayidle -w \
        timeout 300 'swaylock -f -c 000000' \
	timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
	before-sleep 'swaylock -f -c 000000'

# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.

# Inhibit idle when any window is fullscreen
for_window [class=".*"] inhibit_idle fullscreen
for_window [app_id=".*"] inhibit_idle fullscreen


### Input configuration


input "2:14:ETPS/2_Elantech_Touchpad" {
       dwt enabled
       dwtp enabled
       tap_button_map lrm
       tap enabled
       natural_scroll enabled
       middle_emulation enabled
}

input type:keyboard {
    xkb_options caps:escape
    xkb_layout fr
    repeat_delay 300
    repeat_rate 50
}

input "6058:20564:ThinkPad_Extra_Buttons" {
}


# window gaps
smart_borders on
default_border pixel 3
default_floating_border pixel 3
gaps inner 0
gaps outer 0


# Window borders
# Colors:               border   background  text      indicator  child_border
client.focused          #9932cc  #285577     #ffffff   #2e9ef4    #2e9ef4
client.focused_inactive #333333  #5f676a     #ffffff   #484e50    #5f676a
client.unfocused        #333333  #222222     #888888   #292d2e    #222222
client.urgent           #2f343a  #900000     #ffffff   #900000    #900000
client.placeholder      #000000  #0c0c0c     #ffffff   #000000    #0c0c0c

# Background color for inactive tabs in tabbed/stacked layout
client.background       #000000

# thème du curseur de souris
seat seat0 xcursor_theme Bibata-Modern-Ice

# faire disparaître le titlebar
font pango:monospace 0.001
titlebar_border_thickness 1

### Key bindings
#
# Basics:
#

    # Start a terminal
    bindsym $mod+Return exec $term

    # Kill focused window
    bindsym $mod+q kill

    # Start your launcher
    bindsym $mod+space exec $menu
    bindsym $mod+shift+d exec wofi --show run

    # Start a file manager
    bindsym $mod+e exec $file

    # Start browser
    bindsym $mod+a exec $browser

    # Drag floating windows by holding down $mod and left mouse button.
    # Resize them with right mouse button + $mod.
    # Despite the name, also works for non-floating windows.
    # Change normal to inverse to use left mouse button for resizing and right
    # mouse button for dragging.
    floating_modifier $mod normal

    # clipboard manager
    bindsym $mod+semicolon exec clipman pick --tool wofi -T'--prompt=clipboard-history -i'
    bindsym $mod+x exec "clipman pick -t wofi --err-on-no-selection && wtype -M ctrl -M shift v"

    # notification center
    bindsym $mod+Shift+n exec swaync-client -t -sw

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

    # Exit sway (logs you out of your Wayland session)
    bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
    # Move your focus around
    bindsym $mod+$left focus left
    bindsym $mod+$down focus down
    bindsym $mod+$up focus up
    bindsym $mod+$right focus right
    # Or use $mod+[up|down|left|right]
    bindsym $mod+Left focus left
    bindsym $mod+Down focus down
    bindsym $mod+Up focus up
    bindsym $mod+Right focus right

    # Move the focused window with the same, but add Shift
    bindsym $mod+Shift+$left move left
    bindsym $mod+Shift+$down move down
    bindsym $mod+Shift+$up move up
    bindsym $mod+Shift+$right move right
    # Ditto, with arrow 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
#
# Workspaces:
#
    # Switch to workspace
    bindsym $mod+ampersand workspace 01
    bindsym $mod+eacute workspace 02
    bindsym $mod+quotedbl workspace 03
    bindsym $mod+apostrophe workspace 04
    bindsym $mod+parenleft workspace 05
    bindsym $mod+minus workspace 06
    bindsym $mod+egrave workspace 07
    bindsym $mod+underscore workspace 08
    bindsym $mod+ccedilla workspace 09
    bindsym $mod+agrave workspace 010
    # Move focused container to workspace
    bindsym $mod+Shift+ampersand move container to workspace 01
    bindsym $mod+Shift+eacute move container to workspace 02
    bindsym $mod+Shift+quotedbl move container to workspace 03
    bindsym $mod+Shift+apostrophe move container to workspace 04
    bindsym $mod+Shift+parenleft move container to workspace 05
    bindsym $mod+Shift+minus move container to workspace 06
    bindsym $mod+Shift+egrave move container to workspace 07
    bindsym $mod+Shift+underscore move container to workspace 08
    bindsym $mod+Shift+ccedilla move container to workspace 09
    bindsym $mod+Shift+agrave move container to workspace 010

    bindsym $mod+tab workspace next
    bindsym $mod1+tab workspace prev


# external screen

#   on laptop monitor
    workspace 1 output $laptop
    workspace 2 output $laptop
    workspace 3 output $laptop
    workspace 4 output $laptop
    workspace 5 output $laptop
    workspace 6 output $laptop
    workspace 7 output $laptop
    workspace 8 output $laptop
    workspace 9 output $laptop
    workspace 10 output $laptop
    
#   on external monitor
    workspace 01 output $external
    workspace 02 output $external
    workspace 03 output $external
    workspace 04 output $external
    workspace 05 output $external
    workspace 06 output $external
    workspace 07 output $external
    workspace 08 output $external
    workspace 09 output $external
    workspace 010 output $external


# assignment
for_window [app_id=.*] focus
 assign [app_id="foot"] 01
assign [app_id="foot"] 1
assign [app_id="zen"] 02
assign [app_id="zen"] 2
assign [app_id="anki"] 02
assign [app_id="anytype"] 03
assign [app_id="libreoffice"] 03
assign [app_id="signal"] 04
assign [app_id="thunderbird"] 04
assign [app_id="thunderbird"] 4
assign [app_id="mpv"] 05
assign [app_id="mpv"] 5
assign [app_id="vlc"] 05
assign [app_id="vlc"] 5
assign [app_id="steam"] 06
assign [app_id="steam"] 6
assign [app_id="kde-connect"] 07
assign [app_id="nextcloud"] 07
assign [app_id="Zotero"] 07
#
# Layout stuff:
#
    # You can "split" the current object of your focus with
    # $mod+b or $mod+v, for horizontal and vertical splits
    # respectively.
    bindsym $mod+b splith
    bindsym $mod+v splitv

    # Switch the current container between different layout styles
    # bindsym $mod+s layout stacking
    # bindsym $mod+w layout tabbed
    bindsym $mod+s layout toggle split

    # Make the current focus fullscreen
    bindsym $mod+f fullscreen

    # Toggle the current focus between tiling and floating mode
    bindsym $mod+Shift+space floating toggle

    # Swap focus between the tiling area and the floating area
    bindsym $mod+u focus mode_toggle

    # Move focus to the parent container
    # bindsym $mod+a focus parent
#
# 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
#
# Resizing containers:
#
mode "resize" {
    # left will shrink the containers width
    # right will grow the containers width
    # up will shrink the containers height
    # down will grow the containers height
    bindsym $left resize shrink width 10px
    bindsym $down resize grow height 10px
    bindsym $up resize shrink height 10px
    bindsym $right resize grow width 10px

    # Ditto, with arrow keys
    bindsym Left resize shrink width 10px
    bindsym Down resize grow height 10px
    bindsym Up resize shrink height 10px
    bindsym Right resize grow width 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
bindsym $mod+$mod1+r mode "resize"

#
# Utilities:
#
    # Special keys to adjust volume via PulseAudio
    bindsym --locked XF86AudioMute exec amixer sset Master toggle
    bindsym --locked XF86AudioLowerVolume exec amixer sset Master 5%-
    bindsym --locked XF86AudioRaiseVolume exec amixer sset Master 5%+
    bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
    # Special keys to adjust brightness via brightnessctl
    bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
    bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
    # Special key to take a screenshot with grim
    bindsym Print exec grim
    bindsym $mod+Shift+s exec grim -g "$(slurp)"

    #power
    bindsym $mod+Escape exec wlogout
    bindsym $mod+Shift+x exec swaylock
#
# Status Bar disable because of use waybar instead if you not use waybar just uncomment those below:
#

bar {
    swaybar_command waybar
    position top
    hidden_state show
    mode hide
    modifier $mod
}


include /etc/sway/config.d/*
