{ pkgs, lib, config, ... }: { programs.wofi.enable = true; programs.swaylock.enable = true; programs.waybar = { enable = true; systemd = { enable = true; target = "sway-session.target"; }; settings = { infobar = { layer = "top"; position = "top"; modules-left = ["memory" "cpu" "network" "group/bats"]; modules-center = ["sway/window"]; modules-right = ["clock"]; "group/bats" = { orientation = "inherit"; modules = ["battery#bat0" "battery#bat1" "upower#headphones"]; }; "battery#bat0" = { adapter = "AC"; bat = "BAT0"; interval = 2; format = "{icon} {capacity}% {time}"; format-charging = "󱐋 {icon} {capacity}% {time}"; format-time = "{h}:{m}"; format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; tooltip = true; tooltip-format = "BAT0: {cycles} cycles"; }; "battery#bat1" = { adapter = "AC"; bat = "BAT1"; interval = 2; format = "󱐋 {icon} {capacity}% {time}"; format-time = "{H}:{M}"; format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; tooltip = true; tooltip-format = "BAT1: {cycles} cycles"; }; "upower#headphones" = { native-path = "/org/bluez/hci0/dev_4C_87_5D_29_B3_76"; format = "󰋋 {percentage} {time}"; hide-if-empty = true; show-icon = false; }; }; interactiveBar = { layer = "top"; position = "bottom"; modules-left = ["sway/workspaces" "sway/mode"]; modules-center = ["tray"]; modules-right = ["wlr/taskbar"]; }; # mainBar = { # layer = "top"; # position = "top"; # height = 30; # output = [ # "eDP-1" # "HDMI-A-1" # ]; # modules-left = ["sway/workspaces" "sway/mode" "wlr/taskbar"]; # modules-center = ["sway/window" "custom/hello-from-waybar"]; # modules-right = ["mpd" "custom/mymodule#with-css-id" "temperature"]; # "sway/workspaces" = { # disable-scroll = true; # all-outputs = true; # }; # "custom/hello-from-waybar" = { # format = "hello {}"; # max-length = 40; # interval = "once"; # exec = pkgs.writeShellScript "hello-from-waybar" '' # echo "from within waybar" # ''; # }; # }; }; }; wayland.windowManager.sway = { enable = true; systemd = { enable = true; }; wrapperFeatures = { base = true; gtk = true; }; config = { modes = { resize = { Down = "resize grow height 10 px"; Escape = "mode default"; Left = "resize shrink width 10 px"; Return = "mode default"; Right = "resize grow width 10 px"; Up = "resize shrink height 10 px"; h = "resize shrink width 10 px"; j = "resize grow height 10 px"; k = "resize shrink height 10 px"; l = "resize grow width 10 px"; }; }; terminal = "kitty"; output = { "*" = { bg = "${../xmonad/wallpaper/wallpaper.jpg} fill"; }; }; input = { "*" = { xkb_layout = "us"; xkb_variant = "altgr-intl"; }; }; bars = []; menu = "wofi -d"; modifier = "Mod4"; keybindings = with { #mod = config.xsession.windowManager.i3.config.modifier; # mod = "Mod1"; mod = config.wayland.windowManager.sway.config.modifier; }; lib.mkOptionDefault { # switch window focus "${mod}+h" = "focus left"; "${mod}+j" = "focus down"; "${mod}+k" = "focus up"; "${mod}+l" = "focus right"; # move windows "${mod}+Shift+h" = "move left"; "${mod}+Shift+j" = "move down"; "${mod}+Shift+k" = "move up"; "${mod}+Shift+l" = "move right"; # layout shit "${mod}+shift+semicolon" = "split h"; "${mod}+semicolon" = "split v"; "${mod}+f" = "fullscreen toggle"; "${mod}+Shift+w" = "layout tabbed"; "${mod}+e" = "layout toggle split"; "${mod}+Shift+space" = "floating toggle"; # focus parents/children # "${mod}+Shift+a" = "focus parent"; # "${mod}+Shift+c" = "focus child"; # screenshot # "${mod}+w" = "exec window-screenshot.sh"; "${mod}+s" = "exec flameshot gui -c -p $HOME/Pictures/screenshots"; "${mod}+a" = "exec flameshot screen -c -p $HOME/Pictures/screenshots"; # "${mod}+t" = "exec ocr-screenshot.sh"; # rofi fuckery "${mod}+d" = "exec wofi -S drun --allow-images"; "${mod}+i" = "exec rofimoji --selector wofi -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; # TODO: wayland # "${mod}+d" = "exec --no-startup-id rofi -show drun -theme ${../../other/rofi-themes/applauncher.rasi}"; # "${mod}+space" = "exec --no-startup-id rofi -show combi -combi-show window#run -modes combi -theme ${../../other/rofi-themes/applauncher.rasi}"; # "${mod}+i" = "exec --no-startup-id rofimoji -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; # "${mod}+Shift+e" = "exec --no-startup-id rofi -show \"desktopctl\" -modes \"desktopctl:${desktop-ctl.outPath}/bin/desktopctl\" -theme ${../../other/rofi-themes/applauncher.rasi}"; # "${mod}+m" = "exec --no-startup-id menu-qalc"; # "${mod}+o" = "exec --no-startup-id rofi -show searchwolf -modes \"searchwolf:${searchwolf.outPath}/bin/searchwolf\""; # audio "XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status"; "XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status"; "XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status"; "XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status"; "XF86AudioNext" = "exec playerctl next"; "XF86AudioPrev" = "exec playerctl previous"; "XF86AudioPause" = "exec playerctl pause"; "XF86AudioPlay" = "exec playerctl play"; "XF86AudioStop" = "exec playerctl stop"; "XF86MonBrightnessUp" = "exec brightnessctl set 5%+"; "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; "XF86KbdBrightnessUp" = "exec brillo -kA 10.0"; "XF86KbdBrightnessDown" = "exec brillo -kU 10.0"; # macros # "${mod}+q" = "exec em-record.sh"; # "${mod}+p" = "exec em-play.sh"; # "${mod}+Shift+p" = "exec em-play-loop.sh"; # permaclip # "${mod}+c" = "exec rofi -show register -modes \"register:${pc-set.outPath}/bin/pc-set.sh\" -theme gruvbox-dark"; # "${mod}+v" = "exec rofi -show register -modes \"register:${pc-get.outPath}/bin/pc-get.sh\" -theme gruvbox-dark"; }; fonts = { names = ["Atkinson Hyperlegible"]; style = "Regular"; size = 9.0; }; gaps = { #top = 24; inner = 15; outer = 0; smartGaps = true; smartBorders = "on"; }; colors = { background = "#1d2021"; focused = { background = "#282828"; border = "#504945"; childBorder = "#7c6f64"; indicator = "#504945"; text = "#ebdbb2"; }; focusedInactive = { background = "#1d2021"; border = "#504945"; childBorder = "#665c54"; indicator = "#664c54"; text = "#d5c4a1"; }; placeholder = { background = "#1d2021"; border = "#00ff00"; childBorder = "#504945"; indicator = "#504945"; text = "#928374"; }; unfocused = { background = "#1d2021"; border = "#3c3836"; childBorder = "#504945"; indicator = "#504945"; text = "#bdae93"; }; urgent = { background = "#9d0006"; border = "#cc241d"; childBorder = "#3c3836"; indicator = "#fb4943"; text = "#ebdbb2"; }; }; window = { border = 2; titlebar = false; }; }; }; }