mirror of
https://github.com/youwen5/liminalOS.git
synced 2025-06-20 05:59:51 -07:00
refactor: massively overhaul home manager module system
This commit is contained in:
parent
b2270408fc
commit
a506d2aed4
64 changed files with 5201 additions and 64 deletions
23
hm/modules/linux/desktop-environment/default.nix
Normal file
23
hm/modules/linux/desktop-environment/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
osConfig,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./hyprland
|
||||
./waybar
|
||||
./swaync.nix
|
||||
];
|
||||
|
||||
options.liminalOS.desktop = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = osConfig.liminalOS.desktop.enable;
|
||||
description = ''
|
||||
Whether to enable the default configuration for the userland portions of the liminalOS desktop environment.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
394
hm/modules/linux/desktop-environment/hyprland/default.nix
Normal file
394
hm/modules/linux/desktop-environment/hyprland/default.nix
Normal file
|
@ -0,0 +1,394 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.liminalOS.desktop.hyprland;
|
||||
in
|
||||
{
|
||||
options.liminalOS.desktop.hyprland = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.liminalOS.desktop.enable;
|
||||
description = ''
|
||||
Whether to enable and rice Hyprland as well as some basic desktop utilities.
|
||||
'';
|
||||
};
|
||||
applyGtkFix = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Whether to set GSK_RENDERER environment variable to stop GTK apps from crashing.
|
||||
'';
|
||||
};
|
||||
idleDaemon.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Whether to setup and enable Hypridle with some defaults to automatically lock the screen and suspend after idling.
|
||||
'';
|
||||
};
|
||||
screenlocker.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Whether to set up Hyprlock for screen locking.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
wl-clipboard
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
libsForQt5.qt5ct
|
||||
papirus-icon-theme
|
||||
libsForQt5.qt5ct
|
||||
]
|
||||
++ (lib.optionals (!osConfig.liminalOS.theming.enable) [
|
||||
pkgs.bibata-cursors
|
||||
]);
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
"$Left" = "H";
|
||||
"$Right" = "L";
|
||||
"$Up" = "K";
|
||||
"$Down" = "J";
|
||||
env =
|
||||
(lib.optionals cfg.applyGtkFix [
|
||||
"GSK_RENDERER,gl"
|
||||
])
|
||||
++ (lib.optionals (config.liminalOS.formFactor == "laptop" && !osConfig.liminalOS.theming.enable) [
|
||||
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
"XCURSOR_THEME,Bibata-Modern-Ice"
|
||||
"XCURSOR_SIZE,24"
|
||||
])
|
||||
++ (lib.optionals (config.liminalOS.formFactor == "desktop" && !osConfig.liminalOS.theming.enable) [
|
||||
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
||||
"HYPRCURSOR_SIZE,26"
|
||||
"XCURSOR_THEME,Bibata-Modern-Ice"
|
||||
"XCURSOR_SIZE,26"
|
||||
]);
|
||||
bind =
|
||||
[
|
||||
# Window actions
|
||||
"$mod, Q, killactive"
|
||||
"$mod, W, togglefloating"
|
||||
"$mod, V, togglesplit"
|
||||
"$mod, Return, fullscreen"
|
||||
|
||||
# Move around
|
||||
"$mod, $Left, movefocus, l"
|
||||
"$mod, $Right, movefocus, r"
|
||||
"$mod, $Up, movefocus, u"
|
||||
"$mod, $Down, movefocus, d"
|
||||
|
||||
"$mod, D, workspace, previous"
|
||||
|
||||
"$mod, 1, workspace, 1"
|
||||
"$mod+Ctrl, H, workspace, 1"
|
||||
"$mod, 2, workspace, 2"
|
||||
"$mod+Ctrl, J, workspace, 2"
|
||||
"$mod, 3, workspace, 3"
|
||||
"$mod+Ctrl, K, workspace, 3"
|
||||
"$mod, 4, workspace, 4"
|
||||
"$mod+Ctrl, L, workspace, 4"
|
||||
"$mod, 5, workspace, 5"
|
||||
"$mod+Ctrl, semicolon, workspace, 5"
|
||||
"$mod, 6, workspace, 6"
|
||||
"$mod+Ctrl, apostrophe, workspace, 6"
|
||||
"$mod, 7, workspace, 7"
|
||||
"$mod+Ctrl, U, workspace, 7"
|
||||
"$mod, 8, workspace, 8"
|
||||
"$mod+Ctrl, I, workspace, 8"
|
||||
"$mod, 9, workspace, 9"
|
||||
"$mod+Ctrl, O, workspace, 9"
|
||||
"$mod, 0, workspace, 10"
|
||||
"$mod+Ctrl, P, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mod+Shift, 1, movetoworkspace, 1"
|
||||
"$mod+Ctrl+Shift, H, movetoworkspace, 1"
|
||||
"$mod+Shift, 2, movetoworkspace, 2"
|
||||
"$mod+Ctrl+Shift, J, movetoworkspace, 2"
|
||||
"$mod+Shift, 3, movetoworkspace, 3"
|
||||
"$mod+Ctrl+Shift, K, movetoworkspace, 3"
|
||||
"$mod+Shift, 4, movetoworkspace, 4"
|
||||
"$mod+Ctrl+Shift, L, movetoworkspace, 4"
|
||||
"$mod+Shift, 5, movetoworkspace, 5"
|
||||
"$mod+Ctrl+Shift, semicolon, movetoworkspace, 5"
|
||||
"$mod+Shift, 6, movetoworkspace, 6"
|
||||
"$mod+Ctrl+Shift, apostrophe, movetoworkspace, 6"
|
||||
"$mod+Shift, 7, movetoworkspace, 7"
|
||||
"$mod+Ctrl+Shift, U, movetoworkspace, 7"
|
||||
"$mod+Shift, 8, movetoworkspace, 8"
|
||||
"$mod+Ctrl+Shift, I, movetoworkspace, 8"
|
||||
"$mod+Shift, 9, movetoworkspace, 9"
|
||||
"$mod+Ctrl+Shift, O, movetoworkspace, 9"
|
||||
"$mod+Shift, 0, movetoworkspace, 10"
|
||||
"$mod+Ctrl+Shift, P, movetoworkspace, 10"
|
||||
|
||||
# Special workspace
|
||||
"$mod, S, togglespecialworkspace"
|
||||
"$mod+Alt, S, movetoworkspacesilent, special"
|
||||
|
||||
# Move windows around
|
||||
"$mod+Shift, $Left, movewindow, l"
|
||||
"$mod+Shift, $Right, movewindow, r"
|
||||
"$mod+Shift, $Up, movewindow, u"
|
||||
"$mod+Shift, $Down, movewindow, d"
|
||||
|
||||
"$mod+Ctrl, bracketright, movetoworkspace, r+1"
|
||||
"$mod+Ctrl, bracketleft, movetoworkspace, r-1"
|
||||
|
||||
"$mod, bracketright, workspace, r+1"
|
||||
"$mod, bracketleft, workspace, r-1"
|
||||
|
||||
# Utilities
|
||||
"$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi application launcher
|
||||
"$mod, G, exec, pkill -x rofi || rofi -show window" # Run rofi window switcher
|
||||
|
||||
''$mod, P, exec, ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot
|
||||
''$mod+Shift, P, exec, ${pkgs.grim}/bin/grim - | ${pkgs.swappy}/bin/swappy -f -'' # Screenshot
|
||||
|
||||
"$mod, Backspace, exec, pkill -x wlogout || wlogout" # show logout menu
|
||||
|
||||
"$mod, Z, exec, loginctl lock-session"
|
||||
|
||||
# Media controls
|
||||
",XF86AudioMute, exec, ${pkgs.pamixer}/bin/pamixer -t"
|
||||
",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox play-pause"
|
||||
",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox next"
|
||||
",XF86AudioRewind, exec, ${pkgs.playerctl}/bin/playerctl --player=%any,firefox previous"
|
||||
]
|
||||
++ (lib.optionals config.liminalOS.programs.zen.enable [
|
||||
"$mod, F, exec, zen"
|
||||
])
|
||||
++ (lib.optionals config.liminalOS.desktop.swaync.enable [
|
||||
"$mod, N, exec, sleep 0.1 && ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
|
||||
])
|
||||
++ (lib.optionals config.liminalOS.programs.enable [
|
||||
# Application Keybinds
|
||||
"$mod, R, exec, ${pkgs.pavucontrol}/bin/pavucontrol -t 3" # open pavucontrol on 'outputs' tab
|
||||
"$mod, T, exec, ${pkgs.kitty}/bin/kitty"
|
||||
"$mod, E, exec, ${pkgs.xfce.thunar}/bin/thunar"
|
||||
"$mod, M, exec, ${pkgs.thunderbird}/bin/thunderbird"
|
||||
]);
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
bindel = [
|
||||
",XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"
|
||||
",XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%+"
|
||||
",XF86AudioRaiseVolume, exec, ${pkgs.pamixer}/bin/pamixer -i 5"
|
||||
",XF86AudioLowerVolume, exec, ${pkgs.pamixer}/bin/pamixer -d 5"
|
||||
];
|
||||
binde = [
|
||||
# Resize windows
|
||||
"$mod+Alt, $Right, resizeactive, 30 0"
|
||||
"$mod+Alt, $Left, resizeactive, -30 0"
|
||||
"$mod+Alt, $Up, resizeactive, 0 -30"
|
||||
"$mod+Alt, $Down, resizeactive, 0 30"
|
||||
];
|
||||
windowrulev2 = import ./windowrulev2.nix;
|
||||
layerrule = [
|
||||
"blur,rofi"
|
||||
"ignorezero,rofi"
|
||||
"animation slide bottom 0.2 0.2 wind,rofi"
|
||||
"blur,notifications"
|
||||
"ignorezero,notifications"
|
||||
"blur,swaync-notification-window"
|
||||
"animation slide right 0.5 0.5,swaync-control-center"
|
||||
"animation slide right 0.5 0.5,notifications"
|
||||
"animation slide right 0.5 0.5,swaync-notification-window"
|
||||
"ignorezero,swaync-notification-window"
|
||||
"blur,swaync-control-center"
|
||||
"ignorezero,swaync-control-center"
|
||||
"blur,logout_dialog"
|
||||
];
|
||||
dwindle = {
|
||||
pseudotile = "yes";
|
||||
preserve_split = "yes";
|
||||
};
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
bezier = [
|
||||
"wind, 0.05, 0.9, 0.1, 1.05"
|
||||
"winIn, 0.1, 1.1, 0.1, 1.1"
|
||||
"winOut, 0.3, -0.3, 0, 1"
|
||||
"liner, 1, 1, 1, 1"
|
||||
];
|
||||
animation = [
|
||||
"windows, 1, 6, wind, slide"
|
||||
"windowsIn, 1, 6, winIn, slide"
|
||||
"windowsOut, 1, 5, winOut, slide"
|
||||
"windowsMove, 1, 5, wind, slide"
|
||||
# "border, 1, 1, liner"
|
||||
# "borderangle, 1, 30, liner, loop"
|
||||
"fade, 1, 10, default"
|
||||
"workspaces, 1, 5, wind"
|
||||
# "layers, 1, 8, default, slide"
|
||||
];
|
||||
};
|
||||
|
||||
general = {
|
||||
gaps_in = "3";
|
||||
gaps_out = "8";
|
||||
border_size = "2";
|
||||
# the dot is a hyprland name, not nix syntax, so we escape it
|
||||
"col.active_border" = pkgs.lib.mkForce "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg";
|
||||
"col.inactive_border" = pkgs.lib.mkForce "rgba(b4befecc) rgba(6c7086cc) 45deg";
|
||||
layout = "dwindle";
|
||||
resize_on_border = "true";
|
||||
};
|
||||
|
||||
misc = {
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
hide_on_key_press = true;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = "10";
|
||||
dim_special = "0.3";
|
||||
blur = {
|
||||
enabled = "yes";
|
||||
size = "6";
|
||||
passes = "3";
|
||||
new_optimizations = "on";
|
||||
ignore_opacity = "on";
|
||||
xray = "false";
|
||||
special = true;
|
||||
};
|
||||
shadow = {
|
||||
enabled = false;
|
||||
};
|
||||
};
|
||||
input = {
|
||||
sensitivity = if config.liminalOS.formFactor == "laptop" then "0.0" else "-0.65";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.input.touchpad =
|
||||
lib.mkIf (config.liminalOS.formFactor == "laptop")
|
||||
{
|
||||
natural_scroll = true;
|
||||
disable_while_typing = true;
|
||||
clickfinger_behavior = true;
|
||||
tap-to-click = false;
|
||||
scroll_factor = 0.15;
|
||||
};
|
||||
|
||||
services.hyprpaper.enable = true;
|
||||
|
||||
programs.wlogout.enable = true;
|
||||
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
# theme = "gruvbox-dark";
|
||||
terminal = "${pkgs.kitty}/bin/kitty";
|
||||
extraConfig = {
|
||||
modi = "window,drun,ssh,combi,filebrowser,recursivebrowser";
|
||||
display-drun = " ";
|
||||
combi-modi = "window,drun,ssh";
|
||||
run-shell-command = "{terminal} -e {cmd}";
|
||||
sidebar-mode = true;
|
||||
background-color = "transparent";
|
||||
sorting = "fuzzy";
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprlock = lib.mkIf cfg.screenlocker.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
hide_cursor = true;
|
||||
grace = 1;
|
||||
};
|
||||
background = {
|
||||
monitor = "";
|
||||
path = "/tmp/__hyprlock-monitor-screenshot.png";
|
||||
blur_passes = 3;
|
||||
blur_size = 7;
|
||||
noise = 0.0117;
|
||||
contrast = 0.8916;
|
||||
brightness = 0.8172;
|
||||
vibrancy = 0.1696;
|
||||
vibrancy_darkness = 0.0;
|
||||
};
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "200, 50";
|
||||
outline_thickness = 3;
|
||||
dots_size = 0.33;
|
||||
dots_spacing = 0.15;
|
||||
dots_center = false;
|
||||
dots_rounding = -1;
|
||||
outer_color = "rgb(151515)";
|
||||
inner_color = "rgb(200, 200, 200)";
|
||||
font_color = "rgb(10, 10, 10)";
|
||||
fade_on_empty = true;
|
||||
fade_timeout = 1000;
|
||||
placeholder_text = "<i>Input Password...</i>";
|
||||
hide_input = false;
|
||||
rounding = -1;
|
||||
check_color = "rgb(204, 136, 34)";
|
||||
fail_color = "rgb(204, 34, 34)";
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||
fail_timeout = 2000;
|
||||
fail_transition = 300;
|
||||
capslock_color = -1;
|
||||
numlock_color = -1;
|
||||
bothlock_color = -1;
|
||||
invert_numlock = false;
|
||||
swap_font_color = false;
|
||||
|
||||
position = "0, -20";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.hypridle = lib.mkIf cfg.idleDaemon.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || ${pkgs.grim}/bin/grim -o ${config.programs.hyprlock.settings.background.monitor} /tmp/__hyprlock-monitor-screenshot.png && ${pkgs.hyprlock}/bin/hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||
};
|
||||
listener = [
|
||||
{
|
||||
timeout = 1500;
|
||||
on-timeout = "loginctl lock-session";
|
||||
}
|
||||
{
|
||||
timeout = 330; # 5.5min
|
||||
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
{
|
||||
timeout = 1800;
|
||||
on-timeout = "systemctl suspend";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
[
|
||||
"opacity 0.90 0.90,class:^(librewolf)$"
|
||||
"opacity 0.90 0.90,class:^(floorp)$"
|
||||
"opacity 0.90 0.90,class:^(zen-alpha)$"
|
||||
"opacity 0.90 0.90,class:^(zen-beta)$"
|
||||
"opacity 0.90 0.90,class:^(Brave-browser)$"
|
||||
"opacity 0.80 0.80,class:^(Steam)$"
|
||||
"opacity 0.80 0.80,class:^(steam)$"
|
||||
"opacity 0.80 0.80,class:^(steamwebhelper)$"
|
||||
"opacity 0.80 0.80,class:^(Spotify)$"
|
||||
"opacity 0.80 0.80,initialTitle:^(Spotify Premium)$"
|
||||
"opacity 0.80 0.80,initialTitle:^(Spotify Free)$"
|
||||
"opacity 0.80 0.80,class:^(code-oss)$"
|
||||
"opacity 0.80 0.80,class:^(Code)$"
|
||||
"opacity 0.80 0.80,class:^(code-url-handler)$"
|
||||
"opacity 0.80 0.80,class:^(code-insiders-url-handler)$"
|
||||
"opacity 0.80 0.80,class:^(kitty)$"
|
||||
"opacity 0.80 0.80,class:^(neovide)$"
|
||||
"opacity 0.80 0.80,class:^(org.kde.dolphin)$"
|
||||
"opacity 0.80 0.80,class:^(thunar)$"
|
||||
"opacity 0.80 0.80,class:^(org.kde.ark)$"
|
||||
"opacity 0.80 0.80,class:^(nwg-look)$"
|
||||
"opacity 0.80 0.80,class:^(qt5ct)$"
|
||||
"opacity 0.80 0.80,class:^(qt6ct)$"
|
||||
"opacity 0.80 0.80,class:^(kvantummanager)$"
|
||||
"opacity 0.80 0.80,class:^(waypaper)$"
|
||||
"opacity 0.80 0.80,class:^(org.pulseaudio.pavucontrol)$"
|
||||
"opacity 0.80 0.80,class:^(com.github.wwmm.easyeffects)$"
|
||||
"opacity 0.80 0.80,class:^(thunderbird)$"
|
||||
|
||||
"opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
|
||||
"opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk"
|
||||
"opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk"
|
||||
"opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt"
|
||||
"opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk"
|
||||
"opacity 0.80 0.80,class:^(discord)$ # Discord-Electron"
|
||||
"opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron"
|
||||
"opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron"
|
||||
"opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk"
|
||||
"opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
|
||||
"opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk"
|
||||
"opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk"
|
||||
"opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk"
|
||||
"opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
|
||||
"opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk"
|
||||
"opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher"
|
||||
|
||||
"opacity 0.80 0.70,class:^(pavucontrol)$"
|
||||
"opacity 0.80 0.70,class:^(blueman-manager)$"
|
||||
"opacity 0.80 0.70,class:^(nm-applet)$"
|
||||
"opacity 0.80 0.70,class:^(nm-connection-editor)$"
|
||||
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||
|
||||
"float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$"
|
||||
"float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$"
|
||||
"float,title:^(Picture-in-Picture)$"
|
||||
"float,class:^(librewolf)$,title:^(Library)$"
|
||||
"float,class:^(floorp)$,title:^(Library)$"
|
||||
"float,class:^(zen-alpha)$,title:^(Library)$"
|
||||
"float,title:^(Extension: (Bitwarden Password Manager))$"
|
||||
"float,class:^(vlc)$"
|
||||
"float,class:^(kvantummanager)$"
|
||||
"float,class:^(qt5ct)$"
|
||||
"float,class:^(qt6ct)$"
|
||||
"float,class:^(nwg-look)$"
|
||||
"float,class:^(org.kde.ark)$"
|
||||
"float,class:^(org.pulseaudio.pavucontrol)$"
|
||||
"float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
|
||||
"float,class:^(app.drey.Warp)$ # Warp-Gtk"
|
||||
"float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
|
||||
"float,class:^(yad)$ # Protontricks-Gtk"
|
||||
"float,class:^(eog)$ # Imageviewer-Gtk"
|
||||
"float,class:^(io.github.alainm23.planify)$ # planify-Gtk"
|
||||
"float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
|
||||
"float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk"
|
||||
"float,class:^(blueman-manager)$"
|
||||
"float,class:^(nm-applet)$"
|
||||
"float,class:^(nm-connection-editor)$"
|
||||
"float,class:^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$"
|
||||
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$"
|
||||
|
||||
"size 50% 50%,class:^(org.pulseaudio.pavucontrol)"
|
||||
|
||||
"stayfocused, class:^(pinentry-)" # fix pinentry losing focus
|
||||
]
|
325
hm/modules/linux/desktop-environment/swaync.nix
Normal file
325
hm/modules/linux/desktop-environment/swaync.nix
Normal file
|
@ -0,0 +1,325 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.liminalOS.desktop.swaync;
|
||||
in
|
||||
{
|
||||
options.liminalOS.desktop.swaync = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.liminalOS.desktop.enable;
|
||||
description = ''
|
||||
Whether to enable the swaync notification center and daemon.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
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 = 800;
|
||||
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;
|
||||
opacity: 0.75;
|
||||
}
|
||||
.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.85;
|
||||
}
|
||||
.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}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
208
hm/modules/linux/desktop-environment/waybar/default.nix
Normal file
208
hm/modules/linux/desktop-environment/waybar/default.nix
Normal file
|
@ -0,0 +1,208 @@
|
|||
{
|
||||
pkgs,
|
||||
osConfig,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.liminalOS.desktop.waybar;
|
||||
in
|
||||
{
|
||||
options.liminalOS.desktop.waybar = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.liminalOS.desktop.enable;
|
||||
description = ''
|
||||
Whether to enable Waybar and the liminalOS rice.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
programs.waybar = lib.mkIf cfg.enable {
|
||||
enable = true;
|
||||
style = ./style.css;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
name = "bar0";
|
||||
|
||||
layer = "top";
|
||||
position = "top";
|
||||
|
||||
height = 28;
|
||||
|
||||
"margin" = "5px 10px 0px 10px";
|
||||
"spacing" = 10;
|
||||
|
||||
"mode" = "top";
|
||||
|
||||
reload_style_on_change = true;
|
||||
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"tray"
|
||||
"idle_inhibitor"
|
||||
"backlight"
|
||||
"wireplumber"
|
||||
"network"
|
||||
"battery"
|
||||
"disk"
|
||||
"memory"
|
||||
"cpu"
|
||||
"temperature"
|
||||
"clock"
|
||||
"custom/notification"
|
||||
];
|
||||
|
||||
idle_inhibitor = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = " ";
|
||||
deactivated = " ";
|
||||
};
|
||||
};
|
||||
|
||||
network = {
|
||||
format = "{ifname}";
|
||||
format-wifi = "{icon}{essid}";
|
||||
format-ethernet = " {essid}";
|
||||
format-disconnected = " Disconnected";
|
||||
format-icons = [
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
tooltip-format = " {bandwidthUpBits} | {bandwidthDownBits}";
|
||||
tooltip-format-wifi = " {bandwidthUpBits} | {bandwidthDownBits} | {signalStrength}";
|
||||
};
|
||||
|
||||
backlight = {
|
||||
interval = 2;
|
||||
format = " {percent}%";
|
||||
on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl set +4";
|
||||
on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl set 4-";
|
||||
};
|
||||
|
||||
wireplumber = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = " ";
|
||||
on-click = "pamixer -t";
|
||||
on-scroll-up = "${pkgs.pamixer}/bin/pamixer set 5%+";
|
||||
on-scroll-down = "${pkgs.pamixer}/bin/pamixer set 5%-";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
|
||||
battery = {
|
||||
interval = 10;
|
||||
format = "{icon} {capacity}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
tooltip = true;
|
||||
tooltip-format = "{timeTo}";
|
||||
};
|
||||
|
||||
disk = {
|
||||
intervel = 30;
|
||||
format = " {percentage_used}%";
|
||||
tooltip-format = "{used} used out of {total} on \"{path}\" ({percentage_used}%)";
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 10;
|
||||
format = " {used}";
|
||||
tooltip-format = "{used}GiB used of {total}GiB ({percentage}%)";
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 10;
|
||||
format = " {usage}%";
|
||||
};
|
||||
|
||||
temperature = {
|
||||
interval = 10;
|
||||
};
|
||||
|
||||
clock = {
|
||||
interval = 1;
|
||||
format = "{:%H:%M:%S}";
|
||||
};
|
||||
|
||||
"custom/notification" = lib.mkIf config.liminalOS.desktop.swaync.enable {
|
||||
tooltip = false;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
notification = "<span foreground='red'><small><sup>⬤</sup></small></span>";
|
||||
none = " ";
|
||||
dnd-notification = "<span foreground='red'><small><sup>⬤</sup></small></span>";
|
||||
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 = {
|
||||
"*" = [
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
active = "";
|
||||
empty = "";
|
||||
default = "";
|
||||
urgent = "";
|
||||
special = "";
|
||||
};
|
||||
};
|
||||
|
||||
"hyprland/window" = {
|
||||
icon = true;
|
||||
icon-size = 20;
|
||||
max-length = 50;
|
||||
rewrite = {
|
||||
"(.*) — LibreWolf" = "$1";
|
||||
"(.*) — Zen Browser" = "$1";
|
||||
"^$" = "👾";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
171
hm/modules/linux/desktop-environment/waybar/desktop/default.nix
Normal file
171
hm/modules/linux/desktop-environment/waybar/desktop/default.nix
Normal file
|
@ -0,0 +1,171 @@
|
|||
{
|
||||
# home.file.".config/waybar/config".source = ./config.jsonc;
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = ./style.css;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
name = "bar0";
|
||||
|
||||
layer = "top";
|
||||
position = "top";
|
||||
|
||||
height = 28;
|
||||
# "width" = 1920;
|
||||
|
||||
"margin" = "5px 10px 0px 10px";
|
||||
"spacing" = 10;
|
||||
|
||||
"mode" = "top";
|
||||
# "exclusive" = true;
|
||||
|
||||
# "output" = "eDP-1";
|
||||
|
||||
reload_style_on_change = true;
|
||||
|
||||
modules-left = [ "hyprland/workspaces" ];
|
||||
modules-center = [ "hyprland/window" ];
|
||||
modules-right = [
|
||||
"tray"
|
||||
"idle_inhibitor"
|
||||
"backlight"
|
||||
"wireplumber"
|
||||
"network"
|
||||
"battery"
|
||||
"disk"
|
||||
"memory"
|
||||
"cpu"
|
||||
"temperature"
|
||||
"clock"
|
||||
];
|
||||
|
||||
idle_inhibitor = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = " ";
|
||||
deactivated = " ";
|
||||
};
|
||||
};
|
||||
|
||||
network = {
|
||||
format = "{ifname}";
|
||||
format-wifi = "{icon}{essid}";
|
||||
format-ethernet = " {essid}";
|
||||
format-disconnected = " Disconnected";
|
||||
format-icons = [
|
||||
" "
|
||||
" "
|
||||
" "
|
||||
];
|
||||
tooltip-format = " {bandwidthUpBits} | {bandwidthDownBits}";
|
||||
tooltip-format-wifi = " {bandwidthUpBits} | {bandwidthDownBits} | {signalStrength}";
|
||||
};
|
||||
|
||||
backlight = {
|
||||
interval = 2;
|
||||
format = " {percent}%";
|
||||
on-scroll-up = "brightnessctl set +4";
|
||||
on-scroll-down = "brightnessctl set 4-";
|
||||
};
|
||||
|
||||
wireplumber = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = " ";
|
||||
on-click = "pamixer -t";
|
||||
on-scroll-up = "pamixer set 5%+";
|
||||
on-scroll-down = "pamixer set 5%-";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
|
||||
battery = {
|
||||
interval = 10;
|
||||
format = "{icon}{capacity}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
tooltip = true;
|
||||
tooltip-format = "{timeTo}";
|
||||
};
|
||||
|
||||
disk = {
|
||||
intervel = 30;
|
||||
format = " {percentage_used}%";
|
||||
tooltip-format = "{used} used out of {total} on \"{path}\" ({percentage_used}%)";
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 10;
|
||||
format = " {used}";
|
||||
tooltip-format = "{used}GiB used of {total}GiB ({percentage}%)";
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 10;
|
||||
format = " {usage}%";
|
||||
};
|
||||
|
||||
temperature = {
|
||||
interval = 10;
|
||||
};
|
||||
|
||||
clock = {
|
||||
interval = 1;
|
||||
format = "{:%H:%M:%S}";
|
||||
};
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
show-special = true;
|
||||
persistent-workspaces = {
|
||||
"*" = [
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
active = "";
|
||||
empty = "";
|
||||
default = "";
|
||||
urgent = "";
|
||||
special = "";
|
||||
};
|
||||
};
|
||||
"hyprland/window" = {
|
||||
icon = true;
|
||||
icon-size = 20;
|
||||
max-length = 50;
|
||||
rewrite = {
|
||||
"(.*) — Ablaze Floorp" = "$1";
|
||||
"(.*) — Zen Browser" = "$1";
|
||||
"^$" = "👾";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
window#waybar {
|
||||
font-family: "CaskaydiaCove Nerd Font";
|
||||
background-color: rgba(0,0,0,0);
|
||||
font-size: 0.8rem;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
|
||||
.modules-left, .modules-center {
|
||||
opacity: 1;
|
||||
background: linear-gradient(45deg, rgb(214, 39, 200), rgb(5, 83, 252));
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
opacity: 1;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px 2px 2px 10px
|
||||
}
|
||||
|
||||
/* label.module {
|
||||
margin-left: -1px;
|
||||
} */
|
||||
|
||||
#workspaces {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
font-size: 0.6rem;
|
||||
padding: 0 0.3rem 0 0;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-weight: bolder;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0 3px 0 0;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: lightgreen;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: lightpink;
|
||||
}
|
||||
|
||||
#disk {
|
||||
color: lightskyblue;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: lightgoldenrodyellow;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
color: lightslategray;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: lightsteelblue;
|
||||
}
|
78
hm/modules/linux/desktop-environment/waybar/style.css
Normal file
78
hm/modules/linux/desktop-environment/waybar/style.css
Normal file
|
@ -0,0 +1,78 @@
|
|||
window#waybar {
|
||||
font-family: "CaskaydiaCove Nerd Font";
|
||||
background-color: rgba(0,0,0,0);
|
||||
font-size: 0.8rem;
|
||||
border-radius: 0.5rem;
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
opacity: 1;
|
||||
background: linear-gradient(45deg, rgb(214, 39, 200), rgb(5, 83, 252));
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.modules-center {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
opacity: 1;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px 2px 2px 10px
|
||||
}
|
||||
|
||||
/* label.module {
|
||||
margin-left: -1px;
|
||||
} */
|
||||
|
||||
#workspaces {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
font-size: 0.6rem;
|
||||
padding: 0 0.3rem 0 0;
|
||||
border: #cccccc;
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-weight: bolder;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0 3px 0 0;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: lightgreen;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: lightpink;
|
||||
}
|
||||
|
||||
#disk {
|
||||
color: lightskyblue;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: lightgoldenrodyellow;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
color: lightslategray;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: lightsteelblue;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue