configure sway (this is a huge rice)
This commit is contained in:
parent
4316165e9d
commit
5d1408254a
|
@ -10,14 +10,6 @@ in {
|
||||||
options.local.apps.firefox = {
|
options.local.apps.firefox = {
|
||||||
enable = mkEnableOption "firefox settings";
|
enable = mkEnableOption "firefox settings";
|
||||||
|
|
||||||
workspace = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
description = ''
|
|
||||||
i3 Workspace in which Firefox should open. If not set, Firefox will not open at startup
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
makeDefaultBrowser = mkOption {
|
makeDefaultBrowser = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
@ -30,10 +22,6 @@ in {
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{
|
{
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
xsession.windowManager.i3.config.startup = optional (cfg.workspace != null) {
|
|
||||||
command = "${lib.getExe pkgs.i3-gaps} 'workspace ${cfg.workspace}; exec ${lib.getExe pkgs.firefox}'";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf cfg.makeDefaultBrowser {
|
(mkIf cfg.makeDefaultBrowser {
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.local.gui;
|
|
||||||
in {
|
|
||||||
programs.autorandr = {
|
|
||||||
profiles."default" = {
|
|
||||||
fingerprint =
|
|
||||||
mapAttrs
|
|
||||||
(monitorId: monitor: monitor.fingerprint)
|
|
||||||
cfg.monitors;
|
|
||||||
|
|
||||||
config =
|
|
||||||
mapAttrs (
|
|
||||||
monitorId:
|
|
||||||
filterAttrs
|
|
||||||
(k: v:
|
|
||||||
!elem k [
|
|
||||||
#list of options to exclude from this list
|
|
||||||
"fingerprint"
|
|
||||||
"initialI3Workspace"
|
|
||||||
"monitorId"
|
|
||||||
])
|
|
||||||
)
|
|
||||||
cfg.monitors;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -9,121 +9,66 @@ with lib; let
|
||||||
monitorType = {setName}: (
|
monitorType = {setName}: (
|
||||||
types.submodule ({name ? null, ...}: {
|
types.submodule ({name ? null, ...}: {
|
||||||
options = {
|
options = {
|
||||||
monitorId = mkOption {
|
width = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "DP-1";
|
default = "1920";
|
||||||
readOnly = true;
|
example = "1920";
|
||||||
internal = true;
|
|
||||||
};
|
};
|
||||||
primary = mkOption {
|
height = mkOption {
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "is primary monitor";
|
|
||||||
example = "true";
|
|
||||||
};
|
|
||||||
position = mkOption {
|
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "0x0";
|
default = "1080";
|
||||||
};
|
example = "1080";
|
||||||
mode = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "resolution";
|
|
||||||
default = "1920x1080";
|
|
||||||
example = "1920x1080";
|
|
||||||
};
|
};
|
||||||
rate = mkOption {
|
rate = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "refresh rate";
|
description = "refresh rate";
|
||||||
example = "143.85";
|
example = "143.85";
|
||||||
};
|
};
|
||||||
rotate = mkOption {
|
posX = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "normal";
|
description = "x axis position";
|
||||||
example = "left";
|
default = "0";
|
||||||
|
example = "0";
|
||||||
};
|
};
|
||||||
fingerprint = mkOption {
|
posY = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
example = "00ffffffffffff003669a03bd4040000231e0104a5341d783bd005ac5048a627125054bfcf00814081809500714f81c0b30001010101023a801871382d40582c450009252100001e0882805070384d400820f80c09252100001a000000fd003090b4b422010a202020202020000000fc004d53492047323443340a20202001a2020320f14d010304131f120211900e0f1d1e230907078301000065030c001000866f80a0703840403020350009252100001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9";
|
description = "y axis position";
|
||||||
|
default = "0";
|
||||||
|
example = "0";
|
||||||
};
|
};
|
||||||
initialI3Workspace = mkOption {
|
|
||||||
type = types.nullOr types.int;
|
|
||||||
default = null;
|
|
||||||
example = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = optionalAttrs setName {
|
|
||||||
# make this better later
|
|
||||||
monitorId = name;
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
in {
|
in {
|
||||||
options.local.gui = {
|
options.local.gui = {
|
||||||
enable = mkEnableOption "GUI settings";
|
enable = mkEnableOption "GUI settings";
|
||||||
primaryMonitor = mkOption {
|
|
||||||
type = monitorType {setName = false;};
|
|
||||||
readOnly = true;
|
|
||||||
internal = true;
|
|
||||||
};
|
|
||||||
monitors = mkOption {
|
monitors = mkOption {
|
||||||
type = types.attrsOf (monitorType {setName = true;});
|
type = types.attrsOf (monitorType {setName = true;});
|
||||||
};
|
};
|
||||||
displayBatteryLevel = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "show battery level on polybar";
|
|
||||||
example = "true";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./autorandr.nix
|
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./i3.nix
|
|
||||||
./polybar.nix
|
|
||||||
./startx.nix
|
|
||||||
./picom.nix
|
|
||||||
./theme.nix
|
./theme.nix
|
||||||
./sway.nix
|
./sway.nix
|
||||||
|
./waybar.nix
|
||||||
|
./wofi.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = let
|
config = mkIf cfg.enable {
|
||||||
primaryMonitors =
|
services = {
|
||||||
filter (monitor: monitor.primary)
|
mako.enable = true;
|
||||||
(attrValues cfg.monitors);
|
};
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion = length primaryMonitors == 1;
|
|
||||||
message = "Exactly one (1) primary monitor is requiered.";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
local.gui.primaryMonitor = head primaryMonitors;
|
xdg = {
|
||||||
|
enable = true;
|
||||||
xsession = {
|
mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
windowManager.i3.enable = true;
|
defaultApplications = {
|
||||||
};
|
"application/pdf" = with pkgs; ["qpdfview"];
|
||||||
|
"x-scheme-handler/file" = with pkgs; ["kitty"];
|
||||||
programs.autorandr.enable = true;
|
|
||||||
services = {
|
|
||||||
dunst.enable = true;
|
|
||||||
betterlockscreen.enable = true;
|
|
||||||
polybar.enable = true;
|
|
||||||
picom.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
mimeApps = {
|
|
||||||
enable = true;
|
|
||||||
defaultApplications = {
|
|
||||||
"application/pdf" = with pkgs; ["qpdfview"];
|
|
||||||
"x-scheme-handler/file" = with pkgs; ["kitty"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,38 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
defaultFonts = {
|
||||||
|
monospace = [
|
||||||
|
"JetBrains Mono"
|
||||||
|
"Noto Sans Mono CJK SC"
|
||||||
|
"Noto Sans Mono"
|
||||||
|
"Noto Color Emoji"
|
||||||
|
];
|
||||||
|
sansSerif = [
|
||||||
|
"Noto Sans"
|
||||||
|
"Noto Sans CJK SC"
|
||||||
|
"Noto Color Emoji"
|
||||||
|
];
|
||||||
|
serif = [
|
||||||
|
"Noto Serif"
|
||||||
|
"Noto Serif CJK SC"
|
||||||
|
"Noto Color Emoji"
|
||||||
|
];
|
||||||
|
emoji = ["Noto Color Emoji"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# this is probably not necessary since they are already installed in sys
|
||||||
|
# with fonts.packages buy im too lazy to check
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
jetbrains-mono
|
jetbrains-mono
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-emoji
|
||||||
|
noto-fonts-extra
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.droid-sans-mono
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
xsession.windowManager.i3 = {
|
|
||||||
package = pkgs.i3-gaps;
|
|
||||||
|
|
||||||
config = let
|
|
||||||
mod = "Mod4";
|
|
||||||
in {
|
|
||||||
modifier = mod;
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
names = ["JetBrains Mono"];
|
|
||||||
style = "Regular";
|
|
||||||
size = 8.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
gaps = {
|
|
||||||
inner = 10;
|
|
||||||
outer = -10;
|
|
||||||
};
|
|
||||||
|
|
||||||
window = {
|
|
||||||
hideEdgeBorders = "both";
|
|
||||||
titlebar = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
workspaceLayout = "tabbed";
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
focused = {
|
|
||||||
background = "#222222";
|
|
||||||
border = "#4c7899";
|
|
||||||
childBorder = "#222222";
|
|
||||||
indicator = "#292d2e";
|
|
||||||
text = "#888888";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# mkOptionDefault hace que se ponga la config por default
|
|
||||||
# y se sobreescriba las cosas que pongo acá
|
|
||||||
# NO QUITARLO. ver man home-configuration.nix
|
|
||||||
keybindings = mkOptionDefault {
|
|
||||||
"${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}";
|
|
||||||
"${mod}+Tab" = "focus right";
|
|
||||||
"${mod}+Shift+Tab" = "focus left";
|
|
||||||
"${mod}+Shift+s" = "exec ${lib.getExe pkgs.maim} -s -u | ${lib.getExe pkgs.xclip} -selection clipboard -t image/png -i";
|
|
||||||
"${mod}+Shift+w" = "move workspace to output right";
|
|
||||||
"${mod}+l" = "exec ${lib.getExe pkgs.betterlockscreen} -l";
|
|
||||||
};
|
|
||||||
|
|
||||||
startup = [
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.xss-lock} --transfer-sleep-lock -- ${lib.getExe pkgs.i3lock} --nofork";
|
|
||||||
notification = false;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.networkmanagerapplet}";
|
|
||||||
notification = false;
|
|
||||||
}
|
|
||||||
#todo: sería nice hostear esta imagen en el server y fetchearla si no existe
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.feh} --bg-fill ${config.home.homeDirectory}/Pictures/wallpapers/jupiter.png";
|
|
||||||
notification = false;
|
|
||||||
always = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#todo: move this to telegram module
|
|
||||||
command = "${lib.getExe pkgs.i3-gaps} 'workspace 2; exec ${lib.getExe pkgs.tdesktop}'";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.i3-gaps} 'workspace 2; exec ${lib.getExe pkgs.gajim}'";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${pkgs.systemd}/bin/systemctl --user restart polybar.service";
|
|
||||||
notification = false;
|
|
||||||
always = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.autorandr} -c";
|
|
||||||
notification = false;
|
|
||||||
always = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
workspaceOutputAssign =
|
|
||||||
mapAttrsToList (
|
|
||||||
monitorId: v:
|
|
||||||
{
|
|
||||||
output = monitorId;
|
|
||||||
}
|
|
||||||
// optionalAttrs (v.initialI3Workspace != null) {
|
|
||||||
workspace = toString v.initialI3Workspace;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
config.local.gui.monitors;
|
|
||||||
bars = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.picom = {
|
|
||||||
fade = true;
|
|
||||||
fadeSteps = [0.1 0.1];
|
|
||||||
fadeDelta = 10;
|
|
||||||
settings = {
|
|
||||||
animations = [
|
|
||||||
{
|
|
||||||
triggers = [
|
|
||||||
"open"
|
|
||||||
"show"
|
|
||||||
];
|
|
||||||
|
|
||||||
preset = "appear";
|
|
||||||
duration = "1";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
triggers = [
|
|
||||||
"close"
|
|
||||||
"hide"
|
|
||||||
];
|
|
||||||
|
|
||||||
preset = "disappear";
|
|
||||||
duration = "1";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
triggers = [
|
|
||||||
"geometry"
|
|
||||||
];
|
|
||||||
preset = "geometry-change";
|
|
||||||
duration = "1";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,460 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
services.polybar = {
|
|
||||||
package = pkgs.polybarFull;
|
|
||||||
script = ''
|
|
||||||
# Terminate already running bar instances
|
|
||||||
killall -q polybar
|
|
||||||
|
|
||||||
# Wait until the processes have been shut down
|
|
||||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
|
||||||
|
|
||||||
# Launch Polybar, using default config location ~/.config/polybar/config
|
|
||||||
polybar -r main & polybar -r secondary &
|
|
||||||
'';
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"colors" = {
|
|
||||||
# background = "\${xrdb:color0:#222}";
|
|
||||||
background = "#AA000000";
|
|
||||||
background-alt = "#00000000";
|
|
||||||
# foreground = "\${xrdb:color7:#222}";
|
|
||||||
foreground = "#ffffff";
|
|
||||||
foreground-alt = "#ffffff";
|
|
||||||
primary = "#ffffff";
|
|
||||||
secondary = "#e60053";
|
|
||||||
alert = "#bd2c40";
|
|
||||||
};
|
|
||||||
|
|
||||||
"bar/main" = {
|
|
||||||
monitor = config.local.gui.primaryMonitor.monitorId;
|
|
||||||
width = "100%";
|
|
||||||
height = 30;
|
|
||||||
offset-x = "0%";
|
|
||||||
offset-y = "0%";
|
|
||||||
radius = 0.0;
|
|
||||||
fixed-center = false;
|
|
||||||
|
|
||||||
background = "\${colors.background}";
|
|
||||||
foreground = "\${colors.foreground}";
|
|
||||||
|
|
||||||
line-size = 1;
|
|
||||||
line-color = "#f0000000";
|
|
||||||
|
|
||||||
border-size = 0;
|
|
||||||
border-color = "#00000000";
|
|
||||||
|
|
||||||
padding-left = 0;
|
|
||||||
padding-right = 0;
|
|
||||||
|
|
||||||
module-margin-left = 1;
|
|
||||||
module-margin-right = 1;
|
|
||||||
|
|
||||||
# font-0 = "fixed:pixelsize=10;1";
|
|
||||||
font-0 = "JetBrains Mono Light:size=10;0";
|
|
||||||
font-1 = "unifont:fontformat=truetype:size=8:antialias=false;0";
|
|
||||||
font-2 = "siji:pixelsize=10;1";
|
|
||||||
# font-2 = "FontAwesome5Free:style=Regular:size=10;4";
|
|
||||||
|
|
||||||
modules-left = "i3";
|
|
||||||
modules-center = "xwindow";
|
|
||||||
modules-right = "xkeyboard pulseaudio filesystem memory cpu temperature gputemperature nvmetemperature wlan eth date semanatec";
|
|
||||||
separator = "|";
|
|
||||||
|
|
||||||
tray-position = "right";
|
|
||||||
tray-padding = 2;
|
|
||||||
|
|
||||||
# To allow other windows to be placed above the bar, or to avoid having the bar visible when in fullscreen mode,
|
|
||||||
# you need to use the following two parameters. Note that it will tell the window manager to back off so no
|
|
||||||
# area will be reserved, etc.
|
|
||||||
#
|
|
||||||
# wm-restack = "i3";
|
|
||||||
# override-redirect = true;
|
|
||||||
|
|
||||||
cursor-click = "pointer";
|
|
||||||
cursor-scroll = "ns-resize";
|
|
||||||
};
|
|
||||||
|
|
||||||
"bar/secondary" = {
|
|
||||||
monitor = head (attrNames (filterAttrs (monitorId: v:
|
|
||||||
!v.primary)
|
|
||||||
config.local.gui.monitors)); # this is bad. will fail if more than 2 monitors. this sets all monitors other than the primary one for this bar.
|
|
||||||
"inherit" = "bar/main";
|
|
||||||
|
|
||||||
modules-left = "i3";
|
|
||||||
modules-center = "xwindow";
|
|
||||||
modules-right = "xkeyboard pulseaudio date";
|
|
||||||
tray-position = "none";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/xwindow" = {
|
|
||||||
type = "internal/xwindow";
|
|
||||||
label = "%title:0:30:...%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/xkeyboard" = {
|
|
||||||
type = "internal/xkeyboard";
|
|
||||||
blacklist-0 = "num lock";
|
|
||||||
|
|
||||||
format-prefix = "";
|
|
||||||
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
|
|
||||||
label-layout = "%layout%";
|
|
||||||
|
|
||||||
label-indicator-padding = 2;
|
|
||||||
label-indicator-margin = 1;
|
|
||||||
label-indicator-background = "\${colors.secondary}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/filesystem" = {
|
|
||||||
type = "internal/fs";
|
|
||||||
interval = 10;
|
|
||||||
|
|
||||||
mount-0 = "/";
|
|
||||||
|
|
||||||
label-mounted = "%{F#0a81f5}%mountpoint%%{F-}: %used%/%total%";
|
|
||||||
label-unmounted = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/i3" = {
|
|
||||||
type = "internal/i3";
|
|
||||||
format = "<label-state> <label-mode>";
|
|
||||||
index-sort = true;
|
|
||||||
wrapping-scroll = false;
|
|
||||||
|
|
||||||
# Only show workspaces on the same output as the bar
|
|
||||||
# pin-workspaces = true
|
|
||||||
|
|
||||||
label-mode-padding = 1;
|
|
||||||
label-mode-foreground = "#000";
|
|
||||||
label-mode-background = "\${colors.primary}";
|
|
||||||
|
|
||||||
# focused = Active workspace on focused monitor
|
|
||||||
label-focused = "%index%";
|
|
||||||
label-focused-background = "\${colors.background}";
|
|
||||||
label-focused-underline = "\${colors.primary}";
|
|
||||||
label-focused-padding = 1;
|
|
||||||
|
|
||||||
# unfocused = Inactive workspace on any monitor
|
|
||||||
label-unfocused = "%index%";
|
|
||||||
label-unfocused-padding = 1;
|
|
||||||
|
|
||||||
# visible = Active workspace on unfocused monitor
|
|
||||||
label-visible = "%index%";
|
|
||||||
label-visible-background = "\${self.label-focused-background}";
|
|
||||||
label-visible-underline = "\${self.label-focused-underline}";
|
|
||||||
label-visible-padding = "\${self.label-focused-padding}";
|
|
||||||
|
|
||||||
# urgent = Workspace with urgency hint set
|
|
||||||
label-urgent = "%index%";
|
|
||||||
label-urgent-background = "\${colors.alert}";
|
|
||||||
label-urgent-padding = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/xbacklight" = {
|
|
||||||
type = "internal/xbacklight";
|
|
||||||
|
|
||||||
format = "<label> <bar>";
|
|
||||||
label = "BL";
|
|
||||||
|
|
||||||
bar-width = 10;
|
|
||||||
bar-indicator = "|";
|
|
||||||
bar-indicator-foreground = "#fff";
|
|
||||||
bar-indicator-font = 2;
|
|
||||||
bar-fill = "─";
|
|
||||||
bar-fill-font = 2;
|
|
||||||
bar-fill-foreground = "#9f78e1";
|
|
||||||
bar-empty = "─";
|
|
||||||
bar-empty-font = 2;
|
|
||||||
bar-empty-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/backlight-acpi" = {
|
|
||||||
"inherit" = "module/xbacklight";
|
|
||||||
type = "internal/backlight";
|
|
||||||
card = "intel_backlight";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/cpu" = {
|
|
||||||
type = "internal/cpu";
|
|
||||||
interval = 2;
|
|
||||||
format-prefix = "cpu ";
|
|
||||||
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
label = "%percentage:2%%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/memory" = {
|
|
||||||
type = "internal/memory";
|
|
||||||
interval = 2;
|
|
||||||
format-prefix = "mem ";
|
|
||||||
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
label = "%percentage_used%%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/wlan" = {
|
|
||||||
type = "internal/network";
|
|
||||||
interface = "wlp7s0";
|
|
||||||
interval = 3.0;
|
|
||||||
|
|
||||||
format-connected = "<ramp-signal> <label-connected>";
|
|
||||||
label-connected = "%essid%";
|
|
||||||
|
|
||||||
format-disconnected = "";
|
|
||||||
# format-disconnected = "<label-disconnected>";
|
|
||||||
# format-disconnected-underline = "\${self.format-connected-underline}";
|
|
||||||
# label-disconnected = "%ifname% disconnected";
|
|
||||||
# label-disconnected-foreground = "\${colors.foreground-alt}";
|
|
||||||
|
|
||||||
ramp-signal-0 = "";
|
|
||||||
ramp-signal-1 = "";
|
|
||||||
ramp-signal-2 = "";
|
|
||||||
ramp-signal-3 = "";
|
|
||||||
ramp-signal-4 = "";
|
|
||||||
ramp-signal-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/eth" = {
|
|
||||||
type = "internal/network";
|
|
||||||
interface = "enp8s0";
|
|
||||||
interval = 3.0;
|
|
||||||
|
|
||||||
format-connected-prefix = "";
|
|
||||||
format-connected-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
label-connected = "%local_ip%";
|
|
||||||
|
|
||||||
format-disconnected = "";
|
|
||||||
# format-disconnected = "<label-disconnected>";
|
|
||||||
# format-disconnected-underline = "\${self.format-connected-underline}";
|
|
||||||
# label-disconnected = "%ifname% disconnected";
|
|
||||||
# label-disconnected-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/date" = {
|
|
||||||
type = "internal/date";
|
|
||||||
interval = 1;
|
|
||||||
|
|
||||||
date = " %d/%m/%Y";
|
|
||||||
date-alt = " %c";
|
|
||||||
|
|
||||||
time = "%H:%M";
|
|
||||||
time-alt = " [%s]";
|
|
||||||
|
|
||||||
format-prefix = "";
|
|
||||||
format-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
|
|
||||||
label = "%date% %time%";
|
|
||||||
};
|
|
||||||
|
|
||||||
# "module/semanatec" = {
|
|
||||||
# type = "custom/script"
|
|
||||||
# exec = "/home/fabian/bin/semanatec/target/release/semanatec"
|
|
||||||
# interval = 3600
|
|
||||||
# format-prefix = ""
|
|
||||||
# };
|
|
||||||
|
|
||||||
"module/pulseaudio" = {
|
|
||||||
type = "internal/pulseaudio";
|
|
||||||
|
|
||||||
format-volume = "<label-volume>";
|
|
||||||
label-volume = "vol %percentage%%";
|
|
||||||
label-volume-foreground = "\${root.foreground}";
|
|
||||||
|
|
||||||
label-muted = "vol 0%";
|
|
||||||
label-muted-foreground = "\${root.foreground}";
|
|
||||||
|
|
||||||
bar-volume-width = 10;
|
|
||||||
bar-volume-foreground-0 = "#55aa55";
|
|
||||||
bar-volume-foreground-1 = "#55aa55";
|
|
||||||
bar-volume-foreground-2 = "#55aa55";
|
|
||||||
bar-volume-foreground-3 = "#55aa55";
|
|
||||||
bar-volume-foreground-4 = "#55aa55";
|
|
||||||
bar-volume-foreground-5 = "#f5a70a";
|
|
||||||
bar-volume-foreground-6 = "#ff5555";
|
|
||||||
bar-volume-gradient = false;
|
|
||||||
bar-volume-indicator = "|";
|
|
||||||
bar-volume-indicator-font = 2;
|
|
||||||
bar-volume-fill = "─";
|
|
||||||
bar-volume-fill-font = 2;
|
|
||||||
bar-volume-empty = "─";
|
|
||||||
bar-volume-empty-font = 2;
|
|
||||||
bar-volume-empty-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/alsa" = {
|
|
||||||
type = "internal/alsa";
|
|
||||||
|
|
||||||
format-volume = "<label-volume> <bar-volume>";
|
|
||||||
label-volume = "VOL";
|
|
||||||
label-volume-foreground = "\${root.foreground}";
|
|
||||||
|
|
||||||
format-muted-prefix = "vol ";
|
|
||||||
format-muted-foreground = "\${colors.foreground-alt}";
|
|
||||||
label-muted = "sound muted";
|
|
||||||
|
|
||||||
bar-volume-width = 10;
|
|
||||||
bar-volume-foreground-0 = "#55aa55";
|
|
||||||
bar-volume-foreground-1 = "#55aa55";
|
|
||||||
bar-volume-foreground-2 = "#55aa55";
|
|
||||||
bar-volume-foreground-3 = "#55aa55";
|
|
||||||
bar-volume-foreground-4 = "#55aa55";
|
|
||||||
bar-volume-foreground-5 = "#f5a70a";
|
|
||||||
bar-volume-foreground-6 = "#ff5555";
|
|
||||||
bar-volume-gradient = false;
|
|
||||||
bar-volume-indicator = "|";
|
|
||||||
bar-volume-indicator-font = 2;
|
|
||||||
bar-volume-fill = "─";
|
|
||||||
bar-volume-fill-font = 2;
|
|
||||||
bar-volume-empty = "─";
|
|
||||||
bar-volume-empty-font = 2;
|
|
||||||
bar-volume-empty-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/battery" = {
|
|
||||||
type = "internal/battery";
|
|
||||||
battery = "BAT0";
|
|
||||||
adapter = "ADP1";
|
|
||||||
full-at = 98;
|
|
||||||
|
|
||||||
format-charging = "<animation-charging> <label-charging>";
|
|
||||||
format-charging-underline = "#ffb52a";
|
|
||||||
|
|
||||||
format-discharging = "<animation-discharging> <label-discharging>";
|
|
||||||
format-discharging-underline = "\${self.format-charging-underline}";
|
|
||||||
|
|
||||||
format-full-prefix = " ";
|
|
||||||
format-full-prefix-foreground = "\${colors.foreground-alt}";
|
|
||||||
format-full-underline = "\${self.format-charging-underline}";
|
|
||||||
|
|
||||||
ramp-capacity-0 = "";
|
|
||||||
ramp-capacity-1 = "";
|
|
||||||
ramp-capacity-2 = "";
|
|
||||||
ramp-capacity-foreground = "\${colors.foreground-alt}";
|
|
||||||
|
|
||||||
animation-charging-0 = "";
|
|
||||||
animation-charging-1 = "";
|
|
||||||
animation-charging-2 = "";
|
|
||||||
animation-charging-foreground = "\${colors.foreground-alt}";
|
|
||||||
animation-charging-framerate = 750;
|
|
||||||
|
|
||||||
animation-discharging-0 = "";
|
|
||||||
animation-discharging-1 = "";
|
|
||||||
animation-discharging-2 = "";
|
|
||||||
animation-discharging-foreground = "\${colors.foreground-alt}";
|
|
||||||
animation-discharging-framerate = 750;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/temperature" = {
|
|
||||||
type = "internal/temperature";
|
|
||||||
warn-temperature = 60;
|
|
||||||
hwmon-path = "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp2_input";
|
|
||||||
|
|
||||||
format = "<ramp> <label>";
|
|
||||||
format-warn = "<ramp> <label-warn>";
|
|
||||||
|
|
||||||
label = "cpu %temperature-c%";
|
|
||||||
label-warn = "cpu %temperature-c%";
|
|
||||||
label-warn-foreground = "\${colors.secondary}";
|
|
||||||
|
|
||||||
ramp-0 = "";
|
|
||||||
ramp-1 = "";
|
|
||||||
ramp-2 = "";
|
|
||||||
ramp-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/gputemperature" = {
|
|
||||||
type = "internal/temperature";
|
|
||||||
warn-temperature = 60;
|
|
||||||
hwmon-path = "/sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0/hwmon/hwmon3/temp1_input";
|
|
||||||
|
|
||||||
format = "<ramp> <label>";
|
|
||||||
format-warn = "<ramp> <label-warn>";
|
|
||||||
|
|
||||||
label = "gpu %temperature-c%";
|
|
||||||
label-warn = "gpu %temperature-c%";
|
|
||||||
label-warn-foreground = "\${colors.secondary}";
|
|
||||||
|
|
||||||
ramp-0 = "";
|
|
||||||
ramp-1 = "";
|
|
||||||
ramp-2 = "";
|
|
||||||
ramp-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/nvmetemperature" = {
|
|
||||||
type = "internal/temperature";
|
|
||||||
warn-temperature = 60;
|
|
||||||
hwmon-path = "/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/hwmon/hwmon0/temp1_input";
|
|
||||||
|
|
||||||
format = "<ramp> <label>";
|
|
||||||
format-warn = "<ramp> <label-warn>";
|
|
||||||
|
|
||||||
label = "M.2 %temperature-c%";
|
|
||||||
label-warn = "M.2 %temperature-c%";
|
|
||||||
label-warn-foreground = "\${colors.secondary}";
|
|
||||||
|
|
||||||
ramp-0 = "";
|
|
||||||
ramp-1 = "";
|
|
||||||
ramp-2 = "";
|
|
||||||
ramp-foreground = "\${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/powermenu" = {
|
|
||||||
type = "custom/menu";
|
|
||||||
|
|
||||||
expand-right = true;
|
|
||||||
|
|
||||||
format-spacing = 1;
|
|
||||||
|
|
||||||
label-open = "";
|
|
||||||
label-open-foreground = "\${colors.secondary}";
|
|
||||||
label-close = " cancel";
|
|
||||||
label-close-foreground = "\${colors.secondary}";
|
|
||||||
label-separator = "|";
|
|
||||||
label-separator-foreground = "\${colors.foreground-alt}";
|
|
||||||
|
|
||||||
menu-0-0 = "reboot";
|
|
||||||
menu-0-0-exec = "menu-open-1";
|
|
||||||
menu-0-1 = "power off";
|
|
||||||
menu-0-1-exec = "menu-open-2";
|
|
||||||
|
|
||||||
menu-1-0 = "cancel";
|
|
||||||
menu-1-0-exec = "menu-open-0";
|
|
||||||
menu-1-1 = "reboot";
|
|
||||||
menu-1-1-exec = "sudo reboot";
|
|
||||||
|
|
||||||
menu-2-0 = "power off";
|
|
||||||
menu-2-0-exec = "sudo poweroff";
|
|
||||||
menu-2-1 = "cancel";
|
|
||||||
menu-2-1-exec = "menu-open-0";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/sink_changer" = {
|
|
||||||
type = "custom/script";
|
|
||||||
exec = "/home/fabian/bin/polybar_scripts/info.sh";
|
|
||||||
label = "%output%";
|
|
||||||
click-left = "/home/fabian/bin/polybar_scripts/sink_changer.sh";
|
|
||||||
# format-prefix = " ";
|
|
||||||
interval = "0";
|
|
||||||
# format-prefix-foreground = "${colors.foreground-alt}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"settings" = {
|
|
||||||
screenchange-reload = true;
|
|
||||||
# compositing-background = "xor";
|
|
||||||
# compositing-background = "screen";
|
|
||||||
# compositing-foreground = "source";
|
|
||||||
# compositing-border = "over";
|
|
||||||
# pseudo-transparency = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"global/wm" = {
|
|
||||||
margin-top = 5;
|
|
||||||
margin-bottom = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
config = mkIf config.local.gui.enable {
|
|
||||||
home.file.".xinitrc".source = let
|
|
||||||
content = ''
|
|
||||||
exec ~/.xsession
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
pkgs.writeShellScript "xinitrc" content;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -12,16 +12,9 @@ in {
|
||||||
pkgs.wlr-randr
|
pkgs.wlr-randr
|
||||||
];
|
];
|
||||||
|
|
||||||
programs = {
|
|
||||||
waybar.enable = true;
|
|
||||||
|
|
||||||
wofi.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
swayidle = {
|
swayidle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
timeouts = [
|
timeouts = [
|
||||||
{
|
{
|
||||||
timeout = 600;
|
timeout = 600;
|
||||||
|
@ -42,13 +35,32 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
output =
|
||||||
|
lib.mapAttrs (k: v: {
|
||||||
|
mode = "${toString v.width}x${toString v.height}@${v.rate}Hz";
|
||||||
|
pos = "${toString v.posX} ${toString v.posY}";
|
||||||
|
})
|
||||||
|
cfg.monitors;
|
||||||
|
|
||||||
modifier = "Mod4";
|
modifier = "Mod4";
|
||||||
focus.followMouse = true;
|
focus.followMouse = true;
|
||||||
|
|
||||||
|
input = {
|
||||||
|
"*" = {
|
||||||
|
xkb_layout = "us";
|
||||||
|
xkb_variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
size = 11.0;
|
names = ["JetBrains Mono"];
|
||||||
names = ["DejaVu Sans Mono"];
|
style = "Regular";
|
||||||
style = "Bold Semi-Condensed";
|
size = 8.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
gaps = {
|
||||||
|
inner = 10;
|
||||||
|
outer = -10;
|
||||||
};
|
};
|
||||||
|
|
||||||
bars = singleton {
|
bars = singleton {
|
||||||
|
@ -56,6 +68,23 @@ in {
|
||||||
position = "top";
|
position = "top";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
hideEdgeBorders = "both";
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
workspaceLayout = "tabbed";
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
focused = {
|
||||||
|
background = "#222222";
|
||||||
|
border = "#4c7899";
|
||||||
|
childBorder = "#222222";
|
||||||
|
indicator = "#292d2e";
|
||||||
|
text = "#888888";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
keybindings = let
|
keybindings = let
|
||||||
mod = config.wayland.windowManager.sway.config.modifier;
|
mod = config.wayland.windowManager.sway.config.modifier;
|
||||||
wofi = config.programs.wofi.package;
|
wofi = config.programs.wofi.package;
|
||||||
|
@ -66,26 +95,30 @@ in {
|
||||||
"${mod}+a" = "focus parent";
|
"${mod}+a" = "focus parent";
|
||||||
"${mod}+c" = "focus child";
|
"${mod}+c" = "focus child";
|
||||||
"${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run";
|
"${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run";
|
||||||
"${mod}+i" = "exec busctl --user call rs.wl-gammarelay / rs.wl.gammarelay ToggleInverted";
|
"${mod}+l" = "exec ${getExe pkgs.gtklock} -d";
|
||||||
"${mod}+o" = "exec ${getExe pkgs.gtklock} -d";
|
|
||||||
"${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}";
|
"${mod}+Return" = "exec ${lib.getExe pkgs.kitty} ${lib.getExe pkgs.tmux}";
|
||||||
"${mod}+Shift+e" = "input * xkb_layout latam";
|
"${mod}+Shift+s" = "exec ${grimshot} copy area";
|
||||||
"${mod}+Shift+u" = "input * xkb_layout us";
|
"${mod}+Tab" = "focus right";
|
||||||
"${mod}+p" = "exec ${grimshot} copy active";
|
"${mod}+Shift+Tab" = "focus left";
|
||||||
"${mod}+Shift+p" = "exec ${grimshot} copy area";
|
"${mod}+Shift+w" = "move workspace to output right";
|
||||||
"${mod}+Ctrl+p" = "exec ${grimshot} copy window";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
window.commands = [
|
startup = [
|
||||||
# (No) Title Bars
|
|
||||||
{
|
{
|
||||||
command = "border pixel 5";
|
command = "${lib.getExe pkgs.sway} 'workspace 1; exec ${lib.getExe pkgs.firefox}'";
|
||||||
criteria.class = "^.*";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
command = "floating enabled";
|
command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.tdesktop}'";
|
||||||
criteria.class = "floating";
|
}
|
||||||
|
{
|
||||||
|
command = "${lib.getExe pkgs.sway} 'workspace 2; exec ${lib.getExe pkgs.gajim}'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "${lib.getExe pkgs.swaybg} -m fill -i ${config.home.homeDirectory}/Pictures/wallpapers/jupiter.png";
|
||||||
|
always = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "${lib.getExe pkgs.networkmanagerapplet}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
172
home/modules/gui/waybar.nix
Normal file
172
home/modules/gui/waybar.nix
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.local.gui;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 20;
|
||||||
|
spacing = 0;
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"sway/workspaces"
|
||||||
|
"sway/mode"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"keyboard-state"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
"keyboard-state" = {
|
||||||
|
numlock = true;
|
||||||
|
capslock = true;
|
||||||
|
};
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 13;
|
||||||
|
spacing = 8;
|
||||||
|
};
|
||||||
|
"clock" = {
|
||||||
|
interval = 60;
|
||||||
|
format = "{:%A %B %d %Y %H:%M}";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{}";
|
||||||
|
};
|
||||||
|
"cpu" = {
|
||||||
|
format = "cpu {usage}%";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"memory" = {
|
||||||
|
format = "mem {percentage}%";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{used}/{total}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
font-family: "JetBrains Mono", monospace;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Entire bar: fully transparent, no border */
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
color: #eaeaea;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Optional: small edge breathing room (comment out if you want edge-to-edge) */
|
||||||
|
/* window#waybar { margin: 3px 6px 0 6px; } */
|
||||||
|
|
||||||
|
/* Module containers */
|
||||||
|
.modules-left, .modules-center, .modules-right {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subtle separators between modules (no boxes) */
|
||||||
|
.modules-left > widget:not(:first-child),
|
||||||
|
.modules-center > widget:not(:first-child),
|
||||||
|
.modules-right > widget:not(:first-child) {
|
||||||
|
margin-left: 8px;
|
||||||
|
padding-left: 8px;
|
||||||
|
border-left: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tightest possible workspaces */
|
||||||
|
#workspaces { padding: 0; margin: 0; }
|
||||||
|
#workspaces button {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 3px;
|
||||||
|
min-width: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
background: transparent;
|
||||||
|
color: #cfcfcf;
|
||||||
|
}
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(255, 255, 255, 0.06);
|
||||||
|
}
|
||||||
|
#workspaces button.active,
|
||||||
|
#workspaces button.focused {
|
||||||
|
background: rgba(255, 255, 255, 0.10);
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 2px solid #ffffff;
|
||||||
|
}
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background: rgba(255, 80, 80, 0.25);
|
||||||
|
border-bottom: 2px solid #ff5050;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Focused window title: single line, no glow */
|
||||||
|
#window {
|
||||||
|
padding: 0 6px;
|
||||||
|
margin: 0;
|
||||||
|
color: #dedede;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sway mode indicator: visible only when active, no bloat */
|
||||||
|
#mode {
|
||||||
|
padding: 0 6px;
|
||||||
|
margin: 0;
|
||||||
|
background: rgba(255, 255, 255, 0.10);
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 2px solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Status modules — keep them flat and compact */
|
||||||
|
#clock, #battery, #network, #pulseaudio, #backlight, #cpu, #memory, #temperature, #tray {
|
||||||
|
padding: 0 6px;
|
||||||
|
margin: 0;
|
||||||
|
background: transparent;
|
||||||
|
color: #eaeaea;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* States (battery, network, audio) */
|
||||||
|
#battery.charging { color: #c9ffbf; }
|
||||||
|
#battery.warning:not(.charging) { color: #ffd29a; }
|
||||||
|
#battery.critical:not(.charging) { color: #ff9a9a; }
|
||||||
|
|
||||||
|
#network.disconnected { color: #ffb4b4; }
|
||||||
|
#pulseaudio.muted { color: #9aa0a6; }
|
||||||
|
|
||||||
|
/* Tray: compress icons */
|
||||||
|
#tray > .passive { opacity: 0.6; }
|
||||||
|
#tray > .needs-attention { opacity: 1; }
|
||||||
|
|
||||||
|
/* Tooltips: clean and readable */
|
||||||
|
tooltip {
|
||||||
|
background: rgba(30, 30, 30, 0.95);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
color: #eaeaea;
|
||||||
|
padding: 6px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove any leftover borders around everything */
|
||||||
|
#custom-*, #idle_inhibitor, #privacy, #bluetooth {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 6px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
74
home/modules/gui/wofi.nix
Normal file
74
home/modules/gui/wofi.nix
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.local.gui;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs = {
|
||||||
|
wofi = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
prompt = "";
|
||||||
|
width = "25%";
|
||||||
|
height = "30%";
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
window {
|
||||||
|
background-color: rgb(0, 0, 0);
|
||||||
|
color: #eaeaea;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 12px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 50%; /* half screen width */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Search input */
|
||||||
|
#input {
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 4px 6px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Results list container */
|
||||||
|
#inner-box {
|
||||||
|
background-color: transparent;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Entries */
|
||||||
|
#entry {
|
||||||
|
padding: 2px 6px;
|
||||||
|
margin: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text inside entries */
|
||||||
|
#text {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scrollbar */
|
||||||
|
scrollbar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
scrollbar slider {
|
||||||
|
background: rgba(255, 255, 255, 0.15);
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -43,10 +43,7 @@
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
yubikey.enable = true;
|
yubikey.enable = true;
|
||||||
defaultDesktopPack.enable = true;
|
defaultDesktopPack.enable = true;
|
||||||
firefox = {
|
firefox.enable = true;
|
||||||
enable = true;
|
|
||||||
workspace = "1"; #make this an int later
|
|
||||||
};
|
|
||||||
mapping.enable = true;
|
mapping.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,19 +51,15 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
monitors = {
|
monitors = {
|
||||||
DP-1 = {
|
DP-1 = {
|
||||||
primary = true;
|
width = "1920";
|
||||||
position = "0x0";
|
height = "1080";
|
||||||
mode = "1920x1080";
|
rate = "59.94";
|
||||||
rate = "143.85";
|
|
||||||
fingerprint = "00ffffffffffff003669a03bd4040000231e0104a5341d783bd005ac5048a627125054bfcf00814081809500714f81c0b30001010101023a801871382d40582c450009252100001e0882805070384d400820f80c09252100001a000000fd003090b4b422010a202020202020000000fc004d53492047323443340a20202001a2020320f14d010304131f120211900e0f1d1e230907078301000065030c001000866f80a0703840403020350009252100001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9";
|
|
||||||
initialI3Workspace = 1;
|
|
||||||
};
|
};
|
||||||
DP-2 = {
|
DP-2 = {
|
||||||
position = "1920x0";
|
width = "1920";
|
||||||
mode = "1920x1080";
|
height = "1080";
|
||||||
rate = "59.94";
|
rate = "143.855";
|
||||||
fingerprint = "00ffffffffffff0009d1e77845540000061f0104a5351e783a0565a756529c270f5054a56b80d1c0b300a9c08180810081c001010101023a801871382d40582c45000f282100001e000000ff0039324d30303033323031510a20000000fd00324c1e5311010a202020202020000000fc0042656e51204757323438300a20019b02031cf14f901f041303120211011406071516052309070783010000023a801871382d40582c45000f282100001f011d8018711c1620582c25000f282100009f011d007251d01e206e2855000f282100001e8c0ad08a20e02d10103e96000f28210000180000000000000000000000000000000000000000000000000000008d";
|
posX = "1920";
|
||||||
initialI3Workspace = 10;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -77,10 +70,8 @@
|
||||||
darktable
|
darktable
|
||||||
(gajim.override {
|
(gajim.override {
|
||||||
enableSecrets = true;
|
enableSecrets = true;
|
||||||
# enableJingle = true;
|
|
||||||
# enableSpelling = true;
|
|
||||||
enableUPnP = true;
|
enableUPnP = true;
|
||||||
# enableAppIndicator = true;
|
enableAppIndicator = true;
|
||||||
enableE2E = true;
|
enableE2E = true;
|
||||||
enableRST = true;
|
enableRST = true;
|
||||||
})
|
})
|
||||||
|
|
|
@ -48,12 +48,9 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
monitors = {
|
monitors = {
|
||||||
eDP-1 = {
|
eDP-1 = {
|
||||||
primary = true;
|
width = "1920";
|
||||||
position = "0x0";
|
height = "1080";
|
||||||
mode = "1920x1080";
|
|
||||||
rate = "60.00";
|
rate = "60.00";
|
||||||
fingerprint = "00ffffffffffff000dae0a1400000000291d0104a51f11780328659759548e271e505400000001010101010101010101010101010101363680a0703820403020a60035ad10000018000000fe004e3134304843412d4541450a20000000fe00434d4e0a202020202020202020000000fe004e3134304843412d4541450a200002";
|
|
||||||
initialI3Workspace = 1;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,4 +16,14 @@
|
||||||
./net.nix
|
./net.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
jetbrains-mono
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-emoji
|
||||||
|
noto-fonts-extra
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.droid-sans-mono
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,6 @@ in {
|
||||||
enableSSHSupport = true;
|
enableSSHSupport = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
|
|
||||||
security.pam = {
|
security.pam = {
|
||||||
services = {
|
services = {
|
||||||
login.u2fAuth = true;
|
login.u2fAuth = true;
|
||||||
|
|
|
@ -32,8 +32,6 @@
|
||||||
|
|
||||||
trivium.sway.enable = true;
|
trivium.sway.enable = true;
|
||||||
|
|
||||||
programs.i3lock.enable = true;
|
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "posixlycorrect";
|
hostName = "posixlycorrect";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
|
Loading…
Reference in a new issue