Compare commits

...

12 commits

Author SHA1 Message Date
e06b6ecf3d
more waybar fuckery 2024-07-25 18:24:57 -07:00
74cc22f2e6
nvm clipse doesnt work 2024-07-25 18:24:18 -07:00
5b427b9a0f
fix wob 2024-07-25 18:15:06 -07:00
a4537ad656
forgot this oops 2024-07-25 17:37:46 -07:00
a303abe6cd
remove polkit service 2024-07-25 17:35:43 -07:00
6d4395fd85
alt tab 2024-07-25 17:32:27 -07:00
fa6c592faf
wob for vol/brightness 2024-07-25 17:31:54 -07:00
49d20db7f3
clipse and batsignal 2024-07-25 17:25:29 -07:00
a590e31e3e
waybar stuff 2024-07-25 17:21:58 -07:00
26763c3b67
clipboard persistance 2024-07-25 17:17:38 -07:00
17dd88d7ab
better password selector 2024-07-25 17:16:41 -07:00
4b7e21be29
minor visual changes 2024-07-25 17:14:49 -07:00
9 changed files with 213 additions and 108 deletions

View file

@ -1,7 +1,7 @@
# https://github.com/catppuccin/dunst/blob/main/src/mocha.conf
[global]
frame_color = "#89B4FA"
separator_color= frame
frame_color = "#f5c2e7"
separator_color = frame
follow = "mouse"
width = 300
@ -25,41 +25,43 @@ progress_bar_max_width = 300
separator_height = 2
frame_width = 2
corner_radius = 8
transparency = 0
transparency = 1
gap_size = 8
line_height = 0
notification_limit = 0
idle_threshold = 120
history_length = 20
show_age_threshold = 60
markup = "full"
format = "<b>%a</b>\n<b>%s</b>\n%b"
font = "Atkinson Hyperlegible Pro 11"
word_wrap = "yes"
sort = "yes"
shrink = "no"
indicate_hidden = "yes"
sticky_history = "yes"
ignore_newline = "no"
show_indicators = "no"
stack_duplicates = true
always_run_script = true
hide_duplicate_count = false
ignore_dbusclose = false
mouse_left_click = "do_action"
mouse_left_click = "do_action, close_current"
mouse_middle_click = "close_all"
mouse_right_click = "close_current"
sort = "update"
shrink = "no"
notification_limit = 4
indicate_hidden = "yes"
idle_threshold = 120
history_length = 20
show_age_threshold = 60
sticky_history = "yes"
show_indicators = "yes"
stack_duplicates = true
hide_duplicate_count = false
always_run_script = true
[urgency_low]
background = "#1E1E2E"
background = "#1E1E2E30"
foreground = "#CDD6F4"
[urgency_normal]
background = "#1E1E2E"
background = "#1E1E2E30"
foreground = "#CDD6F4"
[urgency_critical]
background = "#1E1E2E"
background = "#1E1E2E30"
foreground = "#CDD6F4"
frame_color = "#FAB387"

View file

@ -10,11 +10,16 @@ window {
/* search entry */
entry {
background-color: alpha(@surface0, 0.5);
color: @text;
}
button, image {
button, box, widget, image {
background: none;
border: none
border: none;
color: @text;
text-shadow: 0 1px alpha(@base, 0.75);
box-shadow: none;
outline: none;
}
button {
@ -22,6 +27,6 @@ button {
border-radius: 1em;
}
button:hover {
background-color: alpha(@surface0, 0.5);
button:hover, button:active, box:hover, box:active {
background: alpha(@surface0, 0.5);
}

View file

@ -4,16 +4,23 @@
min-height: 0;
}
button, button:hover {
box-shadow: none; /* undo default styles */
}
window#waybar {
color: @text;
/*background: alpha(@base, 0.6);*/
background: @base;
border-radius: 1em;
font-family: CozetteVector, FontAwesome, Noto Sans CJK;
/*font-family: VictorMono, Iosevka Nerd Font, Noto Sans CJK;*/
/*font-family: 'Atkinson Hyperlegible', FontAwesome, Noto Sans CJK;*/
font-family: CozetteVector, monospace, FontAwesome, Noto Sans CJK;
font-size: 13px;
font-style: normal;
}
box.module, .modules-right box {
#workspaces, .modules-right box {
background-color: @surface0;
margin: 0 0.25em;
padding: 0.15em 0.25em;
@ -39,6 +46,7 @@ box.module, .modules-right box {
background-color: transparent;
color: @text;
padding: 0 0.4em;
transition: none;
}
#workspaces button:nth-child(1) {
@ -58,10 +66,23 @@ box.module, .modules-right box {
background: @surface1;
}
#workspaces button.focused {
box-shadow: none;
}
#workspaces button.active {
background: @pink;
color: @surface0;
}
#workspaces button:hover {
background: rgba(255, 255, 255, 0.1);
color: @text;
box-shadow: none;
}
#workspaces button.active:hover {
background: @pink;
color: @surface0;
}
#workspaces button.urgent {
background: @red;
@ -115,8 +136,22 @@ window#waybar.floating #window {
color: @red;
}
tooltip {
color: @text;
background: @base;
border: 1px solid @pink;
#privacy {
margin: 0 0.25em;
padding: 0;
}
#privacy-item {
padding: 0 1px;
color: @text;
}
tooltip {
background: @base;
border: 1px solid @surface2;
}
tooltip * {
padding: 0px;
margin: 0px;
color: @text;
font-family: CozetteVector, monospace;
}

