diff --git a/users/youwen/linux/home.nix b/users/youwen/linux/home.nix
index 6ca7571..7a4a61e 100755
--- a/users/youwen/linux/home.nix
+++ b/users/youwen/linux/home.nix
@@ -52,15 +52,15 @@
services.easyeffects.package = pkgs.easyeffects;
# Notification daemon
- services.dunst = {
- enable = true;
- # catppuccin.enable = true;
- iconTheme = {
- name = "Papirus-Dark";
- package = pkgs.papirus-icon-theme;
- size = "32x32";
- };
- };
+ # services.dunst = {
+ # enable = true;
+ # # catppuccin.enable = true;
+ # iconTheme = {
+ # name = "Papirus-Dark";
+ # package = pkgs.papirus-icon-theme;
+ # size = "32x32";
+ # };
+ # };
# Currently non-functional
programs.wlogout.enable = true;
diff --git a/users/youwen/linux/hyprland/common.nix b/users/youwen/linux/hyprland/common.nix
index 864f51b..73a0a76 100644
--- a/users/youwen/linux/hyprland/common.nix
+++ b/users/youwen/linux/hyprland/common.nix
@@ -38,6 +38,7 @@
"$mod, M, exec, ${pkgs.thunderbird}/bin/thunderbird"
# "$mod, B, exec, ${pkgs.waypaper}/bin/waypaper"
"$mod, A, exec, ${pkgs.neovide}/bin/neovide"
+ "$mod, N, exec, sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
# Window actions
"$mod, Q, killactive"
@@ -239,6 +240,7 @@
"blur,notifications"
"ignorezero,notifications"
"blur,swaync-notification-window"
+ "animation,swaync-notification-window,popin"
"ignorezero,swaync-notification-window"
"blur,swaync-control-center"
"ignorezero,swaync-control-center"
diff --git a/users/youwen/linux/waybar/laptop/default.nix b/users/youwen/linux/waybar/laptop/default.nix
index 33661b2..0cfa664 100644
--- a/users/youwen/linux/waybar/laptop/default.nix
+++ b/users/youwen/linux/waybar/laptop/default.nix
@@ -1,5 +1,6 @@
{ pkgs, ... }:
{
+ imports = [ ./swaync.nix ];
programs.waybar = {
enable = true;
style = ./style.css;
@@ -40,6 +41,7 @@
"cpu"
"temperature"
"clock"
+ "custom/notification"
];
idle_inhibitor = {
@@ -132,6 +134,22 @@
format = "{:%H:%M:%S}";
};
+ "custom/notification" = {
+ tooltip = false;
+ format = "{icon}";
+ format-icons = {
+ notification = "⬤";
+ none = " ";
+ dnd-notification = "⬤";
+ dnd-none = " ";
+ };
+ return-type = "json";
+ exec = "${pkgs.swaynotificationcenter}/bin/swaync-client -swb";
+ on-click = "sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
+ on-click-right = "sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw";
+ escape = true;
+ };
+
"hyprland/workspaces" = {
show-special = true;
persistent-workspaces = {
@@ -157,6 +175,7 @@
special = "";
};
};
+
"hyprland/window" = {
icon = true;
icon-size = 20;
diff --git a/users/youwen/linux/waybar/laptop/swaync.nix b/users/youwen/linux/waybar/laptop/swaync.nix
new file mode 100644
index 0000000..ea7dcfb
--- /dev/null
+++ b/users/youwen/linux/waybar/laptop/swaync.nix
@@ -0,0 +1,309 @@
+{ config, ... }:
+{
+ services.swaync.enable = true;
+ services.swaync.settings = {
+ positionX = "right";
+ positionY = "top";
+ control-center-margin-top = 10;
+ control-center-margin-bottom = 10;
+ control-center-margin-right = 10;
+ control-center-margin-left = 10;
+ notification-icon-size = 64;
+ notification-body-image-height = 100;
+ notification-body-image-width = 200;
+ timeout = 10;
+ timeout-low = 5;
+ timeout-critical = 0;
+ fit-to-screen = false;
+ control-center-width = 500;
+ control-center-height = 1025;
+ notification-window-width = 500;
+ keyboard-shortcuts = true;
+ image-visibility = "when-available";
+ transition-time = 200;
+ hide-on-clear = false;
+ hide-on-action = true;
+ script-fail-notify = true;
+ widgets = [
+ "title"
+ "mpris"
+ "volume"
+ "backlight"
+ "dnd"
+ "notifications"
+ ];
+ widget-config = {
+ title = {
+ text = "Mission Control";
+ clear-all-button = "true";
+ button-text = " All Systems Go";
+ };
+ dnd = {
+ text = "Do Not Disturb";
+ };
+ label = {
+ max-lines = 1;
+ text = "Mission Control";
+ };
+ mpris = {
+ image-size = 96;
+ image-radius = 7;
+ };
+ volume = {
+ label = "";
+ };
+ backlight = {
+ label = "";
+ };
+ };
+ };
+
+ home.file.".config/swaync/style.css".text = ''
+ * {
+ font-family: ${config.stylix.fonts.monospace.name};
+ }
+ .control-center .notification-row:focus,
+ .control-center .notification-row:hover {
+ background: #${config.lib.stylix.colors.base00}
+ }
+ .notification-row {
+ outline: none;
+ margin: 10px;
+ padding: 0;
+ }
+ .notification {
+ background: transparent;
+ padding: 0;
+ margin: 0px;
+ }
+ .notification-content {
+ background: #${config.lib.stylix.colors.base00};
+ padding: 10px;
+ border-radius: 5px;
+ border: 2px solid #${config.lib.stylix.colors.base05};
+ margin: 0;
+ }
+ .notification-default-action {
+ margin: 0;
+ padding: 0;
+ border-radius: 5px;
+ }
+ .close-button {
+ background: #${config.lib.stylix.colors.base08};
+ color: #${config.lib.stylix.colors.base00};
+ text-shadow: none;
+ padding: 0;
+ border-radius: 5px;
+ margin-top: 5px;
+ margin-right: 5px;
+ }
+ .close-button:hover {
+ box-shadow: none;
+ background: #${config.lib.stylix.colors.base0D};
+ transition: all .15s ease-in-out;
+ border: none
+ }
+ .notification-action {
+ border: 2px solid #${config.lib.stylix.colors.base0D};
+ border-top: none;
+ border-radius: 5px;
+ }
+ .notification-default-action:hover,
+ .notification-action:hover {
+ color: #${config.lib.stylix.colors.base0B};
+ background: #${config.lib.stylix.colors.base0B}
+ }
+ .notification-default-action {
+ border-radius: 5px;
+ margin: 0px;
+ }
+ .notification-default-action:not(:only-child) {
+ border-bottom-left-radius: 7px;
+ border-bottom-right-radius: 7px
+ }
+ .notification-action:first-child {
+ border-bottom-left-radius: 10px;
+ background: #${config.lib.stylix.colors.base00}
+ }
+ .notification-action:last-child {
+ border-bottom-right-radius: 10px;
+ background: #${config.lib.stylix.colors.base00}
+ }
+ .inline-reply {
+ margin-top: 8px
+ }
+ .inline-reply-entry {
+ background: #${config.lib.stylix.colors.base00};
+ color: #${config.lib.stylix.colors.base05};
+ caret-color: #${config.lib.stylix.colors.base05};
+ border: 1px solid #${config.lib.stylix.colors.base09};
+ border-radius: 5px
+ }
+ .inline-reply-button {
+ margin-left: 4px;
+ background: #${config.lib.stylix.colors.base00};
+ border: 1px solid #${config.lib.stylix.colors.base09};
+ border-radius: 5px;
+ color: #${config.lib.stylix.colors.base05}
+ }
+ .inline-reply-button:disabled {
+ background: initial;
+ color: #${config.lib.stylix.colors.base03};
+ border: 1px solid transparent
+ }
+ .inline-reply-button:hover {
+ background: #${config.lib.stylix.colors.base00}
+ }
+ .body-image {
+ margin-top: 6px;
+ background-color: #${config.lib.stylix.colors.base05};
+ border-radius: 5px
+ }
+ .summary {
+ font-size: 16px;
+ font-weight: 700;
+ background: transparent;
+ color: rgba(158, 206, 106, 1);
+ text-shadow: none
+ }
+ .time {
+ font-size: 16px;
+ font-weight: 700;
+ background: transparent;
+ color: #${config.lib.stylix.colors.base05};
+ text-shadow: none;
+ margin-right: 18px
+ }
+ .body {
+ font-size: 15px;
+ font-weight: 400;
+ background: transparent;
+ color: #${config.lib.stylix.colors.base05};
+ text-shadow: none
+ }
+ .control-center {
+ background: #${config.lib.stylix.colors.base00};
+ border: 2px solid #${config.lib.stylix.colors.base0C};
+ border-radius: 5px;
+ opacity: 0.75;
+ }
+ .control-center-list {
+ background: transparent
+ }
+ .control-center-list-placeholder {
+ opacity: .5
+ }
+ .floating-notifications {
+ background: transparent
+ }
+ .blank-window {
+ background: alpha(black, 0)
+ }
+ .widget-title {
+ color: #${config.lib.stylix.colors.base0B};
+ background: #${config.lib.stylix.colors.base00};
+ padding: 5px 10px;
+ margin: 10px 10px 5px 10px;
+ font-size: 1.5rem;
+ border-radius: 5px;
+ }
+ .widget-title>button {
+ font-size: 1rem;
+ color: #${config.lib.stylix.colors.base05};
+ text-shadow: none;
+ background: #${config.lib.stylix.colors.base00};
+ box-shadow: none;
+ border-radius: 5px;
+ }
+ .widget-title>button:hover {
+ background: #${config.lib.stylix.colors.base08};
+ color: #${config.lib.stylix.colors.base00};
+ }
+ .widget-dnd {
+ background: #${config.lib.stylix.colors.base00};
+ padding: 5px 10px;
+ margin: 10px 10px 5px 10px;
+ border-radius: 5px;
+ font-size: large;
+ color: #${config.lib.stylix.colors.base0B};
+ }
+ .widget-dnd>switch {
+ border-radius: 5px;
+ /* border: 1px solid #${config.lib.stylix.colors.base0B}; */
+ background: #${config.lib.stylix.colors.base0B};
+ }
+ .widget-dnd>switch:checked {
+ background: #${config.lib.stylix.colors.base08};
+ border: 1px solid #${config.lib.stylix.colors.base08};
+ }
+ .widget-dnd>switch slider {
+ background: #${config.lib.stylix.colors.base00};
+ border-radius: 5px
+ }
+ .widget-dnd>switch:checked slider {
+ background: #${config.lib.stylix.colors.base00};
+ border-radius: 5px
+ }
+ .widget-label {
+ margin: 10px 10px 5px 10px;
+ }
+ .widget-label>label {
+ font-size: 1rem;
+ color: #${config.lib.stylix.colors.base05};
+ }
+ .widget-mpris {
+ color: #${config.lib.stylix.colors.base05};
+ padding: 5px 10px;
+ margin: 10px 10px 5px 10px;
+ border-radius: 5px;
+ }
+ .widget-mpris > box > button {
+ border-radius: 5px;
+ }
+ .widget-mpris-player {
+ padding: 5px 10px;
+ margin: 10px
+ }
+ .widget-mpris-title {
+ font-weight: 700;
+ font-size: 1.25rem
+ }
+ .widget-mpris-subtitle {
+ font-size: 1.1rem
+ }
+ .widget-menubar>box>.menu-button-bar>button {
+ border: none;
+ background: transparent
+ }
+ .topbar-buttons>button {
+ border: none;
+ background: transparent
+ }
+ .widget-volume {
+ background: #${config.lib.stylix.colors.base01};
+ padding: 5px;
+ margin: 10px 10px 5px 10px;
+ border-radius: 5px;
+ font-size: x-large;
+ color: #${config.lib.stylix.colors.base05};
+ }
+ .widget-volume>box>button {
+ background: #${config.lib.stylix.colors.base0B};
+ border: none
+ }
+ .per-app-volume {
+ background-color: #${config.lib.stylix.colors.base00};
+ padding: 4px 8px 8px;
+ margin: 0 8px 8px;
+ border-radius: 5px;
+ }
+ .widget-backlight {
+ background: #${config.lib.stylix.colors.base01};
+ padding: 5px;
+ margin: 10px 10px 5px 10px;
+ border-radius: 5px;
+ font-size: x-large;
+ color: #${config.lib.stylix.colors.base05}
+ }
+ '';
+}