diff --git a/modules/home/swaync/config.nix b/modules/home/swaync/config.nix new file mode 100644 index 0000000..95e1f97 --- /dev/null +++ b/modules/home/swaync/config.nix @@ -0,0 +1,112 @@ +{...}: { + xdg.enable = true; + xdg.configFile = { + "swaync/themes" = { + source = ./themes; + }; + "swaync/icons" = { + source = ./icons; + recursive = true; + }; + }; + programs.swaync.style = '' + @import 'themes/nova-dark/notifications.css'; + @import 'themes/nova-dark/central_control.css'; + ''; + programs.swaync.settings = { + positionX = "right"; + positionY = "top"; + cssPriority = "user"; + + control-center-width = 380; + control-center-height = 860; + control-center-margin-top = 2; + control-center-margin-bottom = 2; + control-center-margin-right = 1; + control-center-margin-left = 0; + + notification-window-width = 400; + notification-icon-size = 48; + notification-body-image-height = 160; + notification-body-image-width = 200; + + timeout = 4; + timeout-low = 2; + timeout-critical = 6; + + fit-to-screen = false; + keyboard-shortcuts = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = false; + hide-on-action = false; + script-fail-notify = true; + scripts = { + example-script = { + exec = "echo 'Do something...'"; + urgency = "Normal"; + }; + }; + notification-visibility = { + example-name = { + state = "muted"; + urgency = "Low"; + app-name = "Spotify"; + }; + }; + widgets = [ + "label" + "buttons-grid" + "mpris" + "title" + "dnd" + "notifications" + ]; + widget-config = { + title = { + text = "Notifications"; + clear-all-button = true; + button-text = " 󰎟 "; + }; + dnd = { + text = "Do not disturb"; + }; + label = { + max-lines = 1; + text = " "; + }; + mpris = { + image-size = 96; + image-radius = 12; + }; + volume = { + label = "󰕾"; + show-per-app = true; + }; + buttons-grid = { + actions = [ + { + label = " "; + command = "amixer set Master toggle"; + } + { + label = ""; + command = "amixer set Capture toggle"; + } + { + label = " "; + command = "nm-connection-editor"; + } + { + label = "󰂯"; + command = "blueman-manager"; + } + { + label = "󰏘"; + command = "nwg-look"; + } + ]; + }; + }; + }; +} diff --git a/modules/home/swaync/icons/bolt.png b/modules/home/swaync/icons/bolt.png new file mode 100644 index 0000000..e0ce40d Binary files /dev/null and b/modules/home/swaync/icons/bolt.png differ diff --git a/modules/home/swaync/icons/brightness-100.png b/modules/home/swaync/icons/brightness-100.png new file mode 100644 index 0000000..e98b793 Binary files /dev/null and b/modules/home/swaync/icons/brightness-100.png differ diff --git a/modules/home/swaync/icons/brightness-20.png b/modules/home/swaync/icons/brightness-20.png new file mode 100644 index 0000000..0edf2ba Binary files /dev/null and b/modules/home/swaync/icons/brightness-20.png differ diff --git a/modules/home/swaync/icons/brightness-40.png b/modules/home/swaync/icons/brightness-40.png new file mode 100644 index 0000000..681583b Binary files /dev/null and b/modules/home/swaync/icons/brightness-40.png differ diff --git a/modules/home/swaync/icons/brightness-60.png b/modules/home/swaync/icons/brightness-60.png new file mode 100644 index 0000000..a9ea001 Binary files /dev/null and b/modules/home/swaync/icons/brightness-60.png differ diff --git a/modules/home/swaync/icons/brightness-80.png b/modules/home/swaync/icons/brightness-80.png new file mode 100644 index 0000000..8345d21 Binary files /dev/null and b/modules/home/swaync/icons/brightness-80.png differ diff --git a/modules/home/swaync/icons/gamemode.png b/modules/home/swaync/icons/gamemode.png new file mode 100644 index 0000000..ed5c3d2 Binary files /dev/null and b/modules/home/swaync/icons/gamemode.png differ diff --git a/modules/home/swaync/icons/microphone-mute.png b/modules/home/swaync/icons/microphone-mute.png new file mode 100644 index 0000000..8c1ab7a Binary files /dev/null and b/modules/home/swaync/icons/microphone-mute.png differ diff --git a/modules/home/swaync/icons/microphone.png b/modules/home/swaync/icons/microphone.png new file mode 100644 index 0000000..ab43784 Binary files /dev/null and b/modules/home/swaync/icons/microphone.png differ diff --git a/modules/home/swaync/icons/music.png b/modules/home/swaync/icons/music.png new file mode 100644 index 0000000..fe02df3 Binary files /dev/null and b/modules/home/swaync/icons/music.png differ diff --git a/modules/home/swaync/icons/palette.png b/modules/home/swaync/icons/palette.png new file mode 100644 index 0000000..552ae1d Binary files /dev/null and b/modules/home/swaync/icons/palette.png differ diff --git a/modules/home/swaync/icons/picture.png b/modules/home/swaync/icons/picture.png new file mode 100644 index 0000000..21a5541 Binary files /dev/null and b/modules/home/swaync/icons/picture.png differ diff --git a/modules/home/swaync/icons/play.png b/modules/home/swaync/icons/play.png new file mode 100644 index 0000000..d5b448b Binary files /dev/null and b/modules/home/swaync/icons/play.png differ diff --git a/modules/home/swaync/icons/timer.png b/modules/home/swaync/icons/timer.png new file mode 100644 index 0000000..1e80912 Binary files /dev/null and b/modules/home/swaync/icons/timer.png differ diff --git a/modules/home/swaync/icons/volume-high.png b/modules/home/swaync/icons/volume-high.png new file mode 100644 index 0000000..908af2a Binary files /dev/null and b/modules/home/swaync/icons/volume-high.png differ diff --git a/modules/home/swaync/icons/volume-low.png b/modules/home/swaync/icons/volume-low.png new file mode 100644 index 0000000..26ff46f Binary files /dev/null and b/modules/home/swaync/icons/volume-low.png differ diff --git a/modules/home/swaync/icons/volume-mid.png b/modules/home/swaync/icons/volume-mid.png new file mode 100644 index 0000000..3159ed5 Binary files /dev/null and b/modules/home/swaync/icons/volume-mid.png differ diff --git a/modules/home/swaync/icons/volume-mute.png b/modules/home/swaync/icons/volume-mute.png new file mode 100644 index 0000000..e99b2b2 Binary files /dev/null and b/modules/home/swaync/icons/volume-mute.png differ diff --git a/modules/home/swaync/icons/wand.png b/modules/home/swaync/icons/wand.png new file mode 100644 index 0000000..f06223c Binary files /dev/null and b/modules/home/swaync/icons/wand.png differ diff --git a/modules/home/swaync/swaync.nix b/modules/home/swaync/swaync.nix new file mode 100644 index 0000000..a87bfc5 --- /dev/null +++ b/modules/home/swaync/swaync.nix @@ -0,0 +1,3 @@ +{...}: { + programs.swaync.enable = true; +} diff --git a/modules/home/swaync/themes/nova-dark/central_control.css b/modules/home/swaync/themes/nova-dark/central_control.css new file mode 100644 index 0000000..434e219 --- /dev/null +++ b/modules/home/swaync/themes/nova-dark/central_control.css @@ -0,0 +1,253 @@ +@define-color text @foreground; +@define-color background-alt alpha(@color1, .4); +@define-color selected @color6; +@define-color hover alpha(@selected, .4); +@define-color urgent @color2; + +* { + color: @text; + + all: unset; + font-size: 14px; + font-family: "JetBrains Mono Nerd Font 10"; + transition: 200ms; + +} + +/* Avoid 'annoying' backgroud */ +.blank-window { + background: transparent; +} + +/* CONTROL CENTER ------------------------------------------------------------------------ */ + +.control-center { + background: alpha(@background, .55); + border-radius: 24px; + border: 1px solid @selected; + box-shadow: 0 0 10px 0 rgba(0,0,0,.6); + margin: 18px; + padding: 12px; +} + +/* Notifications */ +.control-center .notification-row .notification-background, +.control-center .notification-row .notification-background .notification.critical { + background-color: @background-alt; + border-radius: 16px; + margin: 4px 0px; + padding: 4px; +} + +.control-center .notification-row .notification-background .notification.critical { + color: @urgent; +} + +.control-center .notification-row .notification-background .notification .notification-content { + margin: 6px; + padding: 8px 6px 2px 2px; +} + +.control-center .notification-row .notification-background .notification > *:last-child > * { + min-height: 3.4em; +} + +.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action { + background: alpha(@selected, .6); + color: @text; + border-radius: 12px; + margin: 6px; +} + +.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { + background: @selected; +} + +.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active { + background-color: @selected; +} + +/* Buttons */ + +.control-center .notification-row .notification-background .close-button { + background: transparent; + border-radius: 6px; + color: @text; + margin: 0px; + padding: 4px; +} + +.control-center .notification-row .notification-background .close-button:hover { + background-color: @selected; +} + +.control-center .notification-row .notification-background .close-button:active { + background-color: @selected; +} + +progressbar, +progress, +trough { + border-radius: 12px; +} + +progressbar { + background-color: rgba(255,255,255,.1); +} + +/* Notifications expanded-group */ + +.notification-group { + margin: 2px 8px 2px 8px; + +} +.notification-group-headers { + font-weight: bold; + font-size: 1.25rem; + color: @text; + letter-spacing: 2px; +} + +.notification-group-icon { + color: @text; +} + +.notification-group-collapse-button, +.notification-group-close-all-button { + background: transparent; + color: @text; + margin: 4px; + border-radius: 6px; + padding: 4px; +} + +.notification-group-collapse-button:hover, +.notification-group-close-all-button:hover { + background: @hover; +} + +/* WIDGETS --------------------------------------------------------------------------- */ + + /* Notification clear button */ +.widget-title { + font-size: 1.2em; + margin: 6px; +} + +.widget-title button { + background: @background-alt; + border-radius: 6px; + padding: 4px 16px; +} + +.widget-title button:hover { + background-color: @hover; +} + +.widget-title button:active { + background-color: @selected; +} + + /* Do not disturb */ +.widget-dnd { + margin: 6px; + font-size: 1.2rem; +} + +.widget-dnd > switch { + background: @background-alt; + font-size: initial; + border-radius: 8px; + box-shadow: none; + padding: 2px; +} + +.widget-dnd > switch:hover { + background: @hover; +} + +.widget-dnd > switch:checked { + background: @selected; +} + +.widget-dnd > switch:checked:hover { + background: @hover; +} + +.widget-dnd > switch slider { + background: @text; + border-radius: 6px; +} + + /* Buttons menu */ +.widget-buttons-grid { + font-size: x-large; + padding: 6px 2px; + margin: 6px; + border-radius: 12px; + background: @background-alt; +} + +.widget-buttons-grid>flowbox>flowboxchild>button { + margin: 4px 10px; + padding: 6px 12px; + background: transparent; + border-radius: 8px; +} + +.widget-buttons-grid>flowbox>flowboxchild>button:hover { + background: @hover; +} + + + /* Music player */ +.widget-mpris { + background: @background-alt; + border-radius: 16px; + color: @text; + margin: 20px 6px; +} + + /* NOTE: Background need *opacity 1* otherwise will turn into the album art blurred */ +.widget-mpris-player { + background-color: @background-sec; + border-radius: 22px; + padding: 6px 14px; + margin: 6px; +} + +.widget-mpris > box > button { + color: @text; + border-radius: 20px; +} + +.widget-mpris button { + color: alpha(@text, .6); +} + +.widget-mpris button:hover { + color: @text; +} + +.widget-mpris-album-art { + border-radius: 16px; +} + +.widget-mpris-title { + font-weight: 700; + font-size: 1rem; +} + +.widget-mpris-subtitle { + font-weight: 500; + font-size: 0.8rem; +} + +/* Volume */ +.widget-volume { + background: @background-sec; + color: @background; + padding: 4px; + margin: 6px; + border-radius: 6px; +} diff --git a/modules/home/swaync/themes/nova-dark/notifications.css b/modules/home/swaync/themes/nova-dark/notifications.css new file mode 100644 index 0000000..a41b04d --- /dev/null +++ b/modules/home/swaync/themes/nova-dark/notifications.css @@ -0,0 +1,111 @@ +@define-color text @foreground; +@define-color background-alt @color1; +@define-color selected @color3; +@define-color hover @color5; +@define-color urgent @color2; + +* { + + /*background-alt: @color1; Buttons background */ + /*selected: @color2; Button selected */ + /*hover: @color5; Hover button */ + /*urgent: @color6; Urgency critical */ + /*text-selected: @background; */ + + color: @text; + + all: unset; + font-size: 14px; + font-family: "JetBrains Mono Nerd Font 10"; + transition: 200ms; + +} + +.notification-row { + outline: none; + margin: 0; + padding: 0px; +} + +.floating-notifications.background .notification-row .notification-background { + background: alpha(@background, .55); + box-shadow: 0 0 8px 0 rgba(0,0,0,.6); + border: 1px solid @selected; + border-radius: 24px; + margin: 16px; + padding: 0; +} + +.floating-notifications.background .notification-row .notification-background .notification { + padding: 6px; + border-radius: 12px; +} + +.floating-notifications.background .notification-row .notification-background .notification.critical { + border: 2px solid @urgent; +} + +.floating-notifications.background .notification-row .notification-background .notification .notification-content { + margin: 14px; +} + +.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * { + min-height: 3.4em; +} + +.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action { + border-radius: 8px; + background-color: @background-alt ; + margin: 6px; + border: 1px solid transparent; +} + +.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { + background-color: @hover; + border: 1px solid @selected; +} + +.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active { + background-color: @selected; + color: @background; +} + +.image { + margin: 10px 20px 10px 0px; +} + +.summary { + font-weight: 800; + font-size: 1rem; +} + +.body { + font-size: 0.8rem; +} + +.floating-notifications.background .notification-row .notification-background .close-button { + margin: 6px; + padding: 2px; + border-radius: 6px; + background-color: transparent; + border: 1px solid transparent; +} + +.floating-notifications.background .notification-row .notification-background .close-button:hover { + background-color: @selected; +} + +.floating-notifications.background .notification-row .notification-background .close-button:active { + background-color: @selected; + color: @background; +} + +.notification.critical progress { + background-color: @selected; +} + +.notification.low progress, +.notification.normal progress { + background-color: @selected; +} +