This commit is contained in:
zack 2024-12-19 21:47:51 -05:00
parent ed77ae6e6b
commit bf86126a00
No known key found for this signature in database
GPG key ID: 5F873416BCF59F35
22 changed files with 1490 additions and 243 deletions

View file

@ -0,0 +1,80 @@
{
options,
config,
lib,
inputs,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.apps.helpers.snc;
in {
options.apps.helpers.snc = with types; {
enable = mkBoolOpt false "Enable Sway Notification Center";
};
config = mkIf cfg.enable {
home = {
packages = with pkgs; [swaynotificationcenter];
# Copy the theme file to the correct location
file.".config/swaync/style.css".source = ./theme/ctp.css;
# Create default config file
file.".config/swaync/config.json".text = builtins.toJSON {
"$schema" = "/etc/xdg/swaync/configSchema.json";
"positionX" = "right";
"positionY" = "top";
"layer" = "overlay";
"control-center-margin-top" = 0;
"control-center-margin-bottom" = 0;
"control-center-margin-right" = 0;
"control-center-margin-left" = 0;
"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-width" = 500;
"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;
"scripts" = {};
"notification-visibility" = {};
"widgets" = [
"title"
"dnd"
"notifications"
];
};
};
# Add systemd user service
systemd.user.services.swaync = {
Unit = {
Description = "Sway Notification Center";
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
ExecReload = "${pkgs.swaynotificationcenter}/bin/swaync-client --reload-config";
Restart = "always";
RestartSec = 3;
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
};
}

View file

@ -0,0 +1,451 @@
* {
all: unset;
font-size: 14px;
font-family: "Iosevka";
transition: 200ms;
}
trough highlight {
background: #cdd6f4;
}
scale trough {
margin: 0rem 1rem;
background-color: #313244;
min-height: 8px;
min-width: 70px;
}
slider {
background-color: #89b4fa;
}
.floating-notifications.background .notification-row .notification-background {
box-shadow:
0 0 8px 0 rgba(0, 0, 0, 0.8),
inset 0 0 0 1px #313244;
border-radius: 12.6px;
margin: 18px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 0;
}
.floating-notifications.background
.notification-row
.notification-background
.notification {
padding: 7px;
border-radius: 12.6px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.time {
color: #a6adc8;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
.notification-content
.body {
color: #cdd6f4;
}
.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: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
margin: 7px;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #313244;
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #f38ba8;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:hover {
background-color: #eba0ac;
color: #1e1e2e;
}
.floating-notifications.background
.notification-row
.notification-background
.close-button:active {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center {
box-shadow:
0 0 8px 0 rgba(0, 0, 0, 0.8),
inset 0 0 0 1px #313244;
border-radius: 12.6px;
margin: 18px;
background-color: #1e1e2e;
color: #cdd6f4;
padding: 14px;
}
.control-center .widget-title > label {
color: #cdd6f4;
font-size: 1.3em;
}
.control-center .widget-title button {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
padding: 8px;
}
.control-center .widget-title button:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #585b70;
color: #cdd6f4;
}
.control-center .widget-title button:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #1e1e2e;
}
.control-center .notification-row .notification-background {
border-radius: 7px;
color: #cdd6f4;
background-color: #313244;
box-shadow: inset 0 0 0 1px #45475a;
margin-top: 14px;
}
.control-center .notification-row .notification-background .notification {
padding: 7px;
border-radius: 7px;
}
.control-center
.notification-row
.notification-background
.notification.critical {
box-shadow: inset 0 0 7px 0 #f38ba8;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content {
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.summary {
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.time {
color: #a6adc8;
}
.control-center
.notification-row
.notification-background
.notification
.notification-content
.body {
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> * {
min-height: 3.4em;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action {
border-radius: 7px;
color: #cdd6f4;
background-color: #11111b;
box-shadow: inset 0 0 0 1px #45475a;
margin: 7px;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #313244;
color: #cdd6f4;
}
.control-center
.notification-row
.notification-background
.notification
> *:last-child
> *
.notification-action:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.control-center .notification-row .notification-background .close-button {
margin: 7px;
padding: 2px;
border-radius: 6.3px;
color: #1e1e2e;
background-color: #eba0ac;
}
.close-button {
border-radius: 6.3px;
}
.control-center .notification-row .notification-background .close-button:hover {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center
.notification-row
.notification-background
.close-button:active {
background-color: #f38ba8;
color: #1e1e2e;
}
.control-center .notification-row .notification-background:hover {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #7f849c;
color: #cdd6f4;
}
.control-center .notification-row .notification-background:active {
box-shadow: inset 0 0 0 1px #45475a;
background-color: #74c7ec;
color: #cdd6f4;
}
.notification.critical progress {
background-color: #f38ba8;
}
.notification.low progress,
.notification.normal progress {
background-color: #89b4fa;
}
.control-center-dnd {
margin-top: 5px;
border-radius: 8px;
background: #313244;
border: 1px solid #45475a;
box-shadow: none;
}
.control-center-dnd:checked {
background: #313244;
}
.control-center-dnd slider {
background: #45475a;
border-radius: 8px;
}
.widget-dnd {
margin: 0px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: #313244;
border: 1px solid #45475a;
box-shadow: none;
}
.widget-dnd > switch:checked {
background: #313244;
}
.widget-dnd > switch slider {
background: #45475a;
border-radius: 8px;
border: 1px solid #6c7086;
}
.widget-mpris .widget-mpris-player {
background: #313244;
padding: 7px;
}
.widget-mpris .widget-mpris-title {
font-size: 1.2rem;
}
.widget-mpris .widget-mpris-subtitle {
font-size: 0.8rem;
}
.widget-menubar > box > .menu-button-bar > button > label {
font-size: 3rem;
padding: 0.5rem 2rem;
}
.widget-menubar > box > .menu-button-bar > :last-child {
color: #f38ba8;
}
.power-buttons button:hover,
.powermode-buttons button:hover,
.screenshot-buttons button:hover {
background: #313244;
}
.control-center .widget-label > label {
color: #cdd6f4;
font-size: 2rem;
}
.widget-buttons-grid {
padding-top: 1rem;
}
.widget-buttons-grid > flowbox > flowboxchild > button label {
font-size: 2.5rem;
}
.widget-volume {
padding-top: 1rem;
}
.widget-volume label {
font-size: 1.5rem;
color: #74c7ec;
}
.widget-volume trough highlight {
background: #74c7ec;
}
.widget-backlight trough highlight {
background: #f9e2af;
}
.widget-backlight label {
font-size: 1.5rem;
color: #f9e2af;
}
.widget-backlight .KB {
padding-bottom: 1rem;
}
.image {
padding-right: 0.5rem;
}

View file

@ -0,0 +1,173 @@
{
config,
lib,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.apps.helpers.rofi;
in {
options.apps.helpers.rofi = with types; {
enable = mkBoolOpt false "Enable Rofi";
};
config = mkIf cfg.enable {
programs.rofi = {
enable = true;
package = pkgs.rofi;
# Basic configuration
terminal = "ghostty";
font = "Lexend Medium 16px";
extraConfig = {
modi = "drun";
show-icons = true;
drun-display-format = "{icon} {name}";
location = 0;
hide-scrollbar = true;
disable-history = false;
display-drun = " Applications";
display-run = " Run";
display-calc = " Calculator";
display-emoji = " Emojis";
sidebar-mode = false;
# # Timeout settings
# timeout = {
# action = "kb-cancel";
# delay = 0;
# };
#
# filebrowser = {
# "directories-first" = true;
# "sorting-method" = "name";
# };
};
# Theme configuration
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
"*" = {
background = "#181825";
prompt = "#1e1e2e";
border = "#313244";
text = "#cdd6f4";
stext = "#45475a";
select = "#1e1e2e";
"background-color" = mkLiteral "transparent";
"text-color" = mkLiteral "@text";
margin = 0;
padding = 0;
};
"window" = {
transparency = "real";
location = mkLiteral "center";
anchor = mkLiteral "center";
width = mkLiteral "32em";
"x-offset" = mkLiteral "0px";
"y-offset" = mkLiteral "0px";
enabled = true;
border = mkLiteral "2px solid";
"border-color" = mkLiteral "@border";
"border-radius" = mkLiteral "4px";
"background-color" = mkLiteral "@background";
cursor = mkLiteral "default";
};
"inputbar" = {
enabled = true;
"background-color" = mkLiteral "@prompt";
orientation = mkLiteral "horizontal";
children = mkLiteral "[ \"entry\" ]";
};
"entry" = {
enabled = true;
padding = mkLiteral "0.75em 1.25em";
cursor = mkLiteral "text";
placeholder = " Search application...";
"background-color" = mkLiteral "@background";
"placeholder-color" = mkLiteral "@stext";
};
"listview" = {
enabled = true;
columns = 1;
lines = 5;
cycle = true;
dynamic = true;
scrollbar = false;
layout = mkLiteral "vertical";
reverse = false;
"fixed-height" = true;
"fixed-columns" = true;
margin = mkLiteral "0.5em 0 0.75em";
cursor = mkLiteral "default";
};
"element" = {
enabled = true;
margin = mkLiteral "0 0.75em";
padding = mkLiteral "0.5em 1em";
cursor = mkLiteral "pointer";
orientation = mkLiteral "horizontal";
};
"element-icon" = {
size = mkLiteral "24px";
};
"element normal.normal" = {
"background-color" = mkLiteral "inherit";
"text-color" = mkLiteral "inherit";
};
"element selected.normal" = {
border = mkLiteral "2px solid";
"border-color" = mkLiteral "@border";
"border-radius" = mkLiteral "8px";
"background-color" = mkLiteral "@select";
};
"element-text" = {
highlight = mkLiteral "bold";
cursor = mkLiteral "inherit";
"vertical-align" = mkLiteral "0.5";
"horizontal-align" = mkLiteral "0.0";
font = mkLiteral ''"Lexend Medium 16px"'';
};
};
};
# Create the colors.rasi file
xdg.configFile."rofi/colors.rasi".text = ''
* {
background: #181825;
prompt: #1e1e2e;
border: #313244;
text: #cdd6f4;
stext: #45475a;
select: #1e1e2e;
}
'';
# Create the clip theme
xdg.configFile."rofi/clip.rasi".text = ''
@theme "cat-mocha"
@import "./colors.rasi"
entry {
placeholder: " Search clipboard...";
}
element-icon {
enabled: false;
size: 0;
}
'';
};
}

View file

@ -19,153 +19,250 @@ in {
enable = true;
style = ''
* {
color: @text;
font-family: Iosevka Nerd Font;
font-weight: bold;
font-size: 14px;
min-height: 0;
min-width: 0;
font-family: Lexend, "JetBrainsMono NFP";
font-size: 16px;
font-weight: 600;
}
window#waybar {
background-color: rgba(0, 0, 0, 0);
transition-property: background-color;
transition-duration: 0.5s;
/* background-color: #1e1e2e; */
/* background-color: #181825; */
background-color: #11111b;
/* background-color: rgba(24, 24, 37, 0.6); */
}
#waybar > box {
margin: 10px 15px 0px;
background-color: @base;
border: 2px solid @mauve;
#workspaces button {
padding: 0.3rem 0.6rem;
margin: 0.4rem 0.25rem;
border-radius: 6px;
/* background-color: #181825; */
background-color: #1e1e2e;
color: #cdd6f4;
}
#workspaces button:hover {
color: #1e1e2e;
background-color: #cdd6f4;
}
#workspaces button.active {
background-color: #1e1e2e;
color: #89b4fa;
}
#workspaces button.urgent {
background-color: #1e1e2e;
color: #f38ba8;
}
#workspaces,
#window,
#idle_inhibitor,
#wireplumber,
#network,
#cpu,
#memory,
#battery,
#clock,
#power-profiles-daemon,
#pulseaudio,
#custom-logo,
#custom-power,
#custom-spotify,
#custom-notification,
#cpu,
#tray,
#waybar > box {
border-radius: 12px;
#memory,
#window,
#mpris {
padding: 0.3rem 0.6rem;
margin: 0.4rem 0.25rem;
border-radius: 6px;
/* background-color: #181825; */
background-color: #1e1e2e;
}
#workspaces * {
color: @red;
#mpris.playing {
color: #a6e3a1;
}
#idle_inhibitor {
color: @peach;
#mpris.paused {
color: #9399b2;
}
#window * {
color: @mauve;
#custom-sep {
padding: 0px;
color: #585b70;
}
#wireplumber {
color: @yellow;
window#waybar.empty #window {
background-color: transparent;
}
#network {
color: @green;
#cpu {
color: #94e2d5;
}
#power-profiles-daemon {
color: @teal;
}
#battery {
color: @blue;
#memory {
color: #cba6f7;
}
#clock {
color: @lavender;
color: #74c7ec;
}
#tray {
color: @text;
#clock.simpleclock {
color: #89b4fa;
}
#idle_inhibitor,
#wireplumber,
#network,
#cpu,
#memory,
#battery,
#clock,
#power-profiles-daemon,
#tray {
padding: 0 5px;
#window {
color: #cdd6f4;
}
#pulseaudio {
color: #b4befe;
}
#pulseaudio.muted {
color: #a6adc8;
}
#custom-logo {
color: #89b4fa;
}
#custom-power {
color: #f38ba8;
}
tooltip {
background-color: #181825;
border: 2px solid #89b4fa;
}
'';
settings = {
mainBar = {
layer = "top";
layer = "bottom";
position = "top";
spacing = 4;
modules-left = [
"hyprland/workspaces"
"hyprland/window"
];
modules-center = [
];
modules-right = [
"idle_inhibitor"
"wireplumber"
"network"
"power-profiles-daemon"
"battery"
height = 40;
spacing = 2;
exclusive = true;
"gtk-layer-shell" = true;
passthrough = false;
"fixed-center" = true;
"modules-left" = ["hyprland/workspaces" "hyprland/window"];
"modules-center" = ["mpris"];
"modules-right" = [
"cpu"
"memory"
"pulseaudio"
"clock"
"clock#simpleclock"
"tray"
"custom/notification"
"custom/power"
];
"custom/spotify" = {
format = " {}";
"return-type" = "json";
"on-click" = "playerctl -p spotify play-pause";
"on-click-right" = "spotifatius toggle-liked";
"on-click-middle" = "playerctl -p spotify next";
exec = "spotifatius monitor";
};
mpris = {
player = "spotify";
"dynamic-order" = ["artist" "title"];
format = "{player_icon} {dynamic}";
"format-paused" = "{status_icon} <i>{dynamic}</i>";
"status-icons" = {
paused = "";
};
"player-icons" = {
default = "";
};
};
"hyprland/workspaces" = {
disable-scroll = true;
all-outputs = true;
warp-on-scroll = false;
format = "{name}: {icon}";
format-icons = {
"urgent" = "";
"active" = "";
"default" = "";
};
"on-click" = "activate";
format = "{id}";
"all-outputs" = true;
"disable-scroll" = false;
"active-only" = false;
};
#cava = {
# cava_config = "$HOME/.config/cava/config";
# framerate = 60;
# bars = 16;
# method = "pipewire";
# format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
# bar_delimiter = 0;
#};
idle_inhibitor = {
format = "Idle: {icon} ";
format-icons = {
"deactivated" = "";
"activated" = "";
};
"hyprland/window" = {
format = "{title}";
};
wireplumber = {
format = "Volume: {icon} {volume}% ";
format-icons = ["" "" ""];
format-muted = "Muted ";
tray = {
"show-passive-items" = true;
spacing = 10;
};
"clock#simpleclock" = {
tooltip = false;
format = " {:%H:%M}";
};
clock = {
format = " {:%H:%M}";
format = " {:L%a %d %b}";
calendar = {
format = {
days = "<span weight='normal'>{}</span>";
months = "<span color='#cdd6f4'><b>{}</b></span>";
today = "<span color='#f38ba8' weight='700'><u>{}</u></span>";
weekdays = "<span color='#f9e2af'><b>{}</b></span>";
weeks = "<span color='#a6e3a1'><b>W{}</b></span>";
};
mode = "month";
"mode-mon-col" = 1;
"on-scroll" = 1;
};
"tooltip-format" = "<span color='#cdd6f4' font='Lexend 16'><tt><small>{calendar}</small></tt></span>";
};
network = {
format = " {essid} 󰓅 {signalStrength}";
cpu = {
format = " {usage}%";
tooltip = true;
interval = 1;
};
battery = {
format-icons = ["" "" "" "" ""];
format = "{icon} {capacity}%";
memory = {
format = " {used:0.1f}Gi";
};
pulseaudio = {
format = "{icon} {volume}%";
"format-muted" = " muted";
"format-icons" = {
headphone = "";
default = [" " " " " "];
};
"on-click" = "pavucontrol";
};
"custom/sep" = {
format = "|";
tooltip = false;
};
"custom/power" = {
tooltip = false;
"on-click" = "wlogout -p layer-shell &";
format = "";
};
"custom/notification" = {
escape = true;
exec = "swaync-client -swb";
"exec-if" = "which swaync-client";
format = "{icon}";
"format-icons" = {
none = "󰅺";
notification = "󰡟";
};
"on-click" = "sleep 0.1 && swaync-client -t -sw";
"return-type" = "json";
tooltip = false;
};
};
};

View file

@ -6,6 +6,24 @@ return {
news = { lazyvim = false },
},
},
{
"snacks.nvim",
opts = {
scroll = {
enabled = false,
},
dashboard = {
preset = {
header = [[
l
l ~
f_,)
]],
},
},
},
},
{
"catppuccin",
opts = { transparent_background = true, integrations = {
@ -34,16 +52,6 @@ return {
nerd_font_variant = "mono",
},
},
{
"karb94/neoscroll.nvim",
config = function()
require("neoscroll").setup({})
end,
},
{
"sphamba/smear-cursor.nvim",
opts = {},
},
{
"folke/snacks.nvim",
priority = 1000,