prefer-no-csd
screenshot-path "~/Pictures/Screenshots/%Y%m%d-%H%M%S.png"
spawn-sh-at-startup "fish -c 'swaybg -i $IMG &'"

environment {
  QT_QPA_PLATFORM "wayland"
  DISPLAY ":0"
}

hotkey-overlay {
  skip-at-startup
}

cursor {
  // xcursor-theme "breeze_cursors"
  // xcursor-size 48

  // hide-when-typing
  // hide-after-inactive-ms 5000
}

gestures {
  hot-corners {
    off
  }
}

input {
  keyboard {
    xkb {
      layout "it"
    }
  }

  touchpad {
    tap
    natural-scroll
  }

  mouse {
    // off
    // natural-scroll
    // accel-speed 0.2
    // accel-profile "flat"
    // scroll-factor 1.0
    // scroll-method "no-scroll"
    // scroll-button 273
    // left-handed
    // middle-emulation
  }

  // disable-power-key-handling
  // warp-mouse-to-focus
  // focus-follows-mouse max-scroll-amount="0%"
  // workspace-auto-back-and-forth
}

output "eDP-1" {
  // off
  mode "2560x1600@60.000"
  scale 2.0
  transform "normal"
  position x=0 y=0
}

output "HDMI-A-1" {

}

layout {
  gaps 5
  center-focused-column "on-overflow"
  // empty-workspace-above-first
  background-color "transparent"

  preset-column-widths {
    proportion 0.33333
    proportion 0.5
    proportion 0.66667
  }
  default-column-width { proportion 0.5; }

  preset-window-heights {
    proportion 0.33333
    proportion 0.5
    proportion 0.66667
  }

  focus-ring {
    off
  }

  border {
    // off
    width 1
    active-color "{{color1}}"
    inactive-color "{{color0}}"
  }

  tab-indicator {
    place-within-column
    gaps-between-tabs 5
    active-color "{{color1}}"
    inactive-color "{{color0}}"
		length total-proportion=1.0
  }

	insert-hint {
		color "{{color1}}"
	}
}

overview {
  workspace-shadow {
    off
  }
}

animations {
	window-resize {
		spring damping-ratio=0.75 stiffness=250 epsilon=0.0001
	}
	window-open {
		duration-ms 500
		curve "ease-out-expo"
		custom-shader r"
			// Fall from Top
			vec4 open_color(vec3 coords_geo, vec3 size_geo) {
				float progress = niri_clamped_progress * niri_clamped_progress;
				vec2 coords = (coords_geo.xy - vec2(0.5, 0.0)) * size_geo.xy;
				coords.y += (1.0 - progress) * 1440.0;
				float random = (niri_random_seed - 0.5) / 2.0;
				random = sign(random) - random;
				float max_angle = 0.5 * random;
				float angle = (1.0 - progress) * max_angle;
				mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
				coords = rotate * coords;
				coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 0.0), 1.0);
				vec3 coords_tex = niri_geo_to_tex * coords_geo;
				return texture2D(niri_tex, coords_tex.st);
			}
		"
	}
	window-close {
		duration-ms 500
		curve "linear"
		custom-shader r"
			// Fall and Rotate
			vec4 close_color(vec3 coords_geo, vec3 size_geo) {
				float progress = niri_clamped_progress * niri_clamped_progress;
				vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy;
				coords.y -= progress * 1440.0;
				float random = (niri_random_seed - 0.5) / 2.0;
				random = sign(random) - random;
				float max_angle = 0.5 * random;
				float angle = progress * max_angle;
				mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
				coords = rotate * coords;
				coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0);
				vec3 coords_tex = niri_geo_to_tex * coords_geo;
				return texture2D(niri_tex, coords_tex.st);
			}
		"
	}
}

layer-rule {
  match namespace="^wallpaper$"
  place-within-backdrop true
}

window-rule {
  match title="btop"
  match title="nmtui"
  default-column-width { proportion 1.0; }
}
window-rule {
  //geometry-corner-radius 10
  clip-to-geometry true
}
window-rule {
  match app-id="SFML"
	open-floating true
}
window-rule {
	match is-floating=true
	shadow {
		on
	}
}

switch-events {
  lid-open { spawn "niri" "msg" "action" "power-on-monitors"; }
}

