{ config, lib, pkgs, ...}:

let
	mod = "Mod4";
in {
	xsession = {
		enable = true;

		windowManager.i3 = {
			enable = true;
			config = {
				bars = [
					{
						fonts = {
							size = 11.0;
						};
						statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs /home/daniel/.config/i3status-rust/config-main.toml";
						position = "top";
					}
				];

				defaultWorkspace = "workspace number 1";

				floating = {
					modifier = mod;
					criteria = [
						{ instance = "pavucontrol"; }
					];
				};

				focus = {
					followMouse = false;
				};

				fonts = {
					names = [ "pango:monospace 8" ];
					style = "monospace";
					size = 8.0;
				};

				keybindings = lib.mkOptionDefault {
					"${mod}+q" = "kill";
					"${mod}+d" = "exec rofi -show drun";

					"${mod}+h" = "focus left";
					"${mod}+j" = "focus down";
					"${mod}+k" = "focus up";
					"${mod}+l" = "focus right";

					"${mod}+Shift+h" = "move left";
					"${mod}+Shift+l" = "move right";

					"${mod}+b" = "split h";
					"${mod}+v" = "split v";
					"${mod}+Control+Return" = "exec --no-startup-id i3utils workspace new";
					"${mod}+Control+Shift+Return" = "exec --no-startup-id i3utils workspace new -b";
					"${mod}+Shift+Return" = "exec --no-startup-id i3utils workspace new -n, move next";

					"${mod}+Control+j" = "exec --no-startup-id $HOME/bin/scripts/godown";
					"${mod}+Control+k" = "exec --no-startup-id $HOME/bin/scripts/goup";
					"${mod}+Control+h" = "exec --no-startup-id i3utils workspace new -b";

					"${mod}+Shift+k" = "exec --no-startup-id i3utils window move prev";
					"${mod}+Shift+j" = "exec --no-startup-id i3utils window move next";

					"${mod}+p" = "scratchpad show";
					"${mod}+Escape" = "exec i3lock -i /home/daniel/wallpapers/lock.png";
					"${mod}+Shift+Escape" = "exec i3lock -i /home/daniel/wallpapers/lock.png && systemctl suspend";
				};

				modifier = mod;

				startup = [
					{ command = "$HOME/bin/scripts/flower"; always = true; }
					{ command = "feh --bg-fill $HOME/wallpapers/wallpaper.jpg"; always = false; }
				];

				terminal = "kitty";

				window = {
					border = 5;
					titlebar = false;
					commands = [
						{ command = "move position center #2116 46"; criteria = { class = "jetbrains-toolbox"; }; }
						{ command = "move scratchpad"; criteria = { instance = "spotify"; }; }
					];
				};

			};
		};
	};
}
