feat: Swaynotificationcenter added and configured
This commit is contained in:
parent
2a5cb8806d
commit
fa39dcf50c
3 changed files with 508 additions and 6 deletions
|
@ -6,13 +6,9 @@
|
|||
imports = [
|
||||
./waybar.nix
|
||||
./swaylock.nix
|
||||
./notificationCenter.nix
|
||||
];
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 4000;
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.enable = true;
|
||||
programs.fuzzel.enable = true;
|
||||
|
||||
|
@ -168,6 +164,7 @@
|
|||
# Enables clipboard sync
|
||||
"${pkgs.wl-clipboard}/bin/wl-paste -p | ${pkgs.wl-clipboard}/bin/wl-copy"
|
||||
"${pkgs.wl-clipboard}/bin/wl-paste | ${pkgs.wl-clipboard}/bin/wl-copy -p"
|
||||
"${pkgs.swaynotificationcenter}/bin/swaync"
|
||||
];
|
||||
};
|
||||
|
||||
|
|
483
home-manager/modules/notificationCenter.nix
Normal file
483
home-manager/modules/notificationCenter.nix
Normal file
|
@ -0,0 +1,483 @@
|
|||
{ config, lib, pkgs, stylix, ... }:
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
|
||||
let
|
||||
|
||||
background = base00;
|
||||
altBackground = base01;
|
||||
selBackground = base03;
|
||||
text = base05;
|
||||
altText = base04;
|
||||
warning = base0A;
|
||||
urgent = base09;
|
||||
error = base08;
|
||||
focused = base0A;
|
||||
unfocused = base03;
|
||||
boarder = base0D;
|
||||
|
||||
fonts = {
|
||||
names = [ config.stylix.fonts.sansSerif.name ];
|
||||
size = config.stylix.fonts.sizes.desktop + 0.0;
|
||||
};
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
opacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100));
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
swaynotificationcenter
|
||||
];
|
||||
|
||||
home.file.".config/swaync/config.json".text = ''
|
||||
{
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"layer": "overlay",
|
||||
"control-center-layer": "top",
|
||||
"layer-shell": true,
|
||||
"cssPriority": "application",
|
||||
"control-center-margin-top": 0,
|
||||
"control-center-margin-bottom": 0,
|
||||
"control-center-margin-right": 0,
|
||||
"control-center-margin-left": 0,
|
||||
"notification-2fa-action": true,
|
||||
"notification-inline-replies": true,
|
||||
"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": true,
|
||||
"relative-timestamps": true,
|
||||
"control-center-width": 500,
|
||||
"control-center-height": 600,
|
||||
"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,
|
||||
|
||||
"notification-visibility": {
|
||||
"sonixd": {
|
||||
"state": "muted",
|
||||
"urgency": "Low",
|
||||
"app-name": "Sonixd"
|
||||
}
|
||||
},
|
||||
"widgets": [
|
||||
"inhibitors",
|
||||
"title",
|
||||
"volume",
|
||||
"buttons-grid",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"inhibitors": {
|
||||
"text": "Inhibitors",
|
||||
"button-text": "Clear All",
|
||||
"clear-all-button": true
|
||||
},
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": " Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"buttons-grid": {
|
||||
"actions": [
|
||||
{
|
||||
"label": "",
|
||||
"command": "${pkgs.swaylock-effects}/bin/swaylock"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "${pkgs.wlogout}/bin/wlogout"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "${pkgs.ponymix}/bin/ponymix toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "${pkgs.alacritty}/bin/alacritty -e ${pkgs.networkmanager}/bin/nmtui"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "${pkgs.blueman}/bin/blueman-manager"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
home.file.".config/swaync/style.css".text = ''
|
||||
@define-color ${colors.base00};
|
||||
|
||||
@define-color noti-border-color ${boarder};
|
||||
@define-color noti-bg ${background};
|
||||
@define-color noti-bg-darker ${background};
|
||||
@define-color noti-bg-hover ${selBackground};
|
||||
@define-color noti-bg-focus ${selBackground};
|
||||
@define-color noti-close-bg ${colors.base00};
|
||||
@define-color noti-close-bg-hover ${colors.base00};
|
||||
|
||||
@define-color text-color ${text};
|
||||
@define-color text-color-disabled ${text};
|
||||
|
||||
@define-color bg-selected ${selBackground};
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification-row:focus,
|
||||
.notification-row:hover {
|
||||
background: @noti-bg-focus;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 6px 12px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Uncomment to enable specific urgency colors
|
||||
.low {
|
||||
background: yellow;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.normal {
|
||||
background: {};
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
*/
|
||||
|
||||
.critical {
|
||||
background: ${urgent};
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all 0.15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
color: @text-color;
|
||||
transition: all 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* When alternative actions are visible */
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0px;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* add bottom border radius to eliminate clipping */
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
border-right: 1px solid @noti-border-color;
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color;
|
||||
}
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: white;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Window behind control center and on all other monitors */
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25);
|
||||
}
|
||||
|
||||
/*** Widgets ***/
|
||||
|
||||
/* Title widget */
|
||||
.widget-title {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-title > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-title > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* DND widget */
|
||||
.widget-dnd {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
.widget-dnd > switch:checked {
|
||||
background: @bg-selected;
|
||||
}
|
||||
.widget-dnd > switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Label widget */
|
||||
.widget-label {
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-label > label {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
.widget-mpris {
|
||||
/* The parent to all players */
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
.widget-buttons-grid {
|
||||
font-size: x-large;
|
||||
padding: 5px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
border-radius: 5px;
|
||||
background-color: @noti-bg;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||
background: @noti-bg;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* style given to the active toggle button */
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button.toggle:checked {
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
}
|
||||
|
||||
/* Menubar widget */
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* .AnyName { Name defined in config after #
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.AnyName>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.AnyName>button:hover {
|
||||
background-color: @noti-bg-hover;
|
||||
} */
|
||||
|
||||
.topbar-buttons>button { /* Name defined in config after # */
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg-alt;
|
||||
padding: 4px 8px 8px 8px;
|
||||
margin: 0px 8px 8px 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Backlight widget */
|
||||
.widget-backlight {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Title widget */
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-inhibitors > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-inhibitors > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
'';
|
||||
|
||||
}
|
|
@ -33,7 +33,7 @@ in {
|
|||
margin = "2px 2px 0px 2px";
|
||||
modules-left = ["hyprland/workspaces"];
|
||||
modules-center = ["hyprland/window" "gamemode"];
|
||||
modules-right = ["network" "cpu" "temperature" "memory" "disk" "pulseaudio" "battery" "tray" "clock" "privacy"];
|
||||
modules-right = ["network" "cpu" "temperature" "memory" "disk" "pulseaudio" "battery" "tray" "clock" "privacy" "custom/notification" ];
|
||||
|
||||
"hyprland/window" = {
|
||||
format = "<span color='${primaryColor}'>{}</span>";
|
||||
|
@ -166,6 +166,7 @@ in {
|
|||
"tooltip" = true;
|
||||
"tooltip-format" = "Games running: {count}";
|
||||
};
|
||||
|
||||
"privacy" = {
|
||||
"icon-size" = 20;
|
||||
"icon-spacing" = 4;
|
||||
|
@ -183,6 +184,27 @@ in {
|
|||
}
|
||||
];
|
||||
};
|
||||
|
||||
"custom/notification" = {
|
||||
"tooltip" = false;
|
||||
"format" = "{icon} ";
|
||||
"format-icons" = {
|
||||
"notification" = "<span foreground='red'><sup></sup></span>";
|
||||
"none" = "";
|
||||
"dnd-notification" = "<span foreground='red'><sup></sup></span>";
|
||||
"dnd-none" = "";
|
||||
"inhibited-notification" = "<span foreground='red'><sup></sup></span>";
|
||||
"inhibited-none" = "";
|
||||
"dnd-inhibited-notification" = "<span foreground='red'><sup></sup></span>";
|
||||
"dnd-inhibited-none" = "";
|
||||
};
|
||||
"return-type" = "json";
|
||||
"exec-if" = "${pkgs.swaynotificationcenter}/bin/swaync-client";
|
||||
"exec" = "${pkgs.swaynotificationcenter}/bin/swaync-client -swb";
|
||||
"on-click" = "${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
"on-click-right" = "${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw";
|
||||
"escape" = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
style = ''
|
||||
|
|
Loading…
Add table
Reference in a new issue