Replace dunst with swaync for fractional scaling support
Dunst lacks wp_fractional_scale_v1, causing jagged font rendering on external monitors in mixed-DPI setups (laptop 2.5x + externals 1x). swaync (GTK4) handles fractional scaling natively. Style based on catppuccin/swaync with Lavender accent.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"$schema": "/etc/xdg/swaync/configSchema.json",
|
||||
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"layer": "overlay",
|
||||
"control-center-layer": "top",
|
||||
"cssPriority": "application",
|
||||
|
||||
"notification-window-width": 300,
|
||||
"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,
|
||||
"control-center-margin-top": 15,
|
||||
"control-center-margin-bottom": 15,
|
||||
"control-center-margin-right": 15,
|
||||
"control-center-width": 400,
|
||||
"control-center-height": 600,
|
||||
|
||||
"notification-2fa-action": true,
|
||||
"notification-inline-replies": false,
|
||||
"notification-visibility": {},
|
||||
|
||||
"widgets": [
|
||||
"title",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
|
||||
"widget-config": {
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,364 @@
|
||||
/* ABOUTME: Moonarch swaync notification styling with Catppuccin Mocha colors. */
|
||||
/* ABOUTME: Based on catppuccin/swaync, accent changed from Blue to Lavender. */
|
||||
|
||||
/* Catppuccin Mocha palette */
|
||||
@define-color base #1e1e2e;
|
||||
@define-color mantle #181825;
|
||||
@define-color crust #11111b;
|
||||
@define-color surface0 #313244;
|
||||
@define-color surface1 #45475a;
|
||||
@define-color surface2 #585b70;
|
||||
@define-color text #cdd6f4;
|
||||
@define-color subtext0 #a6adc8;
|
||||
@define-color subtext1 #bac2de;
|
||||
@define-color overlay0 #6c7086;
|
||||
@define-color lavender #b4befe;
|
||||
@define-color sapphire #74c7ec;
|
||||
@define-color red #f38ba8;
|
||||
@define-color maroon #eba0ac;
|
||||
@define-color pink #f5c2e7;
|
||||
@define-color yellow #f9e2af;
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "UbuntuSans Nerd Font";
|
||||
transition: 200ms;
|
||||
}
|
||||
|
||||
trough highlight {
|
||||
background: @text;
|
||||
}
|
||||
|
||||
scale {
|
||||
margin: 0 7px;
|
||||
}
|
||||
|
||||
scale trough {
|
||||
margin: 0rem 1rem;
|
||||
min-height: 8px;
|
||||
min-width: 70px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
trough slider {
|
||||
margin: -10px;
|
||||
border-radius: 12.6px;
|
||||
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
|
||||
transition: all 0.2s ease;
|
||||
background-color: @lavender;
|
||||
}
|
||||
|
||||
trough slider:hover {
|
||||
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8), 0 0 8px @lavender;
|
||||
}
|
||||
|
||||
trough {
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
/* ── Notifications ── */
|
||||
|
||||
.notification-background {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @surface1;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background: @mantle;
|
||||
color: @text;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 0 2px @red;
|
||||
}
|
||||
|
||||
.notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.notification .notification-content overlay {
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.notification-content .summary {
|
||||
color: @text;
|
||||
}
|
||||
|
||||
.notification-content .time {
|
||||
color: @subtext0;
|
||||
}
|
||||
|
||||
.notification-content .body {
|
||||
color: @subtext1;
|
||||
}
|
||||
|
||||
.notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
/* Close button */
|
||||
|
||||
.notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 50%;
|
||||
color: @base;
|
||||
background-color: @red;
|
||||
}
|
||||
|
||||
.notification-background .close-button:hover {
|
||||
background-color: @maroon;
|
||||
}
|
||||
|
||||
.notification-background .close-button:active {
|
||||
background-color: @pink;
|
||||
}
|
||||
|
||||
/* Action buttons */
|
||||
|
||||
.notification .notification-action {
|
||||
border-radius: 7px;
|
||||
color: @text;
|
||||
box-shadow: inset 0 0 0 1px @surface1;
|
||||
margin: 4px;
|
||||
padding: 8px;
|
||||
font-size: 0.2rem;
|
||||
}
|
||||
|
||||
.notification .notification-action {
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
.notification .notification-action:hover {
|
||||
background-color: @surface1;
|
||||
}
|
||||
|
||||
.notification .notification-action:active {
|
||||
background-color: @surface2;
|
||||
}
|
||||
|
||||
/* ── Progress bar ── */
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: @red;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: @lavender;
|
||||
}
|
||||
|
||||
.notification progress,
|
||||
.notification trough,
|
||||
.notification progressbar {
|
||||
border-radius: 12.6px;
|
||||
padding: 3px 0;
|
||||
}
|
||||
|
||||
/* ── Control center ── */
|
||||
|
||||
.control-center {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @surface0;
|
||||
border-radius: 12.6px;
|
||||
background-color: @base;
|
||||
color: @text;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-background {
|
||||
border-radius: 7px;
|
||||
box-shadow: inset 0 0 0 1px @surface1;
|
||||
margin: 4px 10px;
|
||||
}
|
||||
|
||||
.control-center .notification-background .notification {
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-background .notification.low {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.control-center .widget-title > label {
|
||||
color: @text;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: @text;
|
||||
background-color: @surface0;
|
||||
box-shadow: inset 0 0 0 1px @surface1;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
background-color: @surface1;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
background-color: @surface2;
|
||||
}
|
||||
|
||||
.control-center .notification-group {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.control-center .notification-group:focus .notification-background {
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
scrollbar slider {
|
||||
margin: -3px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
scrollbar trough {
|
||||
margin: 2px 0;
|
||||
}
|
||||
|
||||
/* ── DnD toggle ── */
|
||||
|
||||
.widget-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: @surface0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: @lavender;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: @surface1;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
/* ── MPRIS ── */
|
||||
|
||||
.widget-mpris-player {
|
||||
background: @surface0;
|
||||
border-radius: 12.6px;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
.mpris-overlay {
|
||||
background-color: @surface0;
|
||||
opacity: 0.9;
|
||||
padding: 15px 10px;
|
||||
}
|
||||
|
||||
.widget-mpris-album-art {
|
||||
-gtk-icon-size: 100px;
|
||||
border-radius: 12.6px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-size: 1.2rem;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1rem;
|
||||
color: @subtext1;
|
||||
}
|
||||
|
||||
.widget-mpris button {
|
||||
border-radius: 12.6px;
|
||||
color: @text;
|
||||
margin: 0 5px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.widget-mpris button image {
|
||||
-gtk-icon-size: 1.8rem;
|
||||
}
|
||||
|
||||
.widget-mpris button:hover {
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
.widget-mpris button:active {
|
||||
background-color: @surface1;
|
||||
}
|
||||
|
||||
.widget-mpris button:disabled {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ── Menubar / Power ── */
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > button > label {
|
||||
font-size: 3rem;
|
||||
padding: 0.5rem 2rem;
|
||||
}
|
||||
|
||||
.widget-menubar > box > .menu-button-bar > :last-child {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
.power-buttons button:hover,
|
||||
.powermode-buttons button:hover,
|
||||
.screenshot-buttons button:hover {
|
||||
background: @surface0;
|
||||
}
|
||||
|
||||
/* ── Labels / Buttons Grid ── */
|
||||
|
||||
.control-center .widget-label > label {
|
||||
color: @text;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.widget-buttons-grid > flowbox > flowboxchild > button label {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
/* ── Volume / Backlight ── */
|
||||
|
||||
.widget-volume {
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.widget-volume label {
|
||||
color: @sapphire;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.widget-volume trough highlight {
|
||||
background: @sapphire;
|
||||
}
|
||||
|
||||
.widget-backlight trough highlight {
|
||||
background: @yellow;
|
||||
}
|
||||
|
||||
.widget-backlight label {
|
||||
font-size: 1.5rem;
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
.widget-backlight .KB {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
Reference in New Issue
Block a user