View file

@ -49,11 +49,12 @@
hyprpaper.enable = true;
gnome-keyring.enable = true;
polkit-gnome.enable = true;
dunst.enable = true;
rofi.enable = true;
nwg-drawer.enable = true;
waybar.enable = true;
batsignal.enable = true;
wob.enable = true;
# display manager
sddm.enable = true;

View file

@ -0,0 +1,23 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.batsignal;
in {
options.modules.desktop.batsignal = {
enable = mkEnableOption "Enable batsignal, a battery notification service";
package = mkOption {
type = types.package;
default = pkgs.batsignal;
};
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = [
# -w 20 -c 10 -d 5 -- set battery levels
# -p -- notify on plug/unplug
# -m 2 -- set interval to 2 seconds
"${lib.getExe cfg.package} -w 20 -c 10 -d 5 -p -m 2"
];
};
}

View file

@ -47,7 +47,9 @@ in {
systemd.variables = [ "--all" ];
settings = {
settings = let
wobSock = config.modules.desktop.wob.sockPath;
in {
source = [];
"$mod" = "SUPER";
@ -56,22 +58,31 @@ in {
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bindel = [ # "bind held & locked"
bindel = (if config.modules.desktop.wob.enable then [ # "bind held & locked"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ && wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > ${wobSock}"
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%- && wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > ${wobSock}"
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s +5% | sed -n 's/.*(\\([0-9]*\\)%).*/\\1/p' > ${wobSock}"
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s 5%- | sed -n 's/.*(\\([0-9]*\\)%).*/\\1/p' > ${wobSock}"
] else [
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s +5%"
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -c backlight s 5%-"
];
bindl = [ # "bind locked"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
]);
bindl = ([ # "bind locked"
",switch:Lid Switch,exec,${lib.getExe config.modules.desktop.hyprlock.package}"
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
];
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
] ++ (if config.modules.desktop.wob.enable then [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && (wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q MUTED && echo 0 > ${wobSock}) || wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/[^0-9]//g' > ${wobSock}"
] else [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
]));
bindr = [ # "bind released"
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
];
@ -97,16 +108,13 @@ in {
;;
esac
'';
grabPasswordScript = pkgs.writeScript "grab-password" ''
${lib.getExe pkgs.rbw} get $(${lib.getExe pkgs.zenity} --entry --text="Enter the name for your password entry to copy it to your clipboard" --title="Password") | ${lib.getExe pkgs.wl-clipboard-x11} -selection clipboard
'';
in [
"$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run"
", print, exec, ${screenshotScript}"
"$mod, T, exec, ${lib.getExe pkgs.wezterm}"
"$mod, Q, killactive, "
"$mod, V, togglefloating, "
"$mod, F, togglefloating, "
"$mod, P, pseudo, " # dwindle
"$mod, J, togglesplit, " # dwindle
@ -128,7 +136,9 @@ in {
"$mod, bracketright, workspace, e+1"
", XF86LaunchA, exec, ${screenshotScript}"
", XF86LaunchB, exec, ${grabPasswordScript}"
", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20"
"ALT, Tab, exec, ${lib.getExe pkgs.rofi-wayland} -show window"
] ++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
@ -161,7 +171,11 @@ in {
monitor=",highrr,auto,auto";
exec-once = [ "${lib.getExe pkgs.networkmanagerapplet}" ];
exec-once = [
"${lib.getExe pkgs.networkmanagerapplet}" # network applet
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent
"${lib.getExe pkgs.wl-clip-persist} --clipboard primary" # to fix wl clipboards disappearing
];
env = [
"XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}"
@ -171,8 +185,8 @@ in {
general = {
gaps_in = 6;
gaps_out = 6;
border_size = 2;
no_border_on_floating = true;
border_size = 1;
no_border_on_floating = false;
layout = "dwindle";
@ -214,14 +228,15 @@ in {
"workspace 4, class:vesktop"
];
blurls = [
"gtk-layer-shell"
];
layerrule = [
"animation slide, notifications"
"animation slide, waybar"
];
blurls = [
"gtk-layer-shell" # nwg-drawer
#"waybar"
"blur, notifications"
"blur, wob"
];
decoration = {
@ -253,6 +268,7 @@ in {
"border, 1, 2, outExpo"
"fade, 1, 3, outCubic"
"workspaces, 1, 6, outExpo"
"specialWorkspace, 1, 2, outCubic, fade"
];
};

View file

@ -1,28 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.polkit-gnome;
in {
options.modules.desktop.polkit-gnome = {
enable = mkEnableOption "Enable polkit-gnome, a simple polkit agent";
};
config = mkIf cfg.enable {
systemd.user.services.polkit-gnome-authentication-agent-1 = {
description = "polkit-gnome-authentication-agent-1";
wantedBy = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
after = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
}

View file

@ -55,45 +55,38 @@ in {
"memory"
"power-profiles-daemon"
"battery"
"privacy"
];
};
"group/power" = {
orientation = "inherit";
drawer = {
transition-duration = 200;
children-class = "not-power";
transition-left-to-right = false;
};
modules = [
"custom/power"
"custom/lock"
"custom/reboot"
"custom/quit"
];
};
"custom/quit" = {
format = "";
tooltip = true;
tooltip-format = "Exit Hyprland";
on-click = "${config.modules.desktop.hyprland.package}/bin/hyprctl dispatch exit";
};
"custom/lock" = {
format = "";
tooltip = true;
tooltip-format = "Lock the system";
on-click = "${lib.getExe config.modules.desktop.hyprlock.package}";
};
"custom/reboot" = {
format = "";
tooltip = true;
tooltip-format = "Reboot";
on-click = "reboot";
};
"custom/power" = {
"custom/power" = let
powerSelect = pkgs.writeScript "power-menu" ''
cmd=$(echo 'shutdown|reboot|lock|exit Hyprland' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }')
case "$cmd" in
shutdown)
shutdown now
;;
reboot)
reboot
;;
lock)
${lib.getExe config.modules.desktop.hyprlock.package}
;;
"exit Hyprland")
${config.modules.desktop.hyprland.package}/bin/hyprctl dispatch exit
;;
esac
'';
in {
format = "";
tooltip = true;
tooltip-format = "Power off";
on-click = "shutdown now";
tooltip-format = "Power menu";
on-click = "${powerSelect}";
};
"hyprland/workspaces" = {
format = "{icon}";
@ -208,6 +201,15 @@ in {
tooltip-format = "{timeTo} ({power}W)";
format-charging = " {capacity}%";
};
privacy = {
icon-spacing = 0;
icon-size = 12;
transition-duration = 250;
modules = [
{ type = "screenshare"; }
{ type = "audio-in"; }
];
};
clock = {
format = "{:%H:%M}";
format-alt = "{:%a %b %d %R}";

49
modules/desktop/wob.nix Normal file
View file

@ -0,0 +1,49 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.wob;
in {
options.modules.desktop.wob = {
enable = mkEnableOption "Enable wob, a Wayland overlay bar";
sockPath = mkOption {
description = "Wob sock location";
type = types.str;
default = "$XDG_RUNTIME_DIR/wob.sock";
};
};
config = mkIf cfg.enable {
hm.wayland.windowManager.hyprland.settings.exec-once = let
path = cfg.sockPath;
script = pkgs.writeScript "launch-wob" ''
rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob}
'';
in [ script ];
hm.services.wob = {
enable = true;
settings = with config.colorScheme.palette; {
"" = {
timeout = 1000;
border_offset = 2;
border_size = 2;
bar_padding = 2;
anchor = "top";
width = 300;
height = 30;
margin = 12;
border_color = "${base04}FF";
background_color = "${base01}66";
bar_color = "${base05}FF";
overflow_mode = "nowrap";
output_mode = "focused";
};
};
};
};
}