binds {
  Mod+Backslash { show-hotkey-overlay; }

  Mod+Return			hotkey-overlay-title="Spawn Terminal"       { spawn "foot"; }
  Mod+Space				hotkey-overlay-title="Spawn Applauncher"		{ spawn "rofi" "-show" "drun" "-theme" "~/.config/rofi/applauncher.rasi"; }
  Mod+Escape			hotkey-overlay-title="Spawn Powermenu"      { spawn "~/.config/scripts/powermenu"; }
  Mod+W						hotkey-overlay-title="Spawn Wallpapermenu"  { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/"; }
  Mod+Alt+W																										{ spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/Alt/"; }
  Mod+Shift+W			hotkey-overlay-title="Random Wallpaper"     { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/"; }
  Mod+Shift+Alt+W																							{ spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/Alt/"; }

  XF86AudioRaiseVolume  allow-when-locked=true { spawn "pamixer" "-i" "5"; }
  XF86AudioLowerVolume  allow-when-locked=true { spawn "pamixer" "-d" "5"; }
  XF86AudioMute         allow-when-locked=true { spawn "pamixer" "-t"; }
  XF86AudioMicMute      allow-when-locked=true { spawn "pamixer" "--default-source" "-t"; }
  XF86MonBrightnessUp   allow-when-locked=true { spawn "brightnessctl" "-e" "s" "+5%"; }
  XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "-e" "s" "5%-"; }

  Mod+Q { close-window; }

  Mod+H      { focus-column-left; }
  Mod+J      { focus-window-down; }
  Mod+K      { focus-window-up; }
  Mod+L      { focus-column-right; }
  Mod+Ctrl+H { move-column-left; }
  Mod+Ctrl+J { move-window-down; }
  Mod+Ctrl+K { move-window-up; }
  Mod+Ctrl+L { move-column-right; }

  Mod+N      { focus-column-first; }
  Mod+M      { focus-column-last; }
  Mod+Ctrl+N { move-column-to-first; }
  Mod+Ctrl+M { move-column-to-last; }

  Mod+Shift+H      { focus-monitor-left; }
  Mod+Shift+J      { focus-monitor-down; }
  Mod+Shift+K      { focus-monitor-up; }
  Mod+Shift+L      { focus-monitor-right; }
  Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
  Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
  Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
  Mod+Shift+Ctrl+L { move-column-to-monitor-right; }

  Mod+U       { focus-workspace-down; }
  Mod+I       { focus-workspace-up; }
  Mod+Ctrl+U  { move-column-to-workspace-down; }
  Mod+Ctrl+I  { move-column-to-workspace-up; }
  Mod+Shift+U { move-workspace-down; }
  Mod+Shift+I { move-workspace-up; }

  Mod+1      { focus-workspace 1; }
  Mod+2      { focus-workspace 2; }
  Mod+3      { focus-workspace 3; }
  Mod+4      { focus-workspace 4; }
  Mod+5      { focus-workspace 5; }
  Mod+6      { focus-workspace 6; }
  Mod+7      { focus-workspace 7; }
  Mod+8      { focus-workspace 8; }
  Mod+9      { focus-workspace 9; }
  Mod+Ctrl+1 { move-column-to-workspace 1; }
  Mod+Ctrl+2 { move-column-to-workspace 2; }
  Mod+Ctrl+3 { move-column-to-workspace 3; }
  Mod+Ctrl+4 { move-column-to-workspace 4; }
  Mod+Ctrl+5 { move-column-to-workspace 5; }
  Mod+Ctrl+6 { move-column-to-workspace 6; }
  Mod+Ctrl+7 { move-column-to-workspace 7; }
  Mod+Ctrl+8 { move-column-to-workspace 8; }
  Mod+Ctrl+9 { move-column-to-workspace 9; }

  Mod+Z { focus-workspace-previous; }

  Mod+Comma  { consume-window-into-column; }
  Mod+Period { expel-window-from-column; }
  Mod+O      { consume-or-expel-window-left; }
  Mod+P      { consume-or-expel-window-right; }

  Mod+R       { switch-preset-column-width; }
  Mod+Shift+R { switch-preset-window-height; }
  Mod+Ctrl+R  { reset-window-height; }
  Mod+F       { maximize-column; }
  Mod+Shift+F { fullscreen-window; }
	Mod+Ctrl+F  { maximize-window-to-edges; }
  Mod+C       { center-column; }

  Mod+Minus { set-column-width "-1%"; }
  Mod+Plus  { set-column-width "+1%"; }

  Mod+Shift+Minus { set-window-height "-1%"; }
  Mod+Shift+Plus  { set-window-height "+1%"; }

  Print      { screenshot; }
  Ctrl+Print { screenshot-screen; }
  Alt+Print  { screenshot-window; }

  Mod+Ctrl+V       { toggle-window-floating; }
  Mod+V { switch-focus-between-floating-and-tiling; }

  Mod+T { toggle-column-tabbed-display; }

  Mod+Tab { toggle-overview; }

  Mod+Shift+E { quit; }
}
