diff --git a/common/desktop/home.nix b/common/desktop/home.nix index dccbe87d..bd4e201c 100644 --- a/common/desktop/home.nix +++ b/common/desktop/home.nix @@ -1,34 +1,47 @@ -{ pkgs, inputs, config, ... }: +{ + pkgs, + inputs, + config, + ... +}: let tex = pkgs.texlive.combine { inherit (pkgs.texlive) scheme-full; - dnd-5e-latex-template = { pkgs = [ pkgs.v.dnd-5e-latex-template ]; }; + dnd-5e-latex-template = { + pkgs = [ pkgs.v.dnd-5e-latex-template ]; + }; }; - my-python-packages = ps: with ps; [ pandas requests numpy scapy pyshark cryptography flask ]; -in { + my-python-packages = + ps: with ps; [ + pandas + requests + numpy + scapy + pyshark + cryptography + flask + ]; +in +{ home.packages = with pkgs; [ (python3.withPackages my-python-packages) btop calibre - celluloid + celluloid # video player cinny-desktop element-desktop fusee-launcher - fractal-next - foliate + foliate # epub reader gcc gimp - helix inputs.attic.packages.${pkgs.system}.attic inputs.comma.packages.${pkgs.system}.default - # inputs.webcord.packages.${pkgs.system}.default discord jetbrains.clion jetbrains.rust-rover kdenlive libreoffice-fresh mattermost-desktop - mullvad-vpn neofetch nixpkgs-review plex-media-player @@ -43,7 +56,7 @@ in { # Enable my own hm modules themes.v.catppuccin.enable = true; -programs = { + programs = { v = { vscode.enable = true; nvim.enable = true; @@ -64,31 +77,38 @@ programs = { zsh = { enable = true; - sessionVariables = { DIRENV_LOG_FORMAT = ""; }; + sessionVariables = { + DIRENV_LOG_FORMAT = ""; + }; }; thunderbird = { enable = true; - profiles.default = { isDefault = true; }; + profiles.default = { + isDefault = true; + }; + }; + kitty = { + enable = true; + shellIntegration.enableZshIntegration = true; }; - kitty = { - enable = true; - shellIntegration.enableZshIntegration = true; }; -}; # Syncthing services.syncthing.enable = true; - xdg.userDirs = let home = config.home.homeDirectory; - in { - enable = true; - createDirectories = true; - desktop = "${home}/.desktop"; - documents = "${home}/cloud/Documents"; - download = "${home}/dl"; - music = "${home}/cloud/Music"; - pictures = "${home}/cloud/Pictures"; - publicShare = "${home}/.publicShare"; - templates = "${home}/.templates"; - videos = "${home}/cloud/Videos"; - }; + xdg.userDirs = + let + home = config.home.homeDirectory; + in + { + enable = true; + createDirectories = true; + desktop = "${home}/.desktop"; + documents = "${home}/cloud/Documents"; + download = "${home}/dl"; + music = "${home}/cloud/Music"; + pictures = "${home}/cloud/Pictures"; + publicShare = "${home}/.publicShare"; + templates = "${home}/.templates"; + videos = "${home}/cloud/Videos"; + }; } diff --git a/common/hm-modules/catppuccin/default.nix b/common/hm-modules/catppuccin/default.nix index ee6c76b3..a997a6ec 100644 --- a/common/hm-modules/catppuccin/default.nix +++ b/common/hm-modules/catppuccin/default.nix @@ -1,26 +1,35 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; let cfg = config.themes.v.catppuccin; -in { - options.themes.v.catppuccin = { enable = mkEnableOption "catppuccin"; }; - config = let - theme = "Catppuccin-Frappe-Pink-Dark"; - cursorTheme = config.home.pointerCursor.name; - in mkIf cfg.enable { +in +{ + options.themes.v.catppuccin = { + enable = mkEnableOption "catppuccin"; + }; + config = mkIf cfg.enable { home.pointerCursor = { name = "Bibata_Ghost"; size = 24; package = pkgs.bibata-cursors-translucent; }; - programs.kitty.theme = "Catppuccin-Frappe"; - programs.kitty.font.name = "DejaVuSansMono Nerd Font"; + programs.kitty = { + theme = "Catppuccin-Frappe"; + font.name = "DejaVuSansMono Nerd Font"; + }; + + # home.sessionVariables.GTK_USE_PORTAL = "1"; gtk = { enable = true; theme = { - name = theme; + name = "Catppuccin-Frappe-Standard-Pink-Dark"; package = pkgs.catppuccin-gtk.override { accents = [ "pink" ]; variant = "frappe"; @@ -32,8 +41,25 @@ in { package = pkgs.papirus-icon-theme.override { color = "violet"; }; }; cursorTheme = { - name = cursorTheme; - inherit (config.home.pointerCursor) package size; + inherit (config.home.pointerCursor) name package size; + }; + }; + + xdg.configFile = { + "gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets"; + "gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css"; + "gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css"; + }; + + qt = { + enable = true; + platformTheme = "qtct"; + style = { + name = "Catppuccin-Frappe-Pink"; + package = pkgs.catppuccin-kde.override { + flavour = [ "frappe" ]; + accents = [ "pink" ]; + }; }; }; @@ -43,4 +69,3 @@ in { }; }; } - diff --git a/common/hm-modules/nvim/default.nix b/common/hm-modules/nvim/default.nix index 51b01928..7ca8dedd 100644 --- a/common/hm-modules/nvim/default.nix +++ b/common/hm-modules/nvim/default.nix @@ -115,7 +115,7 @@ with lib; { mode = "n"; key = "q"; - action = ":bd"; # Delete buffer + action = ":bd"; # Delete buffer } { mode = "n"; @@ -187,13 +187,13 @@ with lib; nvim-nio ]; + extraConfigLua = ""; + colorschemes.catppuccin = { enable = true; flavour = "frappe"; }; - extraConfigLua = ""; - plugins = { image = { enable = true; @@ -220,7 +220,7 @@ with lib; } { name = "notes"; - path = "~/src/notes"; + path = "~/cloud/Notes"; } ]; completion = { @@ -278,10 +278,12 @@ with lib; surround.enable = true; fugitive.enable = true; gitgutter.enable = true; + lualine = { enable = true; theme = "catppuccin"; }; + telescope = { enable = true; defaults.preview.ls_short = true; @@ -354,7 +356,14 @@ with lib; lspkind.enable = true; lspsaga = { enable = true; - lightbulb.virtualText = false; + lightbulb.enable = false; + }; + nvim-lightbulb = { + enable = true; + settings = { + autocmd.enabled = true; + number.enabled = true; + }; }; vimtex.enable = true; floaterm.enable = true; diff --git a/common/hm-modules/nvim/lua/obsidian_picker.lua b/common/hm-modules/nvim/lua/obsidian_picker.lua index cf23df4b..94a38a81 100644 --- a/common/hm-modules/nvim/lua/obsidian_picker.lua +++ b/common/hm-modules/nvim/lua/obsidian_picker.lua @@ -10,6 +10,10 @@ for key, _ in pairs(obsidian_commands) do table.insert(results, string.sub(key, 9)) end +Local = 100 +local Local = 3 +print(Local) + local obsidian_picker = function(opts) opts = opts or require("telescope.themes").get_dropdown{} pickers.new(opts, { diff --git a/common/modules/gnome/hm.nix b/common/modules/gnome/hm.nix index 95e3cdf4..381e49f2 100644 --- a/common/modules/gnome/hm.nix +++ b/common/modules/gnome/hm.nix @@ -34,29 +34,29 @@ in { "application/x-extension-html" = "firefox.desktop"; # Images - "image/bmp" = "org.gnome.eog.desktop"; - "image/gif" = "org.gnome.eog.desktop"; - "image/jpg" = "org.gnome.eog.desktop"; - "image/pjpeg" = "org.gnome.eog.desktop"; - "image/png" = "org.gnome.eog.desktop"; - "image/tiff" = "org.gnome.eog.desktop"; - "image/webp" = "org.gnome.eog.desktop"; - "image/x-bmp" = "org.gnome.eog.desktop"; - "image/x-gray" = "org.gnome.eog.desktop"; - "image/x-icb" = "org.gnome.eog.desktop"; - "image/x-ico" = "org.gnome.eog.desktop"; - "image/x-png" = "org.gnome.eog.desktop"; - "image/x-portable-anymap" = "org.gnome.eog.desktop"; - "image/x-portable-bitmap" = "org.gnome.eog.desktop"; - "image/x-portable-graymap" = "org.gnome.eog.desktop"; - "image/x-portable-pixmap" = "org.gnome.eog.desktop"; - "image/x-xbitmap" = "org.gnome.eog.desktop"; - "image/x-xpixmap" = "org.gnome.eog.desktop"; - "image/x-pcx" = "org.gnome.eog.desktop"; - "image/svg+xml" = "org.gnome.eog.desktop"; - "image/svg+xml-compressed" = "org.gnome.eog.desktop"; - "image/vnd.wap.wbmp" = "org.gnome.eog.desktop"; - "image/x-icns" = "org.gnome.eog.desktop"; + "image/bmp" = "org.gnome.Loupe.desktop"; + "image/gif" = "org.gnome.Loupe.desktop"; + "image/jpg" = "org.gnome.Loupe.desktop"; + "image/pjpeg" = "org.gnome.Loupe.desktop"; + "image/png" = "org.gnome.Loupe.desktop"; + "image/tiff" = "org.gnome.Loupe.desktop"; + "image/webp" = "org.gnome.Loupe.desktop"; + "image/x-bmp" = "org.gnome.Loupe.desktop"; + "image/x-gray" = "org.gnome.Loupe.desktop"; + "image/x-icb" = "org.gnome.Loupe.desktop"; + "image/x-ico" = "org.gnome.Loupe.desktop"; + "image/x-png" = "org.gnome.Loupe.desktop"; + "image/x-portable-anymap" = "org.gnome.Loupe.desktop"; + "image/x-portable-bitmap" = "org.gnome.Loupe.desktop"; + "image/x-portable-graymap" = "org.gnome.Loupe.desktop"; + "image/x-portable-pixmap" = "org.gnome.Loupe.desktop"; + "image/x-xbitmap" = "org.gnome.Loupe.desktop"; + "image/x-xpixmap" = "org.gnome.Loupe.desktop"; + "image/x-pcx" = "org.gnome.Loupe.desktop"; + "image/svg+xml" = "org.gnome.Loupe.desktop"; + "image/svg+xml-compressed" = "org.gnome.Loupe.desktop"; + "image/vnd.wap.wbmp" = "org.gnome.Loupe.desktop"; + "image/x-icns" = "org.gnome.Loupe.desktop"; }; dconf.settings = { diff --git a/hosts/thalassa/aoife/default.nix b/hosts/thalassa/aoife/default.nix index f47b388f..63fe3d19 100644 --- a/hosts/thalassa/aoife/default.nix +++ b/hosts/thalassa/aoife/default.nix @@ -37,6 +37,7 @@ }; home-manager.users.vivian = import ./home; + programs.hyprland.enable = true; # Enable Ozone rendering for Chromium and Electron apps. environment.sessionVariables.NIXOS_OZONE_WL = "1"; diff --git a/hosts/thalassa/aoife/home/eww/eww.scss b/hosts/thalassa/aoife/home/eww/eww.scss new file mode 100644 index 00000000..efa2a502 --- /dev/null +++ b/hosts/thalassa/aoife/home/eww/eww.scss @@ -0,0 +1,55 @@ +* { + all: unset; //Unsets everything so you can style everything from scratch +} + +//Global Styles +.bar { + background-color: #3a3a3a; + color: #b0b4bc; + padding: 10px; +} + +// Styles on classes (see eww.yuck for more information) + +.sidestuff slider { + all: unset; + color: #ffd5cd; +} + +.metric scale trough highlight { + all: unset; + background-color: #D35D6E; + color: #000000; + border-radius: 10px; +} +.metric scale trough { + all: unset; + background-color: #4e4e4e; + border-radius: 50px; + min-height: 3px; + min-width: 50px; + margin-left: 10px; + margin-right: 20px; +} +.metric scale trough highlight { + all: unset; + background-color: #D35D6E; + color: #000000; + border-radius: 10px; +} +.metric scale trough { + all: unset; + background-color: #4e4e4e; + border-radius: 50px; + min-height: 3px; + min-width: 50px; + margin-left: 10px; + margin-right: 20px; +} +.label-ram { + font-size: large; +} +.workspaces button:hover { + color: #D35D6E; +} + diff --git a/hosts/thalassa/aoife/home/eww/eww.yuck b/hosts/thalassa/aoife/home/eww/eww.yuck new file mode 100644 index 00000000..a4a27d2c --- /dev/null +++ b/hosts/thalassa/aoife/home/eww/eww.yuck @@ -0,0 +1,75 @@ +(defwidget bar [] + (centerbox :orientation "h" + (workspaces) + (music) + (sidestuff))) + +(defwidget sidestuff [] + (box :class "sidestuff" :orientation "h" :space-evenly false :halign "end" + (metric :label "🔊" + :value volume + :onchange "amixer -D pulse sset Master {}%") + (metric :label "" + :value {EWW_RAM.used_mem_perc} + :onchange "") + (metric :label "💾" + :value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)} + :onchange "") + time)) + +(defwidget workspaces [] + (box :class "workspaces" + :orientation "h" + :space-evenly true + :halign "start" + :spacing 10 + (button :onclick "wmctrl -s 0" 1) + (button :onclick "wmctrl -s 1" 2) + (button :onclick "wmctrl -s 2" 3) + (button :onclick "wmctrl -s 3" 4) + (button :onclick "wmctrl -s 4" 5) + (button :onclick "wmctrl -s 5" 6) + (button :onclick "wmctrl -s 6" 7) + (button :onclick "wmctrl -s 7" 8) + (button :onclick "wmctrl -s 8" 9))) + +(defwidget music [] + (box :class "music" + :orientation "h" + :space-evenly false + :halign "center" + {music != "" ? "🎵${music}" : ""})) + + +(defwidget metric [label value onchange] + (box :orientation "h" + :class "metric" + :space-evenly false + (box :class "label" label) + (scale :min 0 + :max 101 + :active {onchange != ""} + :value value + :onchange onchange))) + + + +(deflisten music :initial "" + "playerctl --follow metadata --format '{{ artist }} - {{ title }}' || true") + +(defpoll volume :interval "1s" + "scripts/getvol") + +(defpoll time :interval "10s" + "date '+%H:%M %b %d, %Y'") + +(defwindow bar + :monitor 0 + :windowtype "dock" + :geometry (geometry :x "0%" + :y "0%" + :width "90%" + :height "10px" + :anchor "top center") + :reserve (struts :side "top" :distance "4%") + (bar)) diff --git a/hosts/thalassa/aoife/home/eww/scripts/getvol b/hosts/thalassa/aoife/home/eww/scripts/getvol new file mode 100755 index 00000000..4e4275d8 --- /dev/null +++ b/hosts/thalassa/aoife/home/eww/scripts/getvol @@ -0,0 +1,12 @@ +#!/bin/sh + +if command -v pamixer &>/dev/null; then + if [ true == $(pamixer --get-mute) ]; then + echo 0 + exit + else + pamixer --get-volume + fi +else + amixer -D pulse sget Master | awk -F '[^0-9]+' '/Left:/{print $3}' +fi diff --git a/hosts/thalassa/aoife/home/hyprland.conf b/hosts/thalassa/aoife/home/hyprland.conf index 91cc6011..e148387c 100644 --- a/hosts/thalassa/aoife/home/hyprland.conf +++ b/hosts/thalassa/aoife/home/hyprland.conf @@ -1,19 +1,6 @@ - -# ####################################################################################### -# AUTOGENERATED HYPR CONFIG. -# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, -# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. -# ####################################################################################### - -# -# Please note not all available settings / options are set here. -# For a full list, see the wiki -# - # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=,preferred,auto,auto - # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch @@ -28,24 +15,14 @@ $fileManager = dolphin $menu = wofi --show drun # Some default env vars. -env = XCURSOR_SIZE,24 -env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that +# env = XCURSOR_SIZE,24 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { - kb_layout = us - kb_variant = - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - - touchpad { - natural_scroll = no - } - - sensitivity = 0 # -1.0 to 1.0, 0 means no modification. + kb_options=caps:escape + touchpad { + natural_scroll= true + } } general { @@ -101,11 +78,6 @@ dwindle { preserve_split = yes # you probably want this } -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true -} - gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = true @@ -113,37 +85,32 @@ gestures { misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more - force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + force_default_wallpaper = 2 # Set to 0 or 1 to disable the anime mascot wallpapers } -# Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more -device { - name = epic-mouse-v1 - sensitivity = -0.5 -} - -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# Window Rules windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. - +windowrulev2 = workspace 1 silent, class:^(Element)$ +windowrulev2 = workspace 1 silent, class:^(discord)$ +windowrulev2 = workspace 2 silent, class:^(firefox)$ +windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$ # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, $terminal -bind = $mainMod, C, killactive, -bind = $mainMod, M, exit, +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, escape, exit, bind = $mainMod, E, exec, $fileManager bind = $mainMod, V, togglefloating, -bind = $mainMod, R, exec, $menu +bind = $mainMod, D, exec, $menu bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle +# Fullscreen +bind=SUPER,m,fullscreen + # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r @@ -185,3 +152,5 @@ bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow + +# vim: ft=hyprlang diff --git a/hosts/thalassa/aoife/home/hyprland.nix b/hosts/thalassa/aoife/home/hyprland.nix index 4f8dd38e..2e5f3370 100644 --- a/hosts/thalassa/aoife/home/hyprland.nix +++ b/hosts/thalassa/aoife/home/hyprland.nix @@ -1,7 +1,178 @@ { pkgs, ... }: { - home.file.".config/hypr/hyprland.conf".source = ./hyprland.conf; - home.packages = with pkgs; [ - wofi - ]; + # home.file.".config/hypr/hyprland.conf".source = ./hyprland.conf; + + programs.wofi = { + enable = true; + }; + + programs.eww = { + enable = true; + package = pkgs.eww-wayland; + configDir = ./eww; + }; + + + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = true; + extraConfig = '' +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & firefox + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +$fileManager = dolphin +$menu = wofi --show drun + +# Some default env vars. +# env = XCURSOR_SIZE,24 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_options=caps:escape + touchpad { + natural_scroll= true + } +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 20 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + } + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = true +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 2 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +# Window Rules +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. +windowrulev2 = workspace 1 silent, class:^(Element)$ +windowrulev2 = workspace 1 silent, class:^(discord)$ +windowrulev2 = workspace 2 silent, class:^(firefox)$ +windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$ + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, escape, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, D, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Fullscreen +bind=SUPER,m,fullscreen + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# vim: ft=hyprlang + ''; + }; }