diff --git a/.ignore b/.ignore index a0a672d..feff67f 100644 --- a/.ignore +++ b/.ignore @@ -1,7 +1,8 @@ # dotfiles/ .git/ flake.lock -frame12/framework-plymouth-theme/framework/throbber-* +frame12/framework-plymouth-theme/framework/progress-* +jaci/kiki-plymouth-theme/*/progress-* *.png *.jpeg diff --git a/flake.nix b/flake.nix index c989d6a..9a7d0c7 100644 --- a/flake.nix +++ b/flake.nix @@ -106,24 +106,25 @@ ./jaci/default.nix ]; }; - scrappy = nixpkgs.lib.nixosSystem { - # Pass args to desktop configuration - specialArgs = { - inherit inputs outputs timeZone system; - }; - modules = [ - # Setup home manager - inputs.home-manager.nixosModules.home-manager { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.scrappy = import ./scrappy/modules/home-manager/home.nix; - home-manager.extraSpecialArgs = { - inherit inputs outputs unstablePkgs; - }; - } - ./scrappy/default.nix - ]; - }; + # DEPRECATED: scrappy system is no longer in use + # scrappy = nixpkgs.lib.nixosSystem { + # # Pass args to desktop configuration + # specialArgs = { + # inherit inputs outputs timeZone system; + # }; + # modules = [ + # # Setup home manager + # inputs.home-manager.nixosModules.home-manager { + # home-manager.useGlobalPkgs = true; + # home-manager.useUserPackages = true; + # home-manager.users.scrappy = import ./scrappy/modules/home-manager/home.nix; + # home-manager.extraSpecialArgs = { + # inherit inputs outputs unstablePkgs; + # }; + # } + # ./scrappy/default.nix + # ]; + # }; frame12 = nixpkgs.lib.nixosSystem { # Pass args to desktop configuration specialArgs = { diff --git a/frame12/default.nix b/frame12/default.nix index 35fbc17..fe19f25 100644 --- a/frame12/default.nix +++ b/frame12/default.nix @@ -16,66 +16,16 @@ deskCfg = { userName = userName; hostName = hostName; + fullName = fullName; de = desktop; }; - # Stylix theming - stylix = { - enable = true; - image = ./wallpaper.png; - - # Check with `nix build nixpkgs#base16-schemes && ls result/share/themes` - base16Scheme = "${pkgs.base16-schemes}/share/themes/woodland.yaml"; - polarity = "dark"; - - # System-wide cursor - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 32; - }; - - # Fonts - fonts = { - serif = { - package = pkgs.lato; - name = "Lato"; - }; - sansSerif = { - package = pkgs.lato; - name = "Lato"; - }; - monospace = { - package = pkgs.maple-mono.NF; - name = "Maple Mono NF"; - }; - emoji = { - package = pkgs.noto-fonts-color-emoji; - name = "Noto Color Emoji"; - }; - sizes = { - applications = 14; - desktop = 12; - popups = 12; - terminal = 16; - }; - }; - - # Icon theme for tray applets (nm-applet, etc.) - iconTheme = { - enable = true; - package = pkgs.papirus-icon-theme; - light = "Papirus-Light"; - dark = "Papirus-Dark"; - }; - - # Keep custom Framework plymouth theme - targets.plymouth.enable = false; - }; - # Limit the number of generations to keep boot.loader.systemd-boot.configurationLimit = 5; + # Systemd initrd for Plymouth and faster boot + boot.initrd.systemd.enable = true; + # Perform garbage collection weekly to maintain low disk usage nix.gc = { automatic = true; diff --git a/frame12/desktop-configuration.nix b/frame12/desktop-configuration.nix index a699fac..7f8d2fe 100644 --- a/frame12/desktop-configuration.nix +++ b/frame12/desktop-configuration.nix @@ -28,10 +28,15 @@ in type = lib.types.str; description = "Hostname for system"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = "User"; + description = "Full display name for the user"; + }; }; imports = [ - modules/user/main_user.nix + ../shared/modules/user/main_user.nix modules/niri/niri_conf.nix modules/colemak-ec.nix ../shared/modules/system/power_manager.nix @@ -46,6 +51,60 @@ in } ]; + # Stylix theming + stylix = { + enable = true; + image = ./wallpaper.png; + + # Check with `nix build nixpkgs#base16-schemes && ls result/share/themes` + base16Scheme = "${pkgs.base16-schemes}/share/themes/woodland.yaml"; + polarity = "dark"; + + # System-wide cursor + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 32; + }; + + # Fonts + fonts = { + serif = { + package = pkgs.lato; + name = "Lato"; + }; + sansSerif = { + package = pkgs.lato; + name = "Lato"; + }; + monospace = { + package = pkgs.maple-mono.NF; + name = "Maple Mono NF"; + }; + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + sizes = { + applications = 14; + desktop = 12; + popups = 12; + terminal = 16; + }; + }; + + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + + # Keep custom Framework plymouth theme + targets.plymouth.enable = false; + }; + nixpkgs.overlays = [ inputs.nur.overlays.default ]; @@ -71,14 +130,10 @@ in cp -r ${./framework-plymouth-theme/framework}/* $out/share/plymouth/themes/framework/ substituteInPlace $out/share/plymouth/themes/framework/framework.plymouth \ --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/framework" + substituteInPlace $out/share/plymouth/themes/framework/framework.script \ + --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/framework" '') ]; - # themePackages = with pkgs; [ - # # By default we would install all themes - # (adi1090x-plymouth-themes.override { - # selected_themes = [ "circuit" "circle_flow" ]; - # }) - # ]; }; # Enable "Silent Boot" @@ -112,7 +167,9 @@ in main_user = { enable = true; userName = deskCfg.userName; + fullName = deskCfg.fullName; isDesktopUser = true; + extraGroups = [ "corectrl" "dialout" "docker" ]; }; power_manager = { diff --git a/frame12/framework-plymouth-theme/framework/framework.plymouth b/frame12/framework-plymouth-theme/framework/framework.plymouth index 6f218e4..c91a625 100644 --- a/frame12/framework-plymouth-theme/framework/framework.plymouth +++ b/frame12/framework-plymouth-theme/framework/framework.plymouth @@ -1,54 +1,8 @@ [Plymouth Theme] Name=Framework Description=Theme with animated Framework logo. -ModuleName=two-step +ModuleName=script -[two-step] -Font=Cantarell 12 -TitleFont=Cantarell Light 30 +[script] ImageDir=@IMAGEDIR@ -DialogHorizontalAlignment=.5 -DialogVerticalAlignment=.382 -TitleHorizontalAlignment=.5 -TitleVerticalAlignment=.382 -HorizontalAlignment=.5 -VerticalAlignment=.5 -WatermarkHorizontalAlignment=.5 -WatermarkVerticalAlignment=.96 -Transition=none -TransitionDuration=0.0 -BackgroundStartColor=0x000000 -BackgroundEndColor=0x000000 -ProgressBarBackgroundColor=0x606060 -ProgressBarForegroundColor=0xffffff -MessageBelowAnimation=true - -[boot-up] -UseEndAnimation=false - -[shutdown] -UseEndAnimation=false - -[reboot] -UseEndAnimation=false - -[updates] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Installing Updates... -SubTitle=Do not turn off your computer - -[system-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading System... -SubTitle=Do not turn off your computer - -[firmware-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading Firmware... -SubTitle=Do not turn off your computer +ScriptFile=@IMAGEDIR@/framework.script diff --git a/frame12/framework-plymouth-theme/framework/framework.script b/frame12/framework-plymouth-theme/framework/framework.script new file mode 100644 index 0000000..173751c --- /dev/null +++ b/frame12/framework-plymouth-theme/framework/framework.script @@ -0,0 +1,110 @@ +// Framework Plymouth Theme Script +// Adapted from adi1090x plymouth-themes template +// Original artwork credit: sniss https://community.frame.work/t/framework-fan-art/6626/39 + +// Screen size +screen.w = Window.GetWidth(0); +screen.h = Window.GetHeight(0); +screen.half.w = Window.GetWidth(0) / 2; +screen.half.h = Window.GetHeight(0) / 2; + +// Question prompt +question = null; +answer = null; + +// Message +message = null; + +// Password prompt +bullets = null; +prompt = null; +bullet.image = Image.Text("*", 1, 1, 1); + +// Flow +state.status = "play"; +state.time = 0.0; + +//--------------------------------- Refresh (Logo animation) -------------------------- + +// Frame count: 232 frames (0-231) +frame_count = 232; + +// Load all animation frames +for (i = 0; i < frame_count; i++) + frame_image[i] = Image("progress-" + i + ".png"); +frame_sprite = Sprite(); + +// Set image position (centered) +frame_sprite.SetX(Window.GetX() + (Window.GetWidth(0) / 2 - frame_image[0].GetWidth() / 2)); +frame_sprite.SetY(Window.GetY() + (Window.GetHeight(0) / 2 - frame_image[0].GetHeight() / 2)); + +progress = 0; + +fun refresh_callback () + { + // Speed divisor of 3 for smooth 232-frame animation + frame_sprite.SetImage(frame_image[Math.Int(progress / 3) % frame_count]); + progress++; + } + +Plymouth.SetRefreshFunction (refresh_callback); + +//------------------------------------- Question prompt ------------------------------- +fun DisplayQuestionCallback(prompt, entry) { + question = null; + answer = null; + + if (entry == "") + entry = ""; + + question.image = Image.Text(prompt, 1, 1, 1); + question.sprite = Sprite(question.image); + question.sprite.SetX(screen.half.w - question.image.GetWidth() / 2); + question.sprite.SetY(screen.h - 4 * question.image.GetHeight()); + + answer.image = Image.Text(entry, 1, 1, 1); + answer.sprite = Sprite(answer.image); + answer.sprite.SetX(screen.half.w - answer.image.GetWidth() / 2); + answer.sprite.SetY(screen.h - 2 * answer.image.GetHeight()); +} +Plymouth.SetDisplayQuestionFunction(DisplayQuestionCallback); + +//------------------------------------- Password prompt (LUKS) ------------------------ +fun DisplayPasswordCallback(nil, bulletCount) { + state.status = "pause"; + totalWidth = bulletCount * bullet.image.GetWidth(); + startPos = screen.half.w - totalWidth / 2; + + prompt.image = Image.Text("Enter Password", 1, 1, 1); + prompt.sprite = Sprite(prompt.image); + prompt.sprite.SetX(screen.half.w - prompt.image.GetWidth() / 2); + prompt.sprite.SetY(screen.h - 4 * prompt.image.GetHeight()); + + // Clear all bullets (user might hit backspace) + bullets = null; + for (i = 0; i < bulletCount; i++) { + bullets[i].sprite = Sprite(bullet.image); + bullets[i].sprite.SetX(startPos + i * bullet.image.GetWidth()); + bullets[i].sprite.SetY(screen.h - 2 * bullet.image.GetHeight()); + } +} +Plymouth.SetDisplayPasswordFunction(DisplayPasswordCallback); + +//--------------------------- Normal display (unset all text) ---------------------- +fun DisplayNormalCallback() { + state.status = "play"; + bullets = null; + prompt = null; + message = null; + question = null; + answer = null; +} +Plymouth.SetDisplayNormalFunction(DisplayNormalCallback); + +//----------------------------------------- Message -------------------------------- +fun MessageCallback(text) { + message.image = Image.Text(text, 1, 1, 1); + message.sprite = Sprite(message.image); + message.sprite.SetPosition(screen.half.w - message.image.GetWidth() / 2, message.image.GetHeight()); +} +Plymouth.SetMessageFunction(MessageCallback); diff --git a/frame12/framework-plymouth-theme/framework/throbber-0001.png b/frame12/framework-plymouth-theme/framework/progress-0.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0001.png rename to frame12/framework-plymouth-theme/framework/progress-0.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0002.png b/frame12/framework-plymouth-theme/framework/progress-1.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0002.png rename to frame12/framework-plymouth-theme/framework/progress-1.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0009.png b/frame12/framework-plymouth-theme/framework/progress-10.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0009.png rename to frame12/framework-plymouth-theme/framework/progress-10.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0101.png b/frame12/framework-plymouth-theme/framework/progress-100.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0101.png rename to frame12/framework-plymouth-theme/framework/progress-100.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0102.png b/frame12/framework-plymouth-theme/framework/progress-101.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0102.png rename to frame12/framework-plymouth-theme/framework/progress-101.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0103.png b/frame12/framework-plymouth-theme/framework/progress-102.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0103.png rename to frame12/framework-plymouth-theme/framework/progress-102.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0104.png b/frame12/framework-plymouth-theme/framework/progress-103.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0104.png rename to frame12/framework-plymouth-theme/framework/progress-103.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0105.png b/frame12/framework-plymouth-theme/framework/progress-104.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0105.png rename to frame12/framework-plymouth-theme/framework/progress-104.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0106.png b/frame12/framework-plymouth-theme/framework/progress-105.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0106.png rename to frame12/framework-plymouth-theme/framework/progress-105.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0107.png b/frame12/framework-plymouth-theme/framework/progress-106.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0107.png rename to frame12/framework-plymouth-theme/framework/progress-106.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0108.png b/frame12/framework-plymouth-theme/framework/progress-107.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0108.png rename to frame12/framework-plymouth-theme/framework/progress-107.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0109.png b/frame12/framework-plymouth-theme/framework/progress-108.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0109.png rename to frame12/framework-plymouth-theme/framework/progress-108.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0110.png b/frame12/framework-plymouth-theme/framework/progress-109.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0110.png rename to frame12/framework-plymouth-theme/framework/progress-109.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0010.png b/frame12/framework-plymouth-theme/framework/progress-11.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0010.png rename to frame12/framework-plymouth-theme/framework/progress-11.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0111.png b/frame12/framework-plymouth-theme/framework/progress-110.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0111.png rename to frame12/framework-plymouth-theme/framework/progress-110.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0112.png b/frame12/framework-plymouth-theme/framework/progress-111.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0112.png rename to frame12/framework-plymouth-theme/framework/progress-111.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0113.png b/frame12/framework-plymouth-theme/framework/progress-112.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0113.png rename to frame12/framework-plymouth-theme/framework/progress-112.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0114.png b/frame12/framework-plymouth-theme/framework/progress-113.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0114.png rename to frame12/framework-plymouth-theme/framework/progress-113.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0115.png b/frame12/framework-plymouth-theme/framework/progress-114.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0115.png rename to frame12/framework-plymouth-theme/framework/progress-114.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0116.png b/frame12/framework-plymouth-theme/framework/progress-115.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0116.png rename to frame12/framework-plymouth-theme/framework/progress-115.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0117.png b/frame12/framework-plymouth-theme/framework/progress-116.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0117.png rename to frame12/framework-plymouth-theme/framework/progress-116.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0118.png b/frame12/framework-plymouth-theme/framework/progress-117.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0118.png rename to frame12/framework-plymouth-theme/framework/progress-117.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0119.png b/frame12/framework-plymouth-theme/framework/progress-118.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0119.png rename to frame12/framework-plymouth-theme/framework/progress-118.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0120.png b/frame12/framework-plymouth-theme/framework/progress-119.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0120.png rename to frame12/framework-plymouth-theme/framework/progress-119.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0011.png b/frame12/framework-plymouth-theme/framework/progress-12.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0011.png rename to frame12/framework-plymouth-theme/framework/progress-12.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0121.png b/frame12/framework-plymouth-theme/framework/progress-120.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0121.png rename to frame12/framework-plymouth-theme/framework/progress-120.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0122.png b/frame12/framework-plymouth-theme/framework/progress-121.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0122.png rename to frame12/framework-plymouth-theme/framework/progress-121.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0123.png b/frame12/framework-plymouth-theme/framework/progress-122.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0123.png rename to frame12/framework-plymouth-theme/framework/progress-122.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0124.png b/frame12/framework-plymouth-theme/framework/progress-123.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0124.png rename to frame12/framework-plymouth-theme/framework/progress-123.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0125.png b/frame12/framework-plymouth-theme/framework/progress-124.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0125.png rename to frame12/framework-plymouth-theme/framework/progress-124.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0126.png b/frame12/framework-plymouth-theme/framework/progress-125.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0126.png rename to frame12/framework-plymouth-theme/framework/progress-125.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0127.png b/frame12/framework-plymouth-theme/framework/progress-126.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0127.png rename to frame12/framework-plymouth-theme/framework/progress-126.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0128.png b/frame12/framework-plymouth-theme/framework/progress-127.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0128.png rename to frame12/framework-plymouth-theme/framework/progress-127.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0129.png b/frame12/framework-plymouth-theme/framework/progress-128.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0129.png rename to frame12/framework-plymouth-theme/framework/progress-128.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0130.png b/frame12/framework-plymouth-theme/framework/progress-129.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0130.png rename to frame12/framework-plymouth-theme/framework/progress-129.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0012.png b/frame12/framework-plymouth-theme/framework/progress-13.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0012.png rename to frame12/framework-plymouth-theme/framework/progress-13.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0131.png b/frame12/framework-plymouth-theme/framework/progress-130.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0131.png rename to frame12/framework-plymouth-theme/framework/progress-130.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0132.png b/frame12/framework-plymouth-theme/framework/progress-131.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0132.png rename to frame12/framework-plymouth-theme/framework/progress-131.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0133.png b/frame12/framework-plymouth-theme/framework/progress-132.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0133.png rename to frame12/framework-plymouth-theme/framework/progress-132.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0134.png b/frame12/framework-plymouth-theme/framework/progress-133.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0134.png rename to frame12/framework-plymouth-theme/framework/progress-133.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0135.png b/frame12/framework-plymouth-theme/framework/progress-134.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0135.png rename to frame12/framework-plymouth-theme/framework/progress-134.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0136.png b/frame12/framework-plymouth-theme/framework/progress-135.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0136.png rename to frame12/framework-plymouth-theme/framework/progress-135.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0137.png b/frame12/framework-plymouth-theme/framework/progress-136.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0137.png rename to frame12/framework-plymouth-theme/framework/progress-136.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0138.png b/frame12/framework-plymouth-theme/framework/progress-137.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0138.png rename to frame12/framework-plymouth-theme/framework/progress-137.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0139.png b/frame12/framework-plymouth-theme/framework/progress-138.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0139.png rename to frame12/framework-plymouth-theme/framework/progress-138.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0140.png b/frame12/framework-plymouth-theme/framework/progress-139.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0140.png rename to frame12/framework-plymouth-theme/framework/progress-139.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0015.png b/frame12/framework-plymouth-theme/framework/progress-14.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0015.png rename to frame12/framework-plymouth-theme/framework/progress-14.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0141.png b/frame12/framework-plymouth-theme/framework/progress-140.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0141.png rename to frame12/framework-plymouth-theme/framework/progress-140.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0142.png b/frame12/framework-plymouth-theme/framework/progress-141.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0142.png rename to frame12/framework-plymouth-theme/framework/progress-141.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0143.png b/frame12/framework-plymouth-theme/framework/progress-142.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0143.png rename to frame12/framework-plymouth-theme/framework/progress-142.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0144.png b/frame12/framework-plymouth-theme/framework/progress-143.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0144.png rename to frame12/framework-plymouth-theme/framework/progress-143.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0145.png b/frame12/framework-plymouth-theme/framework/progress-144.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0145.png rename to frame12/framework-plymouth-theme/framework/progress-144.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0146.png b/frame12/framework-plymouth-theme/framework/progress-145.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0146.png rename to frame12/framework-plymouth-theme/framework/progress-145.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0147.png b/frame12/framework-plymouth-theme/framework/progress-146.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0147.png rename to frame12/framework-plymouth-theme/framework/progress-146.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0148.png b/frame12/framework-plymouth-theme/framework/progress-147.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0148.png rename to frame12/framework-plymouth-theme/framework/progress-147.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0149.png b/frame12/framework-plymouth-theme/framework/progress-148.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0149.png rename to frame12/framework-plymouth-theme/framework/progress-148.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0150.png b/frame12/framework-plymouth-theme/framework/progress-149.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0150.png rename to frame12/framework-plymouth-theme/framework/progress-149.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0016.png b/frame12/framework-plymouth-theme/framework/progress-15.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0016.png rename to frame12/framework-plymouth-theme/framework/progress-15.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0151.png b/frame12/framework-plymouth-theme/framework/progress-150.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0151.png rename to frame12/framework-plymouth-theme/framework/progress-150.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0152.png b/frame12/framework-plymouth-theme/framework/progress-151.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0152.png rename to frame12/framework-plymouth-theme/framework/progress-151.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0153.png b/frame12/framework-plymouth-theme/framework/progress-152.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0153.png rename to frame12/framework-plymouth-theme/framework/progress-152.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0154.png b/frame12/framework-plymouth-theme/framework/progress-153.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0154.png rename to frame12/framework-plymouth-theme/framework/progress-153.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0155.png b/frame12/framework-plymouth-theme/framework/progress-154.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0155.png rename to frame12/framework-plymouth-theme/framework/progress-154.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0156.png b/frame12/framework-plymouth-theme/framework/progress-155.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0156.png rename to frame12/framework-plymouth-theme/framework/progress-155.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0157.png b/frame12/framework-plymouth-theme/framework/progress-156.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0157.png rename to frame12/framework-plymouth-theme/framework/progress-156.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0158.png b/frame12/framework-plymouth-theme/framework/progress-157.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0158.png rename to frame12/framework-plymouth-theme/framework/progress-157.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0159.png b/frame12/framework-plymouth-theme/framework/progress-158.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0159.png rename to frame12/framework-plymouth-theme/framework/progress-158.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0160.png b/frame12/framework-plymouth-theme/framework/progress-159.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0160.png rename to frame12/framework-plymouth-theme/framework/progress-159.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0017.png b/frame12/framework-plymouth-theme/framework/progress-16.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0017.png rename to frame12/framework-plymouth-theme/framework/progress-16.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0161.png b/frame12/framework-plymouth-theme/framework/progress-160.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0161.png rename to frame12/framework-plymouth-theme/framework/progress-160.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0162.png b/frame12/framework-plymouth-theme/framework/progress-161.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0162.png rename to frame12/framework-plymouth-theme/framework/progress-161.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0163.png b/frame12/framework-plymouth-theme/framework/progress-162.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0163.png rename to frame12/framework-plymouth-theme/framework/progress-162.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0164.png b/frame12/framework-plymouth-theme/framework/progress-163.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0164.png rename to frame12/framework-plymouth-theme/framework/progress-163.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0165.png b/frame12/framework-plymouth-theme/framework/progress-164.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0165.png rename to frame12/framework-plymouth-theme/framework/progress-164.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0166.png b/frame12/framework-plymouth-theme/framework/progress-165.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0166.png rename to frame12/framework-plymouth-theme/framework/progress-165.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0167.png b/frame12/framework-plymouth-theme/framework/progress-166.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0167.png rename to frame12/framework-plymouth-theme/framework/progress-166.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0168.png b/frame12/framework-plymouth-theme/framework/progress-167.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0168.png rename to frame12/framework-plymouth-theme/framework/progress-167.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0169.png b/frame12/framework-plymouth-theme/framework/progress-168.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0169.png rename to frame12/framework-plymouth-theme/framework/progress-168.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0170.png b/frame12/framework-plymouth-theme/framework/progress-169.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0170.png rename to frame12/framework-plymouth-theme/framework/progress-169.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0018.png b/frame12/framework-plymouth-theme/framework/progress-17.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0018.png rename to frame12/framework-plymouth-theme/framework/progress-17.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0171.png b/frame12/framework-plymouth-theme/framework/progress-170.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0171.png rename to frame12/framework-plymouth-theme/framework/progress-170.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0172.png b/frame12/framework-plymouth-theme/framework/progress-171.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0172.png rename to frame12/framework-plymouth-theme/framework/progress-171.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0173.png b/frame12/framework-plymouth-theme/framework/progress-172.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0173.png rename to frame12/framework-plymouth-theme/framework/progress-172.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0174.png b/frame12/framework-plymouth-theme/framework/progress-173.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0174.png rename to frame12/framework-plymouth-theme/framework/progress-173.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0175.png b/frame12/framework-plymouth-theme/framework/progress-174.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0175.png rename to frame12/framework-plymouth-theme/framework/progress-174.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0176.png b/frame12/framework-plymouth-theme/framework/progress-175.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0176.png rename to frame12/framework-plymouth-theme/framework/progress-175.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0177.png b/frame12/framework-plymouth-theme/framework/progress-176.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0177.png rename to frame12/framework-plymouth-theme/framework/progress-176.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0178.png b/frame12/framework-plymouth-theme/framework/progress-177.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0178.png rename to frame12/framework-plymouth-theme/framework/progress-177.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0179.png b/frame12/framework-plymouth-theme/framework/progress-178.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0179.png rename to frame12/framework-plymouth-theme/framework/progress-178.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0180.png b/frame12/framework-plymouth-theme/framework/progress-179.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0180.png rename to frame12/framework-plymouth-theme/framework/progress-179.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0019.png b/frame12/framework-plymouth-theme/framework/progress-18.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0019.png rename to frame12/framework-plymouth-theme/framework/progress-18.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0181.png b/frame12/framework-plymouth-theme/framework/progress-180.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0181.png rename to frame12/framework-plymouth-theme/framework/progress-180.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0182.png b/frame12/framework-plymouth-theme/framework/progress-181.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0182.png rename to frame12/framework-plymouth-theme/framework/progress-181.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0183.png b/frame12/framework-plymouth-theme/framework/progress-182.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0183.png rename to frame12/framework-plymouth-theme/framework/progress-182.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0184.png b/frame12/framework-plymouth-theme/framework/progress-183.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0184.png rename to frame12/framework-plymouth-theme/framework/progress-183.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0185.png b/frame12/framework-plymouth-theme/framework/progress-184.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0185.png rename to frame12/framework-plymouth-theme/framework/progress-184.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0186.png b/frame12/framework-plymouth-theme/framework/progress-185.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0186.png rename to frame12/framework-plymouth-theme/framework/progress-185.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0187.png b/frame12/framework-plymouth-theme/framework/progress-186.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0187.png rename to frame12/framework-plymouth-theme/framework/progress-186.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0188.png b/frame12/framework-plymouth-theme/framework/progress-187.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0188.png rename to frame12/framework-plymouth-theme/framework/progress-187.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0189.png b/frame12/framework-plymouth-theme/framework/progress-188.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0189.png rename to frame12/framework-plymouth-theme/framework/progress-188.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0190.png b/frame12/framework-plymouth-theme/framework/progress-189.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0190.png rename to frame12/framework-plymouth-theme/framework/progress-189.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0020.png b/frame12/framework-plymouth-theme/framework/progress-19.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0020.png rename to frame12/framework-plymouth-theme/framework/progress-19.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0191.png b/frame12/framework-plymouth-theme/framework/progress-190.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0191.png rename to frame12/framework-plymouth-theme/framework/progress-190.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0192.png b/frame12/framework-plymouth-theme/framework/progress-191.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0192.png rename to frame12/framework-plymouth-theme/framework/progress-191.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0193.png b/frame12/framework-plymouth-theme/framework/progress-192.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0193.png rename to frame12/framework-plymouth-theme/framework/progress-192.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0194.png b/frame12/framework-plymouth-theme/framework/progress-193.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0194.png rename to frame12/framework-plymouth-theme/framework/progress-193.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0195.png b/frame12/framework-plymouth-theme/framework/progress-194.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0195.png rename to frame12/framework-plymouth-theme/framework/progress-194.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0196.png b/frame12/framework-plymouth-theme/framework/progress-195.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0196.png rename to frame12/framework-plymouth-theme/framework/progress-195.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0197.png b/frame12/framework-plymouth-theme/framework/progress-196.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0197.png rename to frame12/framework-plymouth-theme/framework/progress-196.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0198.png b/frame12/framework-plymouth-theme/framework/progress-197.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0198.png rename to frame12/framework-plymouth-theme/framework/progress-197.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0199.png b/frame12/framework-plymouth-theme/framework/progress-198.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0199.png rename to frame12/framework-plymouth-theme/framework/progress-198.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0200.png b/frame12/framework-plymouth-theme/framework/progress-199.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0200.png rename to frame12/framework-plymouth-theme/framework/progress-199.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0003.png b/frame12/framework-plymouth-theme/framework/progress-2.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0003.png rename to frame12/framework-plymouth-theme/framework/progress-2.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0021.png b/frame12/framework-plymouth-theme/framework/progress-20.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0021.png rename to frame12/framework-plymouth-theme/framework/progress-20.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0201.png b/frame12/framework-plymouth-theme/framework/progress-200.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0201.png rename to frame12/framework-plymouth-theme/framework/progress-200.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0202.png b/frame12/framework-plymouth-theme/framework/progress-201.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0202.png rename to frame12/framework-plymouth-theme/framework/progress-201.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0203.png b/frame12/framework-plymouth-theme/framework/progress-202.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0203.png rename to frame12/framework-plymouth-theme/framework/progress-202.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0204.png b/frame12/framework-plymouth-theme/framework/progress-203.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0204.png rename to frame12/framework-plymouth-theme/framework/progress-203.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0205.png b/frame12/framework-plymouth-theme/framework/progress-204.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0205.png rename to frame12/framework-plymouth-theme/framework/progress-204.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0206.png b/frame12/framework-plymouth-theme/framework/progress-205.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0206.png rename to frame12/framework-plymouth-theme/framework/progress-205.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0207.png b/frame12/framework-plymouth-theme/framework/progress-206.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0207.png rename to frame12/framework-plymouth-theme/framework/progress-206.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0208.png b/frame12/framework-plymouth-theme/framework/progress-207.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0208.png rename to frame12/framework-plymouth-theme/framework/progress-207.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0209.png b/frame12/framework-plymouth-theme/framework/progress-208.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0209.png rename to frame12/framework-plymouth-theme/framework/progress-208.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0210.png b/frame12/framework-plymouth-theme/framework/progress-209.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0210.png rename to frame12/framework-plymouth-theme/framework/progress-209.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0022.png b/frame12/framework-plymouth-theme/framework/progress-21.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0022.png rename to frame12/framework-plymouth-theme/framework/progress-21.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0211.png b/frame12/framework-plymouth-theme/framework/progress-210.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0211.png rename to frame12/framework-plymouth-theme/framework/progress-210.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0212.png b/frame12/framework-plymouth-theme/framework/progress-211.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0212.png rename to frame12/framework-plymouth-theme/framework/progress-211.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0213.png b/frame12/framework-plymouth-theme/framework/progress-212.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0213.png rename to frame12/framework-plymouth-theme/framework/progress-212.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0214.png b/frame12/framework-plymouth-theme/framework/progress-213.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0214.png rename to frame12/framework-plymouth-theme/framework/progress-213.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0215.png b/frame12/framework-plymouth-theme/framework/progress-214.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0215.png rename to frame12/framework-plymouth-theme/framework/progress-214.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0216.png b/frame12/framework-plymouth-theme/framework/progress-215.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0216.png rename to frame12/framework-plymouth-theme/framework/progress-215.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0217.png b/frame12/framework-plymouth-theme/framework/progress-216.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0217.png rename to frame12/framework-plymouth-theme/framework/progress-216.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0218.png b/frame12/framework-plymouth-theme/framework/progress-217.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0218.png rename to frame12/framework-plymouth-theme/framework/progress-217.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0219.png b/frame12/framework-plymouth-theme/framework/progress-218.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0219.png rename to frame12/framework-plymouth-theme/framework/progress-218.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0220.png b/frame12/framework-plymouth-theme/framework/progress-219.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0220.png rename to frame12/framework-plymouth-theme/framework/progress-219.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0023.png b/frame12/framework-plymouth-theme/framework/progress-22.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0023.png rename to frame12/framework-plymouth-theme/framework/progress-22.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0221.png b/frame12/framework-plymouth-theme/framework/progress-220.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0221.png rename to frame12/framework-plymouth-theme/framework/progress-220.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0222.png b/frame12/framework-plymouth-theme/framework/progress-221.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0222.png rename to frame12/framework-plymouth-theme/framework/progress-221.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0223.png b/frame12/framework-plymouth-theme/framework/progress-222.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0223.png rename to frame12/framework-plymouth-theme/framework/progress-222.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0224.png b/frame12/framework-plymouth-theme/framework/progress-223.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0224.png rename to frame12/framework-plymouth-theme/framework/progress-223.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0225.png b/frame12/framework-plymouth-theme/framework/progress-224.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0225.png rename to frame12/framework-plymouth-theme/framework/progress-224.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0226.png b/frame12/framework-plymouth-theme/framework/progress-225.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0226.png rename to frame12/framework-plymouth-theme/framework/progress-225.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0227.png b/frame12/framework-plymouth-theme/framework/progress-226.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0227.png rename to frame12/framework-plymouth-theme/framework/progress-226.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0228.png b/frame12/framework-plymouth-theme/framework/progress-227.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0228.png rename to frame12/framework-plymouth-theme/framework/progress-227.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0229.png b/frame12/framework-plymouth-theme/framework/progress-228.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0229.png rename to frame12/framework-plymouth-theme/framework/progress-228.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0230.png b/frame12/framework-plymouth-theme/framework/progress-229.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0230.png rename to frame12/framework-plymouth-theme/framework/progress-229.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0024.png b/frame12/framework-plymouth-theme/framework/progress-23.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0024.png rename to frame12/framework-plymouth-theme/framework/progress-23.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0231.png b/frame12/framework-plymouth-theme/framework/progress-230.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0231.png rename to frame12/framework-plymouth-theme/framework/progress-230.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0232.png b/frame12/framework-plymouth-theme/framework/progress-231.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0232.png rename to frame12/framework-plymouth-theme/framework/progress-231.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0025.png b/frame12/framework-plymouth-theme/framework/progress-24.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0025.png rename to frame12/framework-plymouth-theme/framework/progress-24.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0026.png b/frame12/framework-plymouth-theme/framework/progress-25.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0026.png rename to frame12/framework-plymouth-theme/framework/progress-25.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0027.png b/frame12/framework-plymouth-theme/framework/progress-26.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0027.png rename to frame12/framework-plymouth-theme/framework/progress-26.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0028.png b/frame12/framework-plymouth-theme/framework/progress-27.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0028.png rename to frame12/framework-plymouth-theme/framework/progress-27.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0029.png b/frame12/framework-plymouth-theme/framework/progress-28.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0029.png rename to frame12/framework-plymouth-theme/framework/progress-28.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0030.png b/frame12/framework-plymouth-theme/framework/progress-29.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0030.png rename to frame12/framework-plymouth-theme/framework/progress-29.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0004.png b/frame12/framework-plymouth-theme/framework/progress-3.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0004.png rename to frame12/framework-plymouth-theme/framework/progress-3.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0031.png b/frame12/framework-plymouth-theme/framework/progress-30.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0031.png rename to frame12/framework-plymouth-theme/framework/progress-30.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0032.png b/frame12/framework-plymouth-theme/framework/progress-31.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0032.png rename to frame12/framework-plymouth-theme/framework/progress-31.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0033.png b/frame12/framework-plymouth-theme/framework/progress-32.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0033.png rename to frame12/framework-plymouth-theme/framework/progress-32.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0034.png b/frame12/framework-plymouth-theme/framework/progress-33.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0034.png rename to frame12/framework-plymouth-theme/framework/progress-33.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0035.png b/frame12/framework-plymouth-theme/framework/progress-34.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0035.png rename to frame12/framework-plymouth-theme/framework/progress-34.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0036.png b/frame12/framework-plymouth-theme/framework/progress-35.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0036.png rename to frame12/framework-plymouth-theme/framework/progress-35.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0037.png b/frame12/framework-plymouth-theme/framework/progress-36.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0037.png rename to frame12/framework-plymouth-theme/framework/progress-36.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0038.png b/frame12/framework-plymouth-theme/framework/progress-37.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0038.png rename to frame12/framework-plymouth-theme/framework/progress-37.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0039.png b/frame12/framework-plymouth-theme/framework/progress-38.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0039.png rename to frame12/framework-plymouth-theme/framework/progress-38.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0040.png b/frame12/framework-plymouth-theme/framework/progress-39.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0040.png rename to frame12/framework-plymouth-theme/framework/progress-39.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0005.png b/frame12/framework-plymouth-theme/framework/progress-4.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0005.png rename to frame12/framework-plymouth-theme/framework/progress-4.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0041.png b/frame12/framework-plymouth-theme/framework/progress-40.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0041.png rename to frame12/framework-plymouth-theme/framework/progress-40.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0042.png b/frame12/framework-plymouth-theme/framework/progress-41.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0042.png rename to frame12/framework-plymouth-theme/framework/progress-41.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0043.png b/frame12/framework-plymouth-theme/framework/progress-42.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0043.png rename to frame12/framework-plymouth-theme/framework/progress-42.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0044.png b/frame12/framework-plymouth-theme/framework/progress-43.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0044.png rename to frame12/framework-plymouth-theme/framework/progress-43.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0045.png b/frame12/framework-plymouth-theme/framework/progress-44.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0045.png rename to frame12/framework-plymouth-theme/framework/progress-44.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0046.png b/frame12/framework-plymouth-theme/framework/progress-45.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0046.png rename to frame12/framework-plymouth-theme/framework/progress-45.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0047.png b/frame12/framework-plymouth-theme/framework/progress-46.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0047.png rename to frame12/framework-plymouth-theme/framework/progress-46.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0048.png b/frame12/framework-plymouth-theme/framework/progress-47.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0048.png rename to frame12/framework-plymouth-theme/framework/progress-47.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0049.png b/frame12/framework-plymouth-theme/framework/progress-48.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0049.png rename to frame12/framework-plymouth-theme/framework/progress-48.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0050.png b/frame12/framework-plymouth-theme/framework/progress-49.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0050.png rename to frame12/framework-plymouth-theme/framework/progress-49.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0006.png b/frame12/framework-plymouth-theme/framework/progress-5.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0006.png rename to frame12/framework-plymouth-theme/framework/progress-5.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0051.png b/frame12/framework-plymouth-theme/framework/progress-50.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0051.png rename to frame12/framework-plymouth-theme/framework/progress-50.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0052.png b/frame12/framework-plymouth-theme/framework/progress-51.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0052.png rename to frame12/framework-plymouth-theme/framework/progress-51.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0053.png b/frame12/framework-plymouth-theme/framework/progress-52.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0053.png rename to frame12/framework-plymouth-theme/framework/progress-52.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0054.png b/frame12/framework-plymouth-theme/framework/progress-53.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0054.png rename to frame12/framework-plymouth-theme/framework/progress-53.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0055.png b/frame12/framework-plymouth-theme/framework/progress-54.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0055.png rename to frame12/framework-plymouth-theme/framework/progress-54.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0056.png b/frame12/framework-plymouth-theme/framework/progress-55.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0056.png rename to frame12/framework-plymouth-theme/framework/progress-55.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0057.png b/frame12/framework-plymouth-theme/framework/progress-56.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0057.png rename to frame12/framework-plymouth-theme/framework/progress-56.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0058.png b/frame12/framework-plymouth-theme/framework/progress-57.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0058.png rename to frame12/framework-plymouth-theme/framework/progress-57.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0059.png b/frame12/framework-plymouth-theme/framework/progress-58.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0059.png rename to frame12/framework-plymouth-theme/framework/progress-58.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0060.png b/frame12/framework-plymouth-theme/framework/progress-59.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0060.png rename to frame12/framework-plymouth-theme/framework/progress-59.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0007.png b/frame12/framework-plymouth-theme/framework/progress-6.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0007.png rename to frame12/framework-plymouth-theme/framework/progress-6.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0061.png b/frame12/framework-plymouth-theme/framework/progress-60.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0061.png rename to frame12/framework-plymouth-theme/framework/progress-60.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0062.png b/frame12/framework-plymouth-theme/framework/progress-61.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0062.png rename to frame12/framework-plymouth-theme/framework/progress-61.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0063.png b/frame12/framework-plymouth-theme/framework/progress-62.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0063.png rename to frame12/framework-plymouth-theme/framework/progress-62.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0064.png b/frame12/framework-plymouth-theme/framework/progress-63.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0064.png rename to frame12/framework-plymouth-theme/framework/progress-63.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0065.png b/frame12/framework-plymouth-theme/framework/progress-64.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0065.png rename to frame12/framework-plymouth-theme/framework/progress-64.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0066.png b/frame12/framework-plymouth-theme/framework/progress-65.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0066.png rename to frame12/framework-plymouth-theme/framework/progress-65.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0067.png b/frame12/framework-plymouth-theme/framework/progress-66.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0067.png rename to frame12/framework-plymouth-theme/framework/progress-66.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0068.png b/frame12/framework-plymouth-theme/framework/progress-67.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0068.png rename to frame12/framework-plymouth-theme/framework/progress-67.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0069.png b/frame12/framework-plymouth-theme/framework/progress-68.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0069.png rename to frame12/framework-plymouth-theme/framework/progress-68.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0070.png b/frame12/framework-plymouth-theme/framework/progress-69.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0070.png rename to frame12/framework-plymouth-theme/framework/progress-69.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0008.png b/frame12/framework-plymouth-theme/framework/progress-7.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0008.png rename to frame12/framework-plymouth-theme/framework/progress-7.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0071.png b/frame12/framework-plymouth-theme/framework/progress-70.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0071.png rename to frame12/framework-plymouth-theme/framework/progress-70.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0072.png b/frame12/framework-plymouth-theme/framework/progress-71.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0072.png rename to frame12/framework-plymouth-theme/framework/progress-71.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0073.png b/frame12/framework-plymouth-theme/framework/progress-72.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0073.png rename to frame12/framework-plymouth-theme/framework/progress-72.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0074.png b/frame12/framework-plymouth-theme/framework/progress-73.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0074.png rename to frame12/framework-plymouth-theme/framework/progress-73.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0075.png b/frame12/framework-plymouth-theme/framework/progress-74.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0075.png rename to frame12/framework-plymouth-theme/framework/progress-74.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0076.png b/frame12/framework-plymouth-theme/framework/progress-75.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0076.png rename to frame12/framework-plymouth-theme/framework/progress-75.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0077.png b/frame12/framework-plymouth-theme/framework/progress-76.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0077.png rename to frame12/framework-plymouth-theme/framework/progress-76.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0078.png b/frame12/framework-plymouth-theme/framework/progress-77.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0078.png rename to frame12/framework-plymouth-theme/framework/progress-77.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0079.png b/frame12/framework-plymouth-theme/framework/progress-78.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0079.png rename to frame12/framework-plymouth-theme/framework/progress-78.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0080.png b/frame12/framework-plymouth-theme/framework/progress-79.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0080.png rename to frame12/framework-plymouth-theme/framework/progress-79.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0013.png b/frame12/framework-plymouth-theme/framework/progress-8.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0013.png rename to frame12/framework-plymouth-theme/framework/progress-8.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0081.png b/frame12/framework-plymouth-theme/framework/progress-80.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0081.png rename to frame12/framework-plymouth-theme/framework/progress-80.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0082.png b/frame12/framework-plymouth-theme/framework/progress-81.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0082.png rename to frame12/framework-plymouth-theme/framework/progress-81.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0083.png b/frame12/framework-plymouth-theme/framework/progress-82.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0083.png rename to frame12/framework-plymouth-theme/framework/progress-82.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0084.png b/frame12/framework-plymouth-theme/framework/progress-83.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0084.png rename to frame12/framework-plymouth-theme/framework/progress-83.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0085.png b/frame12/framework-plymouth-theme/framework/progress-84.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0085.png rename to frame12/framework-plymouth-theme/framework/progress-84.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0086.png b/frame12/framework-plymouth-theme/framework/progress-85.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0086.png rename to frame12/framework-plymouth-theme/framework/progress-85.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0087.png b/frame12/framework-plymouth-theme/framework/progress-86.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0087.png rename to frame12/framework-plymouth-theme/framework/progress-86.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0088.png b/frame12/framework-plymouth-theme/framework/progress-87.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0088.png rename to frame12/framework-plymouth-theme/framework/progress-87.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0089.png b/frame12/framework-plymouth-theme/framework/progress-88.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0089.png rename to frame12/framework-plymouth-theme/framework/progress-88.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0090.png b/frame12/framework-plymouth-theme/framework/progress-89.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0090.png rename to frame12/framework-plymouth-theme/framework/progress-89.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0014.png b/frame12/framework-plymouth-theme/framework/progress-9.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0014.png rename to frame12/framework-plymouth-theme/framework/progress-9.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0091.png b/frame12/framework-plymouth-theme/framework/progress-90.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0091.png rename to frame12/framework-plymouth-theme/framework/progress-90.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0092.png b/frame12/framework-plymouth-theme/framework/progress-91.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0092.png rename to frame12/framework-plymouth-theme/framework/progress-91.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0093.png b/frame12/framework-plymouth-theme/framework/progress-92.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0093.png rename to frame12/framework-plymouth-theme/framework/progress-92.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0094.png b/frame12/framework-plymouth-theme/framework/progress-93.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0094.png rename to frame12/framework-plymouth-theme/framework/progress-93.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0095.png b/frame12/framework-plymouth-theme/framework/progress-94.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0095.png rename to frame12/framework-plymouth-theme/framework/progress-94.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0096.png b/frame12/framework-plymouth-theme/framework/progress-95.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0096.png rename to frame12/framework-plymouth-theme/framework/progress-95.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0097.png b/frame12/framework-plymouth-theme/framework/progress-96.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0097.png rename to frame12/framework-plymouth-theme/framework/progress-96.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0098.png b/frame12/framework-plymouth-theme/framework/progress-97.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0098.png rename to frame12/framework-plymouth-theme/framework/progress-97.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0099.png b/frame12/framework-plymouth-theme/framework/progress-98.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0099.png rename to frame12/framework-plymouth-theme/framework/progress-98.png diff --git a/frame12/framework-plymouth-theme/framework/throbber-0100.png b/frame12/framework-plymouth-theme/framework/progress-99.png similarity index 100% rename from frame12/framework-plymouth-theme/framework/throbber-0100.png rename to frame12/framework-plymouth-theme/framework/progress-99.png diff --git a/frame12/linked-dotfiles/niri/config.kdl b/frame12/linked-dotfiles/niri/config.kdl index ec2ea16..5093c05 100644 --- a/frame12/linked-dotfiles/niri/config.kdl +++ b/frame12/linked-dotfiles/niri/config.kdl @@ -15,6 +15,11 @@ hotkey-overlay { skip-at-startup } +debug { + // Allows notification actions and window activation from Noctalia + honor-xdg-activation-with-invalid-serial +} + // // OUTPUTS // @@ -129,7 +134,7 @@ layout { // All windows - corner radius, opacity window-rule { - geometry-corner-radius 14 14 0 14 + geometry-corner-radius 20 20 0 20 clip-to-geometry true } @@ -234,6 +239,12 @@ layer-rule { block-out-from "screencast" } +// Noctalia overview wallpaper on backdrop (blurred in overview mode) +layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true +} + // // BINDS // diff --git a/frame12/modules/colemak-ec.nix b/frame12/modules/colemak-ec.nix index 389e0d5..533f8ee 100644 --- a/frame12/modules/colemak-ec.nix +++ b/frame12/modules/colemak-ec.nix @@ -111,13 +111,16 @@ in options.colemakEc.enable = lib.mkEnableOption "Colemak-DH EC keyboard remap"; config = lib.mkIf config.colemakEc.enable { + # Require systemd initrd (set in default.nix for Plymouth compatibility) + assertions = [{ + assertion = config.boot.initrd.systemd.enable; + message = "colemakEc requires boot.initrd.systemd.enable = true"; + }]; + # =========================================== # INITRD: Apply remap BEFORE LUKS decryption # =========================================== - # Enable systemd in initrd (required for this approach) - boot.initrd.systemd.enable = true; - # Add kernel modules for EC communication boot.initrd.availableKernelModules = [ "cros_ec" "cros_ec_lpcs" ]; diff --git a/frame12/modules/home-manager/home.nix b/frame12/modules/home-manager/home.nix index c8c0519..eba11e3 100644 --- a/frame12/modules/home-manager/home.nix +++ b/frame12/modules/home-manager/home.nix @@ -8,9 +8,11 @@ { imports = [ ../../../shared/modules/apps/firefox/firefox.nix + ../../../shared/modules/apps/ghostty.nix ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix + ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ./programs.nix ]; @@ -21,9 +23,17 @@ home.stateVersion = "25.05"; # Please read the comment before changing. firefoxApp.enable = true; + ghosttyApp.enable = true; helixApp.enable = true; + stylePreview.enable = true; fonts.fontconfig.enable = true; + # OpenCode with Stylix theming (using unstable package) + programs.opencode = { + enable = true; + package = unstable.opencode; + }; + # Stylix auto-theming - applies to all programs..enable apps stylix.autoEnable = true; @@ -52,7 +62,6 @@ jq python3 unstable.claude-code - unstable.opencode nodejs_24 docker-compose ### LSP's diff --git a/frame12/modules/home-manager/programs.nix b/frame12/modules/home-manager/programs.nix index 2f24b84..a12f00d 100644 --- a/frame12/modules/home-manager/programs.nix +++ b/frame12/modules/home-manager/programs.nix @@ -7,28 +7,7 @@ # # Terminals # - ghostty = { - enable = true; - settings = { - # Font managed by Stylix, but we can override family here - # Stylix sets font-size via stylix.fonts.sizes.terminal - font-family = "Maple Mono NF"; - - # Ligatures - Maple Mono NF has full ligature support - font-feature = [ - "+calt" # contextual alternates - "+liga" # standard ligatures - ]; - - window-padding-x = 4; - window-padding-y = 4; - - keybind = [ - "ctrl+shift+plus=increase_font_size:1" - "shift+enter=text:\\n" - ]; - }; - }; + # Ghostty config is in shared/modules/apps/ghostty.nix (enable with ghosttyApp.enable = true) foot = { enable = true; diff --git a/frame12/modules/niri/niri_conf.nix b/frame12/modules/niri/niri_conf.nix index ca2c25c..78dd68e 100755 --- a/frame12/modules/niri/niri_conf.nix +++ b/frame12/modules/niri/niri_conf.nix @@ -65,7 +65,6 @@ in [ bash egl-wayland - # foot is in programs.nix for Stylix theming git glib # gsettings grim @@ -75,7 +74,6 @@ in man-pages man-pages-posix nautilus - # networkmanagerapplet # Noctalia handles wifi pavucontrol slurp swaylock @@ -83,13 +81,10 @@ in syncthingtray unstable.ghostty unstable.xwayland-satellite - # waybar is in programs.nix for Stylix theming wdisplays wl-clipboard - # wofi is in programs.nix for Stylix theming xdg-utils zsh - # Fonts ] config.niriwm.systemPackages ]; diff --git a/frame12/modules/user/main_user.nix b/frame12/modules/user/main_user.nix deleted file mode 100644 index 9ff96f1..0000000 --- a/frame12/modules/user/main_user.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ lib, config, pkgs, ... }: - -let - cfg = config.main_user; -in -{ - options.main_user = { - enable = lib.mkEnableOption "enable user module"; - - isDesktopUser = lib.mkOption { - default = false; - example = true; - description = "Add additional user groups for desktop users"; - }; - - userName = lib.mkOption { - default = "mainuser"; - description = "username"; - }; - }; - - config = lib.mkIf cfg.enable { - users.users.${cfg.userName} = lib.mkMerge [ - { - isNormalUser = true; - initialPassword = "password"; - - description = "main user"; - shell = pkgs.zsh; - } - - (lib.mkIf (!cfg.isDesktopUser) { - extraGroups = [ - "wheel" - "networkmanager" - cfg.userName - ]; - }) - (lib.mkIf cfg.isDesktopUser { - extraGroups = [ - "wheel" - "networkmanager" - "corectrl" - cfg.userName - "video" - "audio" - # For android - "adbusers" - # For serial interfaces - "dialout" - # For docker - "docker" - ]; - }) - ]; - }; -} \ No newline at end of file diff --git a/jaci/default.nix b/jaci/default.nix index f66b4fc..1127958 100644 --- a/jaci/default.nix +++ b/jaci/default.nix @@ -17,62 +17,11 @@ deskCfg = { userName = userName; hostName = hostName; + fullName = fullName; de = desktop; installGaming = gaming; }; - # Stylix theming - auto-generated light theme from wallpaper - stylix = { - enable = true; - image = ./kiki_background.jpg; - # Auto-generate color scheme from wallpaper - polarity = "light"; - # System-wide cursor - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 32; - }; - # Fonts - fonts = { - serif = { - package = pkgs.lato; - name = "Lato"; - }; - sansSerif = { - package = pkgs.lato; - name = "Lato"; - }; - monospace = { - package = pkgs.maple-mono.NF; - name = "Maple Mono NF"; - }; - emoji = { - package = pkgs.noto-fonts-color-emoji; - name = "Noto Color Emoji"; - }; - sizes = { - applications = 14; - desktop = 14; - popups = 14; - terminal = 14; - }; - }; - - # Icon theme for tray applets (nm-applet, etc.) - # Note: "Reversal-dark" has dark icons (for light backgrounds) - # "Reversal" has light icons (for dark backgrounds) - iconTheme = { - enable = true; - package = pkgs.reversal-icon-theme; - light = "Reversal-dark"; - dark = "Reversal"; - }; - - # Disable plymouth styling (use default) - targets.plymouth.enable = false; - }; - # Limit the number of generations to keep boot.loader.systemd-boot.configurationLimit = 5; diff --git a/jaci/desktop-configuration.nix b/jaci/desktop-configuration.nix index 77eec0b..7f7846e 100644 --- a/jaci/desktop-configuration.nix +++ b/jaci/desktop-configuration.nix @@ -28,6 +28,11 @@ in type = lib.types.str; description = "Hostname for system"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = "User"; + description = "Full display name for the user"; + }; installGaming = lib.mkOption { type = lib.types.bool; default = true; @@ -36,7 +41,7 @@ in }; imports = [ - modules/user/main_user.nix + ../shared/modules/user/main_user.nix modules/niri/niri_conf.nix ../shared/modules/system/power_manager.nix ../shared/modules/system/noctalia-system.nix @@ -50,6 +55,58 @@ in } ]; + # Stylix theming - auto-generated light theme from wallpaper + stylix = { + enable = true; + image = ./kiki_background.jpg; + # Auto-generate color scheme from wallpaper + polarity = "light"; + # System-wide cursor + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 32; + }; + # Fonts + fonts = { + serif = { + package = pkgs.lato; + name = "Lato"; + }; + sansSerif = { + package = pkgs.lato; + name = "Lato"; + }; + monospace = { + package = pkgs.maple-mono.NF; + name = "Maple Mono NF"; + }; + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + sizes = { + applications = 14; + desktop = 14; + popups = 14; + terminal = 14; + }; + }; + + # Icon theme for tray applets (nm-applet, etc.) + # Note: "Reversal-dark" has dark icons (for light backgrounds) + # "Reversal" has light icons (for dark backgrounds) + iconTheme = { + enable = true; + package = pkgs.reversal-icon-theme; + light = "Reversal-dark"; + dark = "Reversal"; + }; + + # Disable plymouth styling (use default) + targets.plymouth.enable = false; + }; + nixpkgs.overlays = [ inputs.nur.overlays.default ]; @@ -75,12 +132,16 @@ in cp -r ${./kiki-plymouth-theme/kiki}/* $out/share/plymouth/themes/kiki/ substituteInPlace $out/share/plymouth/themes/kiki/kiki.plymouth \ --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki" + substituteInPlace $out/share/plymouth/themes/kiki/kiki.script \ + --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki" '') (pkgs.runCommand "plymouth-kiki-pixel-theme" { } '' mkdir -p $out/share/plymouth/themes/kiki-pixel cp -r ${./kiki-plymouth-theme/kiki-pixel}/* $out/share/plymouth/themes/kiki-pixel/ substituteInPlace $out/share/plymouth/themes/kiki-pixel/kiki-pixel.plymouth \ --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki-pixel" + substituteInPlace $out/share/plymouth/themes/kiki-pixel/kiki-pixel.script \ + --replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki-pixel" '') ]; }; @@ -118,7 +179,9 @@ in main_user = { enable = true; userName = deskCfg.userName; + fullName = deskCfg.fullName; isDesktopUser = true; + extraGroups = [ "corectrl" ]; }; power_manager = { diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth index 4d0c7cd..1340dd2 100644 --- a/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth +++ b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth @@ -1,54 +1,8 @@ [Plymouth Theme] Name=Kiki Pixel Description=Pixel art Kiki animation from Kiki's Delivery Service. -ModuleName=two-step +ModuleName=script -[two-step] -Font=Cantarell 12 -TitleFont=Cantarell Light 30 +[script] ImageDir=@IMAGEDIR@ -DialogHorizontalAlignment=.5 -DialogVerticalAlignment=.382 -TitleHorizontalAlignment=.5 -TitleVerticalAlignment=.382 -HorizontalAlignment=.5 -VerticalAlignment=.5 -WatermarkHorizontalAlignment=.5 -WatermarkVerticalAlignment=.96 -Transition=none -TransitionDuration=0.0 -BackgroundStartColor=0x82ADEA -BackgroundEndColor=0x6B9BD1 -ProgressBarBackgroundColor=0x5A8AC0 -ProgressBarForegroundColor=0xffffff -MessageBelowAnimation=true - -[boot-up] -UseEndAnimation=false - -[shutdown] -UseEndAnimation=false - -[reboot] -UseEndAnimation=false - -[updates] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Installing Updates... -SubTitle=Do not turn off your computer - -[system-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading System... -SubTitle=Do not turn off your computer - -[firmware-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading Firmware... -SubTitle=Do not turn off your computer +ScriptFile=@IMAGEDIR@/kiki-pixel.script diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.script b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.script new file mode 100644 index 0000000..6894019 --- /dev/null +++ b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.script @@ -0,0 +1,110 @@ +// Kiki Pixel Plymouth Theme Script +// Pixel art Kiki animation from Kiki's Delivery Service +// Adapted from adi1090x plymouth-themes template + +// Screen size +screen.w = Window.GetWidth(0); +screen.h = Window.GetHeight(0); +screen.half.w = Window.GetWidth(0) / 2; +screen.half.h = Window.GetHeight(0) / 2; + +// Question prompt +question = null; +answer = null; + +// Message +message = null; + +// Password prompt +bullets = null; +prompt = null; +bullet.image = Image.Text("*", 1, 1, 1); + +// Flow +state.status = "play"; +state.time = 0.0; + +//--------------------------------- Refresh (Logo animation) -------------------------- + +// Frame count: 32 frames (0-31) +frame_count = 32; + +// Load all animation frames +for (i = 0; i < frame_count; i++) + frame_image[i] = Image("progress-" + i + ".png"); +frame_sprite = Sprite(); + +// Set image position (centered) +frame_sprite.SetX(Window.GetX() + (Window.GetWidth(0) / 2 - frame_image[0].GetWidth() / 2)); +frame_sprite.SetY(Window.GetY() + (Window.GetHeight(0) / 2 - frame_image[0].GetHeight() / 2)); + +progress = 0; + +fun refresh_callback () + { + // Speed divisor of 2 for smooth 32-frame animation + frame_sprite.SetImage(frame_image[Math.Int(progress / 2) % frame_count]); + progress++; + } + +Plymouth.SetRefreshFunction (refresh_callback); + +//------------------------------------- Question prompt ------------------------------- +fun DisplayQuestionCallback(prompt, entry) { + question = null; + answer = null; + + if (entry == "") + entry = ""; + + question.image = Image.Text(prompt, 1, 1, 1); + question.sprite = Sprite(question.image); + question.sprite.SetX(screen.half.w - question.image.GetWidth() / 2); + question.sprite.SetY(screen.h - 4 * question.image.GetHeight()); + + answer.image = Image.Text(entry, 1, 1, 1); + answer.sprite = Sprite(answer.image); + answer.sprite.SetX(screen.half.w - answer.image.GetWidth() / 2); + answer.sprite.SetY(screen.h - 2 * answer.image.GetHeight()); +} +Plymouth.SetDisplayQuestionFunction(DisplayQuestionCallback); + +//------------------------------------- Password prompt (LUKS) ------------------------ +fun DisplayPasswordCallback(nil, bulletCount) { + state.status = "pause"; + totalWidth = bulletCount * bullet.image.GetWidth(); + startPos = screen.half.w - totalWidth / 2; + + prompt.image = Image.Text("Enter Password", 1, 1, 1); + prompt.sprite = Sprite(prompt.image); + prompt.sprite.SetX(screen.half.w - prompt.image.GetWidth() / 2); + prompt.sprite.SetY(screen.h - 4 * prompt.image.GetHeight()); + + // Clear all bullets (user might hit backspace) + bullets = null; + for (i = 0; i < bulletCount; i++) { + bullets[i].sprite = Sprite(bullet.image); + bullets[i].sprite.SetX(startPos + i * bullet.image.GetWidth()); + bullets[i].sprite.SetY(screen.h - 2 * bullet.image.GetHeight()); + } +} +Plymouth.SetDisplayPasswordFunction(DisplayPasswordCallback); + +//--------------------------- Normal display (unset all text) ---------------------- +fun DisplayNormalCallback() { + state.status = "play"; + bullets = null; + prompt = null; + message = null; + question = null; + answer = null; +} +Plymouth.SetDisplayNormalFunction(DisplayNormalCallback); + +//----------------------------------------- Message -------------------------------- +fun MessageCallback(text) { + message.image = Image.Text(text, 1, 1, 1); + message.sprite = Sprite(message.image); + message.sprite.SetPosition(screen.half.w - message.image.GetWidth() / 2, message.image.GetHeight()); +} +Plymouth.SetMessageFunction(MessageCallback); diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-0.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-0.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-1.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-1.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-10.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-10.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-11.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-11.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-12.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-12.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-13.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-13.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-14.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-14.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-15.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-15.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-16.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-16.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-17.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-17.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-18.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-18.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-19.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-19.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-2.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-2.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-20.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-20.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-21.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-21.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-22.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-22.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-23.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-23.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-24.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-24.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-25.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-25.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-26.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-26.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-27.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-27.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-28.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-28.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-29.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-29.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-3.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-3.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-30.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-30.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-31.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-31.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-4.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-4.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-5.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-5.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-6.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-6.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-7.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-7.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-8.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-8.png diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png b/jaci/kiki-plymouth-theme/kiki-pixel/progress-9.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png rename to jaci/kiki-plymouth-theme/kiki-pixel/progress-9.png diff --git a/jaci/kiki-plymouth-theme/kiki/kiki.plymouth b/jaci/kiki-plymouth-theme/kiki/kiki.plymouth index d80dc0a..20e5517 100644 --- a/jaci/kiki-plymouth-theme/kiki/kiki.plymouth +++ b/jaci/kiki-plymouth-theme/kiki/kiki.plymouth @@ -1,54 +1,8 @@ [Plymouth Theme] Name=Kiki Description=Theme with animated Kiki from Kiki's Delivery Service lying in grass. -ModuleName=two-step +ModuleName=script -[two-step] -Font=Cantarell 12 -TitleFont=Cantarell Light 30 +[script] ImageDir=@IMAGEDIR@ -DialogHorizontalAlignment=.5 -DialogVerticalAlignment=.382 -TitleHorizontalAlignment=.5 -TitleVerticalAlignment=.382 -HorizontalAlignment=.5 -VerticalAlignment=.5 -WatermarkHorizontalAlignment=.5 -WatermarkVerticalAlignment=.96 -Transition=none -TransitionDuration=0.0 -BackgroundStartColor=0x498172 -BackgroundEndColor=0x759B65 -ProgressBarBackgroundColor=0x3a6b5e -ProgressBarForegroundColor=0xffffff -MessageBelowAnimation=true - -[boot-up] -UseEndAnimation=false - -[shutdown] -UseEndAnimation=false - -[reboot] -UseEndAnimation=false - -[updates] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Installing Updates... -SubTitle=Do not turn off your computer - -[system-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading System... -SubTitle=Do not turn off your computer - -[firmware-upgrade] -SuppressMessages=true -ProgressBarShowPercentComplete=true -UseProgressBar=true -Title=Upgrading Firmware... -SubTitle=Do not turn off your computer +ScriptFile=@IMAGEDIR@/kiki.script diff --git a/jaci/kiki-plymouth-theme/kiki/kiki.script b/jaci/kiki-plymouth-theme/kiki/kiki.script new file mode 100644 index 0000000..04a4569 --- /dev/null +++ b/jaci/kiki-plymouth-theme/kiki/kiki.script @@ -0,0 +1,110 @@ +// Kiki Plymouth Theme Script +// Kiki from Kiki's Delivery Service lying in grass +// Adapted from adi1090x plymouth-themes template + +// Screen size +screen.w = Window.GetWidth(0); +screen.h = Window.GetHeight(0); +screen.half.w = Window.GetWidth(0) / 2; +screen.half.h = Window.GetHeight(0) / 2; + +// Question prompt +question = null; +answer = null; + +// Message +message = null; + +// Password prompt +bullets = null; +prompt = null; +bullet.image = Image.Text("*", 1, 1, 1); + +// Flow +state.status = "play"; +state.time = 0.0; + +//--------------------------------- Refresh (Logo animation) -------------------------- + +// Frame count: 12 frames (0-11) +frame_count = 12; + +// Load all animation frames +for (i = 0; i < frame_count; i++) + frame_image[i] = Image("progress-" + i + ".png"); +frame_sprite = Sprite(); + +// Set image position (centered) +frame_sprite.SetX(Window.GetX() + (Window.GetWidth(0) / 2 - frame_image[0].GetWidth() / 2)); +frame_sprite.SetY(Window.GetY() + (Window.GetHeight(0) / 2 - frame_image[0].GetHeight() / 2)); + +progress = 0; + +fun refresh_callback () + { + // Speed divisor of 3 for smooth 12-frame loop animation + frame_sprite.SetImage(frame_image[Math.Int(progress / 3) % frame_count]); + progress++; + } + +Plymouth.SetRefreshFunction (refresh_callback); + +//------------------------------------- Question prompt ------------------------------- +fun DisplayQuestionCallback(prompt, entry) { + question = null; + answer = null; + + if (entry == "") + entry = ""; + + question.image = Image.Text(prompt, 1, 1, 1); + question.sprite = Sprite(question.image); + question.sprite.SetX(screen.half.w - question.image.GetWidth() / 2); + question.sprite.SetY(screen.h - 4 * question.image.GetHeight()); + + answer.image = Image.Text(entry, 1, 1, 1); + answer.sprite = Sprite(answer.image); + answer.sprite.SetX(screen.half.w - answer.image.GetWidth() / 2); + answer.sprite.SetY(screen.h - 2 * answer.image.GetHeight()); +} +Plymouth.SetDisplayQuestionFunction(DisplayQuestionCallback); + +//------------------------------------- Password prompt (LUKS) ------------------------ +fun DisplayPasswordCallback(nil, bulletCount) { + state.status = "pause"; + totalWidth = bulletCount * bullet.image.GetWidth(); + startPos = screen.half.w - totalWidth / 2; + + prompt.image = Image.Text("Enter Password", 1, 1, 1); + prompt.sprite = Sprite(prompt.image); + prompt.sprite.SetX(screen.half.w - prompt.image.GetWidth() / 2); + prompt.sprite.SetY(screen.h - 4 * prompt.image.GetHeight()); + + // Clear all bullets (user might hit backspace) + bullets = null; + for (i = 0; i < bulletCount; i++) { + bullets[i].sprite = Sprite(bullet.image); + bullets[i].sprite.SetX(startPos + i * bullet.image.GetWidth()); + bullets[i].sprite.SetY(screen.h - 2 * bullet.image.GetHeight()); + } +} +Plymouth.SetDisplayPasswordFunction(DisplayPasswordCallback); + +//--------------------------- Normal display (unset all text) ---------------------- +fun DisplayNormalCallback() { + state.status = "play"; + bullets = null; + prompt = null; + message = null; + question = null; + answer = null; +} +Plymouth.SetDisplayNormalFunction(DisplayNormalCallback); + +//----------------------------------------- Message -------------------------------- +fun MessageCallback(text) { + message.image = Image.Text(text, 1, 1, 1); + message.sprite = Sprite(message.image); + message.sprite.SetPosition(screen.half.w - message.image.GetWidth() / 2, message.image.GetHeight()); +} +Plymouth.SetMessageFunction(MessageCallback); diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0001.png b/jaci/kiki-plymouth-theme/kiki/progress-0.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0001.png rename to jaci/kiki-plymouth-theme/kiki/progress-0.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0002.png b/jaci/kiki-plymouth-theme/kiki/progress-1.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0002.png rename to jaci/kiki-plymouth-theme/kiki/progress-1.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0011.png b/jaci/kiki-plymouth-theme/kiki/progress-10.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0011.png rename to jaci/kiki-plymouth-theme/kiki/progress-10.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0012.png b/jaci/kiki-plymouth-theme/kiki/progress-11.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0012.png rename to jaci/kiki-plymouth-theme/kiki/progress-11.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0003.png b/jaci/kiki-plymouth-theme/kiki/progress-2.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0003.png rename to jaci/kiki-plymouth-theme/kiki/progress-2.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0004.png b/jaci/kiki-plymouth-theme/kiki/progress-3.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0004.png rename to jaci/kiki-plymouth-theme/kiki/progress-3.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0005.png b/jaci/kiki-plymouth-theme/kiki/progress-4.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0005.png rename to jaci/kiki-plymouth-theme/kiki/progress-4.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0006.png b/jaci/kiki-plymouth-theme/kiki/progress-5.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0006.png rename to jaci/kiki-plymouth-theme/kiki/progress-5.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0007.png b/jaci/kiki-plymouth-theme/kiki/progress-6.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0007.png rename to jaci/kiki-plymouth-theme/kiki/progress-6.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0008.png b/jaci/kiki-plymouth-theme/kiki/progress-7.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0008.png rename to jaci/kiki-plymouth-theme/kiki/progress-7.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0009.png b/jaci/kiki-plymouth-theme/kiki/progress-8.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0009.png rename to jaci/kiki-plymouth-theme/kiki/progress-8.png diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0010.png b/jaci/kiki-plymouth-theme/kiki/progress-9.png similarity index 100% rename from jaci/kiki-plymouth-theme/kiki/throbber-0010.png rename to jaci/kiki-plymouth-theme/kiki/progress-9.png diff --git a/jaci/linked-dotfiles/niri/config.kdl b/jaci/linked-dotfiles/niri/config.kdl index 705c539..32a0d22 100644 --- a/jaci/linked-dotfiles/niri/config.kdl +++ b/jaci/linked-dotfiles/niri/config.kdl @@ -10,6 +10,11 @@ hotkey-overlay { skip-at-startup } +debug { + // Allows notification actions and window activation from Noctalia + honor-xdg-activation-with-invalid-serial +} + // // OUTPUTS // @@ -119,7 +124,7 @@ layout { // All windows - corner radius, opacity window-rule { - geometry-corner-radius 18 18 18 18 + geometry-corner-radius 20 clip-to-geometry true } @@ -197,6 +202,12 @@ layer-rule { block-out-from "screencast" } +// Noctalia overview wallpaper on backdrop (blurred in overview mode) +layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true +} + // // BINDS (QWERTY Layout) // diff --git a/jaci/modules/home-manager/home.nix b/jaci/modules/home-manager/home.nix index 6fc1f38..92edab0 100644 --- a/jaci/modules/home-manager/home.nix +++ b/jaci/modules/home-manager/home.nix @@ -7,9 +7,11 @@ { imports = [ ../../../shared/modules/apps/firefox/firefox.nix + ../../../shared/modules/apps/ghostty.nix ../../../shared/modules/apps/helix.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix + ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ./programs.nix ]; @@ -20,7 +22,9 @@ home.stateVersion = "23.11"; # Please read the comment before changing. firefoxApp.enable = true; + ghosttyApp.enable = true; helixApp.enable = true; + stylePreview.enable = true; fonts.fontconfig.enable = true; # Stylix auto-theming - applies to all programs..enable apps diff --git a/jaci/modules/home-manager/programs.nix b/jaci/modules/home-manager/programs.nix index 2f24b84..a12f00d 100644 --- a/jaci/modules/home-manager/programs.nix +++ b/jaci/modules/home-manager/programs.nix @@ -7,28 +7,7 @@ # # Terminals # - ghostty = { - enable = true; - settings = { - # Font managed by Stylix, but we can override family here - # Stylix sets font-size via stylix.fonts.sizes.terminal - font-family = "Maple Mono NF"; - - # Ligatures - Maple Mono NF has full ligature support - font-feature = [ - "+calt" # contextual alternates - "+liga" # standard ligatures - ]; - - window-padding-x = 4; - window-padding-y = 4; - - keybind = [ - "ctrl+shift+plus=increase_font_size:1" - "shift+enter=text:\\n" - ]; - }; - }; + # Ghostty config is in shared/modules/apps/ghostty.nix (enable with ghosttyApp.enable = true) foot = { enable = true; diff --git a/jaci/modules/user/main_user.nix b/jaci/modules/user/main_user.nix deleted file mode 100644 index a2489b7..0000000 --- a/jaci/modules/user/main_user.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ lib, config, pkgs, ... }: - -let - cfg = config.main_user; -in -{ - options.main_user = { - enable = lib.mkEnableOption "enable user module"; - - isDesktopUser = lib.mkOption { - default = false; - example = true; - description = "Add additional user groups for desktop users"; - }; - - userName = lib.mkOption { - default = "mainuser"; - description = "username"; - }; - }; - - config = lib.mkIf cfg.enable { - users.users.${cfg.userName} = lib.mkMerge [ - { - isNormalUser = true; - initialPassword = "password"; - - description = "main user"; - shell = pkgs.zsh; - } - - (lib.mkIf (!cfg.isDesktopUser) { - extraGroups = [ - "wheel" - "networkmanager" - cfg.userName - ]; - }) - (lib.mkIf cfg.isDesktopUser { - extraGroups = [ - "wheel" - "networkmanager" - "corectrl" - cfg.userName - "video" - "audio" - # For android - "adbusers" - ]; - }) - ]; - }; -} diff --git a/nate-work/bot-wallpaper.jpg b/nate-work/bot-wallpaper.jpg new file mode 100644 index 0000000..f99a64a Binary files /dev/null and b/nate-work/bot-wallpaper.jpg differ diff --git a/nate-work/default.nix b/nate-work/default.nix index 28b925c..fabbd87 100644 --- a/nate-work/default.nix +++ b/nate-work/default.nix @@ -17,61 +17,11 @@ deskCfg = { userName = userName; hostName = hostName; + fullName = fullName; de = desktop; installGaming = gaming; }; - # Stylix theming - auto-generate color scheme from wallpaper - stylix = { - enable = true; - image = ./wallpaper.png; - polarity = "dark"; - - # System-wide cursor - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 32; - }; - - # Fonts - fonts = { - serif = { - package = pkgs.lato; - name = "Lato"; - }; - sansSerif = { - package = pkgs.lato; - name = "Lato"; - }; - monospace = { - package = pkgs.maple-mono.NF; - name = "Maple Mono NF"; - }; - emoji = { - package = pkgs.noto-fonts-color-emoji; - name = "Noto Color Emoji"; - }; - sizes = { - applications = 12; - desktop = 10; - popups = 10; - terminal = 11; - }; - }; - - # Icon theme for tray applets (nm-applet, etc.) - iconTheme = { - enable = true; - package = pkgs.papirus-icon-theme; - light = "Papirus-Light"; - dark = "Papirus-Dark"; - }; - - # Let plymouth use its own theme - targets.plymouth.enable = false; - }; - # Limit the number of generations to keep boot.loader.systemd-boot.configurationLimit = 5; diff --git a/nate-work/desktop-configuration.nix b/nate-work/desktop-configuration.nix index ec68ea1..3a76c92 100644 --- a/nate-work/desktop-configuration.nix +++ b/nate-work/desktop-configuration.nix @@ -19,6 +19,11 @@ in type = lib.types.str; description = "Hostname for system"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = "User"; + description = "Full display name for the user"; + }; installGaming = lib.mkOption { type = lib.types.bool; default = true; @@ -27,7 +32,7 @@ in }; imports = [ - modules/user/main_user.nix + ../shared/modules/user/main_user.nix modules/sway/sway_conf.nix modules/hypr/hyprland.nix modules/niri/niri_conf.nix @@ -45,6 +50,59 @@ in message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}"; } ]; + + # Stylix theming - auto-generate color scheme from wallpaper + stylix = { + enable = true; + image = ./bot-wallpaper.jpg; + + # Check with `nix build nixpkgs#base16-schemes && ls result/share/themes` + base16Scheme = "${pkgs.base16-schemes}/share/themes/kimber.yaml"; + polarity = "dark"; + + # System-wide cursor + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 32; + }; + + # Fonts + fonts = { + serif = { + package = pkgs.lato; + name = "Lato"; + }; + sansSerif = { + package = pkgs.lato; + name = "Lato"; + }; + monospace = { + package = pkgs.maple-mono.NF; + name = "Maple Mono NF"; + }; + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + sizes = { + applications = 14; + desktop = 16; + popups = 14; + terminal = 14; + }; + }; + + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + + # Let plymouth use its own theme + targets.plymouth.enable = false; + }; nixpkgs.overlays = [ inputs.nur.overlays.default @@ -82,7 +140,9 @@ in main_user = { enable = true; userName = deskCfg.userName; + fullName = deskCfg.fullName; isDesktopUser = true; + extraGroups = [ "dialout" "docker" "i2c" "lp" "scanner" "syncthing" ]; }; swaywm = { diff --git a/nate-work/linked-dotfiles/niri/config.kdl b/nate-work/linked-dotfiles/niri/config.kdl index 958020e..e40c6b1 100644 --- a/nate-work/linked-dotfiles/niri/config.kdl +++ b/nate-work/linked-dotfiles/niri/config.kdl @@ -16,6 +16,11 @@ hotkey-overlay { skip-at-startup } +debug { + // Allows notification actions and window activation from Noctalia + honor-xdg-activation-with-invalid-serial +} + // // OUTPUTS // @@ -25,13 +30,13 @@ output "HDMI-A-1" { transform "normal" } +workspace "term" +workspace "net" workspace "chat" { layout { always-center-single-column } } -workspace "net" -workspace "term" workspace "scratch" // @@ -125,7 +130,7 @@ layout { // All windows - corner radius, opacity window-rule { - geometry-corner-radius 14 14 0 14 + geometry-corner-radius 20 20 0 20 clip-to-geometry true } @@ -194,6 +199,12 @@ layer-rule { block-out-from "screencast" } +// Noctalia overview wallpaper on backdrop (blurred in overview mode) +layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true +} + // App specific window rules window-rule { match app-id=r#"^com.slack.Slack$"# diff --git a/nate-work/modules/home-manager/home.nix b/nate-work/modules/home-manager/home.nix index 9b28e43..8a62cc8 100644 --- a/nate-work/modules/home-manager/home.nix +++ b/nate-work/modules/home-manager/home.nix @@ -13,6 +13,7 @@ ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix + ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ../vpn-proxy/vpn-proxy.nix ]; @@ -31,8 +32,15 @@ ghosttyApp.enable = true; helixApp.enable = true; sharedPrograms.enable = true; + stylePreview.enable = true; fonts.fontconfig.enable = true; + # OpenCode with Stylix theming (using unstable package) + programs.opencode = { + enable = true; + package = unstable.opencode; + }; + # Enable VPN proxy script vpnProxy.enable = true; @@ -54,11 +62,49 @@ # Enable Noctalia shell (replaces Waybar, SwayNC, SwayOSD, wlsunset) noctaliaShell = { enable = true; + # Bar barPosition = "top"; + barDensity = "spacious"; + barBackgroundOpacity = 1.0; + clockFormat = "HH:mm ddd, MMM dd"; + launcherIcon = "rocket"; + # Color scheme darkMode = true; - useWallpaperColors = true; # Generate colors from wallpaper - locationName = "Denver"; + useWallpaperColors = true; + # Location & weather + locationName = "Saratoga Springs, UT"; + use12hourFormat = true; + firstDayOfWeek = 1; + hideWeatherTimezone = true; + # General avatarImage = "/home/${userName}/.face"; + dimmerOpacity = 0.0; + lockScreenAnimations = true; + lockScreenCountdownDuration = 3000; + telemetryEnabled = true; + # UI fonts + fontDefault = "Lato"; + fontFixed = "Maple Mono NF"; + fontDefaultScale = 1.2; + panelBackgroundOpacity = 0.9; + # Wallpaper + wallpaperDirectory = "/home/${userName}/Pictures/Wallpapers"; + # Dock + dockBackgroundOpacity = 0.8; + dockSize = 1.5; + # Notifications & OSD + notificationLocation = "top"; + enableMediaToast = true; + osdLocation = "bottom"; + # Night light + enableNightLight = true; + nightLightTemp = "4011"; + # System monitor custom colors + systemMonitorUseCustomColors = true; + systemMonitorWarningColor = "#5a5a5a"; + systemMonitorCriticalColor = "#c88c8c"; + # Plugins + pluginsAutoUpdate = true; }; # Additional user packages @@ -87,7 +133,6 @@ awscli2 ## AI unstable.claude-code - unstable.opencode ## Go stuff go unstable.delve diff --git a/nate-work/modules/niri/niri_conf.nix b/nate-work/modules/niri/niri_conf.nix index 4927ee1..690e850 100644 --- a/nate-work/modules/niri/niri_conf.nix +++ b/nate-work/modules/niri/niri_conf.nix @@ -86,11 +86,13 @@ environment.sessionVariables = { # use wayland MOZ_ENABLE_WAYLAND = "1"; + FIREFOX_USE_SYSTEM_THEME = "true"; T_QPA_PLATFORM = "wayland"; GDK_BACKEND = "wayland"; WLR_NO_HARDWARE_CURSORS = "1"; ELECTRON_OZONE_PLATFORM_HINT = "auto"; NIXOS_OZONE_WL = "1"; + GTK_THEME = "stylix"; # For NVIDIA - only enable if not using on-the-go GBM_BACKEND = if isOnTheGo then "" else "nvidia-drm"; __GLX_VENDOR_LIBRARY_NAME = if isOnTheGo then "" else "nvidia"; diff --git a/nate-work/modules/user/main_user.nix b/nate-work/modules/user/main_user.nix deleted file mode 100644 index 5b01374..0000000 --- a/nate-work/modules/user/main_user.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ lib, config, pkgs, ... }: - -let - cfg = config.main_user; -in -{ - options.main_user = { - enable = lib.mkEnableOption "enable user module"; - - isDesktopUser = lib.mkOption { - default = false; - example = true; - description = "Add additional user groups for desktop users"; - }; - - userName = lib.mkOption { - default = "mainuser"; - description = "username"; - }; - }; - - config = lib.mkIf cfg.enable { - users.users.${cfg.userName} = lib.mkMerge [ - { - isNormalUser = true; - initialPassword = "password"; - - description = "main user"; - shell = pkgs.zsh; - } - - (lib.mkIf (!cfg.isDesktopUser) { - extraGroups = [ - "wheel" - "networkmanager" - cfg.userName - ]; - }) - (lib.mkIf cfg.isDesktopUser { - extraGroups = [ - "adbusers" - "audio" - cfg.userName - "dialout" - "docker" - "i2c" - "lp" - "networkmanager" - "scanner" - "syncthing" - "video" - "wheel" - - ]; - }) - ]; - }; -} diff --git a/nate/default.nix b/nate/default.nix index 3ff4961..0a38d46 100644 --- a/nate/default.nix +++ b/nate/default.nix @@ -16,61 +16,11 @@ deskCfg = { userName = userName; hostName = hostName; + fullName = fullName; de = desktop; installGaming = gaming; }; - # Stylix theming - auto-generate color scheme from wallpaper - stylix = { - enable = true; - image = ./wallpaper.png; - polarity = "dark"; - - # System-wide cursor - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 32; - }; - - # Fonts - fonts = { - serif = { - package = pkgs.lato; - name = "Lato"; - }; - sansSerif = { - package = pkgs.lato; - name = "Lato"; - }; - monospace = { - package = pkgs.maple-mono.NF; - name = "Maple Mono NF"; - }; - emoji = { - package = pkgs.noto-fonts-color-emoji; - name = "Noto Color Emoji"; - }; - sizes = { - applications = 12; - desktop = 10; - popups = 10; - terminal = 11; - }; - }; - - # Icon theme for tray applets (nm-applet, etc.) - iconTheme = { - enable = true; - package = pkgs.papirus-icon-theme; - light = "Papirus-Light"; - dark = "Papirus-Dark"; - }; - - # Let plymouth use its own theme - targets.plymouth.enable = false; - }; - # Limit the number of generations to keep boot.loader.systemd-boot.configurationLimit = 5; diff --git a/nate/desktop-configuration.nix b/nate/desktop-configuration.nix index af7af6e..8bab6c4 100644 --- a/nate/desktop-configuration.nix +++ b/nate/desktop-configuration.nix @@ -19,6 +19,11 @@ in type = lib.types.str; description = "Hostname for system"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = "User"; + description = "Full display name for the user"; + }; installGaming = lib.mkOption { type = lib.types.bool; default = true; @@ -27,7 +32,7 @@ in }; imports = [ - modules/user/main_user.nix + ../shared/modules/user/main_user.nix modules/sway/sway_conf.nix modules/niri/niri_conf.nix ../shared/modules/services/motu-m4-combined.nix @@ -42,6 +47,57 @@ in message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}"; } ]; + + # Stylix theming - auto-generate color scheme from wallpaper + stylix = { + enable = true; + image = ./wallpaper.png; + polarity = "dark"; + + # System-wide cursor + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 32; + }; + + # Fonts + fonts = { + serif = { + package = pkgs.lato; + name = "Lato"; + }; + sansSerif = { + package = pkgs.lato; + name = "Lato"; + }; + monospace = { + package = pkgs.maple-mono.NF; + name = "Maple Mono NF"; + }; + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + sizes = { + applications = 12; + desktop = 10; + popups = 10; + terminal = 11; + }; + }; + + # Icon theme for tray applets (nm-applet, etc.) + iconTheme = { + enable = true; + package = pkgs.papirus-icon-theme; + light = "Papirus-Light"; + dark = "Papirus-Dark"; + }; + + # Let plymouth use its own theme + targets.plymouth.enable = false; + }; nixpkgs.overlays = [ inputs.nur.overlays.default @@ -64,7 +120,9 @@ in main_user = { enable = true; userName = deskCfg.userName; + fullName = deskCfg.fullName; isDesktopUser = true; + extraGroups = [ "dialout" "docker" "scanner" "lp" ]; }; swaywm = { diff --git a/nate/linked-dotfiles/niri/config.kdl b/nate/linked-dotfiles/niri/config.kdl new file mode 100644 index 0000000..5093c05 --- /dev/null +++ b/nate/linked-dotfiles/niri/config.kdl @@ -0,0 +1,429 @@ +// +// MISCELLANEOUS +// + +// gui startup - Noctalia handles bar, notifications, wallpaper, wifi, and bluetooth +spawn-at-startup "keepassxc" +spawn-at-startup "flatpak" "run" "org.signal.Signal" +// shell startup +spawn-sh-at-startup "sleep 5 && syncthingtray --wait" + +screenshot-path null // save screenshots just to clipboard +prefer-no-csd // (Client Side Decorations) ask clients to not add their own decorations + +hotkey-overlay { + skip-at-startup +} + +debug { + // Allows notification actions and window activation from Noctalia + honor-xdg-activation-with-invalid-serial +} + +// +// OUTPUTS +// +output "eDP-1"{ + scale 1.0 + variable-refresh-rate + transform "normal" +} + +workspace "term" +workspace "net" +workspace "chat" +workspace "scratch" + +// +// INPUTS +// +input { + keyboard { + xkb { + layout "us" + } + repeat-delay 175 + repeat-rate 50 + } + + touchpad { + tap + dwt + dwtp + natural-scroll + accel-speed 0.2 + accel-profile "adaptive" + } + + mouse { + accel-speed 0.2 + accel-profile "adaptive" + } + + trackpoint { + accel-speed 0.2 + accel-profile "adaptive" + } + + tablet { + map-to-output "eDP-1" + } + + touch { + map-to-output "eDP-1" + } + + disable-power-key-handling + warp-mouse-to-focus mode="center-xy" + focus-follows-mouse +} + +// +// LAYOUT +// +layout { + gaps 2 + + center-focused-column "on-overflow" + always-center-single-column + default-column-display "normal" + + tab-indicator { + hide-when-single-tab + } + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { + proportion 0.5; + } + + focus-ring { + width 0 + } + + border { + active-gradient from="#eaa4a8" to="#cbeaa6" angle=45 in="oklch longer hue" relative-to="workspace-view" + inactive-gradient from="#886D59" to="#517B65" angle=45 in="oklch longer hue" relative-to="workspace-view" + } + + shadow { + softness 30 + spread 5 + offset x=8 y=8 + draw-behind-window true + color "#00444444" + } + + struts { + left 10 + right 10 + top 10 + bottom 10 + } +} + + +// +// WINDOW RULES +// + +// All windows - corner radius, opacity +window-rule { + geometry-corner-radius 20 20 0 20 + clip-to-geometry true +} + +window-rule { + match is-active=true + opacity 0.99 +} + +window-rule { + match is-floating=true + opacity 0.92 +} + +// Term windows +window-rule { + match app-id="com.mitchellh.ghostty" + + default-column-width { proportion 0.5; } + open-on-workspace "term" +} + +// Net windows +window-rule { + match app-id="firefox" + + default-column-width { proportion 1.0; } + open-on-workspace "net" +} + +// Chat windows +window-rule { + match app-id=r#"^com\.discordapp\.Discord$"# + match app-id=r#"^org\.signal\.Signal$"# + + default-column-width { proportion 0.8; } + block-out-from "screencast" + open-on-workspace "chat" +} + +// Scratch windows (exclude unlock dialog so it can open on net) +window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + exclude app-id=r#"^org\.keepassxc\.KeePassXC$"# title="^Unlock Database - KeePassXC$" + + block-out-from "screencast" + open-on-workspace "scratch" +} + +// Keepass unlock dialog on Net workspace +window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# title="^Unlock Database - KeePassXC$" + + open-floating true + open-focused true + open-on-workspace "net" +} + +// File browser +window-rule { + match app-id="org.gnome.Nautilus" + + open-floating true + open-focused true + block-out-from "screencast" +} + +// Steam windowd +window-rule { + match app-id="steam" title="Friends List" + + open-floating true + open-focused false +} + +// Bright border on screen-shared windows +window-rule { + match is-window-cast-target=true + + focus-ring { + active-color "#f38ba8" + inactive-color "#7d0d2d" + } + + border { + inactive-color "#7d0d2d" + } + + shadow { + color "#7d0d2d70" + } + + tab-indicator { + active-color "#f38ba8" + inactive-color "#7d0d2d" + } +} + +// Block out notifications from screencasts. +layer-rule { + match namespace="^notifications$" + + block-out-from "screencast" +} + +// Noctalia overview wallpaper on backdrop (blurred in overview mode) +layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true +} + +// +// BINDS +// + +binds { + Mod+Shift+Slash { show-hotkey-overlay; } + + // Terminal - consistent with sway/hyprland + Mod+Return { spawn "ghostty"; } + + // Application launcher - Noctalia launcher + Mod+D { spawn "noctalia-shell" "ipc" "call" "launcher" "toggle"; } + + // File manager - consistent with sway/hyprland + Mod+T { spawn "nautilus"; } + + // Browser - consistent with sway/hyprland + Mod+W { spawn "firefox"; } + + // Close window - consistent with sway/hyprland + Mod+Q { close-window; } + + // Arrow keys for focus movement + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + + // Colemak-DH keys - consistent with sway/hyprland (n=left, i=down, e=up, o=right) + Mod+N { focus-column-left; } + Mod+I { focus-window-down; } + Mod+E { focus-window-up; } + Mod+O { focus-column-right; } + + // Arrow keys for window movement - consistent with sway/hyprland + Mod+Shift+Left { move-column-left; } + Mod+Shift+Down { move-window-down; } + Mod+Shift+Up { move-window-up; } + Mod+Shift+Right { move-column-right; } + + // Colemak-DH keys for window movement - consistent with sway/hyprland + Mod+Shift+N { move-column-left; } + Mod+Shift+I { move-window-down; } + Mod+Shift+E { move-window-up; } + Mod+Shift+O { move-column-right; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + // Monitor focus (keeping existing Shift pattern since this conflicts with window movement) + Mod+Ctrl+Left { focus-monitor-left; } + Mod+Ctrl+Down { focus-monitor-down; } + Mod+Ctrl+Up { focus-monitor-up; } + Mod+Ctrl+Right { focus-monitor-right; } + + // Colemak-DH keys for monitor focus + Mod+Ctrl+N { focus-monitor-left; } + Mod+Ctrl+I { focus-monitor-down; } + Mod+Ctrl+E { focus-monitor-up; } + Mod+Ctrl+O { focus-monitor-right; } + + // Move column to monitor + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + + // Colemak-DH keys for moving column to monitor + Mod+Shift+Ctrl+N { move-column-to-monitor-left; } + Mod+Shift+Ctrl+I { move-column-to-monitor-down; } + Mod+Shift+Ctrl+E { move-column-to-monitor-up; } + Mod+Shift+Ctrl+O { move-column-to-monitor-right; } + + // Workspace navigation (using Page keys to avoid conflicts with Colemak-DH movement) + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + + Mod+Minus { focus-workspace "scratch"; } + Mod+1 { focus-workspace "term"; } + Mod+2 { focus-workspace "net"; } + Mod+3 { focus-workspace "chat"; } + // Mod+3 { focus-workspace 3; } + // Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Shift+Minus { move-column-to-workspace "scratch"; } + Mod+Shift+1 { move-column-to-workspace "term"; } + Mod+Shift+2 { move-column-to-workspace "net"; } + Mod+Shift+3 { move-column-to-workspace "chat"; } + // Mod+Shift+3 { move-column-to-workspace 3; } + // Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + Mod+Comma { consume-window-into-column; } + Mod+Period { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + Mod+Shift+R { reset-window-height; } + // Fullscreen - consistent with sway/hyprland + Mod+F { fullscreen-window; } + Mod+Shift+F { maximize-column; } + + // Floating toggle + Mod+Space { toggle-window-floating; } + Mod+Shift+Space { switch-focus-between-floating-and-tiling; } + + Mod+C { center-column; } + + Mod+bracketleft { set-column-width "-10%"; } + Mod+bracketright { set-column-width "+10%"; } + + Mod+Shift+bracketleft { set-window-height "-10%"; } + Mod+Shift+bracketright { set-window-height "+10%"; } + + // + // Utilities + // + + // Notifications - Noctalia notification panel + Mod+Shift+C { spawn "noctalia-shell" "ipc" "call" "notificationHistory" "toggle"; } + + // Screenshots - consistent with sway/hyprland + Mod+P { screenshot; } + Mod+Shift+P { screenshot-screen; } + + // Traditional screenshot keys + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + // Volume control (via Noctalia) + XF86AudioRaiseVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } + XF86AudioMute allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } + XF86AudioMicMute allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "muteInput"; } + + // Media control + XF86AudioPlay { spawn "playerctl" "play-pause"; } + XF86AudioPause { spawn "playerctl" "pause"; } + XF86AudioNext { spawn "playerctl" "next"; } + XF86AudioPrev { spawn "playerctl" "previous"; } + XF86AudioStop { spawn "playerctl" "stop"; } + + // Brightness control (via Noctalia) + XF86MonBrightnessUp { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } + XF86MonBrightnessDown { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } + + // Screen rotation + Mod+Alt+Up { spawn "niri" "msg" "output" "eDP-1" "transform" "normal"; } + Mod+Alt+Right { spawn "niri" "msg" "output" "eDP-1" "transform" "90"; } + Mod+Alt+Down { spawn "niri" "msg" "output" "eDP-1" "transform" "180"; } + Mod+Alt+Left { spawn "niri" "msg" "output" "eDP-1" "transform" "270"; } + + // Session/Power menu (via Noctalia) + Mod+Shift+Q { spawn "noctalia-shell" "ipc" "call" "sessionMenu" "toggle"; } + Mod+Ctrl+Q { quit; } + Mod+Shift+Ctrl+P { power-off-monitors; } + + // Lock screen (via Noctalia) + Mod+L { spawn "noctalia-shell" "ipc" "call" "lockScreen" "lock"; } + + Mod+Shift+Ctrl+T { toggle-debug-tint; } +} + +switch-events { + lid-close { spawn "systemctl" "suspend"; } + lid-open { spawn "notify-send" "The laptop lid is open!"; } +} diff --git a/nate/modules/home-manager/home.nix b/nate/modules/home-manager/home.nix index 6d3e437..32355eb 100644 --- a/nate/modules/home-manager/home.nix +++ b/nate/modules/home-manager/home.nix @@ -13,6 +13,7 @@ ../../../shared/modules/home-manager/programs.nix ../../../shared/modules/home-manager/git-autosync.nix ../../../shared/modules/home-manager/noctalia.nix + ../../../shared/modules/home-manager/style-preview.nix ../niri/niri_home.nix ]; @@ -30,8 +31,15 @@ ghosttyApp.enable = true; helixApp.enable = true; sharedPrograms.enable = true; + stylePreview.enable = true; fonts.fontconfig.enable = true; + # OpenCode with Stylix theming (using unstable package) + programs.opencode = { + enable = true; + package = unstable.opencode; + }; + # Git autosync for star-command services.git-autosync = { enable = true; @@ -67,7 +75,6 @@ unstable.godot jq python3 - unstable.opencode unstable.claude-code usbutils openscad @@ -145,8 +152,8 @@ ]; xdg.configFile = { - # Active linked dotfiles - use frame12's niri config as it's the most up-to-date - "niri".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/frame12/linked-dotfiles/niri"; + # Active linked dotfiles + "niri".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/nate/linked-dotfiles/niri"; }; # Configure default applications for opening links diff --git a/nate/modules/niri/niri_conf.nix b/nate/modules/niri/niri_conf.nix index f1b7de9..1631f0e 100644 --- a/nate/modules/niri/niri_conf.nix +++ b/nate/modules/niri/niri_conf.nix @@ -97,11 +97,13 @@ in environment.sessionVariables = { # use wayland MOZ_ENABLE_WAYLAND = "1"; + FIREFOX_USE_SYSTEM_THEME = "true"; T_QPA_PLATFORM = "wayland"; GDK_BACKEND = "wayland"; WLR_NO_HARDWARE_CURSORS = "1"; ELECTRON_OZONE_PLATFORM_HINT = "auto"; NIXOS_OZONE_WL = "1"; + GTK_THEME = "stylix"; }; # adds additional man pages diff --git a/nate/modules/user/main_user.nix b/nate/modules/user/main_user.nix deleted file mode 100644 index ccdaa43..0000000 --- a/nate/modules/user/main_user.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ lib, config, pkgs, ... }: - -let - cfg = config.main_user; -in -{ - options.main_user = { - enable = lib.mkEnableOption "enable user module"; - - isDesktopUser = lib.mkOption { - default = false; - example = true; - description = "Add additional user groups for desktop users"; - }; - - userName = lib.mkOption { - default = "mainuser"; - description = "username"; - }; - }; - - config = lib.mkIf cfg.enable { - users.users.${cfg.userName} = lib.mkMerge [ - { - isNormalUser = true; - initialPassword = "password"; - - description = "main user"; - shell = pkgs.zsh; - } - - (lib.mkIf (!cfg.isDesktopUser) { - extraGroups = [ - "wheel" - "networkmanager" - cfg.userName - ]; - }) - (lib.mkIf cfg.isDesktopUser { - extraGroups = [ - "adbusers" - "audio" - cfg.userName - "dialout" - "docker" - "networkmanager" - "video" - "wheel" - # For scanner - "scanner" - "lp" - ]; - }) - ]; - }; -} diff --git a/scrappy/default.nix b/scrappy/default.nix index 79322a8..2744456 100644 --- a/scrappy/default.nix +++ b/scrappy/default.nix @@ -16,6 +16,7 @@ deskCfg = { userName = userName; hostName = hostName; + fullName = fullName; de = desktop; installGaming = gaming; }; diff --git a/scrappy/desktop-configuration.nix b/scrappy/desktop-configuration.nix index 130230c..4819a2a 100644 --- a/scrappy/desktop-configuration.nix +++ b/scrappy/desktop-configuration.nix @@ -19,6 +19,11 @@ in type = lib.types.str; description = "Hostname for system"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = "User"; + description = "Full display name for the user"; + }; installGaming = lib.mkOption { type = lib.types.bool; default = true; @@ -27,7 +32,7 @@ in }; imports = [ - modules/user/main_user.nix + ../shared/modules/user/main_user.nix ]; config = { @@ -91,7 +96,9 @@ in main_user = { enable = true; userName = deskCfg.userName; + fullName = deskCfg.fullName; isDesktopUser = true; + extraGroups = [ "corectrl" "dialout" "docker" ]; }; #niriwm = { diff --git a/scrappy/modules/user/main_user.nix b/scrappy/modules/user/main_user.nix deleted file mode 100644 index be730ac..0000000 --- a/scrappy/modules/user/main_user.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ lib, config, pkgs, ... }: - -let - cfg = config.main_user; -in -{ - options.main_user = { - enable = lib.mkEnableOption "enable user module"; - - isDesktopUser = lib.mkOption { - default = false; - example = true; - description = "Add additional user groups for desktop users"; - }; - - userName = lib.mkOption { - default = "mainuser"; - description = "username"; - }; - }; - - config = lib.mkIf cfg.enable { - users.users.${cfg.userName} = lib.mkMerge [ - { - isNormalUser = true; - initialPassword = "password"; - - description = "main user"; - shell = pkgs.zsh; - } - - (lib.mkIf (!cfg.isDesktopUser) { - extraGroups = [ - "wheel" - "networkmanager" - cfg.userName - ]; - }) - (lib.mkIf cfg.isDesktopUser { - extraGroups = [ - "wheel" - "networkmanager" - "corectrl" - cfg.userName - "video" - "audio" - # For android - "adbusers" - # For serial interfaces - "dialout" - # For docker - "docker" - ]; - }) - ]; - }; -} diff --git a/scripts/preview-base16.sh b/scripts/preview-base16.sh new file mode 100755 index 0000000..a61570a --- /dev/null +++ b/scripts/preview-base16.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# base16-preview.sh - Preview base16 themes as terminal color swatches + +THEMES_DIR="${1:-result/share/themes}" + +for theme in "$THEMES_DIR"/*.yaml; do + name=$(basename "$theme" .yaml) + echo -e "\n\033[1m$name\033[0m" + + # Extract base00-base0F hex values + colors=() + while IFS=': ' read -r key value; do + case "$key" in + base0[0-9A-Fa-f]|base1[0-5]) colors+=("${value//\"/}") ;; + esac + done < "$theme" + + # Print swatches + for hex in "${colors[@]}"; do + hex="${hex#\#}" + r=$((16#${hex:0:2})) + g=$((16#${hex:2:2})) + b=$((16#${hex:4:2})) + printf "\033[48;2;%d;%d;%dm \033[0m" "$r" "$g" "$b" + done + echo +done diff --git a/shared/modules/apps/ghostty.nix b/shared/modules/apps/ghostty.nix index 6b4a660..97f3b05 100644 --- a/shared/modules/apps/ghostty.nix +++ b/shared/modules/apps/ghostty.nix @@ -25,10 +25,36 @@ in settings = { font-family = cfg.fontFamily; - # Ligatures - Maple Mono NF has full ligature support + # Maple Mono NF OpenType features + # See: https://github.com/subframe7536/maple-font/blob/variable/source/features/README.md font-feature = lib.mkIf cfg.enableLigatures [ - "+calt" # contextual alternates - "+liga" # standard ligatures + # Ligatures (all Maple Mono ligatures are in calt) + "calt" + + # Character variants + "cv02" # Alternative 'a' with top arm + "cv05" # Alternative 'g' double story style + "cv06" # Alternative 'i' without bottom bar + "cv08" # Alternative 'r' with bottom bar + "cv09" # Alternative '7' with middle bar + "cv10" # Alternative 'Z' and 'z' with middle bar + "cv11" # Alternative 'f' with bottom bar + "cv61" # Alternative ',' and ';' with straight tail + "cv62" # Alternative '?' with larger openings + "cv65" # Alternative '&' in handwriting style + + # Italic-only variants + "cv31" # Italic 'a' with top arm + "cv32" # Italic 'f' without bottom tail + "cv38" # Italic 'g' double story style + "cv39" # Italic 'i' without bottom bar + "cv41" # Italic 'r' with bottom bar + "cv42" # Italic '7' with middle bar + "cv43" # Italic 'Z' and 'z' with middle bar + "cv44" # Italic 'f' with bottom bar + + # CN variant + "cv96" # Full width quotes ]; window-padding-x = 4; diff --git a/shared/modules/apps/helix.nix b/shared/modules/apps/helix.nix index f9e7f3e..cc77fc5 100644 --- a/shared/modules/apps/helix.nix +++ b/shared/modules/apps/helix.nix @@ -1,93 +1,137 @@ {lib, config, ...}: let cfg = config.helixApp; + + # helix theming docs: https://docs.helix-editor.com/themes.html + # Check current stylix theme: ~/.config/helix/themes/stylix.toml + # And computed minimal: ~/.config/helix/themes/minimal.toml + + # Minimal syntax highlighting theme using base16 colors + # Philosophy: "If everything is highlighted, nothing is" + # Highlight comments, keywords, strings, and constants, all else uses style, not color + minimalTheme = { + # Inherit Stylix's base theme (UI, palette, etc.) + inherits = "stylix"; + + # Comments + "comment" = { fg = "base0A"; modifiers = ["italic"]; }; + + # Keywords + "keyword" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.control" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.directive" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.function" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.operator" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.return" = { fg = "base0E"; modifiers = ["italic"]; }; + "keyword.storage" = { fg = "base0E"; modifiers = ["italic"]; }; + + # Strings + "string" = "base0B"; + "string.regexp" = "base0B"; + "string.special" = "base0B"; + + # Constants/Numbers + "constant" = "base08"; + "constant.numeric" = "base08"; + "constant.builtin" = "base08"; + "constant.character" = "base08"; + "constant.character.escape" = "base08"; + + # === SUBTLE HIGHLIGHTING === + + # Types + "type" = { fg = "base0F"; modifiers = ["bold"]; }; + "type.builtin" = { fg = "base0F"; modifiers = ["bold"]; }; + "type.enum" = { fg = "base0F"; modifiers = ["bold"]; }; + "type.enum.variant" = { fg = "base0F"; modifiers = ["bold"]; }; + + # Definitions - bold+italic, same color as text (landmarks) + "function.definition" = { fg = "base07"; modifiers = ["bold" "italic"]; }; + "type.definition" = { fg = "base07"; modifiers = ["bold" "italic"]; }; + + # === PLAIN TEXT (majority of code) === + + # Functions - plain text + "function" = "base07"; + "function.builtin" = "base07"; + "function.method" = "base07"; + "function.macro" = "base07"; + + # Variables - plain text + "variable" = "base05"; + "variable.builtin" = "base07"; + "variable.parameter" = "base05"; + "variable.other" = "base05"; + "variable.other.member" = "base05"; + + # Other constructs - plain text + "constructor" = "base05"; + "attribute" = "base05"; + "label" = "base05"; + "namespace" = "base05"; + "tag" = "base05"; + "special" = "base05"; + + # Punctuation - plain text + "punctuation" = "base04"; + "punctuation.bracket" = "base04"; + "punctuation.delimiter" = "base04"; + "punctuation.special" = "base04"; + "operator" = "base04"; + + # === MARKUP (documents) === + "markup.heading" = { fg = "base0E"; modifiers = ["bold"]; }; + "markup.heading.1" = { fg = "base0E"; modifiers = ["bold"]; }; + "markup.heading.2" = { fg = "base0B"; modifiers = ["bold"]; }; + "markup.heading.3" = { fg = "base0D"; modifiers = ["bold"]; }; + "markup.heading.4" = { fg = "base0F"; modifiers = ["bold"]; }; + "markup.heading.5" = { fg = "base08"; modifiers = ["bold"]; }; + "markup.heading.6" = { fg = "base0C"; modifiers = ["bold"]; }; + "markup.list" = "base0E"; + "markup.bold" = { modifiers = ["bold"]; }; + "markup.italic" = { modifiers = ["italic"]; }; + "markup.strikethrough" = { modifiers = ["crossed_out"]; }; + "markup.link.url" = { fg = "base09"; modifiers = ["underlined"]; }; + "markup.link.text" = "base0E"; + "markup.quote" = "base0B"; + "markup.raw" = "base0B"; + "markup.raw.inline" = "base0B"; + "markup.raw.block" = "base0B"; + }; in { options.helixApp = { enable = lib.mkEnableOption "enable helix editor"; + + themeOverrides = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + default = {}; + description = '' + Override helix theme scopes. These are merged with the minimal base theme. + Uses base16 color names (base00-base0F) for Stylix integration. + + Example: Make types plain text instead of subtle: + themeOverrides = { "type" = "base05"; }; + ''; + example = { + "type" = "base05"; + "comment" = { fg = "base03"; modifiers = ["italic"]; }; + }; + }; }; config = lib.mkIf cfg.enable { - # Let Stylix auto-theme helix + # Let Stylix generate its base theme (for UI elements, palette) stylix.targets.helix.enable = true; programs.helix = { enable = true; - # Stylix sets the theme, but we override syntax tokens for minimal highlighting - # Philosophy: Only keywords, strings, comments, numbers get color - rest is plain text - themes.stylix = { - # Inherit Stylix's base theme (UI, palette, etc.) - inherits = "stylix"; + # Use our minimal theme instead of Stylix's default + settings.theme = lib.mkForce "minimal"; - # Minimal syntax highlighting - only 4 categories get color - # Comments - stand out - "comment" = { fg = "yellow"; modifiers = ["italic"]; }; - - # Keywords - highlighted and italic - "keyword" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.control" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.directive" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.function" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.operator" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.return" = { fg = "magenta"; modifiers = ["italic"]; }; - "keyword.storage" = { fg = "magenta"; modifiers = ["italic"]; }; - - # Strings - highlighted - "string" = "green"; - "string.regexp" = "red"; - "string.special" = "green"; - - # Numbers/constants - highlighted - "constant.numeric" = "red"; - "constant.builtin" = "red"; - "constant.character.escape" = "red"; - - # Functions remain plain text - "function" = "text"; - "function.builtin" = "text"; - "function.method" = "text"; - "function.macro" = "text"; - - # Variables remain plain text - "variable" = "text"; - "variable.builtin" = "text"; - "variable.parameter" = "text"; - "variable.other.member" = "text"; - - # Types get subtle highlight - "type" = { fg = "cyan"; modifiers = ["italic"]; }; - "type.builtin" = "cyan"; - - # Top-level definitions get accent - "function.definition" = { fg = "text"; modifiers = ["bold"]; }; - "type.definition" = { fg = "text"; modifiers = ["bold"]; }; - - # Everything else plain - "constructor" = "text"; - "attribute" = "text"; - "label" = "text"; - "namespace" = "text"; - "tag" = "text"; - - # Punctuation slightly dimmed - "punctuation" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.bracket" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.delimiter" = { fg = "text"; modifiers = ["dim"]; }; - "punctuation.special" = { fg = "text"; modifiers = ["dim"]; }; - "operator" = { fg = "text"; modifiers = ["dim"]; }; - - # Markup - "markup.heading" = { fg = "cyan"; modifiers = ["bold"]; }; - "markup.list" = "magenta"; - "markup.bold" = { modifiers = ["bold"]; }; - "markup.italic" = { modifiers = ["italic"]; }; - "markup.strikethrough" = { modifiers = ["crossed_out"]; }; - "markup.link.url" = { fg = "blue"; modifiers = ["underlined"]; }; - "markup.link.text" = "magenta"; - "markup.quote" = "green"; - "markup.raw" = "green"; - }; + # Define minimal theme that inherits Stylix's palette but overrides syntax highlighting + themes.minimal = minimalTheme // cfg.themeOverrides; settings = { keys.normal = { diff --git a/shared/modules/home-manager/git-autosync.nix b/shared/modules/home-manager/git-autosync.nix index 1e8152f..b64e75f 100644 --- a/shared/modules/home-manager/git-autosync.nix +++ b/shared/modules/home-manager/git-autosync.nix @@ -10,6 +10,8 @@ let DEBOUNCE_SECONDS="''${2:-5}" PULL_INTERVAL_SECONDS="''${3:-120}" BRANCH="''${4:-main}" + MAX_PULL_RETRIES="''${5:-6}" + RETRY_DELAY_SECONDS="''${6:-4}" cd "$REPO_DIR" @@ -19,6 +21,13 @@ let exit 1 fi + send_notification() { + local urgency="$1" + local title="$2" + local message="$3" + ${pkgs.libnotify}/bin/notify-send -u "$urgency" "$title" "$message" 2>/dev/null || true + } + commit_and_push() { cd "$REPO_DIR" ${pkgs.git}/bin/git add -A @@ -32,10 +41,11 @@ let fi } + # pull_remote returns 0 on success, 1 on failure pull_remote() { cd "$REPO_DIR" if ${pkgs.git}/bin/git remote get-url origin &>/dev/null; then - ${pkgs.git}/bin/git fetch origin "$BRANCH" 2>/dev/null || { echo "Fetch failed (offline?)"; return; } + ${pkgs.git}/bin/git fetch origin "$BRANCH" 2>/dev/null || { echo "Fetch failed (offline?)"; return 1; } LOCAL=$(${pkgs.git}/bin/git rev-parse HEAD) REMOTE=$(${pkgs.git}/bin/git rev-parse "origin/$BRANCH" 2>/dev/null || echo "") @@ -60,11 +70,33 @@ let fi echo "Pulled remote changes" fi + return 0 fi + return 0 # No remote configured, not a failure } - # Initial pull on start - pull_remote + # Initial pull with exponential backoff - must succeed before we start watching + PULL_ATTEMPTS=0 + CURRENT_DELAY="$RETRY_DELAY_SECONDS" + while true; do + if pull_remote; then + echo "Initial pull succeeded" + break + fi + + PULL_ATTEMPTS=$((PULL_ATTEMPTS + 1)) + echo "Initial pull failed (attempt $PULL_ATTEMPTS/$MAX_PULL_RETRIES)" + + if [ "$PULL_ATTEMPTS" -ge "$MAX_PULL_RETRIES" ]; then + send_notification "critical" "git-autosync failed: $REPO_DIR" "Unable to pull after $MAX_PULL_RETRIES attempts. Check authentication or network. Service stopping." + echo "ERROR: Initial pull failed after $MAX_PULL_RETRIES attempts. Exiting." + exit 0 # Exit cleanly so systemd doesn't restart + fi + + echo "Retrying in $CURRENT_DELAY seconds..." + sleep "$CURRENT_DELAY" + CURRENT_DELAY=$((CURRENT_DELAY * 2)) + done LAST_PULL=$(date +%s) @@ -121,7 +153,7 @@ let pullIntervalSeconds = lib.mkOption { type = lib.types.int; - default = 120; + default = 30; description = "Seconds between periodic pulls from remote."; }; @@ -143,6 +175,18 @@ let default = "autosync@localhost"; description = "Git author email for auto-commits."; }; + + maxPullRetries = lib.mkOption { + type = lib.types.int; + default = 6; + description = "Maximum number of pull retries before giving up and stopping the service."; + }; + + retryDelaySeconds = lib.mkOption { + type = lib.types.int; + default = 4; + description = "Seconds to wait between pull retry attempts, increases exponentially."; + }; }; }; @@ -177,7 +221,7 @@ in { Restart = "on-failure"; RestartSec = 10; - ExecStart = "${git-autosync-script} ${repo.path} ${toString repo.debounceSeconds} ${toString repo.pullIntervalSeconds} ${repo.branch}"; + ExecStart = "${git-autosync-script} ${repo.path} ${toString repo.debounceSeconds} ${toString repo.pullIntervalSeconds} ${repo.branch} ${toString repo.maxPullRetries} ${toString repo.retryDelaySeconds}"; Environment = [ "GIT_AUTHOR_NAME=${repo.gitName}" diff --git a/shared/modules/home-manager/noctalia.nix b/shared/modules/home-manager/noctalia.nix index 2bf5413..0e23925 100644 --- a/shared/modules/home-manager/noctalia.nix +++ b/shared/modules/home-manager/noctalia.nix @@ -1,3 +1,7 @@ +# For reference of the available options, see https://docs.noctalia.dev/getting-started/nixos/#config-ref +# +# To see a diff of the nix-set and GUI-set (current) settings, run: +# nix shell nixpkgs#jq nixpkgs#colordiff -c bash -c "colordiff -u --nobanner <(jq -S . ~/.config/noctalia/settings.json) <(noctalia-shell ipc call state all | jq -S .settings)" { config, lib, pkgs, inputs, ... }: with lib; @@ -42,7 +46,7 @@ in }; barDensity = mkOption { - type = types.enum [ "default" "compact" ]; + type = types.enum [ "spacious" "comfortable" "default" "compact" "mini" ]; default = "default"; description = "Bar density (compact for vertical bars)"; }; @@ -88,6 +92,167 @@ in default = false; description = "Use Fahrenheit for temperature"; }; + + # UI settings + fontDefault = mkOption { + type = types.str; + default = ""; + description = "Default font for Noctalia shell"; + }; + + fontFixed = mkOption { + type = types.str; + default = ""; + description = "Monospace font for Noctalia shell"; + }; + + fontDefaultScale = mkOption { + type = types.float; + default = 1.0; + description = "Scale factor for default font"; + }; + + panelBackgroundOpacity = mkOption { + type = types.float; + default = 0.93; + description = "Background opacity for panels"; + }; + + # General settings + dimmerOpacity = mkOption { + type = types.float; + default = 0.2; + description = "Opacity for screen dimmer"; + }; + + lockScreenAnimations = mkOption { + type = types.bool; + default = false; + description = "Enable lock screen animations"; + }; + + lockScreenCountdownDuration = mkOption { + type = types.int; + default = 10000; + description = "Lock screen countdown duration in milliseconds"; + }; + + telemetryEnabled = mkOption { + type = types.bool; + default = false; + description = "Enable telemetry for Noctalia"; + }; + + # Bar settings + barBackgroundOpacity = mkOption { + type = types.float; + default = 0.93; + description = "Bar background opacity"; + }; + + clockFormat = mkOption { + type = types.str; + default = "HH:mm ddd, MMM dd"; + description = "Clock format for horizontal display"; + }; + + launcherIcon = mkOption { + type = types.str; + default = "activities"; + description = "Icon for the launcher widget"; + }; + + # Wallpaper settings + wallpaperDirectory = mkOption { + type = types.str; + default = ""; + description = "Directory containing wallpapers"; + }; + + # Dock settings + dockBackgroundOpacity = mkOption { + type = types.float; + default = 1.0; + description = "Dock background opacity"; + }; + + dockSize = mkOption { + type = types.float; + default = 1.0; + description = "Dock size multiplier"; + }; + + # Notification settings + notificationLocation = mkOption { + type = types.enum [ "top" "top_right" "top_left" "bottom" "bottom_right" "bottom_left" ]; + default = "top_right"; + description = "Location for notifications"; + }; + + enableMediaToast = mkOption { + type = types.bool; + default = false; + description = "Enable media change toast notifications"; + }; + + # OSD settings + osdLocation = mkOption { + type = types.enum [ "top" "top_right" "top_left" "bottom" "bottom_right" "bottom_left" "center" ]; + default = "top_right"; + description = "Location for OSD popups"; + }; + + # Night light settings + enableNightLight = mkOption { + type = types.bool; + default = false; + description = "Enable night light feature"; + }; + + nightLightTemp = mkOption { + type = types.str; + default = "4000"; + description = "Night time color temperature"; + }; + + # System monitor settings + systemMonitorUseCustomColors = mkOption { + type = types.bool; + default = false; + description = "Use custom colors for system monitor thresholds"; + }; + + systemMonitorWarningColor = mkOption { + type = types.str; + default = ""; + description = "Warning color for system monitor"; + }; + + systemMonitorCriticalColor = mkOption { + type = types.str; + default = ""; + description = "Critical color for system monitor"; + }; + + # Plugin settings + pluginsAutoUpdate = mkOption { + type = types.bool; + default = false; + description = "Auto-update Noctalia plugins"; + }; + + # Calendar settings + firstDayOfWeek = mkOption { + type = types.int; + default = (-1); + description = "First day of week (-1 for system default, 0=Sunday, 1=Monday)"; + }; + + hideWeatherTimezone = mkOption { + type = types.bool; + default = false; + description = "Hide timezone in weather display"; + }; }; config = mkIf cfg.enable { @@ -99,72 +264,118 @@ in # But we need it for IPC commands in keybinds package = inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default; - settings = { - colorSchemes = { - useWallpaperColors = cfg.useWallpaperColors; - predefinedScheme = cfg.colorScheme; - darkMode = cfg.darkMode; - }; - - bar = { - position = cfg.barPosition; - density = cfg.barDensity; - showCapsule = true; - floating = false; - widgets = { - left = [ - { id = "Launcher"; } - { id = "Clock"; } - { id = "SystemMonitor"; } - { id = "ActiveWindow"; } - { id = "MediaMini"; } - ]; - center = [ - { id = "Workspace"; } - ]; - right = [ - { id = "Tray"; } - { id = "NotificationHistory"; } - { id = "Battery"; } - { id = "Volume"; } - { id = "Brightness"; } - { id = "ControlCenter"; } - ]; + settings = mkMerge [ + # Use mkDefault for all settings to allow per-host overrides + (mkDefault { + colorSchemes = { + useWallpaperColors = cfg.useWallpaperColors; + predefinedScheme = cfg.colorScheme; + darkMode = cfg.darkMode; }; - }; - dock = { - enabled = cfg.enableDock; - position = cfg.dockPosition; - displayMode = "auto_hide"; - pinnedApps = cfg.pinnedApps; - }; + bar = { + position = cfg.barPosition; + density = cfg.barDensity; + backgroundOpacity = cfg.barBackgroundOpacity; + showCapsule = true; + floating = false; + widgets = { + left = [ + { id = "Launcher"; icon = cfg.launcherIcon; } + { id = "Clock"; formatHorizontal = cfg.clockFormat; } + { id = "SystemMonitor"; } + { id = "ActiveWindow"; } + { id = "MediaMini"; } + ]; + center = [ + { id = "Workspace"; } + ]; + right = [ + { id = "Tray"; } + { id = "NotificationHistory"; } + { id = "Battery"; } + { id = "Volume"; } + { id = "Brightness"; } + { id = "ControlCenter"; } + ]; + }; + }; - general = { - avatarImage = cfg.avatarImage; - radiusRatio = 1; - animationSpeed = 1; - enableShadows = true; - }; + dock = { + enabled = cfg.enableDock; + position = cfg.dockPosition; + displayMode = "auto_hide"; + backgroundOpacity = cfg.dockBackgroundOpacity; + size = cfg.dockSize; + pinnedApps = cfg.pinnedApps; + }; - location = { - name = cfg.locationName; - weatherEnabled = true; - use12hourFormat = cfg.use12hourFormat; - useFahrenheit = cfg.useFahrenheit; - }; + general = { + avatarImage = cfg.avatarImage; + dimmerOpacity = cfg.dimmerOpacity; + radiusRatio = 1; + animationSpeed = 1; + enableShadows = true; + lockScreenAnimations = cfg.lockScreenAnimations; + lockScreenCountdownDuration = cfg.lockScreenCountdownDuration; + telemetryEnabled = cfg.telemetryEnabled; + }; - notifications = { - enabled = true; - location = "top_right"; - }; + ui = { + fontDefault = cfg.fontDefault; + fontFixed = cfg.fontFixed; + fontDefaultScale = cfg.fontDefaultScale; + panelBackgroundOpacity = cfg.panelBackgroundOpacity; + }; - appLauncher = { - position = "center"; - sortByMostUsed = true; - viewMode = "list"; - }; - }; + location = { + name = cfg.locationName; + weatherEnabled = true; + use12hourFormat = cfg.use12hourFormat; + useFahrenheit = cfg.useFahrenheit; + firstDayOfWeek = cfg.firstDayOfWeek; + hideWeatherTimezone = cfg.hideWeatherTimezone; + }; + + wallpaper = { + enabled = true; + directory = cfg.wallpaperDirectory; + }; + + notifications = { + enabled = true; + location = cfg.notificationLocation; + enableMediaToast = cfg.enableMediaToast; + }; + + osd = { + enabled = true; + location = cfg.osdLocation; + }; + + nightLight = { + enabled = cfg.enableNightLight; + autoSchedule = true; + nightTemp = cfg.nightLightTemp; + }; + + systemMonitor = { + useCustomColors = cfg.systemMonitorUseCustomColors; + warningColor = cfg.systemMonitorWarningColor; + criticalColor = cfg.systemMonitorCriticalColor; + }; + + plugins = { + autoUpdate = cfg.pluginsAutoUpdate; + }; + + appLauncher = { + position = "center"; + sortByMostUsed = true; + viewMode = "list"; + }; + }) + ]; }; # Disable conflicting services that Noctalia replaces diff --git a/shared/modules/home-manager/style-preview.nix b/shared/modules/home-manager/style-preview.nix new file mode 100644 index 0000000..7a51e36 --- /dev/null +++ b/shared/modules/home-manager/style-preview.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.stylePreview; + + styleScript = pkgs.writeShellScriptBin "style" '' + # Display current Stylix base16 theme colors + PALETTE="$HOME/.config/stylix/palette.json" + + if [ ! -f "$PALETTE" ]; then + echo "Error: Stylix palette not found at $PALETTE" + exit 1 + fi + + # Extract scheme name + SCHEME=$(${pkgs.jq}/bin/jq -r '.scheme // "Unknown"' "$PALETTE") + echo -e "\033[1m$SCHEME\033[0m" + echo + + # Display each base color with name and swatch + for i in 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F; do + hex=$(${pkgs.jq}/bin/jq -r ".base$i" "$PALETTE") + r=$((16#''${hex:0:2})) + g=$((16#''${hex:2:2})) + b=$((16#''${hex:4:2})) + printf "base%s \033[48;2;%d;%d;%dm \033[0m #%s\n" "$i" "$r" "$g" "$b" "$hex" + done + ''; +in +{ + options.stylePreview = { + enable = lib.mkEnableOption "style command for previewing Stylix theme colors"; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ styleScript ]; + }; +} diff --git a/shared/modules/user/main_user.nix b/shared/modules/user/main_user.nix index 099cf8a..747af1b 100644 --- a/shared/modules/user/main_user.nix +++ b/shared/modules/user/main_user.nix @@ -17,6 +17,18 @@ in default = "mainuser"; description = "username"; }; + + fullName = lib.mkOption { + type = lib.types.str; + default = "mainuser"; + description = "Full display name for the user"; + }; + + extraGroups = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = "Additional groups for the user beyond the base set"; + }; }; config = lib.mkIf cfg.enable { @@ -25,7 +37,7 @@ in isNormalUser = true; initialPassword = "password"; - description = "main user"; + description = cfg.fullName; shell = pkgs.zsh; } @@ -34,7 +46,7 @@ in "wheel" "networkmanager" cfg.userName - ]; + ] ++ cfg.extraGroups; }) (lib.mkIf cfg.isDesktopUser { extraGroups = [ @@ -43,9 +55,8 @@ in cfg.userName "video" "audio" - # For android "adbusers" - ]; + ] ++ cfg.extraGroups; }) ]; }; diff --git a/shared/server-configuration.nix b/shared/server-configuration.nix index 2d5f5b5..486e0db 100644 --- a/shared/server-configuration.nix +++ b/shared/server-configuration.nix @@ -20,6 +20,11 @@ in type = lib.types.str; description = "Email for server box"; }; + fullName = lib.mkOption { + type = lib.types.str; + default = ""; + description = "Full display name for the user (defaults to userName if empty)"; + }; sshEnable = lib.mkOption { default = false; description = "Whether to enable ssh server"; @@ -80,6 +85,7 @@ in main_user = { enable = true; userName = srvConfig.userName; + fullName = if srvConfig.fullName != "" then srvConfig.fullName else srvConfig.userName; isDesktopUser = false; };