diff --git a/home/blueman.nix b/home/blueman.nix new file mode 100644 index 0000000..10ce408 --- /dev/null +++ b/home/blueman.nix @@ -0,0 +1,3 @@ +{ + services.blueman-applet.enable = true; +} diff --git a/home/default.nix b/home/default.nix index e581aaa..7a058e0 100644 --- a/home/default.nix +++ b/home/default.nix @@ -2,6 +2,7 @@ home-manager.sharedModules = [ ./bash.nix ./bat.nix + ./blueman.nix ./dunst.nix ./git.nix ./gtk.nix diff --git a/home/gtk.nix b/home/gtk.nix index f8e4879..c2b2f25 100644 --- a/home/gtk.nix +++ b/home/gtk.nix @@ -11,7 +11,7 @@ gtk-xft-hinting = 1; gtk-xft-hintstyle = "hintfull"; gtk-xft-rgba = "rgb"; - gtk-recent-files-enable = false; +# gtk-recent-files-enable = false; }; gtk4.extraConfig = { Settings = '' diff --git a/home/hyprland.nix b/home/hyprland.nix index f99239d..32b7de6 100644 --- a/home/hyprland.nix +++ b/home/hyprland.nix @@ -50,7 +50,7 @@ in { } # animations { -# enabled = true +# enabled = 1 # bezier = myBezier, 0.05, 0.9, 0.1, 1.05 # animation = windows, 1, 7, myBezier # animation = windowsOut, 1, 7, default, popin 80% @@ -78,6 +78,9 @@ in { exec-once = waybar exec-once = hyprpaper + exec-once = dunst + exec-once = blueman-applet + exec-once = nm-applet --indicator $SUPER = ${modifier} $SUPER_SHIFT = ${modifier}_SHIFT @@ -86,12 +89,60 @@ in { bind = $SUPER, Q, killactive bind = $SUPER, T, exec, kitty bind = $SUPER, B, exec, librewolf + bind = $SUPER, L, exec, swaylock bind = $SUPER, F, fullscreen,1 bind = $SUPER_SHIFT, F, fullscreen,0 bind = $SUPER_SHIFT, H, splitratio, -0.05 bind = $SUPER_SHIFT, L, splitratio, +0.05 -# bind = $SUPER, V, togglesplit, - + bind = $SUPER, V, togglesplit, + bind = $SUPER, 1, exec, hyprland-relative-workspace b + bind = $SUPER, 2, exec, hyprland-relative-workspace f + bind = $SUPER_SHIFT, 1, exec, hyprland-relative-workspace b --with-window + bind = $SUPER_SHIFT, 2, exec, hyprland-relative-workspace f --with-window + + bind = $SUPER, left, movefocus, l + bind = $SUPER, right, movefocus, r + bind = $SUPER, up, movefocus, u + bind = $SUPER, down, movefocus, d + bind = $SUPER_SHIFT, left, movewindow, l + bind = $SUPER_SHIFT, right, movewindow, r + bind = $SUPER_SHIFT, up, movewindow, u + bind = $SUPER_SHIFT, down, movewindow, d + + bind = ALT, left, resizeactive, -40 0 + bind = ALT, down, resizeactive, 0 40 + bind = ALT, up, resizeactive, 0 -40 + bind = ALT, right, resizeactive, 40 0 + + bind = ALT, 1, workspace, 1 + bind = ALT, 2, workspace, 2 + bind = ALT, 3, workspace, 3 + bind = ALT, 4, workspace, 4 + bind = ALT, 5, workspace, 5 + bind = ALT, 6, workspace, 6 + bind = ALT, 7, workspace, 7 + bind = ALT, 8, workspace, 8 + bind = ALT, 9, workspace, 9 + bind = ALT, 0, workspace, 0 + + bind = ALTSHIFT,1,movetoworkspace,1 + bind = ALTSHIFT,2,movetoworkspace,2 + bind = ALTSHIFT,3,movetoworkspace,3 + bind = ALTSHIFT,4,movetoworkspace,4 + bind = ALTSHIFT,5,movetoworkspace,5 + bind = ALTSHIFT,6,movetoworkspace,6 + bind = ALTSHIFT,7,movetoworkspace,7 + bind = ALTSHIFT,8,movetoworkspace,8 + bind = ALTSHIFT,9,movetoworkspace,9 + bind = ALTSHIFT,0,movetoworkspace,0 + bind = ALTSHIFT,left,movetoworkspace,-1 + bind = ALTSHIFT,right,movetoworkspace,+1 + + bind = CTRL,right,resizeactive,20 0 + bind = CTRL,left,resizeactive,-20 0 + bind = CTRL,up,resizeactive,0 -20 + bind = CTRL,down,resizeactive,0 20 + # Move/resize windows with super + LMB/RMB and dragging bindm = $SUPER, mouse:272, movewindow bindm = $SUPER, mouse:273, resizewindow diff --git a/home/swaylock.nix b/home/swaylock.nix index 773e58c..78fe95d 100644 --- a/home/swaylock.nix +++ b/home/swaylock.nix @@ -1,21 +1,11 @@ -{ pkgs, ... }: - { - programs.swaylock = { - package = pkgs."swaylock-effects"; - - settings = { - show-keyboard-layout = true; - daemonize = true; - effect-blur = "20x2"; - clock = true; - indicator = true; - font-size = 25; - indicator-radius = 85; - indicator-thickness = 16; - screenshots = true; - fade-in = 1; - }; - }; + xdg.configFile."swaylog/config".text = '' + screenshots + clock + indicator + indicator-radius 100 + effect-blur 7x5 + fade-in 0.2 + ''; } diff --git a/home/waybar.nix b/home/waybar.nix index 0901774..a708541 100644 --- a/home/waybar.nix +++ b/home/waybar.nix @@ -4,212 +4,333 @@ { "layer": "top", "position": "top", - "height": 20, + "mod": "dock", + "height": 32, "exclusive": true, "passthrough": false, "gtk-layer-shell": true, - "modules-left": [ - "temperature", - "cpu", - "memory" - ], - "modules-center": ["hyprland/window"], - "modules-right": [ - "battery", - "clock" - ], + + "modules-left": ["custom/padd","custom/l_end","custom/power","custom/r_end","custom/l_end","wlr/taskbar","custom/r_end","","custom/padd"], + "modules-center": ["custom/padd","custom/l_end","clock","custom/r_end","custom/padd"], + "modules-right": ["custom/padd","custom/l_end","tray","custom/r_end","custom/l_end","network","bluetooth","pulseaudio","custom/r_end","custom/padd"], - "hyprland/window": { - "format": "{}" + + "custom/power": { + "format": "{}", + "exec": "echo ; echo  logout", + "on-click": "wlogout -b 2 -c 0 -r 0 -L 930 -R 930 -T 300 -B 300 --protocol layer-shell", + "interval" : 86400, // once every day + "tooltip": true }, + + "wlr/taskbar": { + "format": "{icon}", + "icon-size": 18, + "icon-theme": "Tela-circle-dracula", + "spacing": 0, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "Alacritty" + ], + "app_ids-mapping": { + "firefoxdeveloperedition": "firefox-developer-edition" + } + }, + "clock": { - "format": "{:%H:%M}", - "format-alt": "{:%b %d %Y}", - "tooltip-format": "{:%Y %B}\n{calendar}", + "format": "{: %I:%M %p 󰃭 %a %d}", + "format-alt": "{:󰥔 %H:%M  %b %Y}", + "tooltip-format": "{calendar}" }, - "cpu": { - "interval": 10, - "format": " {}%", - "max-length": 10, - "on-click": "", + + "tray": { + "icon-size": 18, + "spacing": 5 }, - "memory": { - "interval": 30, - "format": " {}%", - "format-alt":" {used:0.1f}GB", - "max-length": 10, + + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "󰤨 {essid}", + "format-ethernet": "󱘖 Wired", + "tooltip-format": "󱘖 {ipaddr}  {bandwidthUpBytes}  {bandwidthDownBytes}", + "format-linked": "󱘖 {ifname} (No IP)", + "format-disconnected": " Disconnected", + "format-alt": "󰤨 {signalStrength}%", + "interval": 5 }, - "temperature": { - "interval": 10, - "format": " {temperatureC}°C", - "format-alt":"temprature", - "max-length": 10, + + "bluetooth": { + "format": "", + "format-disabled": "", // an empty format will hide the module + "format-connected": " {num_connections}", + "tooltip-format": " {device_alias}", + "tooltip-format-connected": "{device_enumerate}", + "tooltip-format-enumerate-connected": " {device_alias}" }, - "battery": { - "bat": "BAT0", - "adapter": "ADP0", - "interval": 60, - "states": { - "warning": 30, - "critical": 15 - }, - "max-length": 20, - "format": "{icon}", - "format-warning": "{icon}", - "format-critical": "{icon}", - "format-charging": "", - "format-plugged": "󰚥", - "format-notcharging": "󰚥", - "format-alt": "{icon} {time}", - "format-full": "󰂄", - "format-icons": ["󱊡", "󱊢", "󱊣"] + + "pulseaudio": { + "format": "{icon} {volume}", + "format-muted": "婢", + "on-click": "pavucontrol -t 3", + "on-click-middle": "~/.config/hypr/scripts/volumecontrol.sh -o m", + "on-scroll-up": "~/.config/hypr/scripts/volumecontrol.sh -o i", + "on-scroll-down": "~/.config/hypr/scripts/volumecontrol.sh -o d", + "tooltip-format": "{icon} {desc} // {volume}%", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + } }, + +// "pulseaudio#microphone": { +// "format": "{format_source}", +// "format-source": "", +// "format-source-muted": "", +// "on-click": "pavucontrol -t 4", +// "on-click-middle": "~/.config/hypr/scripts/volumecontrol.sh -i m", +// "on-scroll-up": "~/.config/hypr/scripts/volumecontrol.sh -i i", +// "on-scroll-down": "~/.config/hypr/scripts/volumecontrol.sh -i d", +// "tooltip-format": "{format_source} {source_desc} // {source_volume}%", +// "scroll-step": 5 +// }, + + +// modules for padding // + + "custom/l_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/r_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/padd": { + "format": " ", + "interval" : "once", + "tooltip": false + } + } ''; xdg.configFile."waybar/style.css".text = /* css */ '' * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: Material Design Icons, JetBrainsMono Nerd Font, Iosevka Nerd Font; - font-size: 12px; - border: none; - border-radius: 0; - min-height: 0; + border: none; + border-radius: 0px; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + font-size: 11px; + min-height: 10px; } +@import "themes/Catppuccin-Mocha.css"; + window#waybar { - background-color: rgba(26, 27, 38, 0.5); - color: #ffffff; - transition-property: background-color; - transition-duration: 0.5s; -} - -window#waybar.hidden { - opacity: 0.1; -} - -#window { - color: #64727d; -} - -#clock, -#temperature, -#mpris, -#cpu, -#memory { - color: #e5e5e5; - border-radius: 6px; - padding: 2px 10px; - background-color: #252733; - border-radius: 8px; - font-size: 16px; - - margin-left: 4px; - margin-right: 4px; - - margin-top: 8.5px; - margin-bottom: 8.5px; -} -#temperature{ - color: #7a95c9; -} -#cpu { - color: #fb958b; -} - -#memory { - color: #a1c999; -} - -#battery { - background-color: #252733; - padding: 0em 2em; - - font-size: 14px; - - padding-left: 7.5px; - padding-right: 7.5px; - - padding-top: 3px; - padding-bottom: 3px; - - margin-top: 7px; - margin-bottom: 7px; - - font-size: 20px; -} - -#battery { - color: #8fbcbb; - border-radius: 0px 8px 8px 0px; - padding-right: 2px; - font-size: 16px; -} - -#battery.critical, -#battery.warning, -#battery.full, -#battery.plugged { - color: #8fbcbb; - padding-left: 6px; - padding-right: 12px; - font-size: 16px; -} - -#battery.charging { - font-size: 18px; - padding-right: 13px; - padding-left: 4px; -} - -#battery.full, -#battery.plugged { - font-size: 22.5px; - padding-right: 10px; -} - -@keyframes blink { - to { - background-color: rgba(30, 34, 42, 0.5); - color: #abb2bf; - } -} - -#battery.warning { - color: #ecd3a0; -} - -#battery.critical:not(.charging) { - color: #fb958b; -} - -#clock { - color: #8a909e; - font-weight: bold; - margin-top: 7px; - margin-bottom: 7px; + background: @bar-bg; } tooltip { - font-family: Iosevka Nerd Font; - border-radius: 15px; - padding: 15px; - background-color: #1f232b; + background: @tool-bg; + color: @tool-color; + border-radius: 21px; + border-width: 1px; + border-style: solid; + border-color: @tool-border; } -tooltip label { - font-family: Iosevka Nerd Font; - padding: 5px; +#workspaces button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: 9px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 3px; + padding-right: 3px; + color: @wb-color; + animation: gradient_f 20s ease-in infinite; + transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682); } -label:focus { - background-color: #1f232b; +#workspaces button.active { + background: @wb-act-bg; + color: @wb-act-color; + margin-left: 3px; + padding-left: 12px; + padding-right: 12px; + margin-right: 3px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); } -#custom-wallpaper { - color: #dbd9d8; - padding-right: 5; - padding-left: 0; +#workspaces button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-color; + padding-left: 3px; + padding-right: 3px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); } +#taskbar button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: 9px; + margin-top: 3px; + margin-bottom: 3px; + padding-left: 3px; + padding-right: 3px; + color: @wb-color; + animation: gradient_f 20s ease-in infinite; + transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button.active { + background: @wb-act-bg; + color: @wb-act-color; + margin-left: 3px; + padding-left: 12px; + padding-right: 12px; + margin-right: 3px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-color; + padding-left: 3px; + padding-right: 3px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#cpu, +#memory, +#battery, +#clock, +#workspaces, +#window, +#taskbar, +#network, +#bluetooth, +#pulseaudio, +#mpris, +#custom-updates, +#custom-wallchange, +#custom-mode, +#custom-cliphist, +#custom-power, +#custom-wbar, +#custom-l_end, +#custom-r_end, +#custom-sl_end, +#custom-sr_end, +#custom-rl_end, +#custom-rr_end, +#tray { + color: @main-color; + background: @main-bg; + opacity: 1; + margin: 4px 0px 4px 0px; + padding-left: 4px; + padding-right: 4px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#custom-r_end { + border-radius: 0px 21px 21px 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-l_end { + border-radius: 21px 0px 0px 21px; + margin-left: 9px; + padding-left: 3px; +} + +#custom-sr_end { + border-radius: 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-sl_end { + border-radius: 0px; + margin-left: 9px; + padding-left: 3px; +} + +#custom-rr_end { + border-radius: 0px 7px 7px 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-rl_end { + border-radius: 7px 0px 0px 7px; + margin-left: 9px; + padding-left: 3px; +} + ''; + xdg.configFile."waybar/themes/Catppuccin-Mocha.css".text = '' +@define-color bar-bg rgba(0, 0, 0, 0); + +@define-color main-color #cdd6f4; +@define-color main-bg #11111b; + +@define-color tool-bg #1e1e2e; +@define-color tool-color #cdd6f4; +@define-color tool-border #11111b; + +@define-color wb-color #cdd6f4; + +@define-color wb-act-bg #a6adc8; +@define-color wb-act-color #313244; + +@define-color wb-hvr-bg #f5c2e7; +@define-color wb-hvr-color #313244; ''; } diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix new file mode 100644 index 0000000..3dac4a1 --- /dev/null +++ b/modules/bluetooth.nix @@ -0,0 +1,3 @@ +{ + hardware.bluetooth.enable = true; +} diff --git a/modules/default.nix b/modules/default.nix index 7c95bc1..99fa0c1 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./bluetooth.nix ./boot.nix ./fonts.nix ./greetd.nix diff --git a/modules/hyprland.nix b/modules/hyprland.nix index 61606db..add03c3 100644 --- a/modules/hyprland.nix +++ b/modules/hyprland.nix @@ -14,12 +14,14 @@ # xdg-desktop-portal-gtk rofi-wayland # launcher -# wl-clipboard # wayland clipboard support -# swaylock-effects # screenlocker -# swayidle # idle daemon (screen time out) + wl-clipboard # wayland clipboard support + swaylock-effects # screenlocker + swayidle # idle daemon (screen time out) hyprpaper # Wallpaper daemon ]; + security.pam.services.swaylock = { }; + services.xserver = { enable = true; excludePackages = [ pkgs.xterm ]; diff --git a/modules/packages.nix b/modules/packages.nix index a84e0b4..970ec82 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -4,9 +4,12 @@ git jq neofetch + networkmanagerapplet + python3 ripgrep # rg in home/hyprland.nix tree wget + wlogout wl-clipboard ]; }