feat: big refactor
This commit is contained in:
parent
2c09c21833
commit
ebedec9768
159 changed files with 1927 additions and 2222 deletions
47
modules/home-manager/gui/common.nix
Normal file
47
modules/home-manager/gui/common.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
colorschemes = rec {
|
||||
custom = {
|
||||
black = "#000000";
|
||||
_black = "000000";
|
||||
white = "#ffffff";
|
||||
_white = "ffffff";
|
||||
|
||||
# https://yeun.github.io/open-color/
|
||||
active = "#ffffff"; # white
|
||||
activeDark = "#4276b9"; # blue
|
||||
_activeDark = "4276b9"; # blue
|
||||
inactive = "#495057"; # gray7
|
||||
inactiveDark = "#212529"; # gray9
|
||||
alert = "#c92a2a"; # red9
|
||||
|
||||
# active = "#ffdeeb"; # pink1
|
||||
# activeDark = "#f783ac"; # pink4
|
||||
# _activeDark = "f783ac"; # pink4
|
||||
# inactive = "#495057"; # gray7
|
||||
# inactiveDark = "#212529"; # gray9
|
||||
# alert = "#c92a2a"; # red9
|
||||
};
|
||||
default = custom;
|
||||
};
|
||||
|
||||
font = "DejaVuSansM Nerd Font";
|
||||
font-size = "14";
|
||||
gtk = "Adwaita";
|
||||
|
||||
wallpaper = rec {
|
||||
neptun = pkgs.fetchurl {
|
||||
url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png";
|
||||
sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308";
|
||||
meta.licenses = lib.licenses.cc0;
|
||||
};
|
||||
|
||||
everest = pkgs.fetchurl {
|
||||
url = "https://images7.alphacoders.com/546/546508.jpg";
|
||||
sha256 = "90774d977a5f9cde2264fc1c46417b34046f491b5caca7805c9cd17e3463777b";
|
||||
meta.licenses = lib.licenses.cc0;
|
||||
};
|
||||
|
||||
default = everest;
|
||||
};
|
||||
}
|
||||
10
modules/home-manager/gui/cursor.nix
Normal file
10
modules/home-manager/gui/cursor.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.pointerCursor = {
|
||||
name = "macOS-Monterey";
|
||||
package = pkgs.apple-cursor;
|
||||
size = 32;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
}
|
||||
13
modules/home-manager/gui/default.nix
Normal file
13
modules/home-manager/gui/default.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ lib, nixosConfig, ... }:
|
||||
{
|
||||
imports =
|
||||
with lib;
|
||||
with nixosConfig.bchmnn;
|
||||
optionals gui.enable [
|
||||
./cursor.nix
|
||||
./gtk.nix
|
||||
./programs
|
||||
]
|
||||
++ optionals (gui.enable && elem "sway" gui.flavour) [ ./sway ]
|
||||
++ optionals (gui.enable && elem "i3" gui.flavour) [ ./i3 ];
|
||||
}
|
||||
12
modules/home-manager/gui/gtk.nix
Normal file
12
modules/home-manager/gui/gtk.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{ ... }:
|
||||
{
|
||||
gtk = {
|
||||
enable = true;
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 0;
|
||||
};
|
||||
gtk4.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 0;
|
||||
};
|
||||
};
|
||||
}
|
||||
55
modules/home-manager/gui/i3/autorandr.nix
Normal file
55
modules/home-manager/gui/i3/autorandr.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.autorandr = {
|
||||
enable = true;
|
||||
|
||||
profiles = {
|
||||
|
||||
nomad = {
|
||||
config = {
|
||||
"LVDS-1" = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
samsung = {
|
||||
fingerprint = {
|
||||
"HDMI-0" = "00ffffffffffff004c2d830e000e0001011c0103806b3c780a23ada4544d99260f474abdef80714f81c0810081809500a9c0b300010104740030f2705a80b0588a00501d7400001e023a801871382d40582c4500501d7400001e000000fd00184b0f511e000a202020202020000000fc0053414d53554e470a202020202001b902034cf0535f101f041305142021225d5e626364071603122909070715075057070183010000e2004fe30503016e030c001000b83c20008001020304e3060d01e50e60616566e5018b849001011d80d0721c1620102c2580501d7400009e662156aa51001e30468f3300501d7400001e000000000000000000000000000000a3";
|
||||
};
|
||||
config = {
|
||||
"HDMI-0" = {
|
||||
enable = true;
|
||||
primary = true;
|
||||
mode = "3840x2160";
|
||||
rate = "59.94";
|
||||
position = "0x0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
station = {
|
||||
config = {
|
||||
"LVDS-1" = {
|
||||
enable = false;
|
||||
};
|
||||
"DP-1-3" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "0x0";
|
||||
};
|
||||
"DP-1-2" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "1920x0";
|
||||
};
|
||||
"VGA-1-2" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "3840x0";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
257
modules/home-manager/gui/i3/default.nix
Normal file
257
modules/home-manager/gui/i3/default.nix
Normal file
|
|
@ -0,0 +1,257 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.xsession.windowManager.i3.config;
|
||||
# common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
|
||||
common = (import ../common.nix) {
|
||||
inherit pkgs;
|
||||
inherit lib;
|
||||
};
|
||||
|
||||
start-polybar = pkgs.writeShellScript "start-polybar" ''
|
||||
${pkgs.polybarFull}/bin/polybar-msg cmd quit
|
||||
echo "---" | tee -a /tmp/polybar.log
|
||||
${pkgs.polybarFull}/bin/polybar 2>&1 | tee -a /tmp/polybar.log & disown
|
||||
'';
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
./autorandr.nix
|
||||
./polybar.nix
|
||||
./rofi.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
dmenu
|
||||
xclip # tool to access the x clipboard from a console application
|
||||
wireplumber
|
||||
feh # lightweight image viewer (also sets wallpaper)
|
||||
brightnessctl # control screen brightness
|
||||
pavucontrol # control audio
|
||||
playerctl # control player
|
||||
networkmanagerapplet # control network
|
||||
udiskie # automount usb
|
||||
blueman # control bluetooth
|
||||
nextcloud-client # nextcloud client to connect to any instance
|
||||
libsForQt5.kdeconnect-kde # sync phone and pc
|
||||
system-config-printer # printer manager
|
||||
gnome3.adwaita-icon-theme
|
||||
maim
|
||||
];
|
||||
|
||||
xsession = {
|
||||
initExtra = "xset s off";
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
config = {
|
||||
modifier = "Mod4";
|
||||
bars = [ ];
|
||||
terminal = "${config.programs.kitty.package}/bin/kitty";
|
||||
menu = "${config.programs.rofi.package}/bin/rofi -show drun";
|
||||
startup = with pkgs; [
|
||||
{ command = "${start-polybar}"; }
|
||||
{
|
||||
command = "${gnome.gnome-keyring}/bin/gnome-keyring-daemon --start --components=ssh,secrets,pkcs11";
|
||||
}
|
||||
{ command = "${autorandr}/bin/autorandr -c"; }
|
||||
{ command = "${feh}/bin/feh --bg-fill ${common.wallpaper.default}"; }
|
||||
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
|
||||
{ command = "${blueman}/bin/blueman-applet"; }
|
||||
{ command = "${udiskie}/bin/udiskie --tray"; }
|
||||
{ command = "${nextcloud-client}/bin/nextcloud"; }
|
||||
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
|
||||
{ command = "${system-config-printer}/bin/system-config-printer-applet"; }
|
||||
{
|
||||
command = "${config.programs.kitty.package}/bin/kitty --class dropdown --title dropdown";
|
||||
always = true;
|
||||
}
|
||||
];
|
||||
fonts = {
|
||||
names = [ common.font ];
|
||||
style = "Bold";
|
||||
size = 12.0;
|
||||
};
|
||||
window = {
|
||||
titlebar = false;
|
||||
border = 4;
|
||||
commands = [
|
||||
{
|
||||
command = "floating enable";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "resize set 1400 800";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "move scratchpad";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
gaps = {
|
||||
inner = 5;
|
||||
};
|
||||
colors = {
|
||||
focused = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
focusedInactive = {
|
||||
border = common.colorschemes.default.inactive;
|
||||
background = common.colorschemes.default.inactive;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactive;
|
||||
childBorder = common.colorschemes.default.inactive;
|
||||
};
|
||||
unfocused = {
|
||||
border = common.colorschemes.default.inactiveDark;
|
||||
background = common.colorschemes.default.inactiveDark;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactiveDark;
|
||||
childBorder = common.colorschemes.default.inactiveDark;
|
||||
};
|
||||
urgent = {
|
||||
border = common.colorschemes.default.alert;
|
||||
background = common.colorschemes.default.alert;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.black;
|
||||
childBorder = common.colorschemes.default.alert;
|
||||
};
|
||||
placeholder = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
};
|
||||
keybindings = {
|
||||
# Basics
|
||||
"${cfg.modifier}+Return" = "exec ${cfg.terminal}";
|
||||
"${cfg.modifier}+q" = "kill";
|
||||
"${cfg.modifier}+i" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+space" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+Shift+c" = "reload";
|
||||
"${cfg.modifier}+Shift+q" = "exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit'";
|
||||
"${cfg.modifier}+Shift+r" = "restart";
|
||||
|
||||
# Focus
|
||||
"${cfg.modifier}+h" = "focus left";
|
||||
"${cfg.modifier}+j" = "focus down";
|
||||
"${cfg.modifier}+k" = "focus up";
|
||||
"${cfg.modifier}+l" = "focus right";
|
||||
|
||||
"${cfg.modifier}+p" = "focus output left";
|
||||
"${cfg.modifier}+n" = "focus output right";
|
||||
|
||||
# Moving
|
||||
"${cfg.modifier}+Shift+h" = "move left";
|
||||
"${cfg.modifier}+Shift+j" = "move down";
|
||||
"${cfg.modifier}+Shift+k" = "move up";
|
||||
"${cfg.modifier}+Shift+l" = "move right";
|
||||
|
||||
# Workspaces
|
||||
"${cfg.modifier}+1" = "workspace number 1";
|
||||
"${cfg.modifier}+2" = "workspace number 2";
|
||||
"${cfg.modifier}+3" = "workspace number 3";
|
||||
"${cfg.modifier}+4" = "workspace number 4";
|
||||
"${cfg.modifier}+5" = "workspace number 5";
|
||||
"${cfg.modifier}+6" = "workspace number 6";
|
||||
"${cfg.modifier}+7" = "workspace number 7";
|
||||
"${cfg.modifier}+8" = "workspace number 8";
|
||||
"${cfg.modifier}+9" = "workspace number 9";
|
||||
"${cfg.modifier}+0" = "workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";
|
||||
"${cfg.modifier}+Shift+2" = "move container to workspace number 2";
|
||||
"${cfg.modifier}+Shift+3" = "move container to workspace number 3";
|
||||
"${cfg.modifier}+Shift+4" = "move container to workspace number 4";
|
||||
"${cfg.modifier}+Shift+5" = "move container to workspace number 5";
|
||||
"${cfg.modifier}+Shift+6" = "move container to workspace number 6";
|
||||
"${cfg.modifier}+Shift+7" = "move container to workspace number 7";
|
||||
"${cfg.modifier}+Shift+8" = "move container to workspace number 8";
|
||||
"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
|
||||
"${cfg.modifier}+Shift+0" = "move container to workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Control+j" = "workspace prev";
|
||||
"${cfg.modifier}+Control+k" = "workspace next";
|
||||
"${cfg.modifier}+Control+Shift+j" = "move workspace to output left";
|
||||
"${cfg.modifier}+Control+Shift+k" = "move workspace to output right";
|
||||
|
||||
# Splits
|
||||
"${cfg.modifier}+b" = "split h";
|
||||
"${cfg.modifier}+v" = "split v";
|
||||
|
||||
# Layouts
|
||||
"${cfg.modifier}+s" = "layout stacking";
|
||||
"${cfg.modifier}+w" = "layout tabbed";
|
||||
"${cfg.modifier}+e" = "layout toggle split";
|
||||
"${cfg.modifier}+f" = "fullscreen toggle";
|
||||
|
||||
"${cfg.modifier}+a" = "focus parent";
|
||||
|
||||
"${cfg.modifier}+d" = "floating toggle";
|
||||
"${cfg.modifier}+Shift+d" = "focus mode_toggle";
|
||||
|
||||
# Scratchpad
|
||||
# "${cfg.modifier}+Shift+minus" = "move scratchpad";
|
||||
# "${cfg.modifier}+minus" = "scratchpad show";
|
||||
|
||||
# Resize mode
|
||||
"${cfg.modifier}+r" = "mode resize";
|
||||
|
||||
# Outer gaps
|
||||
"${cfg.modifier}+equal" = "gaps horizontal current minus 200; gaps vertical current minus 100";
|
||||
"${cfg.modifier}+minus" = "gaps horizontal current plus 200; gaps vertical current plus 100";
|
||||
"${cfg.modifier}+bracketright" = "gaps outer current set 5";
|
||||
"${cfg.modifier}+bracketleft" = "gaps horizontal current set 800; gaps vertical current set 400";
|
||||
|
||||
# Dropdown term
|
||||
"${cfg.modifier}+grave" = "[instance=\"dropdown\"] scratchpad show; [instance=\"dropdown\"] move position center";
|
||||
"${cfg.modifier}+Escape" = "[instance=\"dropdown\"] scratchpad show; [instance=\"dropdown\"] move position center";
|
||||
|
||||
# Multimedia Keys
|
||||
"XF86AudioRaiseVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86AudioMicMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
|
||||
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
|
||||
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
|
||||
# Screenshot
|
||||
"Print" = "exec ${pkgs.maim}/bin/maim --select | xclip -selection clipboard -t image/png";
|
||||
|
||||
# Programs
|
||||
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
|
||||
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
exec --no-startup-id ${pkgs.i3}/bin/i3-msg 'workspace 1'
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
176
modules/home-manager/gui/i3/polybar.nix
Normal file
176
modules/home-manager/gui/i3/polybar.nix
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
polybarFull
|
||||
];
|
||||
xdg.configFile."polybar/config.ini" = {
|
||||
text = ''
|
||||
[colors]
|
||||
background = #FFFFFF
|
||||
background-alt = #D3D3D3
|
||||
foreground = #000000
|
||||
primary = #F0C674
|
||||
secondary = #8ABEB7
|
||||
blue = #4276b9
|
||||
alert = #A54242
|
||||
disabled = #707880
|
||||
|
||||
[bar/main]
|
||||
width = 100%
|
||||
height = 24pt
|
||||
radius = 10
|
||||
|
||||
background = ''${colors.background}
|
||||
foreground = ''${colors.foreground}
|
||||
|
||||
line-size = 3pt
|
||||
|
||||
border-size = 4pt
|
||||
border-color = #00000000
|
||||
|
||||
padding-left = 0
|
||||
padding-right = 1
|
||||
|
||||
module-margin = 1
|
||||
|
||||
separator =
|
||||
separator-foreground = ''${colors.disabled}
|
||||
|
||||
font-0 = DejaVuSansM Nerd Font:pixelsize=12;3
|
||||
|
||||
modules-left = xworkspaces xwindow
|
||||
modules-right = systray wlan eth pulseaudio filesystem cpu temperature memory date
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
|
||||
[module/systray]
|
||||
type = internal/tray
|
||||
|
||||
format-margin = 8pt
|
||||
tray-spacing = 4pt
|
||||
tray-size = 55%
|
||||
|
||||
tray-background = ''${colors.blue}
|
||||
format-background = ''${colors.blue}
|
||||
format-padding = 10px
|
||||
|
||||
format-radius = 5.0
|
||||
|
||||
[module/xworkspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
label-active = %name%
|
||||
label-active-background = ''${colors.background-alt}
|
||||
label-active-padding = 1
|
||||
|
||||
label-occupied = %name%
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ''${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %name%
|
||||
label-empty-foreground = ''${colors.disabled}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:60:...%
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
interval = 25
|
||||
|
||||
mount-0 = /home
|
||||
|
||||
label-mounted = %free%
|
||||
format-mounted = <label-mounted>
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
format-volume = <label-volume> <ramp-volume>
|
||||
|
||||
label-volume = %percentage%%
|
||||
label-muted =
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
|
||||
click-right = pavucontrol
|
||||
|
||||
[module/xkeyboard]
|
||||
type = internal/xkeyboard
|
||||
blacklist-0 = num lock
|
||||
|
||||
label-layout = %layout%
|
||||
label-layout-foreground = ''${colors.primary}
|
||||
|
||||
label-indicator-padding = 2
|
||||
label-indicator-margin = 1
|
||||
label-indicator-foreground = ''${colors.background}
|
||||
label-indicator-background = ''${colors.secondary}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 2
|
||||
label = %gb_used:2%
|
||||
format = <label>
|
||||
format-margin = 5px
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
internal = 1
|
||||
warn-temperature = 80
|
||||
format-warn-padding = 10px
|
||||
format = <label> <ramp>
|
||||
format-warn = <label-warn> <ramp>
|
||||
format-warn-background = #eb4d4b
|
||||
format-warn-foreground = #ffffff
|
||||
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
label = %percentage:2%%
|
||||
format = <label>
|
||||
|
||||
[network-base]
|
||||
type = internal/network
|
||||
interval = 5
|
||||
format-connected = <label-connected>
|
||||
format-disconnected = <label-disconnected>
|
||||
|
||||
[module/wlan]
|
||||
inherit = network-base
|
||||
interface-type = wireless
|
||||
label-connected = %signal%
|
||||
label-disconnected =
|
||||
|
||||
[module/eth]
|
||||
inherit = network-base
|
||||
interface-type = wired
|
||||
label-connected = eth
|
||||
label-disconnected =
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
|
||||
date = %a %b %d %H:%M
|
||||
|
||||
label = %date%
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = true
|
||||
; vim:ft=dosini
|
||||
'';
|
||||
};
|
||||
}
|
||||
50
modules/home-manager/gui/i3/rofi.nix
Normal file
50
modules/home-manager/gui/i3/rofi.nix
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
|
||||
inherit (config.lib.formats.rasi) mkLiteral;
|
||||
in
|
||||
{
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
font = common.font + " " + common.font-size;
|
||||
location = "center";
|
||||
extraConfig = {
|
||||
show-icons = mkLiteral "true";
|
||||
};
|
||||
theme = {
|
||||
"prompt" = {
|
||||
"text-color" = mkLiteral common.colorschemes.default.inactive;
|
||||
};
|
||||
"textbox-prompt-colon" = {
|
||||
expand = false;
|
||||
str = ":";
|
||||
margin = mkLiteral "0px 0.3em 0em 0em";
|
||||
"text-color" = mkLiteral common.colorschemes.default.inactive;
|
||||
};
|
||||
"inputbar" = {
|
||||
"padding" = mkLiteral "10px 20px 10px 20px";
|
||||
"border" = mkLiteral "0px 0px 1px dash 0px";
|
||||
"border-color" = mkLiteral common.colorschemes.default.activeDark;
|
||||
"children" = map mkLiteral [ "prompt" "textbox-prompt-colon" "entry" ];
|
||||
};
|
||||
"listview" = {
|
||||
"padding" = mkLiteral "10px";
|
||||
};
|
||||
"element" = {
|
||||
"padding" = mkLiteral "10px";
|
||||
};
|
||||
"element-text" = {
|
||||
"margin" = mkLiteral "0px 0px 0px 20px";
|
||||
};
|
||||
} // lib.foldl'
|
||||
(acc: elem: acc // {
|
||||
${elem} = { "background-color" = mkLiteral common.colorschemes.default.activeDark; };
|
||||
})
|
||||
{ }
|
||||
(lib.mapCartesianProduct ({ a, b, c }: lib.concatStringsSep "." [ a b c ]) {
|
||||
a = [ "element" "element-text" "element-icon" ];
|
||||
b = [ "selected" ];
|
||||
c = [ "normal" "urgent" "active" ];
|
||||
});
|
||||
};
|
||||
}
|
||||
57
modules/home-manager/gui/programs/alacritty.nix
Normal file
57
modules/home-manager/gui/programs/alacritty.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
alabaster-theme-patch = builtins.toFile "alabaster.patch" ''
|
||||
diff --git a/alabaster.toml b/alabaster.toml
|
||||
index df312d3..f5e5499 100644
|
||||
--- a/alabaster.toml
|
||||
+++ b/alabaster.toml
|
||||
@@ -2,11 +2,11 @@
|
||||
# author tonsky
|
||||
|
||||
[colors.primary]
|
||||
-background = '#F7F7F7'
|
||||
+background = '#FFFFFF'
|
||||
foreground = '#434343'
|
||||
|
||||
[colors.cursor]
|
||||
-text = '#F7F7F7'
|
||||
+text = '#FFFFFF'
|
||||
cursor = '#434343'
|
||||
|
||||
[colors.normal]
|
||||
'';
|
||||
alacritty-theme-patched = pkgs.alacritty-theme.overrideAttrs (
|
||||
final: previous: { patches = [ alabaster-theme-patch ]; }
|
||||
);
|
||||
in
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
import = [
|
||||
# Available themes:
|
||||
# https://github.com/alacritty/alacritty-theme
|
||||
"${alacritty-theme-patched}/alabaster.toml"
|
||||
];
|
||||
env.TERM = "xterm-256color";
|
||||
font = {
|
||||
size = 12;
|
||||
normal = {
|
||||
family = common.font;
|
||||
};
|
||||
};
|
||||
scrolling.multiplier = 5;
|
||||
selection.save_to_clipboard = true;
|
||||
window = {
|
||||
padding = {
|
||||
x = 5;
|
||||
y = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
64
modules/home-manager/gui/programs/chromium/default.nix
Normal file
64
modules/home-manager/gui/programs/chromium/default.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
icons = {
|
||||
chromium = ./icons/chromium.png;
|
||||
spotify = ./icons/spotify.png;
|
||||
teams = ./icons/teams.png;
|
||||
outlook = ./icons/outlook.png;
|
||||
whatsapp = ./icons/whatsapp.png;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = (pkgs.chromium.override { enableWideVine = true; });
|
||||
extensions = [
|
||||
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
|
||||
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium
|
||||
];
|
||||
};
|
||||
|
||||
xdg.dataFile = {
|
||||
"applications/chromium-development.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Chromium (Development Modus)
|
||||
Exec=${pkgs.chromium}/bin/chromium --allow-file-access-from-files --disable-site-isolation-trials --allow-running-insecure-content --no-referrers --unlimited-storage --user-data-dir=${config.xdg.dataHome}/chromium-development/data --disable-web-security
|
||||
Terminal=false
|
||||
Icon=${icons.chromium}
|
||||
'';
|
||||
"applications/spotify.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Spotify
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://spotify.com
|
||||
Terminal=false
|
||||
Icon=${icons.spotify}
|
||||
'';
|
||||
"applications/teams.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Microsoft Teams
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://teams.microsoft.com
|
||||
Terminal=false
|
||||
Icon=${icons.teams}
|
||||
'';
|
||||
"applications/outlook.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Microsoft Outlook
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://outlook.office365.com/mail
|
||||
Terminal=false
|
||||
Icon=${icons.outlook}
|
||||
'';
|
||||
"applications/whatsapp.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=WhatsApp
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://web.whatsapp.com
|
||||
Terminal=false
|
||||
Icon=${icons.whatsapp}
|
||||
'';
|
||||
};
|
||||
}
|
||||
21
modules/home-manager/gui/programs/chromium/icons/LICENSE.md
Normal file
21
modules/home-manager/gui/programs/chromium/icons/LICENSE.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
### `chromium.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:Chromium_Logo.svg](https://commons.wikimedia.org/wiki/File:Chromium_Logo.svg)
|
||||
- Licensing
|
||||
> The Chromium project is published under Creative Commons attribution 2.5 and BSD. The logo is in the public domain, as it does not meet the threshold of originality.
|
||||
|
||||
### `outlook.png`
|
||||
- Source: [https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons](https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons)
|
||||
- Microsoft Fabric Assets License Agreement: [https://aka.ms/fluentui-assets-license](https://aka.ms/fluentui-assets-license)
|
||||
|
||||
### `spotify.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:Spotify_icon.svg](https://commons.wikimedia.org/wiki/File:Spotify_icon.svg)
|
||||
- Attribution: [https://developer.spotify.com/documentation/design#attribution](https://developer.spotify.com/documentation/design#attribution)
|
||||
|
||||
### `teams.png`
|
||||
- Source: [https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons](https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons)
|
||||
- Attribution: [https://developer.spotify.com/documentation/design#attribution](https://developer.spotify.com/documentation/design#attribution)
|
||||
|
||||
### `whatsapp.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:WhatsApp_logo.svg](https://commons.wikimedia.org/wiki/File:WhatsApp_logo.svg)
|
||||
- WhatsApp brand assets and guidelines: [https://about.meta.com/brand/resources/whatsapp/whatsapp-brand/](https://about.meta.com/brand/resources/whatsapp/whatsapp-brand/)
|
||||
|
||||
BIN
modules/home-manager/gui/programs/chromium/icons/chromium.png
Normal file
BIN
modules/home-manager/gui/programs/chromium/icons/chromium.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
modules/home-manager/gui/programs/chromium/icons/outlook.png
Normal file
BIN
modules/home-manager/gui/programs/chromium/icons/outlook.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
modules/home-manager/gui/programs/chromium/icons/spotify.png
Normal file
BIN
modules/home-manager/gui/programs/chromium/icons/spotify.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
modules/home-manager/gui/programs/chromium/icons/teams.png
Normal file
BIN
modules/home-manager/gui/programs/chromium/icons/teams.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.5 KiB |
BIN
modules/home-manager/gui/programs/chromium/icons/whatsapp.png
Normal file
BIN
modules/home-manager/gui/programs/chromium/icons/whatsapp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
62
modules/home-manager/gui/programs/default.nix
Normal file
62
modules/home-manager/gui/programs/default.nix
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
nixosConfig,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./alacritty.nix
|
||||
./chromium
|
||||
./discord.nix
|
||||
./games.nix
|
||||
./keyring.nix
|
||||
./kitty.nix
|
||||
./obs.nix
|
||||
./vscode.nix
|
||||
./zathura.nix
|
||||
];
|
||||
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
|
||||
firefox # a web browser built from firefox source tree
|
||||
thunderbird # a full-featured e-mail client
|
||||
speechd # common interface to speech synthesis - https://support.mozilla.org/en-us/kb/speechd-setup
|
||||
tor-browser # privacy-focused browser routing traffic through the tor network
|
||||
qbittorrent # featureful free software bittorrent client
|
||||
element-desktop # a feature-rich client for matrix.org
|
||||
|
||||
telegram-desktop # telegram desktop messaging app
|
||||
signal-desktop # private, simple, and secure messenger
|
||||
zoom-us # zoom.us video conferencing application
|
||||
|
||||
gnome.simple-scan # simple scanning utility
|
||||
gnome.gnome-font-viewer # program that can preview fonts and create thumbnails for fonts
|
||||
pppdf
|
||||
feh # a light-weight image viewer
|
||||
mpv
|
||||
vlc # cross-platform media player and streaming server
|
||||
zathura # a highly customizable and functional pdf viewer
|
||||
neovide # a simple graphical user interface for neovim
|
||||
|
||||
gimp # the gnu image manipulation program
|
||||
(calibre.override { unrarSupport = true; })
|
||||
libreoffice # comprehensive, professional-quality productivity suite, a variant of openoffice.org
|
||||
xournalpp # a handwriting notetaking software with pdf annotation support
|
||||
libsForQt5.okular # kde document viewer
|
||||
carla # audio plugin host
|
||||
picard # musicbrainz picard audio file tagger
|
||||
anki # spaced repetition flashcard program
|
||||
|
||||
]
|
||||
++ lib.optionals nixosConfig.bchmnn.printing.enable [
|
||||
system-config-printer # graphical user interface for cups administration
|
||||
|
||||
]
|
||||
++ lib.optionals nixosConfig.services.ratbagd.enable [
|
||||
piper # gtk frontend for ratbagd mouse config daemon
|
||||
|
||||
];
|
||||
}
|
||||
6
modules/home-manager/gui/programs/discord.nix
Normal file
6
modules/home-manager/gui/programs/discord.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
vesktop # alternate client for discord with vencord built-in
|
||||
];
|
||||
}
|
||||
15
modules/home-manager/gui/programs/games.nix
Normal file
15
modules/home-manager/gui/programs/games.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
nixosConfig,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf nixosConfig.bchmnn.collections.games.enable {
|
||||
home.packages = with pkgs; [
|
||||
openjdk17 # the open-source java development kit
|
||||
prismlauncher # a free, open source launcher for minecraft
|
||||
# retroarchFull # multi-platform emulator frontend for libretro cores
|
||||
celestia # real-time 3d simulation of space
|
||||
extremetuxracer # high speed arctic racing game based on tux racer
|
||||
];
|
||||
}
|
||||
13
modules/home-manager/gui/programs/keyring.nix
Normal file
13
modules/home-manager/gui/programs/keyring.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.gnome-keyring = {
|
||||
enable = true;
|
||||
components = [
|
||||
"pkcs11"
|
||||
"secrets"
|
||||
"ssh"
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ gnome.seahorse ];
|
||||
}
|
||||
65
modules/home-manager/gui/programs/kitty.nix
Normal file
65
modules/home-manager/gui/programs/kitty.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
kitty-alabaster-theme-patch = builtins.toFile "kitty-theme-alabaster.patch" ''
|
||||
diff --git a/themes/Alabaster.conf b/themes/Alabaster.conf
|
||||
index 7989049..b0c180e 100644
|
||||
--- a/themes/Alabaster.conf
|
||||
+++ b/themes/Alabaster.conf
|
||||
@@ -6,17 +6,17 @@
|
||||
|
||||
#: The basic colors
|
||||
|
||||
-foreground #000000
|
||||
-background #f7f7f7
|
||||
+foreground #434343
|
||||
+background #ffffff
|
||||
|
||||
-selection_foreground #000000
|
||||
+selection_foreground #434343
|
||||
selection_background #bfdbfe
|
||||
|
||||
|
||||
#: Cursor colors
|
||||
|
||||
-cursor #007acc
|
||||
-cursor_text_color #bfdbfe
|
||||
+cursor #434343
|
||||
+cursor_text_color #ffffff
|
||||
|
||||
|
||||
#: URL underline color when hovering with mouse
|
||||
@@ -55,8 +55,8 @@ color6 #0083b2
|
||||
color14 #00aacb
|
||||
|
||||
#: white
|
||||
-color7 #f7f7f7
|
||||
-color15 #f7f7f7
|
||||
+color7 #bbbbbb
|
||||
+color15 #ffffff
|
||||
|
||||
|
||||
#: kitty window border colors and terminal bell colors
|
||||
'';
|
||||
kitty-theme-patched = pkgs.kitty-themes.overrideAttrs (
|
||||
final: previous: { patches = [ kitty-alabaster-theme-patch ]; }
|
||||
);
|
||||
in
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font.name = common.font;
|
||||
font.size = 12;
|
||||
shellIntegration = {
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
extraConfig = ''
|
||||
include ${kitty-theme-patched}/share/kitty-themes/themes/Alabaster.conf
|
||||
text_composition_strategy legacy
|
||||
'';
|
||||
};
|
||||
}
|
||||
7
modules/home-manager/gui/programs/obs.nix
Normal file
7
modules/home-manager/gui/programs/obs.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = [ pkgs.obs-studio-plugins.wlrobs ];
|
||||
};
|
||||
}
|
||||
174
modules/home-manager/gui/programs/vscode.nix
Normal file
174
modules/home-manager/gui/programs/vscode.nix
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableExtensionUpdateCheck = true;
|
||||
enableUpdateCheck = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
vscodevim.vim
|
||||
editorconfig.editorconfig
|
||||
dbaeumer.vscode-eslint
|
||||
waderyan.gitblame
|
||||
bierner.markdown-mermaid
|
||||
pkief.material-icon-theme
|
||||
christian-kohler.path-intellisense
|
||||
johnpapa.vscode-peacock
|
||||
esbenp.prettier-vscode
|
||||
bradlc.vscode-tailwindcss
|
||||
jnoortheen.nix-ide
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cmake-tools
|
||||
james-yu.latex-workshop
|
||||
];
|
||||
userSettings = {
|
||||
"window.titleBarStyle" = "custom";
|
||||
"window.menuBarVisibility" = "toggle";
|
||||
|
||||
"workbench.colorTheme" = "Default Light Modern";
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"explorer.confirmDelete" = false;
|
||||
|
||||
"editor.renderControlCharacters" = true;
|
||||
"editor.renderWhitespace" = "all";
|
||||
"editor.renderFinalNewline" = "on";
|
||||
"editor.tabSize" = 4;
|
||||
"editor.cursorStyle" = "line";
|
||||
"editor.insertSpaces" = false;
|
||||
"editor.lineNumbers" = "on";
|
||||
"editor.wordSeparators" = "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-";
|
||||
"editor.wordWrap" = "on";
|
||||
"editor.suggestSelection" = "first";
|
||||
"editor.fontFamily" = common.font;
|
||||
"editor.fontSize" = 16;
|
||||
"editor.bracketPairColorization.enabled" = true;
|
||||
"editor.guides.bracketPairs" = "active";
|
||||
"editor.quickSuggestions" = {
|
||||
strings = "on";
|
||||
};
|
||||
"editor.codeActionsOnSave" = {
|
||||
".source.organizeImports" = "explicit";
|
||||
};
|
||||
|
||||
"terminal.integrated.fontFamily" = common.font;
|
||||
|
||||
"files.exclude" = {
|
||||
"**/.classpath" = true;
|
||||
"**/.project" = true;
|
||||
"**/.settings" = true;
|
||||
"**/.factorypath" = true;
|
||||
"**/__pycache__" = true;
|
||||
};
|
||||
|
||||
"vim.normalModeKeyBindingsNonRecursive" = [
|
||||
{
|
||||
"before" = [ "<C-p>" ];
|
||||
"commands" = [ "workbench.action.quickOpen" ];
|
||||
}
|
||||
{
|
||||
"before" = [ "<C-b>" ];
|
||||
"commands" = [
|
||||
"workbench.view.explorer"
|
||||
"workbench.action.toggleSidebarVisibility"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
"[html]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[javascript]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[typescript]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[typescriptreact]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[python]" = {
|
||||
"editor.tabSize" = 4;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.formatOnType" = true;
|
||||
};
|
||||
"[yaml]" = {
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.tabSize" = 2;
|
||||
"editor.autoIndent" = "advanced";
|
||||
};
|
||||
"[json]" = {
|
||||
"editor.defaultFormatter" = "vscode.json-language-features";
|
||||
};
|
||||
"[jsonc]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[java]" = {
|
||||
"editor.defaultFormatter" = "redhat.java";
|
||||
};
|
||||
"[markdown]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[css]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[nix]" = {
|
||||
"editor.defaultFormatter" = "jnoortheen.nix-ide";
|
||||
};
|
||||
|
||||
"git.autofetch" = true;
|
||||
"json.schemaDownload.enable" = true;
|
||||
"javascript.updateImportsOnFileMove.enabled" = "always";
|
||||
"typescript.updateImportsOnFileMove.enabled" = "always";
|
||||
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.serverPath" = "${pkgs.nil}/bin/nil";
|
||||
"nix.formatterPath" = "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt";
|
||||
};
|
||||
|
||||
keybindings = [
|
||||
{
|
||||
key = "ctrl+tab";
|
||||
command = "workbench.action.nextEditor";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+tab";
|
||||
command = "workbench.action.previousEditor";
|
||||
}
|
||||
{
|
||||
key = "alt+left";
|
||||
command = "workbench.action.navigateBack";
|
||||
}
|
||||
{
|
||||
key = "alt+right";
|
||||
command = "workbench.action.navigateForward";
|
||||
}
|
||||
{
|
||||
key = "ctrl+escape";
|
||||
command = "workbench.action.terminal.toggleTerminal";
|
||||
when = "terminal.active";
|
||||
}
|
||||
{
|
||||
key = "ctrl+f";
|
||||
command = "editor.action.formatDocument";
|
||||
when = "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
10
modules/home-manager/gui/programs/zathura.nix
Normal file
10
modules/home-manager/gui/programs/zathura.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
{
|
||||
# a highly customizable and functional pdf viewer
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
selection-clipboard = "clipboard";
|
||||
};
|
||||
};
|
||||
}
|
||||
355
modules/home-manager/gui/sway/default.nix
Normal file
355
modules/home-manager/gui/sway/default.nix
Normal file
|
|
@ -0,0 +1,355 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
nixosConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.wayland.windowManager.sway.config;
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./kanshi.nix
|
||||
./swaync
|
||||
./wofi.nix
|
||||
../waybar.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
brightnessctl # this program allows you read and control device brightness
|
||||
pavucontrol # pulseaudio volume control
|
||||
playerctl # command-line utility and library for controlling media players that implement mpris
|
||||
networkmanagerapplet # networkmanager control applet for gnome
|
||||
udiskie # removable disk automounter for udisks
|
||||
dracula-theme # dracula variant of the ant theme
|
||||
gnome3.adwaita-icon-theme
|
||||
wl-clipboard # command-line copy/paste utilities for wayland
|
||||
sway-contrib.grimshot # a helper for screenshots within sway
|
||||
wdisplays # a graphical application for configuring displays in wayland compositors
|
||||
wlr-randr # an xrandr clone for wlroots compositors
|
||||
kanshi # dynamic display configuration tool
|
||||
nextcloud-client # nextcloud themed desktop client
|
||||
libsForQt5.kdeconnect-kde # kde connect provides several features to integrate your phone and your computer
|
||||
system-config-printer # graphical user interface for cups administration
|
||||
emote # modern emoji picker for linux
|
||||
];
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
};
|
||||
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
wrapperFeatures = {
|
||||
base = true;
|
||||
gtk = true;
|
||||
};
|
||||
xwayland = true;
|
||||
extraSessionCommands =
|
||||
with lib;
|
||||
with nixosConfig.bchmnn;
|
||||
''
|
||||
export CLUTTER_BACKEND=wayland;
|
||||
export GDK_BACKEND=wayland;
|
||||
export GDK_DPI_SCALE=1;
|
||||
export NIXOS_OZONE_WL=1;
|
||||
export MOZ_ENABLE_WAYLAND=1;
|
||||
export MOZ_USE_XINPUT2=1;
|
||||
export XDG_SESSION_TYPE=wayland;
|
||||
export XDG_CURRENT_DESKTOP=sway;
|
||||
|
||||
# sdl
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
|
||||
# qt
|
||||
export QT_QPA_PLATFORM=wayland-egl
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||
|
||||
# java
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on";
|
||||
|
||||
''
|
||||
+ optionalString nvidia.enable ''
|
||||
# nvidia
|
||||
export WLR_RENDERER=vulkan;
|
||||
# export LIBVA_DRIVER_NAME,nvidia;
|
||||
# export GBM_BACKEND=nvidia-drm;
|
||||
export __GL_GSYNC_ALLOWED=0;
|
||||
export __GL_VRR_ALLOWED=0;
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia;
|
||||
export WLR_NO_HARDWARE_CURSORS=1;
|
||||
|
||||
# xwayland compat
|
||||
export XWAYLAND_NO_GLAMOR=1;
|
||||
'';
|
||||
config = {
|
||||
modifier = "Mod4";
|
||||
terminal = "${config.programs.kitty.package}/bin/kitty";
|
||||
menu = "${pkgs.wofi}/bin/wofi";
|
||||
# TODO for some reason bar only works when used with exec
|
||||
bars = [ ];
|
||||
startup = with pkgs; [
|
||||
# TODO activate with systemd prbly requires a graphical.target?
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP"; }
|
||||
# { command = "${dbus}/bin/dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway"; }
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user stop xdg-desktop-portal xdg-desktop-portal-wlr"; }
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user start xdg-desktop-portal xdg-desktop-portal-wlr"; }
|
||||
# { command = "${dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK"; }
|
||||
{
|
||||
command = "${config.programs.waybar.package}/bin/waybar -c ${config.xdg.configHome}/waybar/swaybar.json -s ${config.xdg.configHome}/waybar/swaybar.css";
|
||||
}
|
||||
{ command = "${dbus}/bin/dbus-update-activation-environment --all"; }
|
||||
{ command = "${kanshi}/bin/kanshi"; }
|
||||
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
|
||||
{ command = "${blueman}/bin/blueman-applet"; }
|
||||
{ command = "${udiskie}/bin/udiskie --tray"; }
|
||||
{ command = "${swaynotificationcenter}/bin/swaync"; }
|
||||
{ command = "${nextcloud-client}/bin/nextcloud"; }
|
||||
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
|
||||
{ command = "${system-config-printer}/bin/system-config-printer-applet"; }
|
||||
{ command = "${emote}/bin/emote"; }
|
||||
{ command = "${polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; }
|
||||
];
|
||||
input = {
|
||||
"2:7:SynPS/2_Synaptics_TouchPad" = {
|
||||
accel_profile = "flat";
|
||||
dwt = "enabled";
|
||||
dwtp = "enabled";
|
||||
tap = "enabled";
|
||||
natural_scroll = "enabled";
|
||||
middle_emulation = "enabled";
|
||||
scroll_factor = "0.3";
|
||||
};
|
||||
"2:10:TPPS/2_IBM_TrackPoint" = {
|
||||
accel_profile = "flat";
|
||||
scroll_factor = "0.5";
|
||||
};
|
||||
};
|
||||
output = {
|
||||
"*".bg = "${common.wallpaper.default} fill";
|
||||
};
|
||||
left = "h";
|
||||
down = "j";
|
||||
up = "k";
|
||||
right = "l";
|
||||
|
||||
keybindings = {
|
||||
"${cfg.modifier}+Ctrl+Shift+l" = "exec ${pkgs.swaylock-effects}/bin/swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 --ring-color ffffff --key-hl-color ${common.colorschemes.default._black} --line-color 00000000 --inside-color 00000088 --inside-ver-color ${common.colorschemes.default._white} --separator-color 00000000 --text-color ${common.colorschemes.default._white} --fade-in 0.1";
|
||||
|
||||
# Basics
|
||||
"${cfg.modifier}+Return" = "exec ${cfg.terminal}";
|
||||
"${cfg.modifier}+q" = "kill";
|
||||
"${cfg.modifier}+Space" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+Shift+c" = "reload";
|
||||
"${cfg.modifier}+Shift+q" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||
|
||||
# Focus
|
||||
"${cfg.modifier}+${cfg.left}" = "focus left";
|
||||
"${cfg.modifier}+${cfg.down}" = "focus down";
|
||||
"${cfg.modifier}+${cfg.up}" = "focus up";
|
||||
"${cfg.modifier}+${cfg.right}" = "focus right";
|
||||
|
||||
"${cfg.modifier}+p" = "focus output left";
|
||||
"${cfg.modifier}+n" = "focus output right";
|
||||
|
||||
# Moving
|
||||
"${cfg.modifier}+Shift+${cfg.left}" = "move left";
|
||||
"${cfg.modifier}+Shift+${cfg.down}" = "move down";
|
||||
"${cfg.modifier}+Shift+${cfg.up}" = "move up";
|
||||
"${cfg.modifier}+Shift+${cfg.right}" = "move right";
|
||||
|
||||
# Workspaces
|
||||
"${cfg.modifier}+1" = "workspace number 1";
|
||||
"${cfg.modifier}+2" = "workspace number 2";
|
||||
"${cfg.modifier}+3" = "workspace number 3";
|
||||
"${cfg.modifier}+4" = "workspace number 4";
|
||||
"${cfg.modifier}+5" = "workspace number 5";
|
||||
"${cfg.modifier}+6" = "workspace number 6";
|
||||
"${cfg.modifier}+7" = "workspace number 7";
|
||||
"${cfg.modifier}+8" = "workspace number 8";
|
||||
"${cfg.modifier}+9" = "workspace number 9";
|
||||
"${cfg.modifier}+0" = "workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";
|
||||
"${cfg.modifier}+Shift+2" = "move container to workspace number 2";
|
||||
"${cfg.modifier}+Shift+3" = "move container to workspace number 3";
|
||||
"${cfg.modifier}+Shift+4" = "move container to workspace number 4";
|
||||
"${cfg.modifier}+Shift+5" = "move container to workspace number 5";
|
||||
"${cfg.modifier}+Shift+6" = "move container to workspace number 6";
|
||||
"${cfg.modifier}+Shift+7" = "move container to workspace number 7";
|
||||
"${cfg.modifier}+Shift+8" = "move container to workspace number 8";
|
||||
"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
|
||||
"${cfg.modifier}+Shift+0" = "move container to workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Control+${cfg.down}" = "workspace prev";
|
||||
"${cfg.modifier}+Control+${cfg.up}" = "workspace next";
|
||||
"${cfg.modifier}+Control+Shift+${cfg.down}" = "move workspace to output left";
|
||||
"${cfg.modifier}+Control+Shift+${cfg.up}" = "move workspace to output right";
|
||||
|
||||
# Splits
|
||||
"${cfg.modifier}+b" = "splith";
|
||||
"${cfg.modifier}+v" = "splitv";
|
||||
|
||||
# Layouts
|
||||
"${cfg.modifier}+s" = "layout stacking";
|
||||
"${cfg.modifier}+w" = "layout tabbed";
|
||||
"${cfg.modifier}+e" = "layout toggle split";
|
||||
"${cfg.modifier}+f" = "fullscreen toggle";
|
||||
|
||||
"${cfg.modifier}+a" = "focus parent";
|
||||
|
||||
"${cfg.modifier}+d" = "floating toggle";
|
||||
"${cfg.modifier}+Shift+d" = "focus mode_toggle";
|
||||
|
||||
# Scratchpad
|
||||
"${cfg.modifier}+Shift+minus" = "move scratchpad";
|
||||
"${cfg.modifier}+minus" = "scratchpad show";
|
||||
|
||||
# Resize mode
|
||||
"${cfg.modifier}+r" = "mode resize";
|
||||
|
||||
# Multimedia Keys
|
||||
"XF86AudioRaiseVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86AudioMicMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
|
||||
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
|
||||
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
|
||||
# Screenshot
|
||||
"Print" = "exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
|
||||
|
||||
# Programs
|
||||
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
|
||||
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
"${cfg.modifier}+period" = "exec ${pkgs.emote}/bin/emote";
|
||||
};
|
||||
fonts = {
|
||||
names = [ common.font ];
|
||||
style = "Bold";
|
||||
size = 12.0;
|
||||
};
|
||||
seat = {
|
||||
"*" = {
|
||||
xcursor_theme = "macOS-Monterey 32";
|
||||
};
|
||||
};
|
||||
window = {
|
||||
titlebar = false;
|
||||
border = 4;
|
||||
};
|
||||
colors = {
|
||||
focused = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
focusedInactive = {
|
||||
border = common.colorschemes.default.inactive;
|
||||
background = common.colorschemes.default.inactive;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactive;
|
||||
childBorder = common.colorschemes.default.inactive;
|
||||
};
|
||||
unfocused = {
|
||||
border = common.colorschemes.default.inactiveDark;
|
||||
background = common.colorschemes.default.inactiveDark;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactiveDark;
|
||||
childBorder = common.colorschemes.default.inactiveDark;
|
||||
};
|
||||
urgent = {
|
||||
border = common.colorschemes.default.alert;
|
||||
background = common.colorschemes.default.alert;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.black;
|
||||
childBorder = common.colorschemes.default.alert;
|
||||
};
|
||||
placeholder = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
for_window [title="Firefox — Sharing Indicator"] {
|
||||
floating enable
|
||||
}
|
||||
for_window [title="Bluetooth Devices"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [title="Volume Control"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="nm-connection-editor" title="Network Connections"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="thunderbird" title="Reminder"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="com.nextcloud.desktopclient.nextcloud" title="Nextcloud"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [title="Extension: \(Gopass Bridge\) - gopass bridge — Mozilla Firefox"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
|
||||
set $ddterm-id dropdown-terminal
|
||||
set $ddterm ${cfg.terminal} --class $ddterm-id
|
||||
set $ddterm-resize resize set 100ppt 40ppt, move position 0 0
|
||||
|
||||
# resize/move new dropdown terminal windows
|
||||
for_window [app_id="$ddterm-id"] {
|
||||
floating enable
|
||||
$ddterm-resize
|
||||
move to scratchpad
|
||||
scratchpad show
|
||||
}
|
||||
|
||||
# show existing or start new dropdown terminal
|
||||
bindsym ${cfg.modifier}+grave exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
|
||||
bindsym ${cfg.modifier}+Escape exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
|
||||
# ^-- resize again, case moving to different output
|
||||
|
||||
workspace 1
|
||||
'';
|
||||
};
|
||||
}
|
||||
72
modules/home-manager/gui/sway/kanshi.nix
Normal file
72
modules/home-manager/gui/sway/kanshi.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
|
||||
# TODO: profiles is deprecated
|
||||
profiles = {
|
||||
|
||||
nomad = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "LVDS-1";
|
||||
status = "enable";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
iroh = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "DP-3";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-2";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "2560,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-1";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "5120,0";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
station = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "LVDS-1";
|
||||
status = "disable";
|
||||
}
|
||||
{
|
||||
criteria = "DP-3";
|
||||
# criteria = "Dell Inc. DELL U2515H 9X2VY5490XUL";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-2";
|
||||
# criteria = "Dell Inc. DELL U2515H 9X2VY5C7138L";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "1920,0";
|
||||
}
|
||||
{
|
||||
criteria = "VGA-1";
|
||||
# criteria = "HJW VGA TO HDMI 0x00000100";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "3840,0";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
94
modules/home-manager/gui/sway/swaync/config.json
Normal file
94
modules/home-manager/gui/sway/swaync/config.json
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"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,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
"widgets": [
|
||||
"mpris",
|
||||
"volume",
|
||||
"backlight",
|
||||
"title",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 1,
|
||||
"text": "Notification Center"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 12
|
||||
},
|
||||
"volume": {
|
||||
"label": " "
|
||||
},
|
||||
"backlight": {
|
||||
"label": " "
|
||||
},
|
||||
"buttons-grid": {
|
||||
"actions": [
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl poweroff"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl reboot"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaylock"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaymsg exit"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl suspend"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "iwgtk"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "blueman-manager"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "kooha"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5
modules/home-manager/gui/sway/swaync/default.nix
Normal file
5
modules/home-manager/gui/sway/swaync/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./swaync.nix
|
||||
];
|
||||
}
|
||||
340
modules/home-manager/gui/sway/swaync/style.css
Normal file
340
modules/home-manager/gui/sway/swaync/style.css
Normal file
|
|
@ -0,0 +1,340 @@
|
|||
@define-color cc-bg rgba(0, 0, 0, 1);
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
@define-color noti-bg rgb(17, 17, 27);
|
||||
@define-color noti-bg-darker rgb(43, 43, 57);
|
||||
@define-color noti-bg-hover rgb(27, 27, 43);
|
||||
@define-color noti-bg-focus rgba(27, 27, 27, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
@define-color text-color rgba(169, 177, 214, 1);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
* {
|
||||
font-family: DejaVuSansM Nerd Font;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 1;
|
||||
background: @noti-bg-darker
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 10px;
|
||||
padding: 0;
|
||||
border: 2px solid #7aa2f7
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 10px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all .15s ease-in-out;
|
||||
border: none
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: none;
|
||||
color: @text-color;
|
||||
transition: all .15s ease-in-out
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0;
|
||||
border-top: none;
|
||||
border-right: none
|
||||
}
|
||||
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px
|
||||
}
|
||||
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent
|
||||
}
|
||||
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: #fff;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.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: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
border: 1px solid #7aa2f7;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: .5
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25)
|
||||
}
|
||||
|
||||
.widget-title {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-title>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-title>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-dnd>switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.widget-dnd>switch:checked {
|
||||
background: @bg-selected
|
||||
}
|
||||
|
||||
.widget-dnd>switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.widget-label>label {
|
||||
font-size: 1.5rem;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.widget-mpris {
|
||||
color: @text-color;
|
||||
background: @noti-bg-darker;
|
||||
padding: 10px;
|
||||
margin: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-weight: 700;
|
||||
font-size: 1.25rem
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
font-size: x-large;
|
||||
padding: 8px;
|
||||
margin: 20px 10px 10px;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg-darker;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button {
|
||||
margin: 3px;
|
||||
background: #343b58;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
/* background: @noti-bg-hover; */
|
||||
color: rgba(158, 206, 106, 1)
|
||||
}
|
||||
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.topbar-buttons>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 4px 8px 8px;
|
||||
margin: 0 8px 8px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-backlight {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-inhibitors>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-inhibitors>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
13
modules/home-manager/gui/sway/swaync/swaync.nix
Normal file
13
modules/home-manager/gui/sway/swaync/swaync.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swaynotificationcenter
|
||||
libnotify
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"swaync/config.json".source = ./config.json;
|
||||
"swaync/style.css".source = ./style.css;
|
||||
};
|
||||
|
||||
}
|
||||
69
modules/home-manager/gui/sway/wofi.nix
Normal file
69
modules/home-manager/gui/sway/wofi.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
show = "drun";
|
||||
allow_images = true;
|
||||
image_size = 24;
|
||||
no_actions = true;
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
font-family: '${common.font}', monospace;
|
||||
font-size: ${common.font-size}px;
|
||||
color: ${common.colorschemes.default.black};
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#input {
|
||||
background-color: ${common.colorschemes.default.active};
|
||||
border: 5px;
|
||||
border-color: ${common.colorschemes.default.activeDark};
|
||||
border-radius: 0px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
background-color: ${common.colorschemes.default.active};
|
||||
border: 5px;
|
||||
border-color: ${common.colorschemes.default.activeDark};
|
||||
border-radius: 0px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#entry #text {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
|
||||
#entry:selected #img {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
396
modules/home-manager/gui/waybar.nix
Normal file
396
modules/home-manager/gui/waybar.nix
Normal file
|
|
@ -0,0 +1,396 @@
|
|||
{ pkgs, nixosConfig, ... }:
|
||||
let
|
||||
check-battery = pkgs.writeShellScript "check-battery" ''
|
||||
bat=/sys/class/power_supply/BAT0
|
||||
CRIT=''${1:-15}
|
||||
|
||||
FILE=~/.config/waybar/.notified.target
|
||||
|
||||
stat=$(cat $bat/status)
|
||||
perc=$(cat $bat/capacity)
|
||||
|
||||
if [[ $perc -le $CRIT ]] && [[ $stat == "Discharging" ]]; then
|
||||
if [[ ! -f "$FILE" ]]; then
|
||||
notify-send --urgency=critical --icon=dialog-warning "Battery Low" "Current charge: $perc%"
|
||||
touch $FILE
|
||||
fi
|
||||
elif [[ -f "$FILE" ]]; then
|
||||
rm $FILE
|
||||
fi
|
||||
'';
|
||||
tailscale-status = pkgs.writeShellScript "tailscale-status" ''
|
||||
if ${nixosConfig.services.tailscale.package}/bin/tailscale status > /dev/null 2>&1; then
|
||||
echo " "
|
||||
else
|
||||
echo " "
|
||||
fi
|
||||
'';
|
||||
tailscale-toggle = pkgs.writeShellScript "tailscale-toggle" ''
|
||||
if ${nixosConfig.services.tailscale.package}/bin/tailscale status > /dev/null 2>&1; then
|
||||
pkexec ${nixosConfig.services.tailscale.package}/bin/tailscale down
|
||||
else
|
||||
pkexec ${nixosConfig.services.tailscale.package}/bin/tailscale up --accept-routes --exit-node=j4m35-bl0nd
|
||||
fi
|
||||
'';
|
||||
in
|
||||
{
|
||||
xdg.configFile = {
|
||||
"waybar/swaybar.json".text = ''
|
||||
[
|
||||
{
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{percent}% {icon} ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon} ",
|
||||
"format-alt": "{time} {icon} ",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"format-plugged": "{capacity}% ",
|
||||
"on-update": "${check-battery}",
|
||||
"states": {
|
||||
"critical": 15,
|
||||
"warning": 30
|
||||
}
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%a %b %d %H:%M}",
|
||||
"timezones": [
|
||||
"Europe/Berlin"
|
||||
],
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||
},
|
||||
"custom/mem": {
|
||||
"exec": "free -h | awk '/Mem:/{printf $3}'",
|
||||
"format": "{} ",
|
||||
"interval": 3,
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/separator": {
|
||||
"format": "|",
|
||||
"interval": "once",
|
||||
"tooltip": false
|
||||
},
|
||||
"disk": {
|
||||
"format": "{specific_free:0.0f}GB ",
|
||||
"unit": "GB"
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"sway/window": {
|
||||
"format": "{title}",
|
||||
},
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"persistent-workspaces": {
|
||||
"1": [],
|
||||
"2": [],
|
||||
"3": [],
|
||||
"4": [],
|
||||
"5": [],
|
||||
"6": [],
|
||||
"7": [],
|
||||
"8": [],
|
||||
"9": [],
|
||||
"10": [],
|
||||
}
|
||||
},
|
||||
"layer": "top",
|
||||
"modules-center": [
|
||||
],
|
||||
"modules-left": [
|
||||
"sway/workspaces",
|
||||
"sway/window",
|
||||
"sway/mode"
|
||||
],
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"network",
|
||||
"custom/tailscale",
|
||||
"custom/separator",
|
||||
"pulseaudio",
|
||||
"custom/separator",
|
||||
"disk",
|
||||
"custom/separator",
|
||||
"custom/mem",
|
||||
"custom/separator",
|
||||
"temperature",
|
||||
"custom/separator",
|
||||
"backlight",
|
||||
"custom/separator",
|
||||
"battery",
|
||||
"custom/separator",
|
||||
"clock"
|
||||
],
|
||||
"name": "swaybar",
|
||||
"network": {
|
||||
"format": "{ifname}",
|
||||
"format-disconnected": " ",
|
||||
"format-ethernet": "eth ",
|
||||
"format-wifi": "{signalStrength}% ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"tooltip-format-ethernet": "{ifname} ",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) "
|
||||
},
|
||||
"custom/tailscale": {
|
||||
"exec": "${tailscale-status}",
|
||||
"interval": 1,
|
||||
"on-click": "${tailscale-toggle}",
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-icons": {
|
||||
"car": "",
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"hands-free": "",
|
||||
"headphone": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": ""
|
||||
},
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": " ",
|
||||
"on-click": "${pkgs.pavucontrol}/bin/pavucontrol",
|
||||
"reverse-scrolling": 1
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "{temperatureC}°C {icon} ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"tooltip": false
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"show-passive-items": true,
|
||||
"spacing": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
'';
|
||||
|
||||
"waybar/swaybar.css".text = ''
|
||||
window.swaybar,
|
||||
window.swaybar * {
|
||||
border: none;
|
||||
font-family: DejaVuSansM Nerd Font;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window.swaybar #custom-separator {
|
||||
padding-right: 6px;
|
||||
color: #d3d3d3;
|
||||
}
|
||||
|
||||
window.swaybar#waybar {
|
||||
background: linear-gradient(to bottom, #ffffff, #f9f9f9);
|
||||
}
|
||||
|
||||
window.swaybar#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
margin-right: 8px;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
padding: 2px;
|
||||
/* font-size: 18px; */
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.empty {
|
||||
color: #7c818c;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.persistent {
|
||||
/* font-size: 12px; */
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.visible {
|
||||
color: black;
|
||||
/* font-size: 18px; */
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.focused {
|
||||
background: lightgray;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button:hover {
|
||||
color: white;
|
||||
background: black;
|
||||
}
|
||||
|
||||
window.swaybar #window {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #mode {
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #tray {
|
||||
margin-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: white;
|
||||
background: rgb(66, 118, 185);
|
||||
}
|
||||
|
||||
window.swaybar #network {
|
||||
padding-left: 6px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #custom-tailscale {
|
||||
padding-right: 6px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #pulseaudio {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #pulseaudio.muted {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
window.swaybar #disk {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #custom-mem {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #temperature {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #temperature.critical {
|
||||
color: #eb4d4b;
|
||||
}
|
||||
|
||||
window.swaybar #backlight {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #battery {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #battery.charging {
|
||||
color: #ffffff;
|
||||
background-color: #26A65B;
|
||||
}
|
||||
|
||||
window.swaybar #battery.warning:not(.charging) {
|
||||
background-color: #ffbe61;
|
||||
color: black;
|
||||
}
|
||||
|
||||
window.swaybar #battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
window.swaybar #clock {
|
||||
padding-right: 6px;
|
||||
margin-right: 8px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue