diff --git a/.gitignore b/.gitignore index 45520ac..04e836c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ test programs/browsers/toolbar.json programs/browsers/test.json .vscode/settings.json +testfirefox +result +NixOs.qcow2 diff --git a/TODO.MD b/TODO.MD new file mode 100644 index 0000000..b472722 --- /dev/null +++ b/TODO.MD @@ -0,0 +1,34 @@ +[ x ] Make klassy configurable from nix file raw in klassy module + [ x ] Win decorations + [ x ] Implement parsing of Windeco section of config file + [ ] SystemIconSize ? WTF (not essential) + [ x ] Implement parsing of ButtonColors section of config file + [ ] Manage ULTRA PERSONALIZATION (later) + [ x ] Implement parsing of ButtonBehaviour section of config file + [ x ] Implement parsing of ButtonSizing section of config file + [ x ] Implement parsing of TitleBarSpacing section of config file + [ x ] Implement parsing of TitleBarOpacity section of config file + [ x ] WindowOutlineStyle section of config file + [ x ] ShadowStyle section of config file + [ x ] Define all options in menu + [ x ] Find defaults + [ x ] Implement parsing of ShadowStyle section of config file + [ x ] Implement parsing of ShadowStyle section of config file + [ x ] Windeco Exception + [ x ] Defaults + [ x ] Users + [ x ] Style + [ x ] Define all options in menu + [ x ] Find defaults + [ ] keyboard_accelerator_visibility (not that important) + [ ] + windows_drag_mode (not that important) + [ x ] Implement parsing of Style section of config file + [ x ] Presets + [ x ] Importing exising presets as files + [ ] Creating presets from nix config files (later) +[ ] Make Dolphin a configurable module +[ ] Fix plasma-manager Module + [ ] Separate monitor configuration from plasma configuration + [ ] Allow nested paramaters in applets configuration + [ ] Make system tray configuration more understandable \ No newline at end of file diff --git a/configuration.nix b/configuration.nix index 867b68b..676f63f 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,39 +1,53 @@ +# FEAT : unify format { config, lib, inputs, pkgs-list, managers, - nixos-version, - opt, + baseSettings, + tools, ... }: let import_with_args = file: context: (import file { - inherit config lib inputs pkgs-list; + inherit config lib inputs pkgs-list tools baseSettings; + parentPathAsList = []; }).config.${ context }; in { imports = [ + (import + ./sys.nix + { + inherit config lib pkgs-list tools inputs baseSettings; + }) + ] + ++ [ ./hardware-configuration.nix - ./system.nix managers.home.nixosModules.default ] ++ [ (import_with_args - ./programs.nix - "nixosModule") + ./progs.nix + "System") ]; - inherit (opt) programs; - + sys.version = baseSettings.sys.version; # environment.systemPackages = with pkgs-list.nix.latest; [wmctrl]; - system.version = nixos-version; - networking.hostName = "NixOs"; + networking.hostName = baseSettings.sys.hostname; + system.nixos = { + label = baseSettings.sys.label; + tags = baseSettings.sys.tags; + }; virtualisation = { - libvirtd.enable = true; - spiceUSBRedirection.enable = true; + vmVariant = { + # the following configuration is added only when building VM with `build-vm` + virtualisation = { + memorySize = 2048; # use 2048MiB memory + cores = 3; # use 3 cpu cores + }; + }; }; - fonts.packages = with pkgs-list.nix.latest; [nerd-fonts.jetbrains-mono]; } diff --git a/customPkgs.nix b/customPkgs.nix new file mode 100644 index 0000000..b2294fd --- /dev/null +++ b/customPkgs.nix @@ -0,0 +1,5 @@ +{pkgs ? import {}}: +pkgs.lib.filesystem.packagesFromDirectoryRecursive { + callPackage = pkgs.callPackage; + directory = ./customPkgs; +} diff --git a/customPkgs/klassy/package.nix b/customPkgs/klassy/package.nix new file mode 100644 index 0000000..d92aa39 --- /dev/null +++ b/customPkgs/klassy/package.nix @@ -0,0 +1,55 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + kdePackages, +}: +stdenv.mkDerivation rec { + pname = "klassy"; + version = "v6.5.3"; + + src = fetchFromGitHub { + owner = "paulmcauley"; + repo = pname; + rev = version; + sha256 = "1pvc69bchwwagwfpzz5kr65i16nvrhdbw3jv09spc4hjcqd55kfq"; + }; + + cmakeFlags = [ + "-DBUILD_TESTING=OFF" + "-DBUILD_QT5=OFF" + ]; + + nativeBuildInputs = [ + cmake + kdePackages.extra-cmake-modules + kdePackages.wrapQtAppsHook + ]; + + buildInputs = [ + kdePackages.kdecoration + kdePackages.kcoreaddons + kdePackages.kguiaddons + kdePackages.kconfigwidgets + kdePackages.kiconthemes + kdePackages.kwayland + kdePackages.kwindowsystem + kdePackages.kirigami + kdePackages.frameworkintegration + kdePackages.kcmutils + kdePackages.qtsvg + ]; + + meta = with lib; { + description = "A highly customizable binary Window Decoration and Application Style plugin for recent versions of the KDE Plasma desktop"; + homepage = "https://github.com/paulmcauley/klassy"; + license = with licenses; [ + gpl2Only + gpl2Plus + gpl3Only + bsd3 + mit + ]; + }; +} diff --git a/flake.lock b/flake.lock index 7d62590..2345d9e 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1770260404, - "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "lastModified": 1775425411, + "narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=", "owner": "nix-community", "repo": "home-manager", - "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", + "rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe", "type": "github" }, "original": { @@ -86,11 +86,11 @@ }, "latestPkgs": { "locked": { - "lastModified": 1770136044, - "narHash": "sha256-tlFqNG/uzz2++aAmn4v8J0vAkV3z7XngeIIB3rM3650=", + "lastModified": 1776067740, + "narHash": "sha256-B35lpsqnSZwn1Lmz06BpwF7atPgFmUgw1l8KAV3zpVQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e576e3c9cf9bad747afcddd9e34f51d18c855b4e", + "rev": "7e495b747b51f95ae15e74377c5ce1fe69c1765f", "type": "github" }, "original": { @@ -144,11 +144,11 @@ ] }, "locked": { - "lastModified": 1770298830, - "narHash": "sha256-uaj19KpWhYkA3w0gIA8bx7ZrtMwZ7Zd/Hnc9iJzgNkE=", + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", "owner": "nix-community", "repo": "nur", - "rev": "bfa89442edb79c3408b7ca067571aecefa2f93e1", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", "type": "github" }, "original": { @@ -165,11 +165,11 @@ ] }, "locked": { - "lastModified": 1770298830, - "narHash": "sha256-uaj19KpWhYkA3w0gIA8bx7ZrtMwZ7Zd/Hnc9iJzgNkE=", + "lastModified": 1776202455, + "narHash": "sha256-K0SBOoCAYmQ4erutl8ivMK2qLpmb60oupOVlvQYSxfc=", "owner": "nix-community", "repo": "nur", - "rev": "bfa89442edb79c3408b7ca067571aecefa2f93e1", + "rev": "0574a6fa07e90633a7416b50f679ab86d5509dc2", "type": "github" }, "original": { @@ -188,11 +188,11 @@ ] }, "locked": { - "lastModified": 1769956244, - "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=", + "lastModified": 1775856943, + "narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "fe54ea85c6e4413fba03b84d50f2b431d2f7c831", + "rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5", "type": "github" }, "original": { @@ -215,11 +215,11 @@ }, "unstablePkgs": { "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "lastModified": 1775710090, + "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "rev": "4c1018dae018162ec878d42fec712642d214fdfa", "type": "github" }, "original": { @@ -239,11 +239,11 @@ ] }, "locked": { - "lastModified": 1770480420, - "narHash": "sha256-zm86JvwyurSk06eZD1/Cdc4eF84gWIxeOmBJ5iUxRHw=", + "lastModified": 1776144279, + "narHash": "sha256-eX3u6wJ34+qu7ZR1qWOaToGWmudYQSOEStZZm6goP+8=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "d1540a889b63da17f735f1d4bebd9ebfcd7c267a", + "rev": "727de8a44c85e90f899c540cf3ffa0d5d3344f9c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 11b450b..30b790a 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,7 @@ nur-klassy-version = { url = "github:nix-community/nur/82a02f13454ca5b23248d9fe8fb15618a11b09f0"; # sha256 = "0d8iwisgw15ivwbd9s041fbf33mqgccsmwxcvgwf3y84i2d1rb7a"; - }; + }; # TODO : Rebuild with my own + add options for configuration nur-unstable-pkgs = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "unstablePkgs"; @@ -63,6 +63,7 @@ ]; config = { allowUnfree = true; + android_sdk.accept_license = true; }; }; nix = { @@ -78,8 +79,13 @@ unstable = nur-unstable; klassy = nur-klassy; }; + + customPkgs = import ./customPkgs.nix { + pkgs = Inputs.latestPkgs.legacyPackages.${system}; + }; others = { zen-browser = Inputs.zen-browser; + customPkgs = customPkgs; }; pkgs-list = { inherit nix; @@ -91,74 +97,47 @@ plasma = Inputs.plasma-manager; }; inherit (Inputs) home-manager plasma-manager; - opt = { - programs = { - enable = true; - shells = { - enable = true; - zsh = true; - }; - misc = { - enable = true; - ledger = true; - bambu-studio = true; - bitwarden = true; - fastfetch = true; - iso-image-writer = true; - vesktop = true; - kdeconnect = true; - }; - office = { - enable = true; - libreoffice = true; - qualculate = true; - }; - dev = { - enable = true; - boot = { - enable = true; - efibootmgr = true; - grub = true; - gparted = true; - os-prober = true; - }; - nix = { - enable = true; - nixd = true; - alejandra = true; - }; - # network = true; - docker = true; - ghostty = true; - git = true; - postman = true; - vscode = true; - vim = true; - }; - browsers = { - enable = true; - firefox = true; - chromium = true; - }; - desktop = { - enable = true; - plasma = true; - klassy = true; - rofi = true; - }; + lib = latest.lib; + tools = import ./tools.nix { + inherit lib; + }; + baseSettings = { + progs = { + shells.enable = true; + misc.enable = true; + office.enable = true; + dev.enable = true; + browsers.enable = true; + desktop.enable = true; + terminals.enable = true; + editors.enable = true; + gaming.enable = true; + tuis.enable = true; + }; + sys = { + label = "V.2.0_FIX_WIP"; + tags = []; + version = nixos-version; + main-user = "matthieu"; + hostname = "NixOs"; + bootloader.enable = true; + lang.enable = true; + users.enable = true; + hardware.enable = true; + networking.enable = true; + filesystems.enable = true; + fonts.enable = true; }; - }; - testProgramOptions = { }; in { - nixosConfigurations.NixOs = latestPkgs.lib.nixosSystem { + nixosConfigurations.${baseSettings.sys.hostname} = latestPkgs.lib.nixosSystem { pkgs = pkgs-list.nix.latest; specialArgs = { inherit pkgs-list; inherit Inputs; inherit managers; - inherit nixos-version; - inherit opt; + inherit baseSettings; + inherit tools; }; modules = [ ./configuration.nix @@ -170,12 +149,13 @@ inherit pkgs-list; inherit latest; inherit nixos-version; - inherit opt; + inherit baseSettings; + inherit tools; }; useUserPackages = true; useGlobalPkgs = true; sharedModules = [plasma-manager.homeModules.plasma-manager]; - users.matthieu = import ./home.nix; + users.${baseSettings.sys.main-user} = import ./home.nix; backupFileExtension = "backup"; }; } diff --git a/home.nix b/home.nix index 16d8f7b..1b0b230 100644 --- a/home.nix +++ b/home.nix @@ -1,33 +1,26 @@ +# TODO FEAT : unify format { config, lib, inputs, pkgs-list, nixos-version, - opt, + baseSettings, + tools, ... -} @ Inputs: let - folder = "programs"; - context = "home"; +}: let + name = "home"; + mainModule = "progs"; ## Exceptional structure since home NEEDS to exist but only imports progs + imports = ["progs"]; in { - imports = - [ - (import ./programs.nix {inherit config lib inputs pkgs-list;}).config.homeModule - ] - ++ [ - pkgs-list.others.zen-browser.homeModules.beta - ]; - inherit (opt) programs; + imports = map (file: + (import ./${mainModule}.nix { + inherit config lib pkgs-list tools baseSettings; + inherit inputs; + }).config.Home) + imports; home.stateVersion = nixos-version; - home.username = "matthieu"; - home.homeDirectory = "/home/matthieu"; - # TODO: Move to another folder later - # home.packages = with Inputs.pkgs-list.nix.latest; [ - # ntfs3g - # ntfsprogs - # btrfs-progs - # exfat - # exfatprogs - # ]; + home.username = baseSettings.sys.main-user; + home.homeDirectory = "/home/${baseSettings.sys.main-user}"; } diff --git a/programs.nix b/programs.nix deleted file mode 100644 index ded48b9..0000000 --- a/programs.nix +++ /dev/null @@ -1,190 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "programs"; - subfolder = "programs"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - shells = { - enable = lib.mkEnableOption "Enable various shell configurations."; - zsh = lib.mkEnableOption "Enable Zsh shell configuration."; - }; - misc = { - enable = lib.mkEnableOption "Enables and configures miscellaneous programs."; - ledger = lib.mkEnableOption "Enables and configures Ledger support."; - bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; - bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; - fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; - iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; - kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; - vesktop = lib.mkEnableOption "Enables and configures Vesktop."; - }; - office = { - enable = lib.mkEnableOption "Enables and configures office applications."; - libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; - qualculate = lib.mkEnableOption "Enables and configures Qualculate."; - }; - dev = { - enable = lib.mkEnableOption "Enables and configures development tools."; - docker = lib.mkEnableOption "Enables and configures Docker."; - boot = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures boot related tools."; - }; - nix = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures Nix related tools."; - }; - network = lib.mkEnableOption "Enables and configures Network tools."; - vim = lib.mkEnableOption "Enables and configures Vim."; - vscode = lib.mkEnableOption "Enables and configures VSCode."; - postman = lib.mkEnableOption "Enables and configures Postman."; - git = lib.mkEnableOption "Enables and configures Git."; - ghostty = lib.mkEnableOption "Enables and configures Ghostty."; - }; - browsers = { - enable = lib.mkEnableOption "Enables and configures web browsers."; - firefox = lib.mkEnableOption "Enables and configures Firefox."; - chromium = lib.mkEnableOption "Enables and configures Chromium."; - }; - desktop = { - enable = lib.mkEnableOption "Enables and configures desktop environment."; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - rofi = lib.mkEnableOption "Enables and configures Rofi."; - }; - }; - cfg = config.${name}; - settings = { - dev = { - enable = cfg.enable; - docker = cfg.enable && cfg.dev.docker; - boot = rec { - enable = cfg.enable && cfg.dev.boot.enable; - efibootmgr = enable && cfg.dev.boot.efibootmgr; - grub = enable && cfg.dev.boot.grub; - gparted = enable && cfg.dev.boot.gparted; - os-prober = enable && cfg.dev.boot.os-prober; - }; - nix = rec { - enable = cfg.enable && cfg.dev.nix.enable; - nixd = enable && cfg.dev.nix.nixd; - alejandra = enable && cfg.dev.nix.alejandra; - }; - network = cfg.enable && cfg.dev.network; - git = cfg.enable && cfg.dev.git; - postman = cfg.enable && cfg.dev.postman; - vscode = cfg.enable && cfg.dev.vscode; - vim = cfg.enable && cfg.dev.vim; - ghostty = cfg.enable && cfg.dev.ghostty; - }; - shells = rec { - enable = cfg.shells.enable; - zsh = enable && cfg.shells.zsh; - }; - misc = rec { - enable = cfg.misc.enable; - ledger = enable && cfg.misc.ledger; - bambu-studio = enable && cfg.misc.bambu-studio; - bitwarden = enable && cfg.misc.bitwarden; - fastfetch = enable && cfg.misc.fastfetch; - iso-image-writer = enable && cfg.misc.iso-image-writer; - kdeconnect = enable && cfg.misc.kdeconnect; - vesktop = enable && cfg.misc.vesktop; - }; - office = rec { - enable = cfg.office.enable; - libreoffice = enable && cfg.office.libreoffice; - qualculate = enable && cfg.office.qualculate; - }; - browsers = rec { - enable = cfg.browsers.enable; - firefox = enable && cfg.browsers.firefox; - chromium = enable && cfg.browsers.chromium; - }; - desktop = rec { - enable = cfg.desktop.enable; - plasma = enable && cfg.desktop.plasma; - klassy = enable && cfg.desktop.klassy; - rofi = enable && cfg.desktop.rofi; - }; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - # "desktop" - # "boot-dev" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) ["dev" "misc" "shells" "office" "browsers" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office browsers desktop; - programs = { - thunderbird = { - enable = true; - profiles = {}; - }; - }; - # meld = { - # enable = true; - # }; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) ["dev" "misc" "shells" "office" "desktop"]; - config = lib.mkIf cfg.enable { - inherit (settings) dev shells misc office desktop; - environment.systemPackages = with packages; [ - mangohud - plocate - mlocate - xdotool - protonup-ng - meld - wget - ]; - environment.sessionVariables = { - STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; - }; - programs = { - gamemode.enable = true; - steam = { - enable = true; - gamescopeSession.enable = true; - }; - virt-manager.enable = true; - }; - }; - }; - }; -} diff --git a/programs/boot-dev.nix b/programs/boot-dev.nix deleted file mode 100644 index f8d5a7b..0000000 --- a/programs/boot-dev.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = map (file: ./boot-dev/${file}) [ - "os-prober.nix" - "efibootmgr.nix" - "grub.nix" - "gparted.nix" - ]; - config = {}; -} diff --git a/programs/boot-dev/efibootmgr.nix b/programs/boot-dev/efibootmgr.nix deleted file mode 100644 index 17ac5d4..0000000 --- a/programs/boot-dev/efibootmgr.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - efibootmgr - ]; - }; -} diff --git a/programs/boot-dev/gparted.nix b/programs/boot-dev/gparted.nix deleted file mode 100644 index 448436f..0000000 --- a/programs/boot-dev/gparted.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - gparted - ]; - }; -} diff --git a/programs/boot-dev/grub.nix b/programs/boot-dev/grub.nix deleted file mode 100644 index eaa4ca0..0000000 --- a/programs/boot-dev/grub.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - grub2 - ]; - }; -} diff --git a/programs/boot-dev/os-prober.nix b/programs/boot-dev/os-prober.nix deleted file mode 100644 index 1eb2156..0000000 --- a/programs/boot-dev/os-prober.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - packages = Inputs.pkgs-list.nix.latest; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - os-prober - ]; - }; -} diff --git a/programs/browsers.nix b/programs/browsers.nix deleted file mode 100644 index 87b7145..0000000 --- a/programs/browsers.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "browsers"; - subfolder = "browsers"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - firefox = lib.mkEnableOption "Enables and configures Firefox."; - chromium = lib.mkEnableOption "Enables and configures Chromium."; - }; - cfg = config.${name}; - settings = { - firefox.enable = cfg.enable && cfg.firefox; - chromium.enable = cfg.enable && cfg.chromium; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "firefox" - "chromium" - "zen" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - inherit (settings) firefox chromium; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/browsers/chromium.nix b/programs/browsers/chromium.nix deleted file mode 100644 index c27f133..0000000 --- a/programs/browsers/chromium.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "chromium"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Chromium."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - chromium - ]; - }; -} diff --git a/programs/browsers/multifirefox.nix b/programs/browsers/multifirefox.nix deleted file mode 100644 index 41ce1b0..0000000 --- a/programs/browsers/multifirefox.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "firefox"; - subfolder = ""; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - programs.firefox = { - }; - }; - }; - }; -} diff --git a/programs/browsers/zen.nix b/programs/browsers/zen.nix deleted file mode 100644 index 6612e50..0000000 --- a/programs/browsers/zen.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "zen"; - cfg = config.${name}; - repos = "nur"; - branch = "unstable"; - packages = inputs.${repos}.${branch}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Zen Browser."; - }; - imports = []; - config = { - programs.zen-browser = { - enable = true; - # profiles = { - # default = { - # search = { - # default = "Qwant"; - # extensions = { - # packages = with packages.repos.rycee.firefox-addons; [ - # bitwarden - # plasma-integration - # ad-block-ultimate - # ]; - # }; - # }; - # }; - # }; - }; - }; -} diff --git a/programs/desktop.nix b/programs/desktop.nix deleted file mode 100644 index f146455..0000000 --- a/programs/desktop.nix +++ /dev/null @@ -1,85 +0,0 @@ -# { -# config, -# lib, -# inputs, -# ... -# } @ Inputs: let -# in -# { -# options = {}; -# imports = map (file: ./desktop/${file}) [ -# "plasma.nix" -# "rofi.nix" -# "klassy.nix" -# ]; -# config = {}; -# } -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "desktop"; - subfolder = "desktop"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma Desktop."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - rofi = lib.mkEnableOption "Enables and configures Rofi."; - }; - cfg = config.${name}; - settings = { - plasma.enable = cfg.enable && cfg.plasma; - klassy.enable = cfg.enable && cfg.klassy; - rofi.enable = cfg.enable && cfg.rofi; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "rofi" - "klassy" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) rofi plasma klassy; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) ["plasma"]; - config = lib.mkIf cfg.enable { - inherit (settings) plasma; - }; - }; - }; -} diff --git a/programs/desktop/kde.nix b/programs/desktop/kde.nix deleted file mode 100644 index f4806f6..0000000 --- a/programs/desktop/kde.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "kde"; - subfolder = "kde"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - plasma = lib.mkEnableOption "Enables and configures KDE Plasma Desktop."; - klassy = lib.mkEnableOption "Enables and configures Klassy."; - }; - cfg = config.${name}; - settings = { - plasma.enable = cfg.enable && cfg.plasma; - klassy.enable = cfg.enable && cfg.klassy; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "klassy" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) plasma klassy; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) [ - "plasma" - ]; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/desktop/kde/klassy.nix b/programs/desktop/kde/klassy.nix deleted file mode 100644 index e086326..0000000 --- a/programs/desktop/kde/klassy.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nur"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages.repos; [ - shadowrz.klassy-qt6 - ]; - }; -} diff --git a/programs/desktop/kde/plasma.nix b/programs/desktop/kde/plasma.nix deleted file mode 100644 index c4c3d80..0000000 --- a/programs/desktop/kde/plasma.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - programs.plasma = { - enable = true; - shortcuts = { - "services/com.mitchellh.ghostty.desktop" = { - _launch = [ - "Meta+Return" - "Ctrl+Alt+T" - ]; - new-window = ["Meta+Shift+Return"]; - }; - "ksmserver" = { - "Lock Session" = ["Meta+L"]; - "Sleep" = ["Meta+Shift+L"]; - }; - }; - workspace = { - colorScheme = "KlassyDark"; - windowDecorations = { - library = "org.kde.klassy"; - theme = "Klassy"; - }; - iconTheme = "Klassy Dark"; - theme = "klassy"; - }; - }; - # services.desktopManager.plasma6.enable = true; - }; -} diff --git a/programs/desktop/klassy.nix b/programs/desktop/klassy.nix deleted file mode 100644 index bf0ac9d..0000000 --- a/programs/desktop/klassy.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "klassy"; - main-repo = "nur"; - branch = "klassy"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Klassy."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages.repos; [ - shadowrz.klassy-qt6 - ]; - }; -} diff --git a/programs/desktop/plasma.nix b/programs/desktop/plasma.nix deleted file mode 100644 index 7907aa0..0000000 --- a/programs/desktop/plasma.nix +++ /dev/null @@ -1,188 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "plasma"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - programs.plasma = { - enable = true; - configFile.kdeglobals.General = { - TerminalApplication = "ghostty"; - TerminalService = "com.mitchellh.ghostty.desktop"; - }; - window-rules = [ - { - description = "vscode-desktop-file"; - match.window-class = "code code"; - apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic - } - ]; - shortcuts = { - "services/com.mitchellh.ghostty.desktop" = { - _launch = [ - "Meta+Return" - "Ctrl+Alt+T" - ]; - new-window = ["Meta+Shift+Return"]; - }; - "ksmserver" = { - "Lock Session" = ["Meta+L"]; - "Sleep" = ["Meta+Shift+L"]; - }; - }; - workspace = { - colorScheme = "KlassyDark"; - windowDecorations = { - library = "org.kde.klassy"; - theme = "Klassy"; - }; - iconTheme = "Klassy Dark"; - theme = "klassy"; - }; - panels = [ - { - location = "top"; - height = 27; - screen = "all"; - opacity = "adaptive"; - alignment = "center"; - widgets = [ - "org.kde.plasma.trash" - "org.kde.plasma.panelspacer" - "org.kde.plasma.digitalclock" - "org.kde.plasma.notifications" - "org.kde.plasma.panelspacer" - { - name = "org.kde.plasma.systemtray"; - config = {}; - } - "org.kde.plasma.volume" - "org.kde.plasma.networkmanagement" - "org.kde.plasma.battery" - { - name = "org.kde.plasma.lock_logout"; - # settings = { - # showLogoutScreen = true; - # }; - } - # { - # name = "luisbocanegra.panelspacer.extended"; - # config = { - # expand = true; - # }; - # } - # "org.kde.plasma.systemmonitor" - ]; - } - { - location = "bottom"; - height = 44; - screen = "all"; - opacity = "adaptive"; - alignment = "left"; - hiding = "dodgewindows"; - widgets = [ - "org.kde.plasma.kicker" - # "org.kde.plasma.kickerdash" - { - name = "org.kde.plasma.icontasks"; - config = { - taskDisplayMode = "IconsOnly"; - showOnlyCurrentDesktop = true; - groupTasks = true; - launchers = with packages; [ - "applications:systemsettings.desktop" - "applications:org.kde.dolphin.desktop" - "applications:firefox.desktop" - "applications:chromium-browser.desktop" - "applications:com.mitchellh.ghostty.desktop" - # "applications:code-url-handler.desktop" - "applications:code.desktop" - ]; - }; - } - "org.kde.plasma.showdesktop" - ]; - } - ]; - }; - home.packages = with packages.kdePackages; [ - sddm-kcm - qtvirtualkeyboard - breeze - filelight - dolphin-plugins - ]; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - services = { - desktopManager.plasma6.enable = true; - displayManager = { - sddm = { - enable = true; - wayland.enable = true; - settings = { - General = { - InputMethod = "qtvirtualkeyboard"; - }; - }; - autoNumlock = true; - }; - }; - }; - environment.plasma6.excludePackages = with packages.kdePackages; [ - elisa - konsole - discover - ]; - }; - }; - }; -} diff --git a/programs/desktop/rofi.nix b/programs/desktop/rofi.nix deleted file mode 100644 index 4dd8453..0000000 --- a/programs/desktop/rofi.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "rofi"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Rofi."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.rofi = { - enable = true; - terminal = "/${packages.ghostty}/bin/ghostty"; - theme = "Arc-Dark"; - modes = ["drun" "ssh" "run" "calc"]; - plugins = with packages; [ - rofi-calc - ]; - }; - }; -} diff --git a/programs/dev.nix b/programs/dev.nix deleted file mode 100644 index 59a8aa3..0000000 --- a/programs/dev.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "dev"; - subfolder = "dev"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - docker = lib.mkEnableOption "Enables and configures Docker."; - boot = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures boot related tools."; - }; - nix = lib.mkOption { - type = lib.types.attrsOf lib.types.bool; - description = "Enables and configures Nix related tools."; - }; - network = lib.mkEnableOption "Enables and configures Network tools."; - ghostty = lib.mkEnableOption "Enables and configures Ghostty."; - git = lib.mkEnableOption "Enables and configures Git."; - postman = lib.mkEnableOption "Enables and configures Postman."; - vscode = lib.mkEnableOption "Enables and configures VSCode."; - vim = lib.mkEnableOption "Enables and configures Vim."; - }; - cfg = config.${name}; - settings = { - docker.enable = cfg.enable && cfg.docker; - boot = { - enable = cfg.enable && cfg.boot.enable; - efibootmgr = cfg.enable && cfg.boot.efibootmgr; - grub = cfg.enable && cfg.boot.grub; - gparted = cfg.enable && cfg.boot.gparted; - os-prober = cfg.enable && cfg.boot.os-prober; - }; - dev-nix = { - enable = cfg.enable && cfg.nix.enable; - nixd = cfg.enable && cfg.nix.nixd; - alejandra = cfg.enable && cfg.nix.alejandra; - }; - # network.enable = cfg.enable && cfg.network; - ghostty.enable = cfg.enable && cfg.ghostty; - git.enable = cfg.enable && cfg.git; - postman.enable = cfg.enable && cfg.postman; - vscode.enable = cfg.enable && cfg.vscode; - vim.enable = cfg.enable && cfg.vim; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "vim" - "ghostty" - "vscode" - "postman" - "git" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) [ - "docker" - "nix" - "boot" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) docker dev-nix ghostty git postman vscode vim boot; - home.packages = with packages; [ - python3 - nmap # for network - netcat-openbsd # for network - ]; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) [ - "docker" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) docker; - }; - }; - }; -} diff --git a/programs/dev/boot.nix b/programs/dev/boot.nix deleted file mode 100644 index ca0d64e..0000000 --- a/programs/dev/boot.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "boot"; - subfolder = "boot"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - efibootmgr = lib.mkEnableOption "Enables and configures efibootmgr."; - grub = lib.mkEnableOption "Enables and configures GRUB."; - gparted = lib.mkEnableOption "Enables and configures GParted."; - os-prober = lib.mkEnableOption "Enables and configures os-prober."; - }; - cfg = config.${name}; - settings = { - efibootmgr.enable = cfg.enable && cfg.efibootmgr; - grub.enable = cfg.enable && cfg.grub; - gparted.enable = cfg.enable && cfg.gparted; - os-prober.enable = cfg.enable && cfg.os-prober; - enable = cfg.enable && cfg.os-prober; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "efibootmgr" - "grub" - "gparted" - "os-prober" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - inherit (settings) efibootmgr grub gparted os-prober; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/dev/boot/efibootmgr.nix b/programs/dev/boot/efibootmgr.nix deleted file mode 100644 index 05ad623..0000000 --- a/programs/dev/boot/efibootmgr.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "efibootmgr"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures EFIBOOTMGR."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - efibootmgr - ]; - }; -} diff --git a/programs/dev/boot/gparted.nix b/programs/dev/boot/gparted.nix deleted file mode 100644 index 01ba9c2..0000000 --- a/programs/dev/boot/gparted.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "gparted"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures GParted."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - gparted - ]; - }; -} diff --git a/programs/dev/boot/grub.nix b/programs/dev/boot/grub.nix deleted file mode 100644 index a2b1222..0000000 --- a/programs/dev/boot/grub.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "grub"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures GRUB."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - grub2 - ]; - }; -} diff --git a/programs/dev/boot/os-prober.nix b/programs/dev/boot/os-prober.nix deleted file mode 100644 index c17de11..0000000 --- a/programs/dev/boot/os-prober.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "os-prober"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures OS Prober."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - os-prober - ]; - }; -} diff --git a/programs/dev/docker.nix b/programs/dev/docker.nix deleted file mode 100644 index f792a67..0000000 --- a/programs/dev/docker.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "docker"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - docker-compose - lazydocker - ]; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - virtualisation.docker.enable = true; - }; - }; - }; -} diff --git a/programs/dev/ghostty.nix b/programs/dev/ghostty.nix deleted file mode 100644 index 358461b..0000000 --- a/programs/dev/ghostty.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "ghostty"; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Ghostty."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.ghostty = { - enable = true; - enableZshIntegration = true; - installVimSyntax = true; - settings = { - working-directory = "$HOME"; - gtk-single-instance = false; - window-inherit-working-directory = true; - }; - }; - }; -} diff --git a/programs/dev/git.nix b/programs/dev/git.nix deleted file mode 100644 index 302a18d..0000000 --- a/programs/dev/git.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "git"; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Git."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.git = { - enable = true; - settings = { - user = { - name = "MatthieuGomes"; - email = "matthieu.gomes@ensea.fr"; - }; - init.defaultBranch = "main"; - }; - }; - }; -} diff --git a/programs/dev/network.nix b/programs/dev/network.nix deleted file mode 100644 index cb8f8b6..0000000 --- a/programs/dev/network.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "network"; - subfolder = "network"; - repo = "nix"; - branch = "stable"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - imports = with packages; [ - netcat-openbsd - nmap - ]; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/dev/nix.nix b/programs/dev/nix.nix deleted file mode 100644 index 8a28420..0000000 --- a/programs/dev/nix.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "dev-nix"; - subfolder = "nix"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - nixd = lib.mkEnableOption "Enables and configures Nixd."; - alejandra = lib.mkEnableOption "Enables and configures Alejandra."; - }; - cfg = config.${name}; - settings = { - nixd.enable = cfg.enable && cfg.nixd; - alejandra.enable = cfg.enable && cfg.alejandra; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "nixd" - "alejandra" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - inherit (settings) nixd alejandra; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/programs/dev/nix/alejandra.nix b/programs/dev/nix/alejandra.nix deleted file mode 100644 index 9f08d38..0000000 --- a/programs/dev/nix/alejandra.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "alejandra"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Alejandra."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - alejandra - ]; - }; -} diff --git a/programs/dev/nix/nixd.nix b/programs/dev/nix/nixd.nix deleted file mode 100644 index b8195c0..0000000 --- a/programs/dev/nix/nixd.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "nixd"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Nixd."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - nixd - ]; - }; -} diff --git a/programs/dev/postman.nix b/programs/dev/postman.nix deleted file mode 100644 index 80400ef..0000000 --- a/programs/dev/postman.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "postman"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Postman."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - postman - ]; - }; -} diff --git a/programs/dev/vim.nix b/programs/dev/vim.nix deleted file mode 100644 index 755c97d..0000000 --- a/programs/dev/vim.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vim"; - main-repo = "nix"; - branch = "latest"; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Vim."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.vim = { - enable = true; - defaultEditor = true; - settings = { - copyindent = true; - number = true; - }; - }; - }; -} diff --git a/programs/dev/vscode.nix b/programs/dev/vscode.nix deleted file mode 100644 index a5f1af0..0000000 --- a/programs/dev/vscode.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vscode"; - main-repo = "nix"; - branch = "unstable"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures VSCode."; - }; - imports = []; - config = lib.mkIf cfg.enable { - programs.vscode = { - enable = true; - package = packages.vscode; - mutableExtensionsDir = true; - # profiles.Default={ - - # }; - }; - }; -} diff --git a/programs/misc.nix b/programs/misc.nix deleted file mode 100644 index d5a4d98..0000000 --- a/programs/misc.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "misc"; - subfolder = "misc"; - # repo = "nix"; - # branch = "latest"; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - ledger = lib.mkEnableOption "Enables and configures Ledger support."; - bambu-studio = lib.mkEnableOption "Enables and configures Bambu Studio."; - bitwarden = lib.mkEnableOption "Enables and configures Bitwarden."; - fastfetch = lib.mkEnableOption "Enables and configures Fastfetch."; - iso-image-writer = lib.mkEnableOption "Enables and configures ISO Image Writer."; - kdeconnect = lib.mkEnableOption "Enables and configures KDE Connect."; - vesktop = lib.mkEnableOption "Enables and configures Vesktop."; - }; - cfg = config.${name}; - settings = { - ledger.enable = cfg.enable && cfg.ledger; - bambu-studio.enable = cfg.enable && cfg.bambu-studio; - bitwarden.enable = cfg.enable && cfg.bitwarden; - fastfetch.enable = cfg.enable && cfg.fastfetch; - iso-image-writer.enable = cfg.enable && cfg.iso-image-writer; - kdeconnect.enable = cfg.enable && cfg.kdeconnect; - vesktop.enable = cfg.enable && cfg.vesktop; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "bambu-studio" - "bitwarden" - "fastfetch" - "iso-image-writer" - "vesktop" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) ["ledger" "kdeconnect"]; - config = lib.mkIf cfg.enable { - inherit (settings) ledger bambu-studio bitwarden fastfetch iso-image-writer vesktop kdeconnect; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) ["ledger" "kdeconnect"]; - config = lib.mkIf cfg.enable { - inherit (settings) ledger kdeconnect; - }; - }; - }; -} diff --git a/programs/misc/bambu-studio.nix b/programs/misc/bambu-studio.nix deleted file mode 100644 index 83c021c..0000000 --- a/programs/misc/bambu-studio.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "bambu-studio"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - bambu-studio - ]; - }; -} diff --git a/programs/misc/bitwarden.nix b/programs/misc/bitwarden.nix deleted file mode 100644 index 6ccb076..0000000 --- a/programs/misc/bitwarden.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "bitwarden"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Bitwarden."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - bitwarden-desktop - bitwarden-cli - ]; - }; -} diff --git a/programs/misc/fastfetch.nix b/programs/misc/fastfetch.nix deleted file mode 100644 index 0946d7d..0000000 --- a/programs/misc/fastfetch.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "fastfetch"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Fastfetch."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - fastfetch - ]; - }; -} diff --git a/programs/misc/iso-image-writer.nix b/programs/misc/iso-image-writer.nix deleted file mode 100644 index e67a040..0000000 --- a/programs/misc/iso-image-writer.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "iso-image-writer"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ISO Image Writer."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - kdePackages.isoimagewriter - ]; - }; -} diff --git a/programs/misc/kdeconnect.nix b/programs/misc/kdeconnect.nix deleted file mode 100644 index eda976e..0000000 --- a/programs/misc/kdeconnect.nix +++ /dev/null @@ -1,83 +0,0 @@ -# { -# config, -# lib, -# inputs, -# ... -# } @ Inputs: let -# name = "kdeconnect"; -# in -# { -# options = {}; -# imports = []; -# config = { -# services.${name}.enable = true; -# }; -# } -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "kdeconnect"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - services.${name}.enable = true; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - networking.firewall = rec { - allowedTCPPortRanges = [ - { - from = 1714; - to = 1764; - } - ]; # FOR KDE CONNECT TODO: find a better way to do this - allowedUDPPortRanges = allowedTCPPortRanges; - }; - }; - }; - }; -} diff --git a/programs/misc/ledger.nix b/programs/misc/ledger.nix deleted file mode 100644 index 420a0d4..0000000 --- a/programs/misc/ledger.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "ledger"; - subfolder = ""; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - home.packages = with packages; [ - ledger-live-desktop - ]; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - hardware.ledger.enable = true; - }; - }; - }; -} diff --git a/programs/misc/vesktop.nix b/programs/misc/vesktop.nix deleted file mode 100644 index f57cb6f..0000000 --- a/programs/misc/vesktop.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "vesktop"; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = { - programs.${name} = { - enable = true; - }; - }; -} diff --git a/programs/office.nix b/programs/office.nix deleted file mode 100644 index d4b7413..0000000 --- a/programs/office.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = "office"; - subfolder = "office"; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - libreoffice = lib.mkEnableOption "Enables and configures LibreOffice."; - qualculate = lib.mkEnableOption "Enables and configures Qualculate."; - }; - cfg = config.${name}; - settings = { - libreoffice = { - enable = cfg.enable && cfg.libreoffice; - }; - qualculate = { - enable = cfg.enable && cfg.qualculate; - }; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - "libreoffice" - "qualculate" - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - inherit (settings) libreoffice qualculate; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings) libreoffice qualculate; - }; - }; - }; -} diff --git a/programs/office/libreoffice.nix b/programs/office/libreoffice.nix deleted file mode 100644 index 95cad4d..0000000 --- a/programs/office/libreoffice.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "libreoffice"; - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; - cfg = config.${name}; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}."; - }; - imports = []; - config = lib.mkIf cfg.enable { - home.packages = with packages; [ - libreoffice - ]; - }; -} diff --git a/programs/office/qualculate.nix b/programs/office/qualculate.nix deleted file mode 100644 index e8210a0..0000000 --- a/programs/office/qualculate.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options.qualculate = { - enable = lib.mkEnableOption "Enables and configures Qualculate."; - }; - imports = []; - config = lib.mkIf config.qualculate.enable { - home.packages = with packages; [ - qalculate-qt - ]; - }; -} diff --git a/programs/shells.nix b/programs/shells.nix deleted file mode 100644 index fc1df38..0000000 --- a/programs/shells.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - folder = "shells"; - aliases = { - nrs = "sudo nixos-rebuild switch"; - ls = "ls --color -a"; - ".." = "cd .."; - }; - options.shells = { - enable = lib.mkEnableOption "Enable various shell configurations."; - zsh = lib.mkEnableOption "Enable Zsh shell configuration."; - }; - cfg = config.shells; - settings = { - zsh = { - enable = cfg.enable && cfg.zsh; - aliases = aliases; - }; - }; -in { - config = { - homeModule = { - config, - lib, - ... - }: { - inherit options; - imports = [ - (import ./${folder}/zsh.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule - ]; - config = { - inherit (settings) zsh; - }; - }; - nixosModule = { - config, - lib, - ... - }: { - inherit options; - imports = [ - (import ./${folder}/zsh.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule - ]; - config = { - inherit (settings) zsh; - }; - }; - }; -} diff --git a/programs/shells/zsh.nix b/programs/shells/zsh.nix deleted file mode 100644 index 55c07f0..0000000 --- a/programs/shells/zsh.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -}: let - name = "zsh"; - subfolder = "zsh"; - repo = "nix"; - branch = "latest"; - packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enable Zsh shell and its plugins."; - oh-my-zsh.enable = lib.mkEnableOption "Enable Oh My Zsh framework."; - aliases = lib.mkOption { - type = lib.types.attrsOf lib.types.str; - description = "An attribute set of shell aliases to define."; - default = {}; - }; - }; - cfg = config.${name}; - settings = { - oh-my-zsh.enable = cfg.enable && cfg.oh-my-zsh.enable; - fzf.enable = cfg.enable && cfg.fzf.enable; - yazi.enable = cfg.enable; - }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = map (file: ./${subfolder}/${file}) [ - "oh-my-zsh.nix" - "yazi.nix" - "fzf.nix" - ]; - config = lib.mkIf cfg.enable { - inherit (settings) oh-my-zsh fzf yazi; - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - history = { - path = "$HOME/.zsh_history"; - size = 10000; - ignoreAllDups = true; - }; - defaultKeymap = "emacs"; - plugins = [ - { - name = "powerlevel10k"; - src = packages.zsh-powerlevel10k; - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - } - { - name = "fzf-tab"; - src = "${packages.zsh-fzf-tab}/share/fzf-tab"; - } - ]; - initContent = '' - - source ~/.p10k.zsh - - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' - zstyle ':completion:*' menu no - zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath' - - function y() { - local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd - yazi "$@" --cwd-file="$tmp" - IFS= read -r -d \'\' cwd < "$tmp" - [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" - rm -f -- "$tmp" - } - - ''; - - # zstyle ':completion:*' menu no - - shellAliases = - cfg.aliases - // { - yazi = "y"; - }; - }; - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - config = lib.mkIf cfg.enable { - programs.zsh.enable = true; - }; - }; - }; -} diff --git a/programs/shells/zsh/fzf.nix b/programs/shells/zsh/fzf.nix deleted file mode 100644 index 7030f5c..0000000 --- a/programs/shells/zsh/fzf.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.pkgs-list.nix.latest; -in { - options = { - fzf = { - enable = lib.mkEnableOption "Enables and configures fzf for zsh."; - }; - }; - imports = []; - config = { - programs.fzf = { - enable = true; - enableZshIntegration = true; - }; - home.packages = with latest; [ - zsh-fzf-tab - ]; - }; -} diff --git a/programs/shells/zsh/oh-my-zsh.nix b/programs/shells/zsh/oh-my-zsh.nix deleted file mode 100644 index b8aa78a..0000000 --- a/programs/shells/zsh/oh-my-zsh.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let -in { - options = { - oh-my-zsh.enable = lib.mkEnableOption "Enable Oh My Zsh framework."; - }; - config = lib.mkIf config.oh-my-zsh.enable { - programs.zsh.oh-my-zsh = { - enable = true; - plugins = [ - "git" - "sudo" - ]; - }; - }; -} diff --git a/programs/shells/zsh/yazi.nix b/programs/shells/zsh/yazi.nix deleted file mode 100644 index 4506a19..0000000 --- a/programs/shells/zsh/yazi.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.latest; -in { - options = { - yazi.enable = lib.mkEnableOption "Enable Yazi file manager for Zsh."; - }; - imports = []; - config = lib.mkIf config.yazi.enable { - programs.yazi = { - enable = true; - plugins = with latest.yaziPlugins; - { - inherit chmod; - inherit sudo; - inherit git; - inherit rich-preview; - } - // { - "githead" = ../../../static/yazi/plugins/githead; - "kdeconnect-send" = ../../../static/yazi/plugins/kdeconnect-send; - }; - settings = { - mgr = { - show_hidden = true; - show_symlink = true; - }; - }; - keymap = { - mgr = { - prepend_keymap = [ - { - on = [""]; - run = "plugin kdeconnect-send"; - desc = "Send selected files via KDE Connect"; - } - ]; - }; - }; - initLua = ../../../static/yazi/init.lua; - }; - }; -} diff --git a/progs.nix b/progs.nix new file mode 100644 index 0000000..c4353a2 --- /dev/null +++ b/progs.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs-list, + tools, + baseSettings, + parentPathAsList ? [], + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "progs"; + togglable = false; + subfolder = "progs"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "dev" + "misc" + "shells" + "office" + "desktop" + "browsers" + "terminals" + "editors" + "gaming" + "tuis" + ]; + settings = (lib.recursiveUpdate baseSettings {}).${name}; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/browsers.nix b/progs/browsers.nix new file mode 100644 index 0000000..4d07c29 --- /dev/null +++ b/progs/browsers.nix @@ -0,0 +1,33 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "browsers"; + subfolder = "browsers"; + imports = [ + "firefox" + "chromium" + "zen" + ]; + extras = { + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + firefox.enable = true; + chromium.enable = true; + zen.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/browsers/chromium.nix b/progs/browsers/chromium.nix new file mode 100644 index 0000000..680763e --- /dev/null +++ b/progs/browsers/chromium.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "chromium"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.chromium = { + enable = true; + # TODO: profiles, settings, etc. + }; + }; +}) diff --git a/programs/browsers/firefox.nix b/progs/browsers/firefox.nix similarity index 67% rename from programs/browsers/firefox.nix rename to progs/browsers/firefox.nix index 92d8c19..405af2a 100644 --- a/programs/browsers/firefox.nix +++ b/progs/browsers/firefox.nix @@ -1,24 +1,30 @@ { config, lib, - inputs, + pkgs-list, + parentPathAsList, + tools, ... -} @ Inputs: let - name = "firefox"; - cfg = config.${name}; - repos = "nur"; - branch = "unstable"; - packages = Inputs.pkgs-list.${repos}.${branch}; - bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; - adBlocker-ID = "adblockultimate@adblockultimate.net"; - plasmaIntegration-ID = "plasma-browser-integration@kde.org"; - qwant-ID = "qwantcomforfirefox@jetpack"; -in { - options.${name} = { - enable = lib.mkEnableOption "Enables and configures Firefox."; +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "firefox"; + extras = { + bitwarden-ID = "446900e4-71c2-419f-a6a7-df9c091e268b"; + adBlocker-ID = "adblockultimate@adblockultimate.net"; + plasmaIntegration-ID = "plasma-browser-integration@kde.org"; + qwant-ID = "qwantcomforfirefox@jetpack"; + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; }; - imports = []; - config = lib.mkIf cfg.enable { + # TODO : Try to fix things +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { programs.firefox = { enable = true; profiles = { @@ -52,14 +58,14 @@ in { "experiments.supported" = false; "network.allow-experiments" = false; "services.sync.username" = "nehril012601@gmail.com"; - "browser.uiCustomization.state" = "{\"placements\":{\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"_${bitwarden-ID}_browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":1}"; + "browser.uiCustomization.state" = "{\"placements\":{\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"_${extras.bitwarden-ID}_browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":1}"; "browser.uiCustomization.navBarWhenVerticalTabs" = "[\"back-button\",\"forward-button\",\"stop-reload-button\",\"reset-pbm-toolbar-button\",\"unified-extensions-button\",\"urlbar-container\",\"downloads-button\",\"unified-extensions-button\",\"fxa-toolbar-menu-button\"]"; "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" = false; "services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.formData" = true; "sidebar.verticalTabs" = true; "sidebar.visibility" = "expand-on-hover"; - "sidebar.installed.extensions" = "{${bitwarden-ID}}"; - "sidebar.main.tools" = "history,syncedtabs,bookmarks,{${bitwarden-ID}}"; + "sidebar.installed.extensions" = "{${extras.bitwarden-ID}}"; + "sidebar.main.tools" = "history,syncedtabs,bookmarks,{${extras.bitwarden-ID}}"; "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; "extensions.pocket.enabled" = false; @@ -83,10 +89,10 @@ in { DisableTelemetry = true; Extensions = { Locked = [ - bitwarden-ID - adBlocker-ID - plasmaIntegration-ID - qwant-ID + extras.bitwarden-ID + extras.adBlocker-ID + extras.plasmaIntegration-ID + extras.qwant-ID ]; }; HomePage = { @@ -113,4 +119,4 @@ in { }; }; }; -} +}) diff --git a/progs/browsers/statics/prefs.js b/progs/browsers/statics/prefs.js new file mode 100644 index 0000000..35b80f3 --- /dev/null +++ b/progs/browsers/statics/prefs.js @@ -0,0 +1,301 @@ +// Mozilla User Preferences + +// DO NOT EDIT THIS FILE. +// +// If you make changes to this file while the application is running, +// the changes will be overwritten when the application exits. +// +// To change a preference value, you can either: +// - modify it via the UI (e.g. via about:config in the browser); or +// - set it within a user.js file in your profile. + +user_pref("accessibility.typeaheadfind.flashBar", 0); +user_pref("app.normandy.first_run", false); +user_pref("app.normandy.migrationsApplied", 12); +user_pref("app.normandy.user_id", "2647d764-745a-43ce-aaed-d8768b4bcce1"); +user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1770566700); +user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1770573900); +user_pref("app.update.lastUpdateTime.glean-addons-daily", 1770566700); +user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1770566700); +user_pref("app.update.lastUpdateTime.region-update-timer", 1770566700); +user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1770576532); +user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1770566700); +user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1770566700); +user_pref("browser", "{\"uiCustomization\":{\"state\":{\"placements\":{\"unified-extensions-area\":[],\"widget-overflow-fixed-list\":[]}}}}"); +user_pref("browser.bookmarks.restore_default_bookmarks", false); +user_pref("browser.bookmarks.showMobileBookmarks", false); +user_pref("browser.contentblocking.category", "standard"); +user_pref("browser.contextual-services.contextId", "1ee794fd-c1f6-4c21-aebc-f9d796b53de1"); +user_pref("browser.contextual-services.contextId.timestamp-in-seconds", 1770566875); +user_pref("browser.download.viewableInternally.typeWasRegistered.avif", true); +user_pref("browser.download.viewableInternally.typeWasRegistered.webp", true); +user_pref("browser.engagement.fxa-toolbar-menu-button.has-used", true); +user_pref("browser.engagement.home-button.has-removed", true); +user_pref("browser.formfill.enable", true); +user_pref("browser.ipProtection.locationListCache", "[{\"name\":\"United States of America (Fastly)\",\"code\":\"US\",\"cities\":[{\"name\":\"USA\",\"code\":\"Q30\",\"servers\":[{\"port\":2499,\"hostname\":\"proxy.m1.fastly-masque.net\",\"quarantined\":false,\"protocols\":[{\"name\":\"connect\",\"host\":\"proxy.m1.fastly-masque.net\",\"port\":2499,\"scheme\":\"https\"}]}]}]}]"); +user_pref("browser.laterrun.bookkeeping.profileCreationTime", 1770566669); +user_pref("browser.laterrun.bookkeeping.sessionCount", 1); +user_pref("browser.laterrun.enabled", true); +user_pref("browser.migration.version", 163); +user_pref("browser.newtabpage.activity-stream.discoverystream.spoc.impressions", "{\"CAISEm1vemlsbGEgZm91bmRhdGlvbg\":[1770566702258],\"CAISF3NvbG8gYWkgd2Vic2l0ZSBjcmVhdG9y\":[1770566702262]}"); +user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); +user_pref("browser.newtabpage.activity-stream.impressionId", "{fa1053f5-01dd-481a-a8d9-4f2e884ea0d7}"); +user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); +user_pref("browser.newtabpage.activity-stream.showSponsored", false); +user_pref("browser.newtabpage.activity-stream.telemetry", false); +user_pref("browser.newtabpage.activity-stream.topSitesRows", 2); +user_pref("browser.newtabpage.storageVersion", 1); +user_pref("browser.pageActions.persistedActions", "{\"ids\":[\"bookmark\"],\"idsInUrlbar\":[\"bookmark\"],\"idsInUrlbarPreProton\":[],\"version\":1}"); +user_pref("browser.pagethumbnails.storage_version", 3); +user_pref("browser.ping-centre.telemetry", false); +user_pref("browser.policies.applied", true); +user_pref("browser.proton.toolbar.version", 3); +user_pref("browser.region.update.updated", 1770566670); +user_pref("browser.safebrowsing.malware.enabled", false); +user_pref("browser.safebrowsing.phishing.enabled", false); +user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1770566670847"); +user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1770588270847"); +user_pref("browser.search.region", "CA"); +user_pref("browser.search.serpEventTelemetryCategorization.regionEnabled", false); +user_pref("browser.search.totalSearches", 29); +user_pref("browser.shell.mostRecentDateSetAsDefault", "1770576531"); +user_pref("browser.startup.couldRestoreSession.count", 1); +user_pref("browser.startup.homepage_override.buildID", "20260126151322"); +user_pref("browser.startup.homepage_override.mstone", "147.0.2"); +user_pref("browser.startup.lastColdStartupCheck", 1770576532); +user_pref("browser.startup.page", 3); +user_pref("browser.termsofuse.prefMigrationCheck", true); +user_pref("browser.theme.toolbar-theme", 0); +user_pref("browser.toolbarbuttons.introduced.sidebar-button", true); +user_pref("browser.toolbars.bookmarks.visibility", "always"); +user_pref("browser.topsites.contile.cacheValidFor", 10800); +user_pref("browser.topsites.contile.lastFetch", 1770576532); +user_pref("browser.uiCustomization.horizontalTabsBackup", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"_d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d_-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"plasma-browser-integration_kde_org-browser-action\"],\"nav-bar\":[\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"vertical-spacer\",\"urlbar-container\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"firefox-view-button\",\"tabbrowser-tabs\",\"new-tab-button\"],\"vertical-tabs\":[],\"PersonalToolbar\":[\"import-button\",\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"screenshot-button\",\"_d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d_-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"qwantcomforfirefox_jetpack-browser-action\",\"plasma-browser-integration_kde_org-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"vertical-tabs\",\"PersonalToolbar\",\"unified-extensions-area\",\"TabsToolbar\"],\"currentVersion\":23,\"newElementCount\":3}"); +user_pref("browser.uiCustomization.horizontalTabstrip", "[\"tabbrowser-tabs\",\"new-tab-button\"]"); +user_pref("browser.uiCustomization.navBarWhenVerticalTabs", "[\"back-button\",\"forward-button\",\"stop-reload-button\",\"vertical-spacer\",\"urlbar-container\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\"]"); +user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\"],\"nav-bar\":[\"downloads-button\",\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"vertical-spacer\",\"fxa-toolbar-menu-button\",\"reset-pbm-toolbar-button\",\"unified-extensions-button\",\"urlbar-container\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"queryamoid_kaply_com-browser-action\",\"adblockultimate_adblockultimate_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"TabsToolbar\",\"vertical-tabs\"],\"currentVersion\":23,\"newElementCount\":0}"); +user_pref("browser.urlbar.lastUrlbarSearchSeconds", 1770575495); +user_pref("browser.urlbar.placeholderName", "Google"); +user_pref("browser.urlbar.quickactions.timesShownOnboardingLabel", 3); +user_pref("browser.urlbar.quicksuggest.migrationVersion", 6); +user_pref("browser.urlbar.recentsearches.lastDefaultChanged", "1770566904677"); +user_pref("captchadetection.lastSubmission", 1770566); +user_pref("datareporting.dau.cachedUsageProfileGroupID", "b0bacafe-b0ba-cafe-b0ba-cafeb0bacafe"); +user_pref("datareporting.dau.cachedUsageProfileID", "beefbeef-beef-beef-beef-beeefbeefbee"); +user_pref("distribution.iniFile.exists.appversion", "147.0.2"); +user_pref("distribution.iniFile.exists.value", true); +user_pref("distribution.nixos.bookmarksProcessed", true); +user_pref("doh-rollout.doneFirstRun", true); +user_pref("doh-rollout.home-region", "CA"); +user_pref("doh-rollout.skipHeuristicsCheck", true); +user_pref("dom.forms.autocomplete.formautofill", true); +user_pref("dom.push.userAgentID", "d1e115239f2e4935980e092e9238a894"); +user_pref("experiments.activeExperiment", false); +user_pref("experiments.enabled", false); +user_pref("experiments.supported", false); +user_pref("extensions.activeThemeID", "default-theme@mozilla.org"); +user_pref("extensions.blocklist.pingCountVersion", 0); +user_pref("extensions.colorway-builtin-themes-cleanup", 1); +user_pref("extensions.databaseSchema", 37); +user_pref("extensions.dnr.lastStoreUpdateTag.3032381b-66a0-4b44-bcb8-438449dc8a86", "{bb7fb25a-9288-4294-b521-38e15efca950}"); +user_pref("extensions.getAddons.cache.lastUpdate", 1770566701); +user_pref("extensions.getAddons.databaseSchema", 6); +user_pref("extensions.lastAppBuildId", "20260126151322"); +user_pref("extensions.lastAppVersion", "147.0.2"); +user_pref("extensions.lastPlatformVersion", "147.0.2"); +user_pref("extensions.pendingOperations", false); +user_pref("extensions.pictureinpicture.enable_picture_in_picture_overrides", true); +user_pref("extensions.pocket.api", ""); +user_pref("extensions.pocket.enabled", false); +user_pref("extensions.pocket.oAuthConsumerKey", ""); +user_pref("extensions.pocket.showHome", false); +user_pref("extensions.pocket.site", ""); +user_pref("extensions.quarantinedDomains.list", "autoatendimento.bb.com.br,ibpf.sicredi.com.br,ibpj.sicredi.com.br,internetbanking.caixa.gov.br,www.ib12.bradesco.com.br,www2.bancobrasil.com.br"); +user_pref("extensions.signatureCheckpoint", 1); +user_pref("extensions.ui.dictionary.hidden", true); +user_pref("extensions.ui.extension.hidden", false); +user_pref("extensions.ui.lastCategory", "addons://list/extension"); +user_pref("extensions.ui.locale.hidden", true); +user_pref("extensions.ui.mlmodel.hidden", true); +user_pref("extensions.ui.plugin.hidden", false); +user_pref("extensions.ui.sitepermission.hidden", true); +user_pref("extensions.webcompat.enable_interventions", true); +user_pref("extensions.webcompat.enable_shims", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.adblockultimate@adblockultimate.net", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.plasma-browser-integration@kde.org", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.qwantcomforfirefox@jetpack", true); +user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{446900e4-71c2-419f-a6a7-df9c091e268b}", true); +user_pref("extensions.webextensions.uuids", "{\"data-leak-blocker@mozilla.com\":\"137cd9b8-7b23-4fa2-93a6-d0869381d424\",\"formautofill@mozilla.org\":\"9ad0c8a3-4f6c-491a-b8c1-53221f02f6ed\",\"ipp-activator@mozilla.com\":\"8beecf0a-9900-462a-a762-253f8b0aca57\",\"pictureinpicture@mozilla.org\":\"7ef71ed2-baa1-45d8-b4d5-ba2655e6f5d1\",\"addons-search-detection@mozilla.com\":\"65286170-6612-458d-898c-68cf4f69e2b6\",\"webcompat@mozilla.org\":\"9a310967-e580-48bf-b3e8-4eafebbc122d\",\"newtab@mozilla.org\":\"fe240e3e-3f09-485a-8b3a-2cfbcdda83c7\",\"default-theme@mozilla.org\":\"0b8c6abc-4bda-4ebb-aec9-a3fb2cea01e4\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"c569bf97-73da-4abc-970b-743c1bf749c9\",\"adblockultimate@adblockultimate.net\":\"c2323530-ad5a-4206-94bf-a4eded7d50fc\",\"qwantcomforfirefox@jetpack\":\"3032381b-66a0-4b44-bcb8-438449dc8a86\",\"qwant-search-firefox@qwant.com\":\"afd904e5-e3b1-4cfa-b400-1273c5f51cdd\",\"plasma-browser-integration@kde.org\":\"6bfc85d8-8e00-4042-92b6-f4db0318dbf1\",\"queryamoid@kaply.com\":\"3e307fbc-5cac-4465-997d-e5aaa2133e5f\"}"); +user_pref("gecko.handlerService.defaultHandlersVersion", 1); +user_pref("general.autoScroll", true); +user_pref("identity.fxaccounts.account.device.name", "matthieu’s Firefox on NixOs"); +user_pref("identity.fxaccounts.account.telemetry.sanitized_uid", "72cfa9ce38acbc53f4a170fc8023f072"); +user_pref("identity.fxaccounts.commands.missed.last_fetch", 1770568612); +user_pref("identity.fxaccounts.lastSignedInUserHash", "GEzNIszovnQY4PQFZ0BxJAAD1C4yh36PHQJI1cRIpn8="); +user_pref("identity.fxaccounts.toolbar.accessed", true); +user_pref("identity.fxaccounts.toolbar.syncSetup.panelAccessed", true); +user_pref("idle.lastDailyNotification", 1770569471); +user_pref("media.eme.enabled", true); +user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3"); +user_pref("media.gmp-gmpopenh264.hashValue", "f5246bf14d038adf4ce0c4360262ab722bc3de4220f047c3d542b4c564074b4877dc8659e3125c5171c749e7ce93f20cc63777eb5e1539e960670cbc5f30ac85"); +user_pref("media.gmp-gmpopenh264.lastDownload", 1770566701); +user_pref("media.gmp-gmpopenh264.lastInstallStart", 1770566701); +user_pref("media.gmp-gmpopenh264.lastUpdate", 1770566701); +user_pref("media.gmp-gmpopenh264.version", "2.6.0"); +user_pref("media.gmp-manager.buildID", "20260126151322"); +user_pref("media.gmp-manager.lastCheck", 1770566886); +user_pref("media.gmp-widevinecdm.abi", "x86_64-gcc3"); +user_pref("media.gmp-widevinecdm.hashValue", "421214210a09a9f9ed8ce482ef857f1c2b29ce1739240d1ec99a61caa3d80db3393752275722bdf5f503489f12a753215fe8a0c82de3aca23780d4ffe5792eb1"); +user_pref("media.gmp-widevinecdm.lastDownload", 1770566889); +user_pref("media.gmp-widevinecdm.lastInstallStart", 1770566886); +user_pref("media.gmp-widevinecdm.lastUpdate", 1770566889); +user_pref("media.gmp-widevinecdm.version", "4.10.2934.0"); +user_pref("media.gmp.storage.version.observed", 1); +user_pref("media.videocontrols.picture-in-picture.video-toggle.first-seen-secs", 1770571814); +user_pref("network.allow-experiments", false); +user_pref("network.cookie.CHIPS.lastMigrateDatabase", 2); +user_pref("nimbus.migrations.after-remote-settings-update", 0); +user_pref("nimbus.migrations.after-store-initialized", 3); +user_pref("nimbus.migrations.init-started", 0); +user_pref("nimbus.profileId", "ef86f3a4-a689-4181-b494-e186f360c9d9"); +user_pref("pdfjs.enableAltText", true); +user_pref("pdfjs.enableAltTextForEnglish", true); +user_pref("pdfjs.enabledCache.state", true); +user_pref("pdfjs.migrationVersion", 2); +user_pref("places.database.lastMaintenance", 1770569471); +user_pref("privacy.bounceTrackingProtection.hasMigratedUserActivationData", true); +user_pref("privacy.clearOnShutdown_v2.formdata", true); +user_pref("privacy.donottrackheader.enabled", true); +user_pref("privacy.purge_trackers.date_in_cookie_database", "0"); +user_pref("privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", true); +user_pref("privacy.sanitize.pending", "[{\"id\":\"shutdown\",\"itemsToClear\":[\"cache\",\"formdata\",\"browsingHistoryAndDownloads\",\"cookiesAndStorage\"],\"options\":{}},{\"id\":\"newtab-container\",\"itemsToClear\":[],\"options\":{}}]"); +user_pref("privacy.sanitize.sanitizeOnShutdown", true); +user_pref("privacy.trackingprotection.allow_list.hasMigratedCategoryPrefs", true); +user_pref("privacy.trackingprotection.allow_list.hasUserInteractedWithETPSettings", true); +user_pref("services.settings.blocklists.addons-bloomfilters.last_check", 1770577121); +user_pref("services.settings.blocklists.gfx.last_check", 1770577121); +user_pref("services.settings.clock_skew_seconds", -659); +user_pref("services.settings.last_etag", "\"1770575801511\""); +user_pref("services.settings.last_update_seconds", 1770577121); +user_pref("services.settings.main.addons-data-leak-blocker-domains.last_check", 1770577121); +user_pref("services.settings.main.addons-manager-settings.last_check", 1770577121); +user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1770577121); +user_pref("services.settings.main.cfr.last_check", 1770577121); +user_pref("services.settings.main.cookie-banner-rules-list.last_check", 1770577121); +user_pref("services.settings.main.devtools-compatibility-browsers.last_check", 1770577121); +user_pref("services.settings.main.devtools-devices.last_check", 1770577121); +user_pref("services.settings.main.doh-config.last_check", 1770577121); +user_pref("services.settings.main.doh-providers.last_check", 1770577121); +user_pref("services.settings.main.fingerprinting-protection-overrides.last_check", 1770577121); +user_pref("services.settings.main.hijack-blocklists.last_check", 1770577121); +user_pref("services.settings.main.language-dictionaries.last_check", 1770577121); +user_pref("services.settings.main.message-groups.last_check", 1770577121); +user_pref("services.settings.main.moz-essential-domain-fallbacks.last_check", 1770577121); +user_pref("services.settings.main.newtab-wallpapers-v2.last_check", 1770577121); +user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1770577121); +user_pref("services.settings.main.nimbus-secure-experiments.last_check", 1770577121); +user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1770577121); +user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1770577121); +user_pref("services.settings.main.password-recipes.last_check", 1770577121); +user_pref("services.settings.main.password-rules.last_check", 1770577121); +user_pref("services.settings.main.personality-provider-models.last_check", 1770577121); +user_pref("services.settings.main.personality-provider-recipe.last_check", 1770577121); +user_pref("services.settings.main.query-stripping.last_check", 1770577121); +user_pref("services.settings.main.remote-permissions.last_check", 1770577121); +user_pref("services.settings.main.search-categorization.last_check", 1770577121); +user_pref("services.settings.main.search-config-icons.last_check", 1770577121); +user_pref("services.settings.main.search-config-overrides-v2.last_check", 1770577121); +user_pref("services.settings.main.search-config-v2.last_check", 1770577121); +user_pref("services.settings.main.search-default-override-allowlist.last_check", 1770577121); +user_pref("services.settings.main.search-telemetry-v2.last_check", 1770577121); +user_pref("services.settings.main.sites-classification.last_check", 1770577121); +user_pref("services.settings.main.third-party-cookie-blocking-exempt-urls.last_check", 1770577121); +user_pref("services.settings.main.tippytop.last_check", 1770577121); +user_pref("services.settings.main.top-sites.last_check", 1770577121); +user_pref("services.settings.main.tracking-protection-lists.last_check", 1770577121); +user_pref("services.settings.main.translations-models.last_check", 1770577121); +user_pref("services.settings.main.translations-wasm.last_check", 1770577121); +user_pref("services.settings.main.url-classifier-exceptions.last_check", 1770577121); +user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1770577121); +user_pref("services.settings.main.url-parser-default-unknown-schemes-interventions.last_check", 1770577121); +user_pref("services.settings.main.urlbar-persisted-search-terms.last_check", 1770577121); +user_pref("services.settings.main.vpn-serverlist.last_check", 1770577121); +user_pref("services.settings.main.webcompat-interventions.last_check", 1770577121); +user_pref("services.settings.main.websites-with-shared-credential-backends.last_check", 1770577121); +user_pref("services.settings.security-state.cert-revocations.last_check", 1770577121); +user_pref("services.settings.security-state.intermediates.last_check", 1770577121); +user_pref("services.settings.security-state.onecrl.last_check", 1770577121); +user_pref("services.sync.addons.lastSync", "1770566954.81"); +user_pref("services.sync.addons.syncID", "zJRYdrgj3xmW"); +user_pref("services.sync.addresses.lastSync", "0"); +user_pref("services.sync.addresses.syncID", "TAykmERdquqc"); +user_pref("services.sync.client.GUID", "VSNjLNyJGcTp"); +user_pref("services.sync.client.syncID", "t6Axjvbk3Z4L"); +user_pref("services.sync.clients.devices.desktop", 4); +user_pref("services.sync.clients.devices.mobile", 1); +user_pref("services.sync.clients.lastRecordUpload", 1770576533); +user_pref("services.sync.clients.lastSync", "1770576533.28"); +user_pref("services.sync.clients.syncID", "gI5EYKCNP9bO"); +user_pref("services.sync.creditcards.lastSync", "0"); +user_pref("services.sync.creditcards.syncID", "ZuXIy1AOevVz"); +user_pref("services.sync.declinedEngines", ""); +user_pref("services.sync.engine.addresses", true); +user_pref("services.sync.engine.addresses.available", true); +user_pref("services.sync.engine.creditcards", true); +user_pref("services.sync.engine.prefs.modified", false); +user_pref("services.sync.forms.lastSync", "1770566105.56"); +user_pref("services.sync.forms.syncID", "NFbI-da9Bx8a"); +user_pref("services.sync.globalScore", 0); +user_pref("services.sync.lastPing", 1770566874); +user_pref("services.sync.lastSync", "Sun Feb 08 2026 13:48:53 GMT-0500 (Eastern Standard Time)"); +user_pref("services.sync.lastTabFetch", 1770575470); +user_pref("services.sync.nextSync", 1770577133); +user_pref("services.sync.prefs.lastSync", "1770572753.40"); +user_pref("services.sync.prefs.sync-seen.browser.contentblocking.category", true); +user_pref("services.sync.prefs.sync-seen.browser.formfill.enable", true); +user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.showSponsored", true); +user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.topSitesRows", true); +user_pref("services.sync.prefs.sync-seen.browser.safebrowsing.malware.enabled", true); +user_pref("services.sync.prefs.sync-seen.browser.safebrowsing.phishing.enabled", true); +user_pref("services.sync.prefs.sync-seen.browser.startup.page", true); +user_pref("services.sync.prefs.sync-seen.extensions.activeThemeID", true); +user_pref("services.sync.prefs.sync-seen.general.autoScroll", true); +user_pref("services.sync.prefs.sync-seen.media.eme.enabled", true); +user_pref("services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); +user_pref("services.sync.prefs.sync-seen.privacy.clearOnShutdown_v2.formdata", true); +user_pref("services.sync.prefs.sync-seen.privacy.sanitize.sanitizeOnShutdown", true); +user_pref("services.sync.prefs.sync-seen.privacy.trackingprotection.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.autofillForms", true); +user_pref("services.sync.prefs.sync-seen.signon.generation.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.management.page.breach-alerts.enabled", true); +user_pref("services.sync.prefs.sync-seen.signon.rememberSignons", true); +user_pref("services.sync.prefs.syncID", "hacRveoYWiKa"); +user_pref("services.sync.syncInterval", 600000); +user_pref("services.sync.syncThreshold", 300); +user_pref("services.sync.username", "nehril012601@gmail.com"); +user_pref("sidebar.backupState", "{\"command\":\"\",\"panelOpen\":false,\"launcherWidth\":53,\"launcherExpanded\":false,\"launcherVisible\":true,\"pinnedTabsHeight\":0,\"collapsedPinnedTabsHeight\":0,\"toolsHeight\":0,\"collapsedToolsHeight\":0}"); +user_pref("sidebar.main.tools", "history,syncedtabs,bookmarks"); +user_pref("sidebar.new-sidebar.has-used", true); +user_pref("sidebar.revamp", true); +user_pref("sidebar.verticalTabs", true); +user_pref("sidebar.visibility", "expand-on-hover"); +user_pref("signon.autofillForms", false); +user_pref("signon.generation.enabled", false); +user_pref("signon.management.page.breach-alerts.enabled", false); +user_pref("signon.rememberSignons", false); +user_pref("storage.vacuum.last.index", 0); +user_pref("storage.vacuum.last.places.sqlite", 1770569471); +user_pref("toolkit.profiles.storeID", "535cda15"); +user_pref("toolkit.startup.last_success", 1770576475); +user_pref("toolkit.telemetry.bhrPing.enabled", false); +user_pref("toolkit.telemetry.cachedClientID", "c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0"); +user_pref("toolkit.telemetry.cachedProfileGroupID", "decafdec-afde-cafd-ecaf-decafdecafde"); +user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); +user_pref("toolkit.telemetry.hybridContent.enabled", false); +user_pref("toolkit.telemetry.newProfilePing.enabled", false); +user_pref("toolkit.telemetry.previousBuildID", "20260126151322"); +user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); +user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); +user_pref("toolkit.telemetry.unified", false); +user_pref("toolkit.telemetry.updatePing.enabled", false); +user_pref("trailhead.firstrun.didSeeAboutWelcome", true); diff --git a/progs/browsers/statics/test.json b/progs/browsers/statics/test.json new file mode 100644 index 0000000..75e0524 --- /dev/null +++ b/progs/browsers/statics/test.json @@ -0,0 +1,27 @@ +{ + "uiCustomization": { + "state": { + "placements": { + "widget-overflow-fixed-list": [], + "nav-bar": [ + "back-button", + "forward-button", + "stop-reload-button", + "urlbar-container", + "downloads-button", + "fxa-toolbar-menu-button", + "unified-extensions-button" + ], + "toolbar-menubar": [ + "menubar-items" + ], + "TabsToolbar": [], + "vertical-tabs": [ + "tabbrowser-tabs" + ], + "PersonalToolbar": [ + ] + } + } + } +} \ No newline at end of file diff --git a/progs/browsers/statics/toolbar.json b/progs/browsers/statics/toolbar.json new file mode 100644 index 0000000..28f47f9 --- /dev/null +++ b/progs/browsers/statics/toolbar.json @@ -0,0 +1,46 @@ +{ + "placements": { + "widget-overflow-fixed-list": [], + "unified-extensions-area": [ + "queryamoid_kaply_com-browser-action", + "adblockultimate_adblockultimate_net-browser-action" + ], + "nav-bar": [ + "downloads-button", + "sidebar-button", + "back-button", + "forward-button", + "stop-reload-button", + "home-button", + "vertical-spacer", + "fxa-toolbar-menu-button", + "reset-pbm-toolbar-button", + "unified-extensions-button", + "urlbar-container" + ], + "toolbar-menubar": [ + "menubar-items" + ], + "TabsToolbar": [], + "vertical-tabs": [ + "tabbrowser-tabs" + ], + "PersonalToolbar": [ + "personal-bookmarks" + ] + }, + "seen": [ + "queryamoid_kaply_com-browser-action", + "adblockultimate_adblockultimate_net-browser-action", + "developer-button", + "screenshot-button" + ], + "dirtyAreaCache": [ + "unified-extensions-area", + "nav-bar", + "TabsToolbar", + "vertical-tabs" + ], + "currentVersion": 23, + "newElementCount": 0 +} \ No newline at end of file diff --git a/progs/browsers/zen.nix b/progs/browsers/zen.nix new file mode 100644 index 0000000..5e87df8 --- /dev/null +++ b/progs/browsers/zen.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "zen"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + specialImports = { + Home = [pkgs-list.others.zen-browser.homeModules.beta]; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.zen-browser = { + enable = true; + # TODO: profiles, settings, etc. + }; + }; +}) diff --git a/progs/desktop.nix b/progs/desktop.nix new file mode 100644 index 0000000..84e5314 --- /dev/null +++ b/progs/desktop.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "desktop"; + togglable = false; + subfolder = "desktop"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "plasma" + "klassy" + "rofi" + ]; + extras = { + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + plasma.enable = true; + klassy.enable = true; + rofi.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/desktop/klassy.nix b/progs/desktop/klassy.nix new file mode 100644 index 0000000..d533a9d --- /dev/null +++ b/progs/desktop/klassy.nix @@ -0,0 +1,1005 @@ +# TODO : stuffs in todo list +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + defaultsParams = builtins.fromJSON (builtins.readFile ./klassy/defaults/params.json); + definedOrNull = fullAttrs: subAttrPath: let + subAttrPathList = lib.splitString "." subAttrPath; + first = lib.lists.last (lib.lists.take 1 subAttrPathList); + subAttrPathWithoutFirst = lib.lists.drop 1 subAttrPathList; + in + if fullAttrs != null && builtins.isAttrs fullAttrs && builtins.hasAttr first fullAttrs + then + if subAttrPathWithoutFirst == [] + then fullAttrs.${first} + else definedOrNull fullAttrs.${first} (lib.concatStringsSep "." subAttrPathWithoutFirst) + else null; + getDefault = defaults: path: let + subAttrPathList = lib.splitString "." path; + first = lib.lists.last (lib.lists.take 1 subAttrPathList); + subAttrPathWithoutFirst = lib.lists.drop 1 subAttrPathList; + in + if subAttrPathWithoutFirst == [] + then defaults.${first} + else getDefault defaults.${first} (lib.concatStringsSep "." subAttrPathWithoutFirst); + defaultIfUndefined = params: defaults: path: let + value = definedOrNull params path; + default = getDefault defaults path; + in + if value != null + then value + else default; + boolToString = value: + if value == true + then "true" + else "false"; + parseDefaultOverrides = counter: settings: defaultSettings: let + Enabled = defaultIfUndefined settings defaultSettings "enabled"; + in '' + [Default Windeco Exception ${toString counter}] + Enabled=${boolToString Enabled} + ''; + + parseUserSpecificOverride = counter: settings: defaultSettings: let + Enabled = defaultIfUndefined settings defaultSettings "enabled"; + windowIdenticationSettingsPath = "window_identification"; + ExceptionWindowPropertyType = defaultIfUndefined settings defaultSettings "${windowIdenticationSettingsPath}.window_property"; + ExceptionWindowPropertyPattern = defaultIfUndefined settings defaultSettings "${windowIdenticationSettingsPath}.regex"; + windecoOptionsSettingsPath = "windeco_options"; + borderSizeSettingsPath = "${windecoOptionsSettingsPath}.border_size"; + ExceptionBorder = defaultIfUndefined settings defaultSettings "${borderSizeSettingsPath}.enabled"; + BorderSize = defaultIfUndefined settings defaultSettings "${borderSizeSettingsPath}.value"; + ExceptionMatchTitleBarToApplicationColor = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.match_titlebar_colour_to_application"; + HideTitleBar = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.hide_window_titlebar"; + OpaqueTitleBar = defaultIfUndefined settings defaultSettings "${windecoOptionsSettingsPath}.opaque_titlebar"; + presetSettingsPath = "${windecoOptionsSettingsPath}.preset"; + enablePreset = defaultIfUndefined settings defaultSettings "${presetSettingsPath}.enabled"; + + ExceptionPreset = + if enablePreset + then defaultIfUndefined settings defaultSettings "${presetSettingsPath}.value" + else ""; + + applicationStyleOptionsSettingsPath = "application_style_options"; + ExceptionProgramNamePattern = defaultIfUndefined settings defaultSettings "${applicationStyleOptionsSettingsPath}.application_name_regex"; + PreventApplyOpacityToHeader = defaultIfUndefined settings defaultSettings "${applicationStyleOptionsSettingsPath}.opaque_header"; + in '' + [Windeco Exception ${toString counter}] + Enabled=${boolToString Enabled} + ExceptionWindowPropertyType=${toString ExceptionWindowPropertyType} + ExceptionWindowPropertyPattern=${toString ExceptionWindowPropertyPattern} + ExceptionBorder=${boolToString ExceptionBorder} + BorderSize=${toString BorderSize} + ExceptionMatchTitleBarToApplicationColor=${boolToString ExceptionMatchTitleBarToApplicationColor} + HideTitleBar=${toString HideTitleBar} + OpaqueTitleBar=${boolToString OpaqueTitleBar} + ExceptionPreset=${ExceptionPreset} + ExceptionProgramNamePattern=${ExceptionProgramNamePattern} + PreventApplyOpacityToHeader=${boolToString PreventApplyOpacityToHeader} + ''; + parseParams = settings: let + KlassySettings = settings.klassy; + styleSettingsPath = "style"; + decorationSettingsPath = "window_decoration"; + windowSettingsPath = "${decorationSettingsPath}.window"; + titlebarSettingsPath = "${decorationSettingsPath}.titlebar"; + buttonsSettingsPath = "${decorationSettingsPath}.buttons"; + animationsSettingsPath = "${decorationSettingsPath}.animations"; + windowSpecificOverridesSettingsPath = "${decorationSettingsPath}.window_specific_overrides"; + + Windeco = let + ButtonIconStyle = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.icons"; + ButtonShape = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.shape"; + IconSize = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.icon_size"; + BoldButtonIcons = defaultIfUndefined KlassySettings defaultsParams "${buttonsSettingsPath}.bold_icons"; + + BoldTitle = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.make_title_bold"; + + ColorizeWindowOutlineWithButton = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.thin_window_outline.colourize_with_higlighted_buttons_colour"; + RoundAllCornersWhenNoBorders = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.corners.round_corners_when_no_borders"; + WindowCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${windowSettingsPath}.corners.corner_radius"; + AnimationsEnabled = defaultIfUndefined KlassySettings defaultsParams "${animationsSettingsPath}.enable"; + AnimationsSpeedRelativeSystem = defaultIfUndefined KlassySettings defaultsParams "${animationsSettingsPath}.animations_speed"; + DrawBackgroundGradient = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.draw_titlebar_background_gradient"; + DrawTitleBarSeparator = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.on_active_window.draw_separator_under_titlebar"; + MatchTitleBarToApplicationColor = defaultIfUndefined KlassySettings defaultsParams "${titlebarSettingsPath}.match_titlebar_colour_to_application"; + in '' + ButtonIconStyle=${ButtonIconStyle} + ButtonShape=${ButtonShape} + IconSize=${IconSize} + BoldButtonIcons=${boolToString BoldButtonIcons} + BoldTitle=${boolToString BoldTitle} + ColorizeWindowOutlineWithButton=${boolToString ColorizeWindowOutlineWithButton} + RoundAllCornersWhenNoBorders=${boolToString RoundAllCornersWhenNoBorders} + WindowCornerRadius=${toString WindowCornerRadius} + AnimationsEnabled=${boolToString AnimationsEnabled} + AnimationsSpeedRelativeSystem=${toString AnimationsSpeedRelativeSystem} + # SystemIconSize= : find the parameter that determines this + DrawBackgroundGradient=${boolToString DrawBackgroundGradient} + DrawTitleBarSeparator=${boolToString DrawTitleBarSeparator} + MatchTitleBarToApplicationColor=${boolToString MatchTitleBarToApplicationColor} + ''; + ButtonColors = let + buttonSettingsPath = "${buttonsSettingsPath}.button_colours"; + + LockButtonColorsActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${buttonSettingsPath}.lock_active_inactive"; + + buttonsColoursActiveSettingsPath = "${buttonSettingsPath}.active_window"; + buttonsIconColoursActiveSettingsPath = "${buttonsColoursActiveSettingsPath}.icon_colours"; + + ButtonIconColorsActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.choice"; + CloseButtonIconColorActive = + if defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.close_button_icon_colour" == ButtonIconColorsActive + then "AsSelected" + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.close_button_icon_colour"; + ButtonIconOpacityActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursActiveSettingsPath}.opacity"; + + buttonsColoursActiveContrastSettingsPath = "${buttonsIconColoursActiveSettingsPath}.contrast"; + + OnPoorIconContrastActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursActiveContrastSettingsPath}.when_poor_contrast_detected"; + PoorIconContrastThresholdActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursActiveContrastSettingsPath}.threshold"; + + buttonsBackground_N_OutlineColoursActiveSettingsPath = "${buttonsColoursActiveSettingsPath}.background_n_outline_colours"; + + ButtonBackgroundColorsActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.choice"; + UseHoverAccentActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.use_hover_colour_from_colour_scheme"; + ButtonBackgroundOpacityActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.opacity"; + + buttonsBackgroundActiveContrastSettingsPath = "${buttonsBackground_N_OutlineColoursActiveSettingsPath}.contrast"; + + AdjustBackgroundColorOnPoorContrastActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundActiveContrastSettingsPath}.adjust_colour_when_poor_contrast_detected"; + PoorBackgroundContrastThresholdActive = defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundActiveContrastSettingsPath}.threshold"; + + ############ Inactive window buttons settings + + buttonsColoursInactiveSettingsPath = "${buttonSettingsPath}.inactive_window"; + + ButtonColorsInactiveSameHoverPress = defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveSettingsPath}.use_same_hover_n_press_colours_as_active_window"; + + buttonsIconColoursInactiveSettingsPath = "${buttonsColoursInactiveSettingsPath}.icon_colours"; + + ButtonIconColorsInactive = + if LockButtonColorsActiveInactive + then ButtonIconColorsActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.choice"; + CloseButtonIconColorInactive = + if LockButtonColorsActiveInactive + then CloseButtonIconColorActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.close_button_icon_colour"; + ButtonIconOpacityInactive = + if LockButtonColorsActiveInactive + then ButtonIconOpacityActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsIconColoursInactiveSettingsPath}.opacity"; + + buttonsColoursInactiveContrastSettingsPath = "${buttonsIconColoursInactiveSettingsPath}.contrast"; + + OnPoorIconContrastInactive = + if LockButtonColorsActiveInactive + then OnPoorIconContrastActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveContrastSettingsPath}.when_poor_contrast_detected"; + PoorIconContrastThresholdInactive = + if LockButtonColorsActiveInactive + then PoorIconContrastThresholdActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsColoursInactiveContrastSettingsPath}.threshold"; + + buttonsBackground_N_OutlineColoursInactiveSettingsPath = "${buttonsColoursInactiveSettingsPath}.background_n_outline_colours"; + + ButtonBackgroundColorsInactive = + if LockButtonColorsActiveInactive + then ButtonBackgroundColorsActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.choice"; + UseHoverAccentInactive = + if LockButtonColorsActiveInactive + then UseHoverAccentActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.use_hover_colour_from_colour_scheme"; + ButtonBackgroundOpacityInactive = + if LockButtonColorsActiveInactive + then ButtonBackgroundOpacityActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.opacity"; + + buttonsBackgroundInactiveContrastSettingsPath = "${buttonsBackground_N_OutlineColoursInactiveSettingsPath}.contrast"; + + AdjustBackgroundColorOnPoorContrastInactive = + if LockButtonColorsActiveInactive + then AdjustBackgroundColorOnPoorContrastActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundInactiveContrastSettingsPath}.adjust_colour_when_poor_contrast_detected"; + PoorBackgroundContrastThresholdInactive = + if LockButtonColorsActiveInactive + then PoorBackgroundContrastThresholdActive + else defaultIfUndefined KlassySettings defaultsParams "${buttonsBackgroundInactiveContrastSettingsPath}.threshold"; + # TODO : Parse ultra personalization settings + in '' + AdjustBackgroundColorOnPoorContrastActive=${boolToString AdjustBackgroundColorOnPoorContrastActive} + AdjustBackgroundColorOnPoorContrastInactive=${boolToString AdjustBackgroundColorOnPoorContrastInactive} + ButtonBackgroundColorsActive=${ButtonBackgroundColorsActive} + ButtonBackgroundColorsInactive=${ButtonBackgroundColorsInactive} + ButtonBackgroundOpacityActive=${toString ButtonBackgroundOpacityActive} + ButtonBackgroundOpacityInactive=${toString ButtonBackgroundOpacityInactive} + ButtonColorsInactiveSameHoverPress=${boolToString ButtonColorsInactiveSameHoverPress} + LockButtonColorsActiveInactive=${boolToString LockButtonColorsActiveInactive} + #TODO NegativeCloseBackgroundHoverPressActive= + #TODO NegativeCloseBackgroundHoverPressInactive= + ButtonIconColorsActive=${ButtonIconColorsActive} + ButtonIconColorsInactive=${ButtonIconColorsInactive} + CloseButtonIconColorActive=${CloseButtonIconColorActive} + CloseButtonIconColorInactive=${CloseButtonIconColorInactive} + #TODO ButtonOverrideColorsActiveClose= + #TODO ButtonOverrideColorsInactiveClose= + OnPoorIconContrastActive=${boolToString OnPoorIconContrastActive} + OnPoorIconContrastInactive=${boolToString OnPoorIconContrastInactive} + #TODO ButtonOverrideColorsActiveApplicationMenu= + #TODO ButtonOverrideColorsActiveContextHelp= + #TODO ButtonOverrideColorsActiveKeepAbove= + #TODO ButtonOverrideColorsActiveKeepBelow= + #TODO ButtonOverrideColorsActiveMaximize= + #TODO ButtonOverrideColorsActiveMenu= + #TODO ButtonOverrideColorsActiveMinimize= + #TODO ButtonOverrideColorsActiveOnAllDesktops= + #TODO ButtonOverrideColorsActiveShade= + #TODO ButtonOverrideColorsInactiveApplicationMenu= + #TODO ButtonOverrideColorsInactiveContextHelp= + #TODO ButtonOverrideColorsInactiveKeepAbove= + #TODO ButtonOverrideColorsInactiveKeepBelow= + #TODO ButtonOverrideColorsInactiveMaximize= + #TODO ButtonOverrideColorsInactiveMenu= + #TODO ButtonOverrideColorsInactiveMinimize= + #TODO ButtonOverrideColorsInactiveOnAllDesktops= + #TODO ButtonOverrideColorsInactiveShade= + #TODO ButtonOverrideColorsLockStatesInactive= + PoorBackgroundContrastThresholdActive=${toString PoorBackgroundContrastThresholdActive} + PoorBackgroundContrastThresholdInactive=${toString PoorBackgroundContrastThresholdInactive} + PoorIconContrastThresholdActive=${toString PoorIconContrastThresholdActive} + PoorIconContrastThresholdInactive=${toString PoorIconContrastThresholdInactive} + #TODO ButtonOverrideColorsLockStatesActive= + ButtonIconOpacityActive=${toString ButtonIconOpacityActive} + ButtonIconOpacityInactive=${toString ButtonIconOpacityInactive} + UseHoverAccentActive=${boolToString UseHoverAccentActive} + UseHoverAccentInactive=${boolToString UseHoverAccentInactive} + ''; + ButtonBehaviour = let + buttonBehaviourSettingsPath = "${buttonsSettingsPath}.button_behaviour"; + UnisonHovering = defaultIfUndefined KlassySettings defaultsParams "${buttonBehaviourSettingsPath}.unison_hovering"; + + activeWindowSettingsPath = "${buttonBehaviourSettingsPath}.active_window"; + LockButtonBehaviourActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.lock_active_inactive"; + LockCloseButtonBehaviourActive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.lock_to_make_same_changes_to_normal_button_and_closse_button"; + activeNormalButtonsSettingsPath = "${activeWindowSettingsPath}.normal_buttons"; + ButtonStateCheckedActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalButtonsSettingsPath}.state_to_use_for_checked_buttons"; + activeNormalIconsSettingsPath = "${activeNormalButtonsSettingsPath}.icons"; + ShowIconNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_normally"; + ShowIconOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_on_hover"; + ShowIconOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.show_on_press"; + VaryColorIconActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalIconsSettingsPath}.vary_color_on_state"; + activeNormalBackgroundsSettingsPath = "${activeNormalButtonsSettingsPath}.backgrounds"; + ShowBackgroundNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_normally"; + ShowBackgroundOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_on_hover"; + ShowBackgroundOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.show_on_press"; + VaryColorBackgroundActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalBackgroundsSettingsPath}.vary_color_on_state"; + activeNormalOutlinesSettingsPath = "${activeNormalButtonsSettingsPath}.outlines"; + ShowOutlineNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_normally"; + ShowOutlineOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_on_hover"; + ShowOutlineOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.show_on_press"; + VaryColorOutlineActive = defaultIfUndefined KlassySettings defaultsParams "${activeNormalOutlinesSettingsPath}.vary_color_on_state"; + + activeCloseButtonSettingsPath = "${activeWindowSettingsPath}.close_button"; + activeCloseIconsSettingsPath = "${activeCloseButtonSettingsPath}.icons"; + ShowCloseIconNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_normally"; + ShowCloseIconOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_on_hover"; + ShowCloseIconOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.show_on_press"; + VaryColorCloseIconActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseIconsSettingsPath}.vary_color_on_state"; + activeCloseBackgroundsSettingsPath = "${activeCloseButtonSettingsPath}.backgrounds"; + ShowCloseBackgroundNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_normally"; + ShowCloseBackgroundOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_on_hover"; + ShowCloseBackgroundOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.show_on_press"; + VaryColorCloseBackgroundActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseBackgroundsSettingsPath}.vary_color_on_state"; + activeCloseOutlinesSettingsPath = "${activeCloseButtonSettingsPath}.outlines"; + ShowCloseOutlineNormallyActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_normally"; + ShowCloseOutlineOnHoverActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_on_hover"; + ShowCloseOutlineOnPressActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.show_on_press"; + VaryColorCloseOutlineActive = defaultIfUndefined KlassySettings defaultsParams "${activeCloseOutlinesSettingsPath}.vary_color_on_state"; + + inactiveWindowSettingsPath = "${buttonBehaviourSettingsPath}.inactive_window"; + LockCloseButtonBehaviourInactive = + if LockButtonBehaviourActiveInactive + then LockCloseButtonBehaviourActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveWindowSettingsPath}.lock_to_make_same_changes_to_normal_button_and_closse_button"; + inactiveNormalButtonsSettingsPath = "${inactiveWindowSettingsPath}.normal_buttons"; + ButtonStateCheckedInactive = + if LockButtonBehaviourActiveInactive + then ButtonStateCheckedActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalButtonsSettingsPath}.state_to_use_for_checked_buttons"; + inactiveNormalIconsSettingsPath = "${inactiveNormalButtonsSettingsPath}.icons"; + ShowIconNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowIconNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_normally"; + ShowIconOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowIconOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_on_hover"; + ShowIconOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowIconOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.show_on_press"; + VaryColorIconInactive = + if LockButtonBehaviourActiveInactive + then VaryColorIconActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalIconsSettingsPath}.vary_color_on_state"; + inactiveNormalBackgroundsSettingsPath = "${inactiveNormalButtonsSettingsPath}.backgrounds"; + ShowBackgroundNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_normally"; + ShowBackgroundOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_on_hover"; + ShowBackgroundOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowBackgroundOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.show_on_press"; + VaryColorBackgroundInactive = + if LockButtonBehaviourActiveInactive + then VaryColorBackgroundActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalBackgroundsSettingsPath}.vary_color_on_state"; + inactiveNormalOutlinesSettingsPath = "${inactiveNormalButtonsSettingsPath}.outlines"; + ShowOutlineNormallyInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_normally"; + ShowOutlineOnHoverInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_on_hover"; + ShowOutlineOnPressInactive = + if LockButtonBehaviourActiveInactive + then ShowOutlineOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.show_on_press"; + VaryColorOutlineInactive = + if LockButtonBehaviourActiveInactive + then VaryColorOutlineActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveNormalOutlinesSettingsPath}.vary_color_on_state"; + + inactiveCloseButtonSettingsPath = "${activeWindowSettingsPath}.close_button"; + inactiveCloseIconsSettingsPath = "${inactiveCloseButtonSettingsPath}.icons"; + ShowCloseIconNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowIconNormallyInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_normally"; + ShowCloseIconOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowIconOnHoverInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_on_hover"; + ShowCloseIconOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowIconOnPressInactive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.show_on_press"; + VaryColorCloseIconInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseIconActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseIconsSettingsPath}.vary_color_on_state"; + inactiveCloseBackgroundsSettingsPath = "${inactiveCloseButtonSettingsPath}.backgrounds"; + ShowCloseBackgroundNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_normally"; + ShowCloseBackgroundOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_on_hover"; + ShowCloseBackgroundOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseBackgroundOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.show_on_press"; + VaryColorCloseBackgroundInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseBackgroundActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseBackgroundsSettingsPath}.vary_color_on_state"; + inactiveCloseOutlinesSettingsPath = "${inactiveCloseButtonSettingsPath}.outlines"; + ShowCloseOutlineNormallyInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineNormallyActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_normally"; + ShowCloseOutlineOnHoverInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineOnHoverActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_on_hover"; + ShowCloseOutlineOnPressInactive = + if LockCloseButtonBehaviourInactive + then ShowCloseOutlineOnPressActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.show_on_press"; + VaryColorCloseOutlineInactive = + if LockCloseButtonBehaviourInactive + then VaryColorCloseOutlineActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCloseOutlinesSettingsPath}.vary_color_on_state"; + in '' + UnisonHovering=${boolToString UnisonHovering} + LockButtonBehaviourActiveInactive=${boolToString LockButtonBehaviourActiveInactive} + ButtonStateCheckedActive=${toString ButtonStateCheckedActive} + ShowIconNormallyActive=${boolToString ShowIconNormallyActive} + ShowIconOnHoverActive=${boolToString ShowIconOnHoverActive} + ShowIconOnPressActive=${boolToString ShowIconOnPressActive} + VaryColorIconActive=${VaryColorIconActive} + ShowBackgroundNormallyActive=${boolToString ShowBackgroundNormallyActive} + ShowBackgroundOnHoverActive=${boolToString ShowBackgroundOnHoverActive} + ShowBackgroundOnPressActive=${boolToString ShowBackgroundOnPressActive} + VaryColorBackgroundActive=${VaryColorBackgroundActive} + ShowOutlineNormallyActive=${boolToString ShowOutlineNormallyActive} + ShowOutlineOnHoverActive=${boolToString ShowOutlineOnHoverActive} + ShowOutlineOnPressActive=${boolToString ShowOutlineOnPressActive} + VaryColorOutlineActive=${VaryColorOutlineActive} + LockCloseButtonBehaviourActive=${boolToString LockCloseButtonBehaviourActive} + ShowCloseIconNormallyActive=${boolToString ShowCloseIconNormallyActive} + ShowCloseIconOnHoverActive=${boolToString ShowCloseIconOnHoverActive} + ShowCloseIconOnPressActive=${boolToString ShowCloseIconOnPressActive} + VaryColorCloseIconActive=${VaryColorCloseIconActive} + ShowCloseBackgroundNormallyActive=${boolToString ShowCloseBackgroundNormallyActive} + ShowCloseBackgroundOnHoverActive=${boolToString ShowCloseBackgroundOnHoverActive} + ShowCloseBackgroundOnPressActive=${boolToString ShowCloseBackgroundOnPressActive} + VaryColorCloseBackgroundActive=${VaryColorCloseBackgroundActive} + ShowCloseOutlineNormallyActive=${boolToString ShowCloseOutlineNormallyActive} + ShowCloseOutlineOnHoverActive=${boolToString ShowCloseOutlineOnHoverActive} + ShowCloseOutlineOnPressActive=${boolToString ShowCloseOutlineOnPressActive} + VaryColorCloseOutlineActive=${VaryColorCloseOutlineActive} + ButtonStateCheckedInactive=${boolToString ButtonStateCheckedInactive} + ShowIconNormallyInactive=${boolToString ShowIconNormallyInactive} + ShowIconOnHoverInactive=${boolToString ShowIconOnHoverInactive} + ShowIconOnPressInactive=${boolToString ShowIconOnPressInactive} + VaryColorIconInactive=${VaryColorIconInactive} + ShowBackgroundNormallyInactive=${boolToString ShowBackgroundNormallyInactive} + ShowBackgroundOnHoverInactive=${boolToString ShowBackgroundOnHoverInactive} + ShowBackgroundOnPressInactive=${boolToString ShowBackgroundOnPressInactive} + VaryColorBackgroundInactive=${VaryColorBackgroundInactive} + ShowOutlineNormallyInactive=${boolToString ShowOutlineNormallyInactive} + ShowOutlineOnHoverInactive=${boolToString ShowOutlineOnHoverInactive} + ShowOutlineOnPressInactive=${boolToString ShowOutlineOnPressInactive} + VaryColorOutlineInactive=${VaryColorOutlineInactive} + LockCloseButtonBehaviourInactive=${boolToString LockCloseButtonBehaviourInactive} + ShowCloseIconNormallyInactive=${boolToString ShowCloseIconNormallyInactive} + ShowCloseIconOnHoverInactive=${boolToString ShowCloseIconOnHoverInactive} + ShowCloseIconOnPressInactive=${boolToString ShowCloseIconOnPressInactive} + VaryColorCloseIconInactive=${VaryColorCloseIconInactive} + ShowCloseBackgroundNormallyInactive=${boolToString ShowCloseBackgroundNormallyInactive} + ShowCloseBackgroundOnHoverInactive=${boolToString ShowCloseBackgroundOnHoverInactive} + ShowCloseBackgroundOnPressInactive=${boolToString ShowCloseBackgroundOnPressInactive} + VaryColorCloseBackgroundInactive=${VaryColorCloseBackgroundInactive} + ShowCloseOutlineNormallyInactive=${boolToString ShowCloseOutlineNormallyInactive} + ShowCloseOutlineOnHoverInactive=${boolToString ShowCloseOutlineOnHoverInactive} + ShowCloseOutlineOnPressInactive=${boolToString ShowCloseOutlineOnPressInactive} + VaryColorCloseOutlineInactive=${VaryColorCloseOutlineInactive} + ''; + ButtonSizing = let + buttonSizingAndSpacingSettingsPath = "${buttonsSettingsPath}.button_size_n_spacing"; + buttonSizingSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_sizing"; + LockFullHeightButtonWidthMargins = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.same_left_n_right_hand_buttons_width_margins"; + FullHeightButtonWidthMarginLeft = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.left_hand_buttons_width_margins"; + FullHeightButtonWidthMarginRight = + if LockFullHeightButtonWidthMargins + then FullHeightButtonWidthMarginLeft + else defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.right_hand_buttons_width_margins"; + CloseFullHeightButtonWidthMarginRelative = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.close_button_width_margins"; + SpacerButtonWidthRelative = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.spacer_button_width"; + ScaleTouchMode = defaultIfUndefined KlassySettings defaultsParams "${buttonSizingSettingsPath}.scale_touch_mode_buttons"; + buttonSpacingSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_spacing"; + LockFullHeightButtonSpacingLeftRight = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.same_spacing_between_left_hand_buttons_n_right_hand_buttons"; + FullHeightButtonSpacingLeft = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.spacing_between_left_hand_buttons"; + FullHeightButtonSpacingRight = + if LockFullHeightButtonSpacingLeftRight + then FullHeightButtonSpacingLeft + else defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.spacing_between_right_hand_buttons"; + IntegratedRoundedRectangleBottomPadding = defaultIfUndefined KlassySettings defaultsParams "${buttonSpacingSettingsPath}.bottom_padding"; + buttonCornerRadiusSettingsPath = "${buttonSizingAndSpacingSettingsPath}.button_corner_radius"; + ButtonCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${buttonCornerRadiusSettingsPath}.choice"; + ButtonCustomCornerRadius = + if ButtonCornerRadius == getDefault defaultsParams "${buttonCornerRadiusSettingsPath}.choice" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${buttonCornerRadiusSettingsPath}.value"; + in '' + ButtonCornerRadius=${ButtonCornerRadius} + ButtonCustomCornerRadius=${toString ButtonCustomCornerRadius} + CloseFullHeightButtonWidthMarginRelative=${toString CloseFullHeightButtonWidthMarginRelative} + FullHeightButtonSpacingLeft=${toString FullHeightButtonSpacingLeft} + FullHeightButtonSpacingRight=${toString FullHeightButtonSpacingRight} + FullHeightButtonWidthMarginLeft=${toString FullHeightButtonWidthMarginLeft} + FullHeightButtonWidthMarginRight=${toString FullHeightButtonWidthMarginRight} + IntegratedRoundedRectangleBottomPadding=${toString IntegratedRoundedRectangleBottomPadding} + LockFullHeightButtonSpacingLeftRight=${boolToString LockFullHeightButtonSpacingLeftRight} + LockFullHeightButtonWidthMargins=${boolToString LockFullHeightButtonWidthMargins} + ScaleTouchMode=${toString ScaleTouchMode} + SpacerButtonWidthRelative=${toString SpacerButtonWidthRelative} + ''; + TitleBarSpacing = let + titleBarSpacingSettingsPath = "${titlebarSettingsPath}.spacing"; + TitleAlignment = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_alignment"; + TitleSidePadding = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_side_padding"; + PercentMaximizedTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_top_n_bottom_margins_for_maximized_windows"; + LockTitleBarLeftRightMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.same_titlebar_left_n_right_margins"; + TitleBarLeftMargin = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.titlebar_left_margins"; + TitleBarRightMargin = + if LockTitleBarLeftRightMargins + then TitleBarLeftMargin + else defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.titlebar_right_margins"; + LockTitleBarTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.same_titlebar_top_n_bottom_margins"; + TitleBarTopMargin = defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_bar_top_margins"; + TitleBarBottomMargin = + if LockTitleBarTopBottomMargins + then TitleBarTopMargin + else defaultIfUndefined KlassySettings defaultsParams "${titleBarSpacingSettingsPath}.title_bar_bottom_margins"; + in '' + PercentMaximizedTopBottomMargins=${toString PercentMaximizedTopBottomMargins} + TitleAlignment=${TitleAlignment} + TitleBarBottomMargin=${toString TitleBarBottomMargin} + TitleBarLeftMargin=${toString TitleBarLeftMargin} + TitleBarRightMargin=${toString TitleBarRightMargin} + TitleBarTopMargin=${toString TitleBarTopMargin} + TitleSidePadding=${toString TitleSidePadding} + LockTitleBarLeftRightMargins=${boolToString LockTitleBarLeftRightMargins} + LockTitleBarTopBottomMargins=${boolToString LockTitleBarTopBottomMargins} + ''; + TitleBarOpacity = let + titleBarOpacitySettingsPath = "${titlebarSettingsPath}.opacity"; + ActiveTitleBarOpacity = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.active_window"; + InactiveTitleBarOpacity = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.inactive_window"; + OpaqueMaximizedTitleBars = defaultIfUndefined KlassySettings defaultsParams "${titleBarOpacitySettingsPath}.always_make_titlebar_opaque_when_maximized"; + in '' + ActiveTitleBarOpacity=${toString ActiveTitleBarOpacity} + InactiveTitleBarOpacity=${toString InactiveTitleBarOpacity} + OpaqueMaximizedTitleBars=${boolToString OpaqueMaximizedTitleBars} + ''; + WindowOutlineStyle = let + thinWindowOutlineStyleSettingsPath = "${windowSettingsPath}.thin_window_outline"; + windowOutlineStyleSettingsPath = "${thinWindowOutlineStyleSettingsPath}.window_outline_style"; + WindowOutlineThickness = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.window_outline_thickness"; + WindowOutlineSnapToWholePixel = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.snap_to_whole_pixel"; + WindowOutlineOverlap = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.overlap"; + LockWindowOutlineStyleActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${windowOutlineStyleSettingsPath}.same_active_n_inactive_window_outline"; + activeWindowSettingsPath = "${windowOutlineStyleSettingsPath}.active_window"; + WindowOutlineStyleActive = defaultIfUndefined KlassySettings defaultsParams "${activeWindowSettingsPath}.window_outline_style"; + activeOpacitySettingsPath = "${activeWindowSettingsPath}.opacity"; + activeOpacityParamsName = + if WindowOutlineStyleActive == "WindowOutlineNone" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${activeOpacitySettingsPath}.${WindowOutlineStyleActive}.name"; + activeOpacityParametersValue = rec { + value = + if (definedOrNull KlassySettings "${activeWindowSettingsPath}.opacity") == null + then getDefault defaultsParams "${activeOpacitySettingsPath}.${WindowOutlineStyleActive}.value" + else definedOrNull KlassySettings "${activeWindowSettingsPath}.opacity"; + isNone = WindowOutlineStyleActive == "WindowOutlineNone"; + name = + if isNone + then "" + else activeOpacityParamsName; + }; + ActiveOpacityParametersString = + if activeOpacityParametersValue.isNone + then "" + else '' + ${activeOpacityParametersValue.name}=${toString activeOpacityParametersValue.value} + ''; + activeCustomColorSettingsPath = "${activeWindowSettingsPath}.color"; + LockWindowOutlineCustomColorActiveInactive = defaultIfUndefined KlassySettings defaultsParams "${activeCustomColorSettingsPath}.lock_custom_colour_active_inactive"; + WindowOutlineCustomColorActive = defaultIfUndefined KlassySettings defaultsParams "${activeCustomColorSettingsPath}.choice"; + inactiveWindowSettingsPath = "${windowOutlineStyleSettingsPath}.inactive_window"; + WindowOutlineStyleInactive = + if LockWindowOutlineStyleActiveInactive + then WindowOutlineStyleActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveWindowSettingsPath}.window_outline_style"; + inactiveOpacitySettingsPath = "${inactiveWindowSettingsPath}.opacity"; + inactiveOpacityParamsName = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParamsName + else if WindowOutlineStyleInactive == "WindowOutlineNone" || (WindowOutlineStyleInactive == "WindowOutlineShadowColor" && WindowOutlineStyleInactive == WindowOutlineStyleActive) + then "" + else defaultIfUndefined KlassySettings defaultsParams "${inactiveOpacitySettingsPath}.${WindowOutlineStyleInactive}.name"; + inactiveOpacityParametersValue = rec { + value = + if (WindowOutlineStyleInactive == WindowOutlineStyleActive && WindowOutlineStyleActive == "WindowOutlineShadowColor") + then activeOpacityParametersValue.value + else if (definedOrNull KlassySettings "${inactiveWindowSettingsPath}.opacity") == null + then getDefault defaultsParams "${inactiveOpacitySettingsPath}.${WindowOutlineStyleInactive}.value" + else definedOrNull KlassySettings "${inactiveWindowSettingsPath}.opacity"; + isNone = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParametersValue.isNone + else WindowOutlineStyleInactive == "WindowOutlineNone"; + name = + if LockWindowOutlineStyleActiveInactive + then activeOpacityParametersValue.name + else if isNone + then "" + else inactiveOpacityParamsName; + }; + InactiveOpacityParametersValue = + if inactiveOpacityParametersValue.isNone || (WindowOutlineStyleInactive == "WindowOutlineShadowColor" && WindowOutlineStyleInactive == WindowOutlineStyleActive) + then "" + else '' + ${inactiveOpacityParametersValue.name}=${toString inactiveOpacityParametersValue.value} + ''; + inactiveCustomColorSettingsPath = "${inactiveWindowSettingsPath}.color"; + WindowOutlineCustomColorInactive = + if LockWindowOutlineCustomColorActiveInactive && (WindowOutlineStyleActive == "WindowOutlineCustomColor" || WindowOutlineStyleActive == "WindowOutlineCustomWithContrast") + then WindowOutlineCustomColorActive + else defaultIfUndefined KlassySettings defaultsParams "${inactiveCustomColorSettingsPath}.choice"; + in '' + LockWindowOutlineStyleActiveInactive=${boolToString LockWindowOutlineStyleActiveInactive} + WindowOutlineStyleActive=${WindowOutlineStyleActive} + ${ActiveOpacityParametersString}WindowOutlineStyleInactive=${WindowOutlineStyleInactive} + ${InactiveOpacityParametersValue}${ + if WindowOutlineStyleActive == "WindowOutlineCustomColor" || WindowOutlineStyleActive == "WindowOutlineCustomWithContrast" + then '' + WindowOutlineCustomColorActive=${toString WindowOutlineCustomColorActive} + '' + else "" + }${ + if WindowOutlineStyleInactive == "WindowOutlineCustomColor" || WindowOutlineStyleInactive == "WindowOutlineCustomWithContrast" + then '' + WindowOutlineCustomColorInactive=${toString WindowOutlineCustomColorInactive} + '' + else "" + }WindowOutlineThickness=${toString WindowOutlineThickness} + WindowOutlineSnapToWholePixel=${boolToString WindowOutlineSnapToWholePixel} + WindowOutlineOverlap=${boolToString WindowOutlineOverlap} + LockWindowOutlineCustomColorActiveInactive=${boolToString LockWindowOutlineCustomColorActiveInactive} + ''; + ShadowStyle = let + shadowSettingsPath = "${windowSettingsPath}.shadow"; + ShadowColor = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.colour"; + ShadowSize = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.size"; + ShadowStrength = defaultIfUndefined KlassySettings defaultsParams "${shadowSettingsPath}.strength"; + in '' + ShadowColor=${toString ShadowColor} + ShadowSize=${toString ShadowSize} + ShadowStrength=${toString ShadowStrength} + ''; + Global = let + Version = "6.5.3"; #TODO : fix + LookAndFeelSet = "org.kde.klassykisweetdarkbottompanel.desktop"; #TODO : find the parameter that determines this. + in '' + LookAndFeelSet=${LookAndFeelSet} + RefreshedConfig=${Version} + ''; + Style = let + generalSettingsPath = "${styleSettingsPath}.general"; + framesSettingsPath = "${styleSettingsPath}.frames"; + scrollbarsSettingsPath = "${styleSettingsPath}.scrollbars"; + transparencySettingsPath = "${styleSettingsPath}.transparency"; + DockWidgetDrawFrame = defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_frame_around_dockable_panels"; + MenuItemDrawStrongFocus = ! defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_a_thin_line_to_indicate_focus_in_menubars"; + SidePanelDrawFrame = defaultIfUndefined KlassySettings defaultsParams "${framesSettingsPath}.draw_frame_around_side_panels"; + SplitterProxyEnabled = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.enable_extended_resize_handles"; + ButtonGradient = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.show_button_gradient_effects"; + MenuOpacity = defaultIfUndefined KlassySettings defaultsParams "${transparencySettingsPath}.value"; + WindowDragMode = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.windows_drag_mode"; + MnemonicsMode = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.keyboard_accelerator_visibility"; + FrameCornerRadius = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.corner_radius.choice"; + FrameCustomCornerRadius = + if FrameCornerRadius == getDefault defaultsParams "${generalSettingsPath}.corner_radius.choice" + then "" + else defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.corner_radius.value"; + TabBarDrawCenteredTabs = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.center_tabbar_tabs"; + SliderDrawTickMarks = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_sliders_ticks_marks"; + ToolBarDrawItemSeparator = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_toolbar_item_separators"; + ViewDrawFocusIndicator = defaultIfUndefined KlassySettings defaultsParams "${generalSettingsPath}.draw_focus_indicator_in_lists"; + ScrollBarSeparator = defaultIfUndefined KlassySettings defaultsParams "${scrollbarsSettingsPath}.draw_scroll_bar_separator"; + ScrollBarTopBottomMargins = defaultIfUndefined KlassySettings defaultsParams "${scrollbarsSettingsPath}.scrollbar_top_n_bottom_margins"; + arrowButtonsSettingsPath = "${scrollbarsSettingsPath}.arrow_buttons"; + ScrollBarAutoHideArrows = defaultIfUndefined KlassySettings defaultsParams "${arrowButtonsSettingsPath}.auto_hide_arrows"; + grooveSettingsPath = "${scrollbarsSettingsPath}.groove_or_slider"; + ScrollBarSliderThicknessMouseOver = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_thickness_when_mouse_over"; + ScrollBarSliderThicknessMouseNotOverPercent = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_thickness_when_mouse_not_over"; + ScrollBarSliderPadding = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_side_padding"; + ScrollBarMinSliderHeight = defaultIfUndefined KlassySettings defaultsParams "${grooveSettingsPath}.slider_minimum_height"; + topArrowButtonSettingsPath = "${arrowButtonsSettingsPath}.top_arrow_button"; + ScrollBarSubLineButtons = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.type"; + ScrollBarTopOneButtonSpacing = + if ScrollBarSubLineButtons == 1 + then let + defined = definedOrNull KlassySettings "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarSubLineButtons} + else ""; + ScrollBarTopTwoButtonSpacing = + if ScrollBarSubLineButtons == 2 + then let + defined = definedOrNull KlassySettings "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${topArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarSubLineButtons} + else ""; + bottomArrowButtonSettingsPath = "${arrowButtonsSettingsPath}.bottom_arrow_button"; + ScrollBarAddLineButtons = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.type"; + ScrollBarBottomOneButtonSpacing = + if ScrollBarAddLineButtons == 1 + then + if ScrollBarAddLineButtons == ScrollBarSubLineButtons + then ScrollBarTopOneButtonSpacing + else let + defined = definedOrNull KlassySettings "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarAddLineButtons} + else ""; + ScrollBarBottomTwoButtonSpacing = + if ScrollBarAddLineButtons == 2 + then + if ScrollBarAddLineButtons == ScrollBarSubLineButtons + then ScrollBarTopTwoButtonSpacing + else let + defined = definedOrNull KlassySettings "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + defaultOrDefined = defaultIfUndefined KlassySettings defaultsParams "${bottomArrowButtonSettingsPath}.space_between_arrow_button_and_groove"; + in + if defined != null + then defaultOrDefined + else defaultOrDefined.${toString ScrollBarAddLineButtons} + else ""; + in '' + DockWidgetDrawFrame=${boolToString DockWidgetDrawFrame} + MenuItemDrawStrongFocus=${boolToString MenuItemDrawStrongFocus} + SidePanelDrawFrame=${boolToString SidePanelDrawFrame} + SplitterProxyEnabled=${boolToString SplitterProxyEnabled} + ButtonGradient=${boolToString ButtonGradient} + FrameCornerRadius=${FrameCornerRadius} + FrameCustomCornerRadius=${FrameCustomCornerRadius} + MnemonicsMode=${MnemonicsMode} + ScrollBarAutoHideArrows=${boolToString ScrollBarAutoHideArrows} + ScrollBarAddLineButtons=${toString ScrollBarAddLineButtons} + ScrollBarBottomTwoButtonSpacing=${toString ScrollBarBottomTwoButtonSpacing} + ScrollBarMinSliderHeight=${toString ScrollBarMinSliderHeight} + ScrollBarSeparator=${boolToString ScrollBarSeparator} + ScrollBarSliderPadding=${toString ScrollBarSliderPadding} + ScrollBarSliderThicknessMouseNotOverPercent=${toString ScrollBarSliderThicknessMouseNotOverPercent} + ScrollBarSliderThicknessMouseOver=${toString ScrollBarSliderThicknessMouseOver} + ScrollBarSubLineButtons=${toString ScrollBarSubLineButtons} + ScrollBarTopBottomMargins=${toString ScrollBarTopBottomMargins} + ScrollBarTopTwoButtonSpacing=${toString ScrollBarTopTwoButtonSpacing} + SliderDrawTickMarks=${boolToString SliderDrawTickMarks} + TabBarDrawCenteredTabs=${boolToString TabBarDrawCenteredTabs} + ToolBarDrawItemSeparator=${boolToString ToolBarDrawItemSeparator} + ViewDrawFocusIndicator=${boolToString ViewDrawFocusIndicator} + WindowDragMode=${WindowDragMode} + MenuOpacity=${toString MenuOpacity} + ScrollBarBottomOneButtonSpacing=${toString ScrollBarBottomOneButtonSpacing} + ScrollBarTopOneButtonSpacing=${toString ScrollBarTopOneButtonSpacing} + ''; + SystemIconGeneration = let + systemIconGenerationSettingsPath = "${buttonsSettingsPath}.system_icon_generation"; + KlassyDarkIconThemeInherits = defaultIfUndefined KlassySettings defaultsParams "${systemIconGenerationSettingsPath}.klassy_dark_icon_theme_inherits_from"; + KlassyIconThemeInherits = defaultIfUndefined KlassySettings defaultsParams "${systemIconGenerationSettingsPath}.klassy_icon_theme_inherits_from"; + in '' + KlassyDarkIconThemeInherits=${KlassyDarkIconThemeInherits} + KlassyIconThemeInherits=${KlassyIconThemeInherits} + ''; + WindowDefaultExceptions = let + windowDefaultExceptionsSettingsPath = "${windowSpecificOverridesSettingsPath}.defaults_overrides"; + defaultOverridesDefaults = getDefault defaultsParams windowDefaultExceptionsSettingsPath; + defaultExceptionList = + if (definedOrNull KlassySettings windowDefaultExceptionsSettingsPath) == null + then [] + else + builtins.filter (exception: builtins.isAttrs exception) ( + if builtins.isAttrs (defaultIfUndefined KlassySettings defaultsParams windowDefaultExceptionsSettingsPath) + then [] + else defaultIfUndefined KlassySettings defaultsParams windowDefaultExceptionsSettingsPath + ); + in + lib.strings.concatLines + (lib.foldl' (acc: exception: + acc + // { + result = acc.result ++ [(parseDefaultOverrides acc.counter exception defaultOverridesDefaults)]; + counter = acc.counter + 1; + }) { + result = []; + counter = 0; + } + defaultExceptionList).result; + WindowUserSpecificOverrides = let + userDefaultExceptionsSettingsPath = "${windowSpecificOverridesSettingsPath}.user_specific_overrides"; + userOverridesDefaults = getDefault defaultsParams userDefaultExceptionsSettingsPath; + userExceptionList = + if (definedOrNull KlassySettings userDefaultExceptionsSettingsPath) == null + then [] + else + builtins.filter (exception: builtins.isAttrs exception) ( + if builtins.isAttrs (defaultIfUndefined KlassySettings defaultsParams userDefaultExceptionsSettingsPath) + then [] + else defaultIfUndefined KlassySettings defaultsParams userDefaultExceptionsSettingsPath + ); + in + lib.strings.concatLines + (lib.foldl' (acc: exception: + acc + // { + result = acc.result ++ [(parseUserSpecificOverride acc.counter exception userOverridesDefaults)]; + counter = acc.counter + 1; + }) { + result = []; + counter = 0; + } + userExceptionList).result; + in '' + ${WindowDefaultExceptions}[Windeco] + ${Windeco} + [ButtonColors] + ${ButtonColors} + [ButtonBehaviour] + ${ButtonBehaviour} + [ButtonSizing] + ${ButtonSizing} + [TitleBarSpacing] + ${TitleBarSpacing} + [TitleBarOpacity] + ${TitleBarOpacity} + [WindowOutlineStyle] + ${WindowOutlineStyle} + [ShadowStyle] + ${ShadowStyle} + [SystemIconGeneration] + ${SystemIconGeneration} + [Global] + ${Global} + [Style] + ${Style} + ${WindowUserSpecificOverrides}''; + + parsePreset = preset: let + name = + if lib.isPath preset + then lib.lists.last (lib.lists.take 1 (lib.splitString "." (builtins.baseNameOf preset))) + else preset.name; + content = + if lib.isPath preset + then builtins.readFile preset + else preset.content; + contentLines = + if lib.isString content + then lib.splitString "\n" content + else let attrNames = lib.attrNames content; in map (attrName: "${attrName}=${content.${attrName}}") attrNames; + cleanedContentLines = + if lib.isPath preset + then lib.lists.drop 4 contentLines + else contentLines; + in '' + [Windeco Preset ${name}] + ${lib.trim (lib.strings.concatLines cleanedContentLines)} + ''; + + parsePresets = presets: defaultsPresets: let + presetsContent = map parsePreset presets; + defaultsPresetsContent = builtins.readFile defaultsPresets; + in '' + ${defaultsPresetsContent} + ${lib.strings.concatLines presetsContent} + ''; + params.klassy = { + style = { + general = { + enable_extended_resize_handles = true; + }; + frames = { + draw_frame_around_dockable_panels = true; + draw_frame_around_side_panels = true; + draw_a_thin_line_to_indicate_focus_in_menubars = true; #Attention inversion + }; + }; + window_decoration = { + buttons = { + icons = "StyleMetro"; + button_colours = { + lock_active_inactive = true; + active_window = { + icon_colours = rec { + choice = "AccentTrafficLights"; + close_button_icon_colour = choice; + }; + background_n_outline_colours = { + choice = "AccentTrafficLights"; + }; + }; + inactive_window = { + use_same_hover_n_press_colours_as_active_window = true; + }; + }; + }; + titlebar = { + on_active_window = { + make_title_bold = true; + draw_titlebar_background_gradient = false; + draw_separator_under_titlebar = false; + }; + match_titlebar_colour_to_application = true; + }; + window = { + corners = { + round_corners_when_no_borders = false; + corner_radius = 0.0; + }; + thin_window_outline = { + colourize_with_higlighted_buttons_colour = false; + }; + }; + window_specific_overrides = { + defaults_overrides = [ + { + enabled = true; + } + ]; + user_specific_overrides = [ + { + enabled = true; + window_identification = { + window_property = 0; + regex = "com.mitchellh.ghostty"; + }; + windeco_options = { + preset = { + enabled = true; + value = "CleanTranslucid"; + }; + hide_window_titlebar = 0; + match_titlebar_colour_to_application = true; + opaque_titlebar = false; + border_size = { + enabled = true; + value = 0; + }; + }; + application_style_options = { + application_name_regex = ""; + opaque_header = false; + }; + } + ]; + }; + }; + }; + presets = [ + ./klassy/presets/Clean.klpw + ./klassy/presets/CleanTranslucid.klpw + ]; + defaultsPreset = ./klassy/defaults/presets.klpw; + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "klassy"; + main-repo = "others"; + branch = "customPkgs"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = let + configFile = pkgs-list.nix.latest.writeText "klassyrc" (parseParams params); + presetFile = pkgs-list.nix.latest.writeText "windecopresetsrc" (parsePresets presets defaultsPreset); + in { + home.packages = with packages; [ + klassy + ]; + + home.activation = { + ${name} = lib.mkBefore '' + mkdir -p ${config.xdg.configHome}/klassy + cp ${configFile} ${config.xdg.configHome}/klassy/klassyrc + cp ${presetFile} ${config.xdg.configHome}/klassy/windecopresetsrc + chmod 600 ${config.xdg.configHome}/klassy/klassyrc + chmod 600 ${config.xdg.configHome}/klassy/windecopresetsrc + ''; + }; + }; +}) diff --git a/progs/desktop/klassy/.dev/allFields.txt b/progs/desktop/klassy/.dev/allFields.txt new file mode 100644 index 0000000..0a4d511 --- /dev/null +++ b/progs/desktop/klassy/.dev/allFields.txt @@ -0,0 +1,161 @@ +[Windeco] +BoldButtonIcons= +BoldTitle= +ButtonIconStyle= +ButtonShape= +ColorizeWindowOutlineWithButton= +IconSize= +RoundAllCornersWhenNoBorders= +WindowCornerRadius= +AnimationsSpeedRelativeSystem= +SystemIconSize= +DrawBackgroundGradient= +DrawTitleBarSeparator= +MatchTitleBarToApplicationColor= + +[ButtonColors] +AdjustBackgroundColorOnPoorContrastActive= +AdjustBackgroundColorOnPoorContrastInactive= +ButtonBackgroundColorsActive= +ButtonBackgroundColorsInactive= +ButtonBackgroundOpacityActive= +ButtonBackgroundOpacityInactive= +ButtonColorsInactiveSameHoverPress= +LockButtonColorsActiveInactive= +NegativeCloseBackgroundHoverPressActive= +NegativeCloseBackgroundHoverPressInactive= +ButtonIconColorsActive= +ButtonIconColorsInactive= +CloseButtonIconColorActive= +CloseButtonIconColorInactive= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsInactiveClose= +OnPoorIconContrastActive= +OnPoorIconContrastInactive= +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesInactive= +PoorBackgroundContrastThresholdActive= +PoorBackgroundContrastThresholdInactive= +PoorIconContrastThresholdActive= +PoorIconContrastThresholdInactive= +ButtonOverrideColorsLockStatesActive= +ButtonIconOpacityInactive= + +[ButtonBehaviour] +ShowBackgroundNormallyActive= +ShowBackgroundNormallyInactive= +ShowCloseBackgroundNormallyActive= +ShowCloseBackgroundNormallyInactive= +ShowCloseOutlineNormallyActive= +ShowCloseOutlineNormallyInactive= +ShowOutlineNormallyActive= +ShowOutlineNormallyInactive= +VaryColorBackgroundActive= +VaryColorBackgroundInactive= +VaryColorCloseBackgroundActive= +VaryColorCloseBackgroundInactive= +VaryColorCloseOutlineActive= +VaryColorCloseOutlineInactive= +VaryColorOutlineActive= +VaryColorOutlineInactive= +ButtonStateCheckedActive= +ButtonStateCheckedInactive= +LockCloseButtonBehaviourActive= +LockCloseButtonBehaviourInactive= +ShowCloseOutlineOnHoverActive= +ShowCloseOutlineOnHoverInactive= +ShowCloseOutlineOnPressActive= +ShowCloseOutlineOnPressInactive= +ShowOutlineOnHoverActive= +ShowOutlineOnHoverInactive= +ShowOutlineOnPressActive= +ShowOutlineOnPressInactive= +ShowCloseIconNormallyActive= +ShowCloseIconNormallyInactive= +ShowIconNormallyActive= +ShowIconNormallyInactive= +UnisonHovering= + +[ButtonSizing] +ButtonCornerRadius= +ButtonCustomCornerRadius= +ButtonSpacingLeft= +ButtonSpacingRight= +FullHeightIntegratedRoundedRectangleBottomPadding= +LockFullHeightButtonSpacingLeftRight= +ScaleBackgroundPercent= +LockButtonSpacingLeftRight= +FullHeightFullHeightButtonWidthMarginLeft= +IntegratedRoundedRectangleBottomPadding= +FullHeightFullHeightButtonWidthMarginRight= +FullHeightCloseFullHeightButtonWidthMarginRelative= +CloseFullHeightButtonWidthMarginRelative= +SpacerButtonWidthRelative= + +[TitleBarSpacing] +PercentMaximizedTopBottomMargins= +TitleAlignment= +TitleBarBottomMargin= +TitleBarLeftMargin= +TitleBarRightMargin= +TitleBarTopMargin= +TitleSidePadding= +LockTitleBarLeftRightMargins= +LockTitleBarTopBottomMargins= +TitleBarTopMargin= + +[TitleBarOpacity] +ActiveTitleBarOpacity= +InactiveTitleBarOpacity= +OpaqueMaximizedTitleBars= + +[WindowOutlineStyle] +LockWindowOutlineStyleActiveInactive= +WindowOutlineOverlap= +WindowOutlineStyleActive= +WindowOutlineStyleInactive= +WindowOutlineContrastOpacityActive= +WindowOutlineThickness= + +[Style] +ButtonGradient= +FrameCornerRadius= +FrameCustomCornerRadius= +MenuItemDrawStrongFocus= +MnemonicsMode= +ScrollBarAddLineButtons= +ScrollBarBottomTwoButtonSpacing= +ScrollBarMinSliderHeight= +ScrollBarSeparator= +ScrollBarSliderPadding= +ScrollBarSliderThicknessMouseNotOverPercent= +ScrollBarSliderThicknessMouseOver= +ScrollBarSubLineButtons= +ScrollBarTopBottomMargins= +ScrollBarTopTwoButtonSpacing= +SliderDrawTickMarks= +SplitterProxyEnabled= +TabBarDrawCenteredTabs= +ToolBarDrawItemSeparator= +ViewDrawFocusIndicator= +WindowDragMode= +MenuOpacity= +ScrollBarBottomOneButtonSpacing= +ScrollBarTopOneButtonSpacing= \ No newline at end of file diff --git a/progs/desktop/klassy/.dev/klassyrc.bak b/progs/desktop/klassy/.dev/klassyrc.bak new file mode 100644 index 0000000..2659ef7 --- /dev/null +++ b/progs/desktop/klassy/.dev/klassyrc.bak @@ -0,0 +1,40 @@ +[ButtonColors] +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonColorsInactiveSameHoverPress=false +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +LockButtonColorsActiveInactive=false + +[Global] +LookAndFeelSet=org.kde.klassykisweetdarkbottompanel.desktop +RefreshedConfig=6.5.3 + +[Style] +DockWidgetDrawFrame=true +MenuItemDrawStrongFocus=false +SidePanelDrawFrame=true +SplitterProxyEnabled=true + +[Windeco] +ButtonIconStyle=StyleMetro +ColorizeWindowOutlineWithButton=false +DrawTitleBarSeparator=false +MatchTitleBarToApplicationColor=true +RoundAllCornersWhenNoBorders=false +WindowCornerRadius=0 + +[Windeco Exception 0] +BorderSize=0 +Enabled=true +ExceptionBorder=true +ExceptionMatchTitleBarToApplicationColor=true +ExceptionPreset=CleanTranslucid +ExceptionProgramNamePattern= +ExceptionWindowPropertyPattern=com.mitchellh.ghostty +ExceptionWindowPropertyType=0 +HideTitleBar=0 +OpaqueTitleBar=false +PreventApplyOpacityToHeader=false diff --git a/progs/desktop/klassy/defaults/params.json b/progs/desktop/klassy/defaults/params.json new file mode 100644 index 0000000..01b4241 --- /dev/null +++ b/progs/desktop/klassy/defaults/params.json @@ -0,0 +1,376 @@ +{ + "style": { + "general": { + "corner_radius": { + "choice": "SameAsWindowDecoration", + "value": 3.0 + }, + "center_tabbar_tabs": false, + "show_button_gradient_effects": false, + "draw_toolbar_item_separators": true, + "draw_focus_indicator_in_lists": true, + "draw_sliders_ticks_marks": true, + "enable_extended_resize_handles": false, + "keyboard_accelerator_visibility": "", + "windows_drag_mode": "" + }, + "frames": { + "draw_frame_around_dockable_panels": false, + "draw_frame_around_side_panels": false, + "draw_a_thin_line_to_indicate_focus_in_menubars": false + }, + "scrollbars": { + "draw_scroll_bar_separator": false, + "scrollbar_top_n_bottom_margins": 4, + "arrow_buttons": { + "auto_hide_arrows": true, + "top_arrow_button": { + "type": 1, + "space_between_arrow_button_and_groove": { + "1": -4, + "2": -1 + } + }, + "bottom_arrow_button": { + "type": 1, + "space_between_arrow_button_and_groove": { + "1": -4, + "2": -1 + } + } + }, + "groove_or_slider": { + "slider_thickness_when_mouse_over": 8, + "slider_thickness_when_mouse_not_over": 75, + "slider_side_padding": 5, + "slider_minimum_height": 36 + } + }, + "transparency": { + "value": 100 + } + }, + "window_decoration": { + "buttons": { + "icons": "StyleKite", + "shape": "ShapeIntegratedRoundedRectangle", + "icon_size": "IconLargeMedium", + "bold_icons": "BoldIconsActiveHiDpi", + "system_icon_generation": { + "klassy_icon_theme_inherits_from": "breeze", + "klassy_dark_icon_theme_inherits_from": "breeze-dark" + }, + "button_size_n_spacing": { + "button_sizing": { + "left_hand_buttons_width_margins": 6, + "same_left_n_right_hand_buttons_width_margins": false, + "right_hand_buttons_width_margins": 18, + "close_button_width_margins": 100, + "spacer_button_width": 50, + "scale_touch_mode_buttons": 150 + }, + "button_spacing": { + "spacing_between_left_hand_buttons": 2, + "same_spacing_between_left_hand_buttons_n_right_hand_buttons": false, + "spacing_between_right_hand_buttons": 4, + "bottom_padding": 1.5 + }, + "button_corner_radius": { + "choice": "SameAsWindow", + "value": 2.5 + } + }, + "button_colours": { + "active_window": { + "icon_colours": { + "choice": "TitleBarText", + "close_button_icon_colour": "WhiteWhenHoverPress", + "contrast": { + "when_poor_contrast_detected": "TitleBarBackground", + "threshold": 1.5 + }, + "opacity": 100 + }, + "background_n_outline_colours": { + "choice": "AccentNegativeClose", + "use_hover_colour_from_colour_scheme": false, + "contrast": { + "adjust_colour_when_poor_contrast_detected": true, + "threshold": 1.1 + }, + "opacity": 60 + }, + "override_idividual_colours": false + }, + "inactive_window": { + "icon_colours": { + "choice": "TitleBarText", + "close_button_icon_colour": "WhiteWhenHoverPress", + "contrast": { + "when_poor_contrast_detected": "TitleBarBackground", + "threshold": 1.5 + }, + "opacity": 100 + }, + "background_n_outline_colours": { + "choice": "AccentNegativeClose", + "use_hover_colour_from_colour_scheme": false, + "contrast": { + "adjust_colour_when_poor_contrast_detected": true, + "threshold": 1.1 + }, + "opacity": 60 + }, + "override_idividual_colours": false, + "lock_active": true, + "use_same_hover_n_press_colours_as_active_window": true + }, + "lock_active_inactive": true + }, + "button_behaviour": { + "unison_hovering": false, + "active_window": { + "normal_buttons": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "state_to_use_for_checked_buttons": "Press" + }, + "lock_to_make_same_changes_to_normal_button_and_closse_button": true, + "close_button": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + } + }, + "lock_active_inactive": true + }, + "inactive_window": { + "normal_buttons": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Opaque" + }, + "state_to_use_for_checked_buttons": "Press" + }, + "lock_to_make_same_changes_to_normal_button_and_closse_button": true, + "close_button": { + "icons": { + "show_normally": true, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "No" + }, + "backgrounds": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + }, + "outlines": { + "show_normally": false, + "show_on_hover": true, + "show_on_press": true, + "vary_color_on_state": "Transparent" + } + }, + "lock_active": true + } + } + }, + "titlebar": { + "spacing": { + "title_bar_top_margins": 3.6, + "same_titlebar_top_n_bottom_margins": true, + "title_bar_bottom_margins": 3.6, + "titlebar_left_margins": 0, + "same_titlebar_left_n_right_margins": true, + "titlebar_right_margins": 0, + "title_side_padding": 4, + "title_alignment": "AlignCenterFullWidth", + "title_top_n_bottom_margins_for_maximized_windows": 85 + }, + "opacity": { + "active_window": 100, + "inactive_window": 100, + "always_make_titlebar_opaque_when_maximized": true, + "blur_titlebar_that_have_transparency": true, + "apply_these_opacity_to_entire_header_area": true + }, + "match_titlebar_colour_to_application": false, + "on_active_window": { + "draw_titlebar_background_gradient": false, + "draw_separator_under_titlebar": true, + "make_title_bold": true, + "underline_title": false + } + }, + "window": { + "corners": { + "conor_radius": 4, + "round_corners_when_no_borders": true + }, + "borders": { + "title_bar_colour_for_window_borders": true, + "draw_borders_on_maximized_windows": false + }, + "thin_window_outline": { + "window_outline_style": { + "window_outline_thickness": 1.0, + "snap_to_whole_pixel": true, + "overlap": true, + "same_active_n_inactive_window_outline": false, + "active_window": { + "window_outline_style": "WindowOutlineShadowColor", + "opacity": { + "WindowOutlineNone": null, + "WindowOutlineShadowColor": { + "name": "WindowOutlineShadowColorOpacity", + "value": 20 + }, + "WindowOutlineContrast": { + "name": "WindowOutlineContrastOpacityActive", + "value": 25 + }, + "WindowOutlineAccentColor": { + "name": "WindowOutlineAccentColorOpacityActive", + "value": 67 + }, + "WindowOutlineAccentWithContrast": { + "name": "WindowOutlineAccentWithContrastOpacityActive", + "value": 50 + }, + "WindowOutlineCustomColor": { + "name": "WindowOutlineCustomColorOpacityActive", + "value": 60 + }, + "WindowOutlineCustomWithContrast": { + "name": "WindowOutlineCustomWithContrastOpacityActive", + "value": 40 + } + }, + "color": { + "choice": "0,0,0", + "lock_custom_colour_active_inactive": true + } + }, + "inactive_window": { + "window_outline_style": "WindowOutlineShadowColor", + "opacity": { + "WindowOutlineNone": null, + "WindowOutlineShadowColor": { + "name": "WindowOutlineShadowColorOpacity", + "value": 20 + }, + "WindowOutlineContrast": { + "name": "WindowOutlineContrastOpacityInactive", + "value": 25 + }, + "WindowOutlineAccentColor": { + "name": "WindowOutlineAccentColorOpacityInactive", + "value": 67 + }, + "WindowOutlineAccentWithContrast": { + "name": "WindowOutlineAccentWithContrastOpacityInactive", + "value": 50 + }, + "WindowOutlineCustomColor": { + "name": "WindowOutlineCustomColorOpacityInactive", + "value": 60 + }, + "WindowOutlineCustomWithContrast": { + "name": "WindowOutlineCustomWithContrastOpacityInactive", + "value": 40 + } + }, + "color": { + "choice": "0,0,0" + } + } + }, + "colourize_with_higlighted_buttons_colour": true + }, + "shadow": { + "size": "ShadowLarge", + "strength": 100, + "colour": "0,0,0" + } + }, + "animations": { + "enable": true, + "animations_speed": 0 + }, + "window_specific_overrides": { + "defaults_overrides": { + "enabled": true + }, + "user_specific_overrides": { + "enabled": true, + "window_identification": { + "window_property": 0, + "regex": "" + }, + "windeco_options": { + "preset": { + "enabled": false, + "value": "" + }, + "hide_window_titlebar": 0, + "opaque_titlebar": false, + "match_titlebar_colour_to_application": false, + "border_size": { + "enabled": false, + "value": 0 + } + }, + "application_style_options": { + "application_name_regex": "", + "opaque_header": false + } + } + } + } +} \ No newline at end of file diff --git a/progs/desktop/klassy/defaults/presets.klpw b/progs/desktop/klassy/defaults/presets.klpw new file mode 100644 index 0000000..1b837d3 --- /dev/null +++ b/progs/desktop/klassy/defaults/presets.klpw @@ -0,0 +1,3079 @@ +[Global] +BundledWindecoPresetsImportedVersion=6.5.3 + +[Windeco Preset Breeze Original] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=false +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=100 +ButtonBackgroundOpacityInactive=70 +ButtonColorsInactiveSameHoverPress=false +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleOxygen +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=4 +ButtonSpacingRight=4 +ButtonStateCheckedActive=Hover +ButtonStateCheckedInactive=Hover +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=true +NegativeCloseBackgroundHoverPressInactive=true +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=MoreTitleBar +VaryColorBackgroundInactive=MoreTitleBar +VaryColorCloseBackgroundActive=Light +VaryColorCloseBackgroundInactive=Light +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=No +VaryColorCloseOutlineInactive=No +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=No +VaryColorOutlineInactive=No +WindowCornerRadius=3 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Chroma] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=-2 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=87 +ButtonBackgroundOpacityInactive=38 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleOxygen +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HAIX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=105 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon18 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=8 +TitleBarRightMargin=8 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Transparent +VaryColorOutlineInactive=Opaque +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset ClassiK v3] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKlasse +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=NoSides +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=80 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Opaque +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineAccentColor +WindowOutlineStyleInactive=WindowOutlineAccentWithContrast +WindowOutlineThickness=1 + +[Windeco Preset ClassikStyles] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKlasse +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=80 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 10] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=13 +ButtonBackgroundOpacityInactive=13 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeFullySaturated",60]} +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeFullySaturated",60]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=24 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MSF +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=50 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignLeft +TitleBarBottomMargin=4.5 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4.5 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=50 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 11] +ActiveTitleBarOpacity=75 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsFine +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=10 +ButtonBackgroundOpacityInactive=10 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=0 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleFluent +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeSaturated",80]} +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundHover":["NegativeFullySaturated"],"BackgroundPress":["NegativeSaturated",80]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeFullHeightRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=28 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=false +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=50 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon20 +TitleAlignment=AlignLeft +TitleBarBottomMargin=4.5 +TitleBarLeftMargin=4 +TitleBarRightMargin=0 +TitleBarTopMargin=4.5 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=8 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 7] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=70 +ButtonBackgroundOpacityInactive=70 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2.4 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveClose={"IconHover":[254,254,254],"IconNormal":[254,254,254],"IconPress":[254,254,254],"OutlineHover":[60,254,254,254],"OutlineNormal":[60,254,254,254],"OutlinePress":[60,254,254,254]} +ButtonOverrideColorsActiveContextHelp={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveKeepAbove={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveKeepBelow={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveMaximize={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveMenu={"BackgroundHover":[0,0,0,0],"BackgroundNormal":[0,0,0,0],"BackgroundPress":[0,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",0],"OutlineNormal":["White",0],"OutlinePress":["White",0]} +ButtonOverrideColorsActiveMinimize={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveOnAllDesktops={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsActiveShade={"BackgroundNormal":[10,0,0,0],"IconHover":["White"],"IconNormal":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveApplicationMenu={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveClose={"IconHover":[254,254,254],"IconPress":[254,254,254],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveContextHelp={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveKeepAbove={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveKeepBelow={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveMaximize={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveMenu={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",0],"OutlineNormal":["White",0],"OutlinePress":["White",0]} +ButtonOverrideColorsInactiveMinimize={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveOnAllDesktops={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsInactiveShade={"IconHover":["White"],"IconPress":["White"],"OutlineHover":["White",60],"OutlineNormal":["White",60],"OutlinePress":["White",60]} +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive=["OutlineHover","OutlinePress"] +ButtonShape=ShapeIntegratedRoundedRectangleGrouped +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=300 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=0 +FullHeightButtonSpacingRight=0 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=10 +IconSize=IconMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=8 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=BlackWhite +OnPoorIconContrastInactive=BlackWhite +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.2 +PoorBackgroundContrastThresholdInactive=1.2 +PoorIconContrastThresholdActive=1.2 +PoorIconContrastThresholdInactive=1.2 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=6 +TitleBarRightMargin=6 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Light +VaryColorCloseBackgroundInactive=Light +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Light +VaryColorCloseOutlineInactive=Light +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Defenestrated 8] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=0 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose={"BackgroundNormal":[15,0,0,0]} +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangleGrouped +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=White +CloseButtonIconColorInactive=White +CloseFullHeightButtonWidthMarginRelative=300 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=10 +IconSize=IconSmallMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=9 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Eaten Fruits] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=85 +ButtonBackgroundOpacityInactive=50 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleArk +ButtonOverrideColorsActiveApplicationMenu={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveClose={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveContextHelp={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveKeepAbove={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveKeepBelow={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMaximize={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMenu={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveMinimize={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveOnAllDesktops={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsActiveShade={"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveApplicationMenu={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveClose={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveContextHelp={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveKeepAbove={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveKeepBelow={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMaximize={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMenu={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveMinimize={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveOnAllDesktops={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsInactiveShade={"BackgroundNormal":["TitleBarTextAuto",8],"OutlineHover":[10,0,0,0],"OutlineNormal":[10,0,0,0],"OutlinePress":[10,0,0,0]} +ButtonOverrideColorsLockStatesActive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["BackgroundNormal","OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=XIA +KwinButtonsOnRight=HFSM +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=true +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=false +ShowCloseIconNormallyInactive=false +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=false +ShowIconNormallyInactive=false +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon18 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=7 +TitleBarLeftMargin=10 +TitleBarRightMargin=10 +TitleBarTopMargin=7 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=true +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Opaque +VaryColorCloseOutlineInactive=Opaque +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=10 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Garden Ornaments] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarText +ButtonBackgroundColorsInactive=TitleBarText +ButtonBackgroundOpacityActive=16 +ButtonBackgroundOpacityInactive=12 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=10 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=16 +IconSize=IconSmallMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=70 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=150 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=6 +TitleBarLeftMargin=8 +TitleBarRightMargin=8 +TitleBarTopMargin=6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Opaque +VaryColorCloseBackgroundInactive=Opaque +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=No +VaryColorCloseOutlineInactive=No +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=No +VaryColorOutlineInactive=No +WindowCornerRadius=10 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Glassy Klassy] +ActiveTitleBarOpacity=50 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=30 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=true +OverrideInactiveTitleBarOpacity=true +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=50 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset KLCXP] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsBold +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=50 +ButtonBackgroundOpacityInactive=30 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallRoundedSquare +ButtonSpacingLeft=2 +ButtonSpacingRight=2 +ButtonStateCheckedActive=Hover +ButtonStateCheckedInactive=Hover +CloseButtonIconColorActive=White +CloseButtonIconColorInactive=White +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=false +LockCloseButtonBehaviourInactive=false +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=120 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=false +ShowCloseOutlineOnPressInactive=false +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=false +ShowOutlineOnPressInactive=false +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=2 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=2 +TitleSidePadding=8 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=MostOpaqueHover +VaryColorBackgroundInactive=MostOpaqueHover +VaryColorCloseBackgroundActive=MostOpaqueHover +VaryColorCloseBackgroundInactive=MostOpaqueHover +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=MostOpaqueHover +VaryColorCloseOutlineInactive=MostOpaqueHover +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=MostOpaqueHover +VaryColorOutlineInactive=MostOpaqueHover +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineNone +WindowOutlineStyleInactive=WindowOutlineNone +WindowOutlineThickness=2 + +[Windeco Preset Kite] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset Kite-Aurorae] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=1 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeSmallCircle +ButtonSpacingLeft=6 +ButtonSpacingRight=12 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=false +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=115 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=6 +TitleBarRightMargin=6 +TitleBarTopMargin=3 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=3.2 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineContrast +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=1 + +[Windeco Preset Opal Fruits] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsHiDpiOnly +BoldTitle=false +BundledPreset=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=50 +ButtonIconStyle=StyleSuessigKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=4 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=8 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HAI_X +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=33 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=4 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=4 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=5 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=false +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineAccentColor +WindowOutlineStyleInactive=WindowOutlineContrast +WindowOutlineThickness=2 + +[Windeco Preset Plastik] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=false +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActive +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=TitleBarTextNegativeClose +ButtonBackgroundColorsInactive=TitleBarTextNegativeClose +ButtonBackgroundOpacityActive=40 +ButtonBackgroundOpacityInactive=25 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=Custom +ButtonCustomCornerRadius=2 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleTraditional +ButtonOverrideColorsActiveApplicationMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveClose={"BackgroundNormal":["White",10],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveContextHelp={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveKeepAbove={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"IconPress":["AccentButtonFocus"],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveKeepBelow={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMaximize={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveMinimize={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveOnAllDesktops={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsActiveShade={"BackgroundHover":["White",50],"BackgroundNormal":["White",10],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveApplicationMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveClose={"BackgroundNormal":["White",5],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveContextHelp={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveKeepAbove={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"IconPress":["AccentButtonFocus"],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveKeepBelow={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMaximize={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMenu={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveMinimize={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveOnAllDesktops={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsInactiveShade={"BackgroundHover":["White",50],"BackgroundNormal":["White",5],"BackgroundPress":[20,0,0,0],"OutlineHover":[55,50,50,50],"OutlineNormal":[50,0,0,0],"OutlinePress":[60,0,0,0]} +ButtonOverrideColorsLockStatesActive=["BackgroundNormal","BackgroundHover","BackgroundPress","OutlineNormal","OutlineHover","OutlinePress"] +ButtonOverrideColorsLockStatesInactive=["BackgroundNormal","BackgroundHover","OutlineNormal","OutlineHover","OutlinePress"] +ButtonShape=ShapeSmallRoundedSquare +ButtonSpacingLeft=2 +ButtonSpacingRight=2 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=true +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=2 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=2 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=false +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=true +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=true +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=Nothing +OnPoorIconContrastInactive=Nothing +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=100 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=120 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=true +ShowBackgroundNormallyInactive=true +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=true +ShowCloseBackgroundNormallyInactive=true +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=true +ShowCloseOutlineNormallyInactive=true +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=true +ShowOutlineNormallyInactive=true +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignLeft +TitleBarBottomMargin=2 +TitleBarLeftMargin=4 +TitleBarRightMargin=4 +TitleBarTopMargin=2 +TitleSidePadding=8 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=LightestHover +VaryColorBackgroundInactive=LightestHover +VaryColorCloseBackgroundActive=LightestHover +VaryColorCloseBackgroundInactive=LightestHover +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=LightestHover +VaryColorCloseOutlineInactive=LightestHover +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=LightestHover +VaryColorOutlineInactive=LightestHover +WindowCornerRadius=6 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 + +[Windeco Preset SuessigKite] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +BundledPreset=true +ButtonBackgroundColorsActive=AccentNegativeClose +ButtonBackgroundColorsInactive=AccentNegativeClose +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=TitleBarText +ButtonIconColorsInactive=TitleBarText +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleSuessigKite +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=WhiteWhenHoverPress +CloseButtonIconColorInactive=WhiteWhenHoverPress +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=true +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=true +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=Normal +KwinButtonsOnLeft=MFS +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=false +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=true +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=4 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 diff --git a/progs/desktop/klassy/presets/Clean.klpw b/progs/desktop/klassy/presets/Clean.klpw new file mode 100644 index 0000000..2da0189 --- /dev/null +++ b/progs/desktop/klassy/presets/Clean.klpw @@ -0,0 +1,182 @@ +[Klassy Window Decoration Preset File] +version=6.5.3 + +[Windeco Preset Clean] +ActiveTitleBarOpacity=100 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=6 +ButtonSpacingRight=10 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=100 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=M +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=true +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=true +ShowCloseOutlineOnHoverInactive=true +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=true +ShowOutlineOnHoverInactive=true +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=true +UseHoverAccentInactive=true +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 diff --git a/progs/desktop/klassy/presets/CleanTranslucid.klpw b/progs/desktop/klassy/presets/CleanTranslucid.klpw new file mode 100644 index 0000000..60048e3 --- /dev/null +++ b/progs/desktop/klassy/presets/CleanTranslucid.klpw @@ -0,0 +1,182 @@ +[Klassy Window Decoration Preset File] +version=6.5.3 + +[Windeco Preset CleanTranslucid] +ActiveTitleBarOpacity=80 +AdjustBackgroundColorOnPoorContrastActive=true +AdjustBackgroundColorOnPoorContrastInactive=true +AnimationsEnabled=true +AnimationsSpeedRelativeSystem=0 +ApplyOpacityToHeader=true +BlurTransparentTitleBars=true +BoldButtonIcons=BoldIconsActiveHiDpi +BoldTitle=true +ButtonBackgroundColorsActive=AccentTrafficLights +ButtonBackgroundColorsInactive=AccentTrafficLights +ButtonBackgroundOpacityActive=60 +ButtonBackgroundOpacityInactive=60 +ButtonColorsInactiveSameHoverPress=true +ButtonCornerRadius=SameAsWindow +ButtonCustomCornerRadius=2.5 +ButtonIconColorsActive=AccentTrafficLights +ButtonIconColorsInactive=AccentTrafficLights +ButtonIconOpacityActive=100 +ButtonIconOpacityInactive=100 +ButtonIconStyle=StyleMetro +ButtonOverrideColorsActiveApplicationMenu= +ButtonOverrideColorsActiveClose= +ButtonOverrideColorsActiveContextHelp= +ButtonOverrideColorsActiveKeepAbove= +ButtonOverrideColorsActiveKeepBelow= +ButtonOverrideColorsActiveMaximize= +ButtonOverrideColorsActiveMenu= +ButtonOverrideColorsActiveMinimize= +ButtonOverrideColorsActiveOnAllDesktops= +ButtonOverrideColorsActiveShade= +ButtonOverrideColorsInactiveApplicationMenu= +ButtonOverrideColorsInactiveClose= +ButtonOverrideColorsInactiveContextHelp= +ButtonOverrideColorsInactiveKeepAbove= +ButtonOverrideColorsInactiveKeepBelow= +ButtonOverrideColorsInactiveMaximize= +ButtonOverrideColorsInactiveMenu= +ButtonOverrideColorsInactiveMinimize= +ButtonOverrideColorsInactiveOnAllDesktops= +ButtonOverrideColorsInactiveShade= +ButtonOverrideColorsLockStatesActive= +ButtonOverrideColorsLockStatesInactive= +ButtonShape=ShapeIntegratedRoundedRectangle +ButtonSpacingLeft=3 +ButtonSpacingRight=5 +ButtonStateCheckedActive=Press +ButtonStateCheckedInactive=Press +CloseButtonIconColorActive=AsSelected +CloseButtonIconColorInactive=AsSelected +CloseFullHeightButtonWidthMarginRelative=100 +ColorizeWindowOutlineWithButton=false +DrawBackgroundGradient=false +DrawBorderOnMaximizedWindows=false +DrawTitleBarSeparator=false +ForceColorizeSystemIcons=true +FullHeightButtonSpacingLeft=2 +FullHeightButtonSpacingRight=4 +FullHeightButtonWidthMarginLeft=6 +FullHeightButtonWidthMarginRight=18 +IconSize=IconLargeMedium +InactiveTitleBarOpacity=80 +IntegratedRoundedRectangleBottomPadding=1.5 +KlassyDarkIconThemeInherits=breeze-dark +KlassyIconThemeInherits=breeze +KwinBorderSize=None +KwinButtonsOnLeft=M +KwinButtonsOnRight=HIAX +LockButtonBehaviourActiveInactive=true +LockButtonColorsActiveInactive=true +LockButtonSpacingLeftRight=false +LockCloseButtonBehaviourActive=true +LockCloseButtonBehaviourInactive=true +LockFullHeightButtonSpacingLeftRight=false +LockFullHeightButtonWidthMargins=false +LockTitleBarLeftRightMargins=true +LockTitleBarTopBottomMargins=true +LockWindowOutlineCustomColorActiveInactive=true +LockWindowOutlineStyleActiveInactive=false +MatchTitleBarToApplicationColor=true +NegativeCloseBackgroundHoverPressActive=false +NegativeCloseBackgroundHoverPressInactive=false +OnPoorIconContrastActive=TitleBarBackground +OnPoorIconContrastInactive=TitleBarBackground +OpaqueMaximizedTitleBars=false +OverrideActiveTitleBarOpacity=false +OverrideInactiveTitleBarOpacity=false +PercentMaximizedTopBottomMargins=85 +PoorBackgroundContrastThresholdActive=1.1 +PoorBackgroundContrastThresholdInactive=1.1 +PoorIconContrastThresholdActive=1.5 +PoorIconContrastThresholdInactive=1.5 +RoundAllCornersWhenNoBorders=false +ScaleBackgroundPercent=100 +ScaleTouchMode=150 +ShadowColor=0,0,0 +ShadowSize=ShadowLarge +ShadowStrength=255 +ShowBackgroundNormallyActive=false +ShowBackgroundNormallyInactive=false +ShowBackgroundOnHoverActive=true +ShowBackgroundOnHoverInactive=true +ShowBackgroundOnPressActive=true +ShowBackgroundOnPressInactive=true +ShowCloseBackgroundNormallyActive=false +ShowCloseBackgroundNormallyInactive=false +ShowCloseBackgroundOnHoverActive=true +ShowCloseBackgroundOnHoverInactive=true +ShowCloseBackgroundOnPressActive=true +ShowCloseBackgroundOnPressInactive=true +ShowCloseIconNormallyActive=true +ShowCloseIconNormallyInactive=true +ShowCloseIconOnHoverActive=true +ShowCloseIconOnHoverInactive=true +ShowCloseIconOnPressActive=true +ShowCloseIconOnPressInactive=true +ShowCloseOutlineNormallyActive=false +ShowCloseOutlineNormallyInactive=false +ShowCloseOutlineOnHoverActive=false +ShowCloseOutlineOnHoverInactive=false +ShowCloseOutlineOnPressActive=true +ShowCloseOutlineOnPressInactive=true +ShowIconNormallyActive=true +ShowIconNormallyInactive=true +ShowIconOnHoverActive=true +ShowIconOnHoverInactive=true +ShowIconOnPressActive=true +ShowIconOnPressInactive=true +ShowOutlineNormallyActive=false +ShowOutlineNormallyInactive=false +ShowOutlineOnHoverActive=false +ShowOutlineOnHoverInactive=false +ShowOutlineOnPressActive=true +ShowOutlineOnPressInactive=true +SpacerButtonWidthRelative=50 +SystemIconSize=SystemIcon16 +TitleAlignment=AlignCenterFullWidth +TitleBarBottomMargin=3.6 +TitleBarLeftMargin=0 +TitleBarRightMargin=0 +TitleBarTopMargin=3.6 +TitleSidePadding=4 +UnderlineTitle=false +UnisonHovering=false +UseHoverAccentActive=false +UseHoverAccentInactive=false +UseTitleBarColorForAllBorders=true +VaryColorBackgroundActive=Opaque +VaryColorBackgroundInactive=Opaque +VaryColorCloseBackgroundActive=Transparent +VaryColorCloseBackgroundInactive=Transparent +VaryColorCloseIconActive=No +VaryColorCloseIconInactive=No +VaryColorCloseOutlineActive=Transparent +VaryColorCloseOutlineInactive=Transparent +VaryColorIconActive=No +VaryColorIconInactive=No +VaryColorOutlineActive=Opaque +VaryColorOutlineInactive=Opaque +WindowCornerRadius=0 +WindowOutlineAccentColorOpacityActive=67 +WindowOutlineAccentColorOpacityInactive=25 +WindowOutlineAccentWithContrastOpacityActive=50 +WindowOutlineAccentWithContrastOpacityInactive=20 +WindowOutlineContrastOpacityActive=25 +WindowOutlineContrastOpacityInactive=25 +WindowOutlineCustomColorActive=0,0,0 +WindowOutlineCustomColorInactive=0,0,0 +WindowOutlineCustomColorOpacityActive=60 +WindowOutlineCustomColorOpacityInactive=25 +WindowOutlineCustomWithContrastOpacityActive=40 +WindowOutlineCustomWithContrastOpacityInactive=25 +WindowOutlineOverlap=true +WindowOutlineShadowColorOpacity=20 +WindowOutlineSnapToWholePixel=true +WindowOutlineStyleActive=WindowOutlineShadowColor +WindowOutlineStyleInactive=WindowOutlineShadowColor +WindowOutlineThickness=1 diff --git a/progs/desktop/plasma.nix b/progs/desktop/plasma.nix new file mode 100644 index 0000000..ffdf20a --- /dev/null +++ b/progs/desktop/plasma.nix @@ -0,0 +1,221 @@ +# FIXME : Refactor this +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "plasma"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.plasma = { + enable = true; + configFile.kdeglobals.General = { + TerminalApplication = "ghostty"; + TerminalService = "com.mitchellh.ghostty.desktop"; + }; + window-rules = [ + (tools.ifExists config "config.progs.editors.vscode" { + description = "vscode-desktop-file"; + match.window-class = "code code"; + apply.desktopfile = "/run/current-system/etc/profiles/per-user/matthieu/share/applications/code.desktop"; # TODO: make this dynamic + }) + ]; + shortcuts = { + "services/com.mitchellh.ghostty.desktop" = { + _launch = [ + "Meta+Return" + "Ctrl+Alt+T" + ]; + new-window = ["Meta+Shift+Return"]; + }; + ksmserver = { + "Lock Session" = ["Meta+L"]; + }; + org_kde_powerdevil = { + "Sleep" = ["Meta+Shift+L" "Sleep"]; + }; + }; + workspace = { + colorScheme = "KlassyDark"; + windowDecorations = { + library = "org.kde.klassy"; + theme = "Klassy"; + }; + iconTheme = "Klassy Dark"; + theme = "klassy"; + }; + panels = [ + { + location = "top"; + height = 27; + screen = "all"; + opacity = "adaptive"; + alignment = "center"; + widgets = [ + "org.kde.plasma.trash" + { + name = "org.kde.plasma.pager"; + config = { + "currentDesktopSelected" = "ShowDesktop"; + "showOnlyCurrentScreen" = false; + "showWindowOutlines" = false; + "displayedText" = "Name"; + "wrapPage" = true; + General = { + "displayedText" = "Name"; + "wrapPage" = true; + "currentDesktopSelected" = "ShowDesktop"; + "showOnlyCurrentScreen" = false; + "showWindowOutlines" = false; + }; + }; + } + "org.kde.plasma.panelspacer" + "org.kde.plasma.mediacontroller" + "org.kde.plasma.digitalclock" + "org.kde.plasma.notifications" + "org.kde.plasma.panelspacer" + "org.kde.plasma.keyboardindicator" + # PROJECT TODO : Fixing plasma manager so it supports configuring the system tray correctly and fully. + { + name = "org.kde.plasma.systemtray"; + config = { + extraItems = ["org.kde.plasma.cameraindicator" "org.kde.kdeconnect" "org.kde.plasma.bluetooth" "org.kde.plasma.devicenotifier" "org.kde.plasma.printmanager" "org.kde.kscreen" "org.kde.plasma.keyboardlayout" "org.kde.plasma.manage-inputmethod"]; + hiddenItems = ["org.kde.kscreen" "org.kde.plasma.keyboardlayout" "org.kde.plasma.manage-inputmethod"]; + knownItems = ["org.kde.plasma.cameraindicator" "org.kde.plasma.clipboard" "org.kde.plasma.manage-inputmethod" "org.kde.kdeconnect" "org.kde.plasma.keyboardlayout" "org.kde.plasma.bluetooth" "org.kde.plasma.mediacontroller" "org.kde.plasma.notifications" "org.kde.plasma.devicenotifier" "org.kde.plasma.weather" "org.kde.kscreen" "org.kde.plasma.keyboardindicator" "org.kde.plasma.printmanager" "org.kde.plasma.brightness" "org.kde.plasma.volume" "org.kde.plasma.networkmanagement" "org.kde.plasma.battery"]; + }; + } + # { + # systemTray = { + # pin = true; + # icons = { + # spacing = "medium"; + # scaleToFit = true; + # }; + # items = { + # showAll = false; + # shown = [ + # "org.kde.plasma.battery" + # "org.kde.plasma.networkmanagement" + # ]; + # hidden = [ + # "org.kde.plasma.volume" + # "org.kde.kscreen" + # ]; + # }; + # }; + # } + "org.kde.plasma.clipboard" + "org.kde.plasma.brightness" + "org.kde.plasma.volume" + "org.kde.plasma.networkmanagement" + { + name = "org.kde.plasma.battery"; + config = { + showPercentage = "true"; + }; + } + { + name = "org.kde.plasma.lock_logout"; + config = { + show_lockScreen = false; + }; + } + ]; + } + { + location = "bottom"; + height = 44; + screen = "all"; + opacity = "adaptive"; + alignment = "left"; + hiding = "dodgewindows"; + widgets = [ + "org.kde.plasma.kicker" + # "org.kde.plasma.kickerdash" + { + name = "org.kde.plasma.icontasks"; + config = { + taskDisplayMode = "IconsOnly"; + showOnlyCurrentDesktop = true; + groupTasks = true; + launchers = + [ + "applications:systemsettings.desktop" + "applications:org.kde.dolphin.desktop" + ] + ++ (tools.ifExists config "config.progs.browsers.firefox" ["applications:firefox.desktop"]) + ++ (tools.ifExists config "config.progs.browsers.chromium" ["applications:chromium-browser.desktop"]) + ++ (tools.ifExists config "config.progs.browsers.zen" ["applications:zen-beta.desktop"]) + ++ (tools.ifExists config "config.progs.terminals.ghostty" ["applications:com.mitchellh.ghostty.desktop"]) + ++ (tools.ifExists config "config.progs.editors.vscode" ["applications:code.desktop"]); + }; + } + "org.kde.plasma.showdesktop" + ]; + } + ]; + kwin = { + virtualDesktops = { + rows = 1; + number = 3; + names = ["Casual" "Work" "Dev"]; + }; + effects = { + desktopSwitching = { + animation = "slide"; + navigationWrapping = true; # NOTE : suggest to put this setting in "virtualDesktops" instead of "effects" + }; + hideCursor = { + enable = true; + hideOnInactivity = 3; # seconds + hideOnTyping = true; + }; + }; + }; + }; + home.packages = with packages.kdePackages; [ + sddm-kcm + qtvirtualkeyboard + breeze + filelight + dolphin-plugins + ]; + }; + System = { + services = { + desktopManager.plasma6.enable = true; + displayManager = { + sddm = { + enable = true; + wayland.enable = true; + settings = { + General = { + InputMethod = "qtvirtualkeyboard"; + }; + }; + autoNumlock = true; + }; + }; + }; + environment.plasma6.excludePackages = with packages.kdePackages; [ + elisa + konsole + discover + ]; + }; +}) diff --git a/progs/desktop/rofi.nix b/progs/desktop/rofi.nix new file mode 100644 index 0000000..a9f6ad0 --- /dev/null +++ b/progs/desktop/rofi.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "rofi"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; + # TODO : configure a shortcut and other stuffs ! +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.rofi = { + enable = true; + terminal = "/${packages.ghostty}/bin/ghostty"; + theme = "Arc-Dark"; + modes = ["drun" "ssh" "run" "calc"]; + plugins = with packages; [ + rofi-calc + ]; + }; + }; +}) diff --git a/progs/dev.nix b/progs/dev.nix new file mode 100644 index 0000000..d813b2c --- /dev/null +++ b/progs/dev.nix @@ -0,0 +1,40 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "dev"; + subfolder = "dev"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "boot" + "network" + "git" + "virtualization" + "lang" + "misc" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + nix.enable = true; + boot.enable = true; + network.enable = true; + git.enable = true; + virtualization.enable = true; + lang.enable = true; + misc.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/boot.nix b/progs/dev/boot.nix new file mode 100644 index 0000000..de3cd11 --- /dev/null +++ b/progs/dev/boot.nix @@ -0,0 +1,33 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "boot"; + subfolder = "boot"; + imports = [ + "efibootmgr" + "grub" + "gparted" + "os-prober" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + efibootmgr.enable = true; + grub.enable = true; + gparted.enable = true; + os-prober.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/boot/efibootmgr.nix b/progs/dev/boot/efibootmgr.nix new file mode 100644 index 0000000..ae272f9 --- /dev/null +++ b/progs/dev/boot/efibootmgr.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "efibootmgr"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + efibootmgr + ]; + }; +}) diff --git a/progs/dev/boot/gparted.nix b/progs/dev/boot/gparted.nix new file mode 100644 index 0000000..1209ccf --- /dev/null +++ b/progs/dev/boot/gparted.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "gparted"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; + # TODO : fix the fact that gparted needs root to run and thus cant be opened from rofi or similar launchers +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + gparted + ]; + }; +}) diff --git a/progs/dev/boot/grub.nix b/progs/dev/boot/grub.nix new file mode 100644 index 0000000..9f23673 --- /dev/null +++ b/progs/dev/boot/grub.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "grub"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + grub2 + ]; + }; +}) diff --git a/progs/dev/boot/os-prober.nix b/progs/dev/boot/os-prober.nix new file mode 100644 index 0000000..3f52624 --- /dev/null +++ b/progs/dev/boot/os-prober.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "os-prober"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + os-prober + ]; + }; +}) diff --git a/progs/dev/git.nix b/progs/dev/git.nix new file mode 100644 index 0000000..2f7b99e --- /dev/null +++ b/progs/dev/git.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "git"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs = { + git = { + enable = true; + settings = { + user = { + name = "MatthieuGomes"; + email = "matthieu.gomes@ensea.fr"; + }; + init.defaultBranch = "main"; + }; + }; + }; + }; +}) diff --git a/progs/dev/lang.nix b/progs/dev/lang.nix new file mode 100644 index 0000000..72be920 --- /dev/null +++ b/progs/dev/lang.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lang"; + subfolder = "lang"; + imports = [ + "nix" + "python" + "flutter" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + nix.enable = true; + python.enable = true; + flutter = { + enable = false; + user = config.sys.main-user; + addToKvmGroup = true; + enableAdb = true; + }; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/lang/flutter.nix b/progs/dev/lang/flutter.nix new file mode 100644 index 0000000..06e98a0 --- /dev/null +++ b/progs/dev/lang/flutter.nix @@ -0,0 +1,92 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: +# TODO : needs to be throughly tested/configured +let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "flutter"; + main-repo = "nix"; + branch = "unstable"; + extras = rec { + androidComposition = pkgs-list.nix.unstable.androidenv.composeAndroidPackages { + toolsVersion = "26.1.1"; + platformToolsVersion = "35.0.1"; + buildToolsVersions = [ + "30.0.3" + "33.0.1" + "34.0.0" + ]; + platformVersions = [ + "31" + "33" + "34" + ]; + abiVersions = ["x86_64"]; + includeEmulator = true; + emulatorVersion = "35.1.4"; + includeSystemImages = true; + systemImageTypes = ["google_apis_playstore"]; + includeSources = false; + extraLicenses = [ + "android-googletv-license" + "android-sdk-arm-dbt-license" + "android-sdk-license" + "android-sdk-preview-license" + "google-gdk-license" + "intel-android-extra-license" + "intel-android-sysimage-license" + "mips-android-sysimage-license" + ]; + }; + androidSdk = androidComposition.androidsdk; + buildToolsVersion = "33.0.1"; + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + addToKvmGroup = lib.mkEnableOption "Add user to KVM group for hardware acceleration"; + enableAdb = lib.mkEnableOption "Enable ADB and add user to adbusers group"; + user = lib.mkOption { + type = lib.types.str; + description = "Username for Flutter development"; + }; + }; + # specialOptions = { + # options.programs.flutter = { + # enable = lib.mkEnableOption "Flutter development environment"; + # }; + # }; + }; +in + with tools; (fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = with extras; { + environment.systemPackages = with packages; [ + flutter + androidSdk + # android-studio + jdk17 + firebase-tools + ]; + environment.variables = { + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + ANDROID_HOME = "${androidSdk}/libexec/android-sdk"; + JAVA_HOME = "${packages.jdk17}"; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/34.0.0/aapt2"; + }; + environment.shellInit = '' + export PATH=$PATH:${androidSdk}/libexec/android-sdk/platform-tools + export PATH=$PATH:${androidSdk}/libexec/android-sdk/cmdline-tools/latest/bin + export PATH=$PATH:${androidSdk}/libexec/android-sdk/emulator + export PATH="$PATH":"$HOME/.pub-cache/bin" + export NIXPKGS_ACCEPT_ANDROID_SDK_LICENSE=1 + ''; + }; + }) diff --git a/progs/dev/lang/nix.nix b/progs/dev/lang/nix.nix new file mode 100644 index 0000000..1762b9a --- /dev/null +++ b/progs/dev/lang/nix.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nix"; + subfolder = "nix"; + imports = [ + "alejandra" + "nixd" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + alejandra.enable = true; + nixd.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/lang/nix/alejandra.nix b/progs/dev/lang/nix/alejandra.nix new file mode 100644 index 0000000..f2b2ceb --- /dev/null +++ b/progs/dev/lang/nix/alejandra.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "alejandra"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + alejandra + ]; + }; +}) diff --git a/progs/dev/lang/nix/nixd.nix b/progs/dev/lang/nix/nixd.nix new file mode 100644 index 0000000..7c6cda7 --- /dev/null +++ b/progs/dev/lang/nix/nixd.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nixd"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + nixd + ]; + }; +}) diff --git a/progs/dev/lang/python.nix b/progs/dev/lang/python.nix new file mode 100644 index 0000000..026ab30 --- /dev/null +++ b/progs/dev/lang/python.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "python"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + python3 + ]; + }; +}) diff --git a/progs/dev/misc.nix b/progs/dev/misc.nix new file mode 100644 index 0000000..380449f --- /dev/null +++ b/progs/dev/misc.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + plocate + mlocate + xdotool + meld + wget + ]; + }; +}) diff --git a/progs/dev/network.nix b/progs/dev/network.nix new file mode 100644 index 0000000..7a5a3d5 --- /dev/null +++ b/progs/dev/network.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "network"; + subfolder = "network"; + imports = [ + "misc" + "postman" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + misc.enable = true; + postman.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/network/misc.nix b/progs/dev/network/misc.nix new file mode 100644 index 0000000..50ba2d3 --- /dev/null +++ b/progs/dev/network/misc.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + netcat-openbsd + nmap + ]; + }; +}) diff --git a/progs/dev/network/postman.nix b/progs/dev/network/postman.nix new file mode 100644 index 0000000..c1dfb80 --- /dev/null +++ b/progs/dev/network/postman.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "postman"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + postman + ]; + }; +}) diff --git a/progs/dev/virtualization.nix b/progs/dev/virtualization.nix new file mode 100644 index 0000000..c6ce13b --- /dev/null +++ b/progs/dev/virtualization.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "virtualization"; + subfolder = "virtualization"; + imports = [ + "docker" + "qemu" + "virt-manager" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + docker.enable = true; + qemu.enable = true; + virt-manager.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/dev/virtualization/docker.nix b/progs/dev/virtualization/docker.nix new file mode 100644 index 0000000..6a7a665 --- /dev/null +++ b/progs/dev/virtualization/docker.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "docker"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + docker + docker-compose + ]; + }; + System = { + virtualisation.docker.enable = true; + users.groups.docker.members = ["matthieu"]; + }; +}) diff --git a/progs/dev/virtualization/qemu.nix b/progs/dev/virtualization/qemu.nix new file mode 100644 index 0000000..ffd7e19 --- /dev/null +++ b/progs/dev/virtualization/qemu.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "qemu"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + virtualisation = { + libvirtd.enable = true; + spiceUSBRedirection.enable = true; + }; + users.groups.libvirtd.members = ["matthieu"]; + networking.firewall.allowedTCPPorts = tools.ifExists config "config.sys.networking.ssh" [10022 22]; + }; +}) diff --git a/progs/dev/virtualization/virt-manager.nix b/progs/dev/virtualization/virt-manager.nix new file mode 100644 index 0000000..6cd5260 --- /dev/null +++ b/progs/dev/virtualization/virt-manager.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "virt-manager"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + programs.virt-manager.enable = true; + }; +}) diff --git a/progs/editors.nix b/progs/editors.nix new file mode 100644 index 0000000..6c0333a --- /dev/null +++ b/progs/editors.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "editors"; + subfolder = "editors"; + imports = [ + "vim" + "vscode" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + vim.enable = true; + vscode.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/editors/vim.nix b/progs/editors/vim.nix new file mode 100644 index 0000000..ad6bae0 --- /dev/null +++ b/progs/editors/vim.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vim"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.vim = { + enable = true; + defaultEditor = true; + settings = { + copyindent = true; + number = true; + }; + }; + }; +}) diff --git a/progs/editors/vscode.nix b/progs/editors/vscode.nix new file mode 100644 index 0000000..f029890 --- /dev/null +++ b/progs/editors/vscode.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vscode"; + main-repo = "nix"; + branch = "unstable"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + extras = { + }; + }; + # TODO : Needs to be configured (profiles.defaults) +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.vscode = { + enable = true; + package = packages.vscode; + mutableExtensionsDir = true; + # profiles.Default={ + + # }; + }; + }; +}) diff --git a/progs/gaming.nix b/progs/gaming.nix new file mode 100644 index 0000000..7cda97f --- /dev/null +++ b/progs/gaming.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "gaming"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + mangohud + protonup-ng + ]; + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/user/.steam/root/compatibilitytools.d"; + }; + programs = { + gamemode.enable = true; + steam = { + enable = true; + gamescopeSession.enable = true; + }; + }; + }; +}) diff --git a/progs/misc.nix b/progs/misc.nix new file mode 100644 index 0000000..845948c --- /dev/null +++ b/progs/misc.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "misc"; + subfolder = "misc"; + imports = [ + "ledger" + "bambu-studio" + "bitwarden" + "fastfetch" + "iso-image-writer" + "vesktop" + "kdeconnect" + "vlc" + "authenticator" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + ledger.enable = true; + bambu-studio.enable = true; + bitwarden.enable = true; + fastfetch.enable = true; + iso-image-writer.enable = true; + kdeconnect.enable = true; + vesktop.enable = true; + vlc.enable = true; + authenticator.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/misc/authenticator.nix b/progs/misc/authenticator.nix new file mode 100644 index 0000000..31daea7 --- /dev/null +++ b/progs/misc/authenticator.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "authenticator"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + authenticator + ]; + }; +}) diff --git a/progs/misc/bambu-studio.nix b/progs/misc/bambu-studio.nix new file mode 100644 index 0000000..b0b1ed4 --- /dev/null +++ b/progs/misc/bambu-studio.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bambu-studio"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + bambu-studio + ]; + }; +}) diff --git a/progs/misc/bitwarden.nix b/progs/misc/bitwarden.nix new file mode 100644 index 0000000..8eb283d --- /dev/null +++ b/progs/misc/bitwarden.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bitwarden"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; + # PROJECT TODO : make it configurable (settings,...) +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + bitwarden-desktop + bitwarden-cli + ]; + }; +}) diff --git a/progs/misc/fastfetch.nix b/progs/misc/fastfetch.nix new file mode 100644 index 0000000..1fa906e --- /dev/null +++ b/progs/misc/fastfetch.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fastfetch"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + fastfetch + ]; + }; +}) diff --git a/progs/misc/iso-image-writer.nix b/progs/misc/iso-image-writer.nix new file mode 100644 index 0000000..747b1df --- /dev/null +++ b/progs/misc/iso-image-writer.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "iso-image-writer"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + kdePackages.isoimagewriter + ]; + }; +}) diff --git a/progs/misc/kdeconnect.nix b/progs/misc/kdeconnect.nix new file mode 100644 index 0000000..17363f6 --- /dev/null +++ b/progs/misc/kdeconnect.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "kdeconnect"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + services.kdeconnect.enable = true; + }; + System = { + networking.firewall = rec { + allowedTCPPortRanges = [ + { + from = 1714; + to = 1764; + } + ]; + allowedUDPPortRanges = allowedTCPPortRanges; + }; + }; +}) diff --git a/progs/misc/ledger.nix b/progs/misc/ledger.nix new file mode 100644 index 0000000..c1723b8 --- /dev/null +++ b/progs/misc/ledger.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ledger"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + ledger-live-desktop + ]; + }; + System = { + hardware.ledger.enable = true; + }; +}) diff --git a/progs/misc/vesktop.nix b/progs/misc/vesktop.nix new file mode 100644 index 0000000..ca5d5ef --- /dev/null +++ b/progs/misc/vesktop.nix @@ -0,0 +1,26 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vesktop"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; + # TODO : configure (themes,...) +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.vesktop = { + enable = true; + }; + }; +}) diff --git a/progs/misc/vlc.nix b/progs/misc/vlc.nix new file mode 100644 index 0000000..32a7b9f --- /dev/null +++ b/progs/misc/vlc.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vlc"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + vlc + ]; + }; +}) diff --git a/progs/office.nix b/progs/office.nix new file mode 100644 index 0000000..8b70ed3 --- /dev/null +++ b/progs/office.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "office"; + subfolder = "office"; + imports = [ + "libreoffice" + "qualculate" + "thunderbird" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + libreoffice.enable = true; + qualculate.enable = true; + thunderbird.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/office/libreoffice.nix b/progs/office/libreoffice.nix new file mode 100644 index 0000000..d099174 --- /dev/null +++ b/progs/office/libreoffice.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "libreoffice"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + libreoffice + ]; + }; +}) diff --git a/progs/office/qualculate.nix b/progs/office/qualculate.nix new file mode 100644 index 0000000..912419f --- /dev/null +++ b/progs/office/qualculate.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "qualculate"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + qalculate-qt + ]; + }; +}) diff --git a/progs/office/thunderbird.nix b/progs/office/thunderbird.nix new file mode 100644 index 0000000..c7f75fb --- /dev/null +++ b/progs/office/thunderbird.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "thunderbird"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; + # TODO : Configure (profiles,...) +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs = { + thunderbird = { + enable = true; + profiles = {}; + }; + }; + }; +}) diff --git a/progs/shells.nix b/progs/shells.nix new file mode 100644 index 0000000..eae0867 --- /dev/null +++ b/progs/shells.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "shells"; + togglable = false; + subfolder = "shells"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "zsh" + ]; + extras = { + aliases = + { + nrs = "sudo nixos-rebuild switch"; + ls = "ls --color -ah"; + ".." = "cd .."; + myip = "myip"; + } + // (tools.ifExists config "config.progs.shells.zsh.yazi" { + yazi = "y"; + }); + + p10k = { + enable = true; + }; + }; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + zsh = { + enable = true; + inherit (extras) aliases p10k; + }; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/shells/zsh.nix b/progs/shells/zsh.nix new file mode 100644 index 0000000..5672867 --- /dev/null +++ b/progs/shells/zsh.nix @@ -0,0 +1,90 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "zsh"; + subfolder = "zsh"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "oh-my-zsh" + "fzf" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + aliases = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + description = "An attribute set of shell aliases to define."; + default = {}; + }; + p10k.enable = lib.mkEnableOption "Enables powerlevel10k zsh theme."; + }; + settings = { + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "sudo" + ]; + }; + fzf.enable = true; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.file.".p10k.zsh".text = "${builtins.readFile "${./${subfolder}/.p10k.zsh}"}"; + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + history = { + path = "$HOME/.zsh_history"; + size = 10000; + ignoreAllDups = true; + }; + defaultKeymap = "emacs"; + plugins = [ + (tools.ifExists config "config.progs.shells.zsh.p10k" { + name = "powerlevel10k"; + src = packages.zsh-powerlevel10k; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + }) + (tools.ifExists config "config.progs.shells.zsh.fzf" { + name = "fzf-tab"; + src = "${packages.zsh-fzf-tab}/share/fzf-tab"; + }) + ]; + initContent = + (tools.ifExists config "config.progs.shells.zsh.p10k" + "source ~/.p10k.zsh\n") + + "${builtins.readFile ./${subfolder}/init.zsh}" + + (tools.ifExists config "config.progs.shells.zsh.fzf" + "zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls -a --color $realpath'"); + + siteFunctions = + { + myip = "echo $(ip addr show wlp0s20f3 | grep -oP 'inet \\K[^/]+')"; + } + // ( + tools.ifExists config "config.progs.tuis.yazi" { + y = "${builtins.readFile ../tuis/yazi/y.zsh}"; + } + ); + + shellAliases = cfg.aliases; + }; + }; + System = { + programs.zsh.enable = true; + }; +}) diff --git a/progs/shells/zsh/.p10k.zsh b/progs/shells/zsh/.p10k.zsh new file mode 100644 index 0000000..85f7296 --- /dev/null +++ b/progs/shells/zsh/.p10k.zsh @@ -0,0 +1,1720 @@ +# Generated by Powerlevel10k configuration wizard on 2025-02-18 at 09:34 CET. +# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 37983. +# Wizard options: nerdfont-v3 + powerline, large icons, unicode, lean, 2 lines, +# disconnected, no frame, sparse, many icons, concise, transient_prompt, +# instant_prompt=verbose. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate +# your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + #os_icon # os identifier + dir # current directory + vcs # git status + # =========================[ Line #2 ]========================= + newline # \n + prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + status # exit code of the last command + command_execution_time # duration of the last command + background_jobs # presence of background jobs + direnv # direnv status (https://direnv.net/) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) + anaconda # conda environment (https://conda.io/) + pyenv # python environment (https://github.com/pyenv/pyenv) + goenv # go environment (https://github.com/syndbg/goenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) + terraform # terraform workspace (https://www.terraform.io) + # terraform_version # terraform version (https://www.terraform.io) + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + toolbox # toolbox name (https://github.com/containers/toolbox) + context # user@hostname + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + yazi # yazi shell (https://github.com/sxyazi/yazi) + nnn # nnn shell (https://github.com/jarun/nnn) + lf # lf shell (https://github.com/gokcehan/lf) + xplr # xplr shell (https://github.com/sayanarijit/xplr) + vim_shell # vim shell indicator (:sh) + midnight_commander # midnight commander shell (https://midnight-commander.org/) + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + chezmoi_shell # chezmoi shell (https://www.chezmoi.io/) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap + todo # todo items (https://github.com/todotxt/todo.txt-cli) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + per_directory_history # Oh My Zsh per-directory-history local/global indicator + # cpu_arch # CPU architecture + # time # current time + # =========================[ Line #2 ]========================= + newline + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=nerdfont-v3 + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=moderate + + # Basic style options that define the overall look of your prompt. You probably don't want to + # change them. + typeset -g POWERLEVEL9K_BACKGROUND= # transparent background + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true + + # Connect left prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX= + + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll + # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and + # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below. + typeset -g POWERLEVEL9K_SHOW_RULER=false + typeset -g POWERLEVEL9K_RULER_CHAR='─' # reasonable alternative: '·' + typeset -g POWERLEVEL9K_RULER_FOREGROUND=242 + + # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─' + # to make it easier to see the alignment between left and right prompt and to separate prompt + # from command output. It serves the same purpose as ruler (see above) without increasing + # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false + # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact + # prompt. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 + # Add a space between the end of left prompt and the filler. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' ' + # Add a space between the filler and the start of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' ' + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND= + # Custom icon. + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' + + ################################[ prompt_char: prompt symbol ]################################ + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + + ##################################[ dir: current directory ]################################## + # Default current directory color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 + # Display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-versions + .mise.toml + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":" where is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # The default icon shown next to non-writable and non-existent directories when + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different + # directories. It must be an array with 3 * N elements. Each triplet consists of: + # + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with + # extended_glob option enabled. + # 2. Directory class for the purpose of styling. + # 3. An empty string. + # + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. + # + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=( + # '~/work(|/*)' WORK '' + # '~(|/*)' HOME '' + # '*' DEFAULT '') + # + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or + # WORK_NON_EXISTENT. + # + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an + # option to define custom colors and icons for different directory classes. + # + # # Styling for WORK. + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NOT_WRITABLE. + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39 + # + # # Styling for WORK_NON_EXISTENT. + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39 + # + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls + # back to POWERLEVEL9K_DIR_FOREGROUND. + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # Custom prefix. + # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin ' + + #####################################[ vcs: git status ]###################################### + # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' + + # Untracked files icon. It's really a question mark, your font isn't broken. + # Change the value of this parameter to show a different icon. + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + + # Formatter for Git status. + # + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # + # You can edit the function to customize how Git status looks. + # + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + function my_git_formatter() { + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. + typeset -g my_git_format=$P9K_CONTENT + return + fi + + if (( $1 )); then + # Styling for up-to-date Git status. + local meta='%f' # default foreground + local clean='%76F' # green foreground + local modified='%178F' # yellow foreground + local untracked='%39F' # blue foreground + local conflicted='%196F' # red foreground + else + # Styling for incomplete and stale Git status. + local meta='%244F' # grey foreground + local clean='%244F' # grey foreground + local modified='%244F' # grey foreground + local untracked='%244F' # grey foreground + local conflicted='%244F' # grey foreground + fi + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + + if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then + # Tip: Uncomment the next line to display '=' if up to date with the remote. + # res+=" ${clean}=" + fi + + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + + typeset -g my_git_format=$res + } + functions -M my_git_formatter 2>/dev/null + + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with + # more than this many files in the index. Negative value means infinity. + # + # If you are working in Git repositories with tens of millions of files and seeing performance + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's + # config: `git config bash.showDirtyState false`. + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 + + # Don't show Git status in prompt for repositories whose workdir matches this pattern. + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' + + # Disable the default Git status formatting. + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true + # Install our own Git status formatter. + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' + typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' + # Enable counters for staged, unstaged, etc. + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 + + # Icon color. + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 + typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 + # Custom icon. + # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon ' + + # Show status of repositories of these types. You can add svn and/or hg if you are + # using them. If you do, your prompt may become slow even when your current directory + # isn't in an svn or hg repository. + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + + # These settings are used for repositories other than Git or when gitstatusd fails and + # Powerlevel10k has to fall back to using vcs_info. + typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 + typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 + + ##########################[ status: exit code of the last command ]########################### + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and + # style them independently from the regular OK and ERROR state. + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true + + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as + # it will signify success by turning green. + typeset -g POWERLEVEL9K_STATUS_OK=false + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when some part of a pipe command fails but the overall exit status is zero. It may look + # like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as + # it will signify error by turning red. + typeset -g POWERLEVEL9K_STATUS_ERROR=false + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when the last command was terminated by a signal. + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 + # Use terse signal names: "INT" instead of "SIGINT(2)". + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + + # Status when some part of a pipe command fails and the overall exit status is also non-zero. + # It may look like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + + ###################[ command_execution_time: duration of the last command ]################### + # Show duration of the last command if takes at least this many seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 + # Show this many fractional digits. Zero means round to seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + # Execution time color. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101 + # Duration format: 1d 2h 3m 4s. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + # Custom icon. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook ' + + #######################[ background_jobs: presence of background jobs ]####################### + # Don't show the number of background jobs. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + # Background jobs color. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ direnv: direnv status (https://direnv.net/) ]######################## + # Direnv color. + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### + # Default asdf color. Only used to display tools for which there is no color override (see below). + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND. + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66 + + # There are four parameters that can be used to hide asdf tools. Each parameter describes + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to + # hide a tool, it gets shown. + # + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: + # + # asdf local python 3.8.1 + # asdf global python 3.8.1 + # + # After running both commands the current python version is 3.8.1 and its source is "local" as + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, + # it'll hide python version in this case because 3.8.1 is the same as the global version. + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't + # contain "local". + + # Hide tool versions that don't come from one of these sources. + # + # Available sources: + # + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" + # - local `asdf current` says "set by /some/not/home/directory/file" + # - global `asdf current` says "set by /home/username/file" + # + # Note: If this parameter is set to (shell local global), it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) + + # If set to false, hide tool versions that are the same as global. + # + # Note: The name of this parameter doesn't reflect its meaning at all. + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false + + # If set to false, hide tool versions that are equal to "system". + # + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true + + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern + # in the current directory, or its parent directory, or its grandparent directory, and so on. + # + # Note: If this parameter is set to empty value, it won't hide tools. + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. + # + # Example: Hide nodejs version when there is no package.json and no *.js files in the current + # directory, in `..`, in `../..` and so on. + # + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= + + # Ruby version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Python version from asdf. + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Go version from asdf. + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Node.js version from asdf. + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Rust version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' + + # .NET Core version from asdf. + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_DOTNET_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Flutter version from asdf. + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Lua version from asdf. + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Java version from asdf. + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Perl version from asdf. + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Erlang version from asdf. + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Elixir version from asdf. + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Postgres version from asdf. + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' + + # PHP version from asdf. + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Haskell version from asdf. + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Julia version from asdf. + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' + + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### + # NordVPN connection indicator color. + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39 + # Hide NordVPN connection indicator when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= + # Custom icon. + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## + # Ranger shell color. + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]##################### + # Yazi shell color. + typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### + # Nnn shell color. + typeset -g POWERLEVEL9K_NNN_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]####################### + # lf shell color. + typeset -g POWERLEVEL9K_LF_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## + # xplr shell color. + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72 + # Custom icon. + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### + # Vim shell indicator color. + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34 + # Custom icon. + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### + # Midnight Commander shell color. + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178 + # Custom icon. + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## + # Nix shell color. + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74 + + # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store. + # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false + + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]################## + # chezmoi shell color. + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33 + # Custom icon. + # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ disk_usage: disk usage ]################################## + # Colors for different levels of disk usage. + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160 + # Thresholds for different levels of disk usage (percentage points). + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false + # Custom icon. + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ ram: free RAM ]####################################### + # RAM color. + typeset -g POWERLEVEL9K_RAM_FOREGROUND=66 + # Custom icon. + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################################[ swap: used swap ]###################################### + # Swap color. + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96 + # Custom icon. + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ load: CPU load ]###################################### + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. + typeset -g POWERLEVEL9K_LOAD_WHICH=5 + # Load color when load is under 50%. + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66 + # Load color when load is between 50% and 70%. + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178 + # Load color when load is over 70%. + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166 + # Custom icon. + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ + # Todo color. + typeset -g POWERLEVEL9K_TODO_FOREGROUND=110 + # Hide todo when the total number of tasks is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true + # Hide todo when the number of tasks after filtering is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false + + # Todo format. The following parameters are available within the expansion. + # + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. + # + # These variables correspond to the last line of the output of `todo.sh -p ls`: + # + # TODO: 24 of 42 tasks shown + # + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. + # + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ + # Timewarrior color. + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110 + # If the tracked task is longer than 24 characters, truncate and append "…". + # Tip: To always display tasks without truncation, delete the following parameter. + # Tip: To hide task names and display just the icon when time tracking is enabled, set the + # value of the following parameter to "". + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + + # Custom icon. + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## + # Taskwarrior color. + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74 + + # Taskwarrior segment format. The following parameters are available within the expansion. + # + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. + # + # Zero values are represented as empty parameters. + # + # The default format: + # + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' + # + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]####### + # Color when using local/global history. + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130 + + # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION='' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION='' + + # Custom icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ cpu_arch: CPU architecture ]################################ + # CPU architecture color. + typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172 + + # Hide the segment when on a specific CPU architecture. + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION= + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ context: user@hostname ]################################## + # Context color when running with privileges. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178 + # Context color in SSH without privileges. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180 + # Default context color (no privileges, no SSH). + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180 + + # Context format when running with privileges: bold user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m' + # Context format when in SSH without privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + # Default context format (no privileges, no SSH): user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + + # Don't show context unless running with privileges or in SSH. + # Tip: Remove the next line to always show context. + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith ' + + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### + # Python virtual environment color. + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37 + # Don't show Python version next to the virtual environment name. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + # If set to "false", won't show virtualenv if pyenv is already shown. + # If set to "if-different", won't show virtualenv if it's the same as pyenv. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + # Separate environment name from Python version only with a space. + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ anaconda: conda environment (https://conda.io/) ]###################### + # Anaconda environment color. + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37 + + # Anaconda segment format. The following parameters are available within the expansion. + # + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). + # + # CONDA_PROMPT_MODIFIER can be configured with the following command: + # + # conda config --set env_prompt '({default_env}) ' + # + # The last argument is a Python format string that can use the following variables: + # + # - prefix The same as CONDA_PREFIX. + # - default_env The same as CONDA_DEFAULT_ENV. + # - name The last segment of CONDA_PREFIX. + # - stacked_env Comma-separated list of names in the environment stack. The first element is + # always the same as default_env. + # + # Note: '({default_env}) ' is the default value of env_prompt. + # + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former + # is empty. + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' + + # Custom icon. + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ + # Pyenv color. + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37 + # Hide python version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) + # If set to false, hide python version if it's the same as global: + # $(pyenv version-name) == $(pyenv global). + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide python version if it's equal to "system". + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true + + # Pyenv segment format. The following parameters are available within the expansion. + # + # - P9K_CONTENT Current pyenv environment (pyenv version-name). + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). + # + # The default format has the following logic: + # + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or + # starts with "$P9K_PYENV_PYTHON_VERSION/". + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ + # Goenv color. + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37 + # Hide go version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) + # If set to false, hide go version if it's the same as global: + # $(goenv version-name) == $(goenv global). + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide go version if it's equal to "system". + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## + # Nodenv color. + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70 + # Hide node version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) + # If set to false, hide node version if it's the same as global: + # $(nodenv version-name) == $(nodenv global). + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### + # Nvm color. + typeset -g POWERLEVEL9K_NVM_FOREGROUND=70 + # If set to false, hide node version if it's the same as default: + # $(nvm version current) == $(nvm version default). + typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ + # Nodeenv color. + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70 + # Don't show Node version next to the environment name. + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false + # Separate environment name from Node version only with a space. + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############################[ node_version: node.js version ]############################### + # Node version color. + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70 + # Show node version only when in a directory tree containing package.json. + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ go_version: go version (https://golang.org) ]######################## + # Go version color. + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37 + # Show go version only when in a go project subdirectory. + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## + # Rust version color. + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37 + # Show rust version only when in a rust project subdirectory. + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ php_version: php version (https://www.php.net/) ]###################### + # PHP version color. + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99 + # Show PHP version only when in a PHP project subdirectory. + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### + # Laravel version color. + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161 + # Custom icon. + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ java_version: java version (https://www.java.com/) ]#################### + # Java version color. + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32 + # Show java version only when in a java project subdirectory. + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true + # Show brief version. + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false + # Custom icon. + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### + # Package color. + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117 + # Package format. The following parameters are available within the expansion. + # + # - P9K_PACKAGE_NAME The value of `name` field in package.json. + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. + # + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' + # Custom icon. + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## + # Rbenv color. + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 + # Hide ruby version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) + # If set to false, hide ruby version if it's the same as global: + # $(rbenv version-name) == $(rbenv global). + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide ruby version if it's equal to "system". + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## + # Rvm color. + typeset -g POWERLEVEL9K_RVM_FOREGROUND=168 + # Don't show @gemset at the end. + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false + # Don't show ruby- at the front. + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ + # Fvm color. + typeset -g POWERLEVEL9K_FVM_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### + # Lua color. + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32 + # Hide lua version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) + # If set to false, hide lua version if it's the same as global: + # $(luaenv version-name) == $(luaenv global). + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide lua version if it's equal to "system". + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ + # Java color. + typeset -g POWERLEVEL9K_JENV_FOREGROUND=32 + # Hide java version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) + # If set to false, hide java version if it's the same as global: + # $(jenv version-name) == $(jenv global). + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide java version if it's equal to "system". + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ + # Perl color. + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67 + # Hide perl version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) + # If set to false, hide perl version if it's the same as global: + # $(plenv version-name) == $(plenv global). + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide perl version if it's equal to "system". + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ + # Perlbrew color. + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 + # Show perlbrew version only when in a perl project subdirectory. + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true + # Don't show "perl-" at the front. + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ + # PHP color. + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99 + # Hide php version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) + # If set to false, hide php version if it's the same as global: + # $(phpenv version-name) == $(phpenv global). + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide php version if it's equal to "system". + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### + # Scala color. + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160 + # Hide scala version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) + # If set to false, hide scala version if it's the same as global: + # $(scalaenv version-name) == $(scalaenv global). + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide scala version if it's equal to "system". + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### + # Haskell color. + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172 + # Hide haskell version if it doesn't come from one of these sources. + # + # shell: version is set by STACK_YAML + # local: version is set by stack.yaml up the directory tree + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) + # If set to false, hide haskell version if it's the same as in the implicit global project. + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true + # Custom icon. + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# + # Show kubecontext only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show kubecontext. + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl' + + # Kubernetes context classes for the purpose of using different colors, icons and expansions with + # different contexts. + # + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current kubernetes context gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current kubernetes context is "deathray-testing/default", its class is TEST + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext + # segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # Within the expansion the following parameters are always available: + # + # - P9K_CONTENT The content that would've been displayed if there was no content + # expansion defined. + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE + # in the output of `kubectl config get-contexts`. If there is no + # namespace, the parameter is set to "default". + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the + # output of `kubectl config get-contexts`. + # + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), + # the following extra parameters are available: + # + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. + # + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=gke + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + # + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=eks + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + # Append the current context's namespace if it's not "default". + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # Custom prefix. + # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat ' + + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# + # Don't show terraform workspace if it's literally "default". + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current terraform workspace gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current terraform workspace is "project_test", its class is TEST because "project_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## + # Terraform version color. + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38 + # Custom icon. + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# + # Show aws only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show aws. + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current AWS profile gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current AWS profile is "company_test", its class is TEST + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # AWS segment format. The following parameters are available within the expansion. + # + # - P9K_AWS_PROFILE The name of the current AWS profile. + # - P9K_AWS_REGION The region associated with the current AWS profile. + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' + + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# + # AWS Elastic Beanstalk environment color. + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70 + # Custom icon. + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## + # Show azure only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show azure. + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current azure account name gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current azure account is "company_test", its class is TEST because "company_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + + # Azure account name color. + typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32 + # Custom icon. + # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### + # Show gcloud only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show gcloud. + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' + # Google cloud color. + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32 + + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative + # enough. You can use the following parameters in the expansions. Each of them corresponds to the + # output of `gcloud` tool. + # + # Parameter | Source + # -------------------------|-------------------------------------------------------------------- + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. + # + # Obtaining project name requires sending a request to Google servers. This can take a long time + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets + # set and gcloud prompt segment transitions to state COMPLETE. + # + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' + + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name + # this often. Negative value disables periodic polling. In this mode project name is retrieved + # only when the current configuration, account or project id changes. + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 + + # Custom icon. + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# + # Show google_app_cred only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show google_app_cred. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' + + # Google application credentials classes for the purpose of using different colors, icons and + # expansions with different credentials. + # + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first + # element in each pair defines a pattern against which the current kubernetes context gets + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION + # parameters, you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. + # The first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD + # '*:*test*:*' TEST + # '*' DEFAULT) + # + # If your current Google application credentials is "service_account deathray-testing x@y.com", + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD # These values are examples that are unlikely + # '*:*test*:*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # You can use the following parameters in the expansion. Each of them corresponds to one of the + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. + # + # Parameter | JSON key file field + # ---------------------------------+--------------- + # P9K_GOOGLE_APP_CRED_TYPE | type + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### + # Toolbox color. + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' + # Custom icon. + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin ' + + ###############################[ public_ip: public IP address ]############################### + # Public IP color. + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94 + # Custom icon. + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ########################[ vpn_ip: virtual private network indicator ]######################### + # VPN IP color. + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81 + # When on VPN, show just an icon without the IP address. + # Tip: To display the private IP address when on VPN, remove the next line. + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN + # to see the name of the interface. + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)' + # If set to true, show one segment per matching network interface. If set to false, show only + # one segment corresponding to the first matching network interface. + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false + # Custom icon. + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### + # IP color. + typeset -g POWERLEVEL9K_IP_FOREGROUND=38 + # The following parameters are accessible within the expansion: + # + # Parameter | Meaning + # ----------------------+------------------------------------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F⇣$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F⇡$P9K_IP_TX_RATE}' + # Show information for the first network interface whose name matches this regular expression. + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' + # Custom icon. + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #########################[ proxy: system-wide http/https/ftp proxy ]########################## + # Proxy color. + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ battery: internal battery ]################################# + # Show battery in red when it's below this level and not connected to power supply. + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160 + # Show battery in green when it's charging or fully charged. + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70 + # Show battery in yellow when it's discharging. + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178 + # Battery pictograms going from low to high level of charge. + typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079' + # Don't show the remaining time to charge/discharge. + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false + + #####################################[ wifi: wifi speed ]##################################### + # WiFi color. + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68 + # Custom icon. + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). + # + # # Wifi colors and icons for different signal strength levels (low to high). + # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values + # + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' + # + # The following parameters are accessible within the expansions: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_WIFI_SSID | service set identifier, a.k.a. network name + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) + + ####################################[ time: current time ]#################################### + # Current time color. + typeset -g POWERLEVEL9K_TIME_FOREGROUND=66 + # Format for the current time: 09:51:02. See `man 3 strftime`. + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' + # If set to true, time will update when you hit enter. This way prompts for the past + # commands will contain the start times of their commands as opposed to the default + # behavior where they contain the end times of their preceding commands. + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + # Custom icon. + # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat ' + + # Example of a user-defined prompt segment. Function prompt_example will be called on every + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. + # + # Type `p10k help segment` for documentation and a more sophisticated example. + function prompt_example() { + p10k segment -f 208 -i '⭐' -t 'hello, %n' + } + + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job + # is to generate the prompt segment for display in instant prompt. See + # https://github.com/romkatv/powerlevel10k#instant-prompt. + # + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k + # will replay these calls without actually calling instant_prompt_*. It is imperative that + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this + # rule is not observed, the content of instant prompt will be incorrect. + # + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. + function instant_prompt_example() { + # Since prompt_example always makes the same `p10k segment` calls, we can call it from + # instant_prompt_example. This will give us the same `example` prompt segment in the instant + # and regular prompts. + prompt_example + } + + # User-defined prompt segments can be customized the same way as built-in segments. + # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt + # when accepting a command line. Supported values: + # + # - off: Don't change prompt when accepting a command line. + # - always: Trim down prompt when accepting a command line. + # - same-dir: Trim down prompt when accepting a command line unless this is the first command + # typed after changing current working directory. + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + + # Instant prompt mode. + # + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found + # it incompatible with your zsh configuration files. + # - quiet: Enable instant prompt and don't print warnings when detecting console output + # during zsh initialization. Choose this if you've read and understood + # https://github.com/romkatv/powerlevel10k#instant-prompt. + # - verbose: Enable instant prompt and print a warning when detecting console output during + # zsh initialization. Choose this if you've never tried instant prompt, haven't + # seen the warning, or if you are unsure what this all means. + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose + + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you + # really need it. + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + + # If p10k is already loaded, reload configuration. + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. + (( ! $+functions[p10k] )) || p10k reload +} + +# Tell `p10k configure` which file it should overwrite. +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' diff --git a/progs/shells/zsh/fzf.nix b/progs/shells/zsh/fzf.nix new file mode 100644 index 0000000..38ee165 --- /dev/null +++ b/progs/shells/zsh/fzf.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fzf"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + home.packages = with packages; [ + zsh-fzf-tab + ]; + }; +}) diff --git a/progs/shells/zsh/init.zsh b/progs/shells/zsh/init.zsh new file mode 100644 index 0000000..f147827 --- /dev/null +++ b/progs/shells/zsh/init.zsh @@ -0,0 +1,2 @@ +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' +zstyle ':completion:*' menu no \ No newline at end of file diff --git a/progs/shells/zsh/oh-my-zsh.nix b/progs/shells/zsh/oh-my-zsh.nix new file mode 100644 index 0000000..45cc5fd --- /dev/null +++ b/progs/shells/zsh/oh-my-zsh.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "oh-my-zsh"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + plugins = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = "A list of Oh My Zsh plugins to enable."; + default = []; + }; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.zsh.oh-my-zsh = { + enable = true; + plugins = cfg.plugins; + }; + }; +}) diff --git a/progs/terminals.nix b/progs/terminals.nix new file mode 100644 index 0000000..fb25ac5 --- /dev/null +++ b/progs/terminals.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "terminals"; + subfolder = "terminals"; + imports = [ + "ghostty" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + ghostty.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/terminals/ghostty.nix b/progs/terminals/ghostty.nix new file mode 100644 index 0000000..a6a8534 --- /dev/null +++ b/progs/terminals/ghostty.nix @@ -0,0 +1,33 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ghostty"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.ghostty = { + enable = true; + enableZshIntegration = true; + installVimSyntax = true; + settings = { + working-directory = "$HOME"; + gtk-single-instance = true; + window-inherit-working-directory = true; + background-opacity = "0.8"; + }; + }; + }; +}) diff --git a/progs/tuis.nix b/progs/tuis.nix new file mode 100644 index 0000000..ebb672e --- /dev/null +++ b/progs/tuis.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "tuis"; + subfolder = "tuis"; + imports = [ + "yazi" + "lazygit" + "lazydocker" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + settings = { + yazi.enable = true; + lazygit.enable = true && config.progs.dev.git.enable; + lazydocker.enable = true && config.progs.dev.virtualization.docker.enable; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/progs/tuis/lazydocker.nix b/progs/tuis/lazydocker.nix new file mode 100644 index 0000000..e042465 --- /dev/null +++ b/progs/tuis/lazydocker.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lazydocker"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + home.packages = with packages; [ + lazydocker + ]; + }; +}) diff --git a/progs/tuis/lazygit.nix b/progs/tuis/lazygit.nix new file mode 100644 index 0000000..3e866fa --- /dev/null +++ b/progs/tuis/lazygit.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lazygit"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs = { + lazygit = { + enable = true; + }; + }; + }; +}) diff --git a/progs/tuis/yazi.nix b/progs/tuis/yazi.nix new file mode 100644 index 0000000..45fabb4 --- /dev/null +++ b/progs/tuis/yazi.nix @@ -0,0 +1,57 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "yazi"; + subfolder = "yazi"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} program and related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + programs.yazi = { + enable = true; + initLua = ./${subfolder}/init.lua; + settings = { + mgr = { + show_hidden = true; + show_symlink = true; + }; + }; + plugins = with packages.yaziPlugins; + { + inherit chmod; + inherit sudo; + inherit git; + inherit rich-preview; + } + // { + "githead" = ./${subfolder}/plugins/githead; + "kdeconnect-send" = ./${subfolder}/plugins/kdeconnect-send; + }; + keymap = { + mgr = { + prepend_keymap = [ + { + on = [""]; + run = "plugin kdeconnect-send"; + desc = "Send selected files via KDE Connect"; + } + ]; + }; + }; + }; + }; +}) diff --git a/static/yazi/init.lua b/progs/tuis/yazi/init.lua similarity index 100% rename from static/yazi/init.lua rename to progs/tuis/yazi/init.lua diff --git a/static/yazi/plugins/githead/main.lua b/progs/tuis/yazi/plugins/githead/main.lua similarity index 100% rename from static/yazi/plugins/githead/main.lua rename to progs/tuis/yazi/plugins/githead/main.lua diff --git a/static/yazi/plugins/kdeconnect-send/main.lua b/progs/tuis/yazi/plugins/kdeconnect-send/main.lua similarity index 100% rename from static/yazi/plugins/kdeconnect-send/main.lua rename to progs/tuis/yazi/plugins/kdeconnect-send/main.lua diff --git a/progs/tuis/yazi/y.zsh b/progs/tuis/yazi/y.zsh new file mode 100644 index 0000000..ffc0c0f --- /dev/null +++ b/progs/tuis/yazi/y.zsh @@ -0,0 +1,5 @@ +local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd +yazi "$@" --cwd-file="$tmp" +IFS= read -r -d \'\' cwd < "$tmp" +[ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd" +rm -f -- "$tmp" \ No newline at end of file diff --git a/sys.nix b/sys.nix new file mode 100644 index 0000000..a4ef4f3 --- /dev/null +++ b/sys.nix @@ -0,0 +1,93 @@ +{ + config, + lib, + pkgs-list, + tools, + baseSettings, + parentPathAsList ? [], + ... +}: let + ###### # user defined + name = "sys"; + subfolder = "sys"; + repo = "nix"; + branch = "latest"; + imports = [ + "bootloader" + "lang" + "users" + "hardware" + "networking" + "filesystems" + "fonts" + ]; + options = { + label = lib.mkOption { + type = lib.types.str; + default = "ConfigLabel"; + description = "The label of the system configuration."; + }; + tags = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = "The tags associated with the system configuration."; + }; + version = lib.mkOption { + type = lib.types.str; + default = "25.11"; + description = "The system state version."; + }; + hostname = lib.mkOption { + type = lib.types.str; + default = "NixOs"; + description = "The system hostname."; + }; + main-user = lib.mkOption { + type = lib.types.str; + default = "matthieu"; + description = "The main user of the system."; + }; + }; + newSettings.${name} = { + lang = { + timeZone = "America/Toronto"; + defaultLang = "en_US.UTF-8"; + keyboardLayout = "fr"; + }; + }; + settings = (lib.recursiveUpdate baseSettings newSettings).${name}; + ###### # computed + packages = pkgs-list.${repo}.${branch}; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = lib.path.subpath.join (lib.lists.flatten ["./." parentPathAsList]); + inheritedSettings = + if imports != null || settings != null + then + tools.inheritance.settings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + ###### # user defined + System = { + system.stateVersion = config.sys.version; + nix.settings.experimental-features = ["nix-command" "flakes"]; + boot.kernelPackages = packages.linuxPackages_latest; + }; + ###### # computed + SystemConfig = + Common + // System; +in + tools.contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list currentDirPath; # generated + inherit options imports; # user defined + togglable = false; + context = "System"; + Config = SystemConfig; + } diff --git a/sys/bootloader.nix b/sys/bootloader.nix new file mode 100644 index 0000000..c88109b --- /dev/null +++ b/sys/bootloader.nix @@ -0,0 +1,39 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bootloader"; + togglable = false; + subfolder = "bootloader"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + boot.loader = { + grub = { + enable = true; + devices = ["nodev"]; + efiSupport = true; + useOSProber = true; + extraEntries = '' + ${builtins.readFile "${./${subfolder}/00_Arch_Btrfs}"} + ${builtins.readFile "${./${subfolder}/99_UEFI_Firmware}"} + ''; + }; + efi = { + canTouchEfiVariables = true; + }; + }; + }; +}) diff --git a/static/grub/00_Arch_Btrfs b/sys/bootloader/00_Arch_Btrfs similarity index 100% rename from static/grub/00_Arch_Btrfs rename to sys/bootloader/00_Arch_Btrfs diff --git a/static/grub/99_UEFI_Firmware b/sys/bootloader/99_UEFI_Firmware similarity index 100% rename from static/grub/99_UEFI_Firmware rename to sys/bootloader/99_UEFI_Firmware diff --git a/sys/filesystems.nix b/sys/filesystems.nix new file mode 100644 index 0000000..7fa946b --- /dev/null +++ b/sys/filesystems.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "filesystems"; + togglable = false; + subfolder = "filesystems"; + imports = [ + "ntfs" + "exfat" + "btrfs" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + settings = { + ntfs.enable = true; + exfat.enable = true; + btrfs.enable = true; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; +}) diff --git a/sys/filesystems/btrfs.nix b/sys/filesystems/btrfs.nix new file mode 100644 index 0000000..e27be21 --- /dev/null +++ b/sys/filesystems/btrfs.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "btrfs"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + btrfs-progs + ]; + boot.supportedFilesystems = { + btrfs = true; + }; + }; +}) diff --git a/sys/filesystems/exfat.nix b/sys/filesystems/exfat.nix new file mode 100644 index 0000000..0c0f0c0 --- /dev/null +++ b/sys/filesystems/exfat.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "exfat"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + exfat + exfatprogs + ]; + boot.supportedFilesystems = { + exfat = true; + }; + }; +}) diff --git a/sys/filesystems/ntfs.nix b/sys/filesystems/ntfs.nix new file mode 100644 index 0000000..c0f2f77 --- /dev/null +++ b/sys/filesystems/ntfs.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ntfs"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} filesystem support."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + ntfs3g + ntfsprogs + ]; + boot.supportedFilesystems = { + ntfs = true; + }; + }; +}) diff --git a/sys/fonts.nix b/sys/fonts.nix new file mode 100644 index 0000000..d93cec2 --- /dev/null +++ b/sys/fonts.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "fonts"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + fonts.packages = with packages; [nerd-fonts.jetbrains-mono]; + }; +}) diff --git a/sys/hardware.nix b/sys/hardware.nix new file mode 100644 index 0000000..3eddba5 --- /dev/null +++ b/sys/hardware.nix @@ -0,0 +1,45 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "hardware"; + togglable = false; + subfolder = "hardware"; + main-repo = "nix"; + branch = "latest"; + imports = [ + "nvidia" + "printer" + "sound" + "bluetooth" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + settings = { + nvidia.enable = false; # TODO FIX : module to fix once a stable and working nvidia version is available + printer.enable = true; + sound.enable = true; + bluetooth.enable = true; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + services = { + libinput.enable = true; # TODO FIX - not sure where to put it yet + }; + environment.systemPackages = with packages; [ + lshw + usbutils + ]; + }; +}) diff --git a/sys/hardware/bluetooth.nix b/sys/hardware/bluetooth.nix new file mode 100644 index 0000000..756a6c8 --- /dev/null +++ b/sys/hardware/bluetooth.nix @@ -0,0 +1,25 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "bluetooth"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + hardware = { + bluetooth.enable = true; + }; + }; +}) diff --git a/system/hardware/nvidia.nix b/sys/hardware/nvidia.nix similarity index 53% rename from system/hardware/nvidia.nix rename to sys/hardware/nvidia.nix index 1ce2244..324c2c0 100644 --- a/system/hardware/nvidia.nix +++ b/sys/hardware/nvidia.nix @@ -1,15 +1,24 @@ +# TODO : FIX !!! { config, lib, - inputs, + pkgs-list, + parentPathAsList, + tools, ... -} @ Inputs: let -in { - options = { - nvidia.enable = lib.mkEnableOption "Enable NVIDIA proprietary driver support."; +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "nvidia"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; }; - imports = []; - config = lib.mkIf config.nvidia.enable { +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { hardware = { graphics = { enable32Bit = true; @@ -38,4 +47,4 @@ in { "modesetting" ]; }; -} +}) diff --git a/sys/hardware/printer.nix b/sys/hardware/printer.nix new file mode 100644 index 0000000..5c2de98 --- /dev/null +++ b/sys/hardware/printer.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "printer"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + Home = { + }; + System = { + services.printing.enable = true; + environment.systemPackages = with packages; [ + cnijfilter2 + ]; + }; +}) diff --git a/sys/hardware/sound.nix b/sys/hardware/sound.nix new file mode 100644 index 0000000..5df7614 --- /dev/null +++ b/sys/hardware/sound.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "sound"; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables and configures ${name} hardware support."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + services.pipewire = { + enable = true; + pulse.enable = true; + }; + }; +}) diff --git a/sys/lang.nix b/sys/lang.nix new file mode 100644 index 0000000..5316319 --- /dev/null +++ b/sys/lang.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "lang"; + togglable = false; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + timeZone = lib.mkOption { + type = lib.types.str; + default = "America/Toronto"; + description = "The system time zone."; + }; + defaultLang = lib.mkOption { + type = lib.types.str; + default = "en_US.UTF-8"; + description = "The system default locale."; + }; + keyboardLayout = lib.mkOption { + type = lib.types.str; + default = "fr"; + description = "The system keyboard layout."; + }; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + time.timeZone = cfg.timeZone; + i18n = { + defaultLocale = cfg.defaultLang; + extraLocaleSettings = { + LC_TIME = "fr_FR.UTF-8"; + }; + }; + console.keyMap = cfg.keyboardLayout; + services.xserver.xkb.layout = cfg.keyboardLayout; + }; +}) diff --git a/sys/networking.nix b/sys/networking.nix new file mode 100644 index 0000000..c028452 --- /dev/null +++ b/sys/networking.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "networking"; + subfolder = "networking"; + togglable = false; + main-repo = "nix"; + branch = "latest"; + imports = [ + "vpn" + "ssh" + ]; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + settings = { + vpn.enable = true; + ssh.enable = true; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + networking = { + hostName = "NixOs"; # TODO FEAT : make this part of baseSettings + networkmanager = { + enable = true; + }; + + firewall = { + enable = true; + }; + }; + environment.systemPackages = with packages; [ + iproute2 + bridge-utils + iw + ]; + }; +}) diff --git a/sys/networking/ssh.nix b/sys/networking/ssh.nix new file mode 100644 index 0000000..6bde036 --- /dev/null +++ b/sys/networking/ssh.nix @@ -0,0 +1,24 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "ssh"; + togglable = false; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + services.openssh.enable = true; + }; +}) diff --git a/sys/networking/vpn.nix b/sys/networking/vpn.nix new file mode 100644 index 0000000..f15677d --- /dev/null +++ b/sys/networking/vpn.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "vpn"; + togglable = false; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + environment.systemPackages = with packages; [ + openvpn + ]; + networking.networkmanager.plugins = with packages; [ + networkmanager-openvpn + ]; + }; +}) diff --git a/sys/users.nix b/sys/users.nix new file mode 100644 index 0000000..666c531 --- /dev/null +++ b/sys/users.nix @@ -0,0 +1,49 @@ +{ + config, + lib, + pkgs-list, + parentPathAsList, + tools, + ... +}: let + moduleParams = tools.moduleParams rec { + inherit config lib pkgs-list parentPathAsList tools; + name = "users"; + togglable = false; + main-repo = "nix"; + branch = "latest"; + options = { + enable = lib.mkEnableOption "Enables ${name} related settings."; + }; + }; +in (tools.fullModule rec { + inherit (moduleParams) config lib pkgs-list parentPathAsList tools; + inherit (moduleParams) name togglable subfolder main-repo branch extras imports specialImports options settings; + inherit (moduleParams) packages currentPathAsList currentDirPath cfg inheritedSettings Common; + System = { + users = { + # mutableUsers = false; # BAZINGA + defaultUserShell = packages.zsh; + users = { + ${config.sys.main-user} = { + # password = ""; # BAZINGA + # ignoreShellProgramCheck = true; # BAZINGA + description = "Moi"; + isNormalUser = true; + group = "users"; + extraGroups = [ + "wheel" # Enable sudo for the user. + ]; + createHome = true; + home = "/home/${config.sys.main-user}"; + /* + openssh.authorizedKeys.keys = [ + "" + ]; + */ + }; + # root.ignoreShellProgramCheck = true; # BAZINGA + }; + }; + }; +}) diff --git a/system.nix b/system.nix deleted file mode 100644 index ee94724..0000000 --- a/system.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - inputs, - system, - pkgs-list, - ... -} @ Inputs: let - name = "system"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options.${name} = { - version = lib.mkOption { - type = lib.types.str; - default = "25.11"; - description = "The system state version."; - }; - }; - imports = map (file: ./system/${file}) [ - "bootloader.nix" - "lang.nix" - "users.nix" - "hardware.nix" - "networking.nix" - "filesystems.nix" - ]; - config = { - system.stateVersion = config.system.version; - nix.settings.experimental-features = ["nix-command" "flakes"]; - boot.kernelPackages = packages.linuxPackages_latest; - }; -} diff --git a/system/bootloader.nix b/system/bootloader.nix deleted file mode 100644 index 3810f15..0000000 --- a/system/bootloader.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = []; - config = { - boot.loader = { - grub = { - enable = true; - devices = ["nodev"]; - efiSupport = true; - useOSProber = true; - extraEntries = '' - ${builtins.readFile "${../static/grub/00_Arch_Btrfs}"} - ${builtins.readFile "${../static/grub/99_UEFI_Firmware}"} - ''; - }; - efi = { - canTouchEfiVariables = true; - }; - }; - }; -} diff --git a/system/filesystems.nix b/system/filesystems.nix deleted file mode 100644 index 16a6cfa..0000000 --- a/system/filesystems.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "filesystems"; - folder = "filesystems"; - # cfg = config.${name}; - # settings = { - # ntfs.enable = cfg.enable && cfg.ntfs; - # exfat.enable = cfg.enable && cfg.exfat; - # btrfs.enable = cfg.enable && cfg.btrfs; - # }; -in { - # options.${name} = { - # enable = lib.mkEnableOption "Enables and configures ${name}."; - # ntfs = lib.mkEnableOption "Enables and configures NTFS filesystem support."; - # exfat = lib.mkEnableOption "Enables and configures exFAT filesystem support."; - # btrfs = lib.mkEnableOption "Enables and configures Btrfs filesystem support."; - # }; - imports = map (file: ./${folder}/${file}) [ - "exfat.nix" - "btrfs.nix" - "ntfs.nix" - ]; - config = { - # inherit (settings) ntfs exfat btrfs; - }; -} diff --git a/system/filesystems/btrfs.nix b/system/filesystems/btrfs.nix deleted file mode 100644 index 7b22b44..0000000 --- a/system/filesystems/btrfs.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "btrfs"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options.${name} = { - # enable = lib.mkEnableOption "Enables and configures Btrfs."; - # }; - imports = []; - config = { - #lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - btrfs-progs - ]; - boot.supportedFilesystems = { - btrfs = true; - }; - }; -} diff --git a/system/filesystems/exfat.nix b/system/filesystems/exfat.nix deleted file mode 100644 index 7982c47..0000000 --- a/system/filesystems/exfat.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "exfat"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options = { - # enable = lib.mkEnableOption "Enables and configures exFAT."; - # }; - imports = []; - config = { - #lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - exfat - exfatprogs - ]; - boot.supportedFilesystems = { - exfat = true; - }; - }; -} diff --git a/system/filesystems/ntfs.nix b/system/filesystems/ntfs.nix deleted file mode 100644 index e19165c..0000000 --- a/system/filesystems/ntfs.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - # name = "ntfs"; - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; - # cfg = config.${name}; -in { - # options = { - # enable = lib.mkEnableOption "Enables and configures NTFS."; - # }; - imports = []; - config = { - # lib.mkIf cfg.enable - environment.systemPackages = with packages; [ - ntfs3g - ntfsprogs - ]; - boot.supportedFilesystems = { - ntfs = true; - }; - }; -} diff --git a/system/hardware.nix b/system/hardware.nix deleted file mode 100644 index 5984001..0000000 --- a/system/hardware.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options = {}; - imports = map (file: ./hardware/${file}) [ - "nvidia.nix" - "printer.nix" - "sound.nix" - ]; - config = { - nvidia.enable = true; - # Enable Ledger hardware wallet support, seeing if better options are possible - hardware = { - # ledger.enable = true; - bluetooth.enable = true; - }; - # not sure where to put it yet TODO : FIX - services.libinput.enable = true; - services.blueman.enable = true; - # services.xserver.videoDrivers = - environment.systemPackages = with packages; [ - lshw - ]; - }; -} diff --git a/system/hardware/printer.nix b/system/hardware/printer.nix deleted file mode 100644 index e906876..0000000 --- a/system/hardware/printer.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - packages = Inputs.pkgs-list.nix.latest; -in { - options = { - }; - imports = []; - config = { - services.printing.enable = true; - environment.systemPackages = with packages; [ - cnijfilter2 - ]; - }; -} diff --git a/system/hardware/sound.nix b/system/hardware/sound.nix deleted file mode 100644 index 0c950ce..0000000 --- a/system/hardware/sound.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = "pipewire"; -in { - options = {}; - imports = []; - config = { - services.${name} = { - enable = true; - pulse.enable = true; - }; - }; -} diff --git a/system/lang.nix b/system/lang.nix deleted file mode 100644 index e72695f..0000000 --- a/system/lang.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: let -in { - options = {}; - imports = []; - config = { - time.timeZone = "America/Toronto"; - i18n = { - defaultLocale = "en_US.UTF-8"; - extraLocaleSettings = { - LC_TIME = "fr_FR.UTF-8"; - }; - }; - console.keyMap = "fr"; - services.xserver.xkb.layout = "fr"; - }; -} diff --git a/system/networking.nix b/system/networking.nix deleted file mode 100644 index dbe3e25..0000000 --- a/system/networking.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - repo = "nix"; - branch = "latest"; - packages = Inputs.pkgs-list.${repo}.${branch}; -in { - options = {}; - imports = []; - config = { - networking = { - hostName = "NixOs"; - networkmanager = { - enable = true; - plugins = with packages; [ - networkmanager-openvpn - ]; - }; - - firewall = rec { - allowedTCPPortRanges = [ - { - from = 1714; - to = 1764; - } - ]; # FOR KDE CONNECT TODO: find a better way to do this - allowedUDPPortRanges = allowedTCPPortRanges; # FOR KDE CONNECT - }; - # TODO : fix proxy settings - # proxy.default = "http://user:password@proxy:port/"; - # proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - }; - services = { - }; ## TODO : FIX OPENSSH - environment.systemPackages = with packages; [ - openvpn - ]; - }; -} diff --git a/system/users.nix b/system/users.nix deleted file mode 100644 index 767084d..0000000 --- a/system/users.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - latest = Inputs.pkgs-list.nix.latest; -in { - options = {}; - imports = []; - config = { - users = { - defaultUserShell = latest.zsh; - users = { - matthieu = { - description = "Moi"; - isNormalUser = true; - group = "users"; - extraGroups = [ - "wheel" - "docker" - "libvirtd" - ]; # Enable ‘sudo’ for the user. - createHome = true; - home = "/home/matthieu"; - /* - openssh.authorizedKeys.keys = [ - "" - ]; - */ - }; - }; - groups = { - libvirtd.members = ["matthieu"]; - }; - }; - }; -} diff --git a/templates/bundle-import.nix b/templates/bundle-import.nix deleted file mode 100644 index 9e63cf8..0000000 --- a/templates/bundle-import.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - folder = ""; -in { - options = {}; - imports = map (file: ./${folder}/${file}) []; - config = {}; -} diff --git a/templates/home/pkg.nix b/templates/home/pkg.nix deleted file mode 100644 index 8179f57..0000000 --- a/templates/home/pkg.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = ""; - branch = ""; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - home.packages = with packages; [ - ]; - }; -} diff --git a/templates/home/program.nix b/templates/home/program.nix deleted file mode 100644 index d2ee50a..0000000 --- a/templates/home/program.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = ""; -in { - options = {}; - imports = []; - config = { - programs.${name} = { - - }; - }; -} diff --git a/templates/module.nix b/templates/module.nix deleted file mode 100644 index 784f78e..0000000 --- a/templates/module.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let -in { - options = {}; - imports = []; - config = {}; -} diff --git a/templates/service.nix b/templates/service.nix deleted file mode 100644 index 55f79d7..0000000 --- a/templates/service.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - name = ""; -in { - options = {}; - imports = []; - config = { - services.${name} = { - - }; - }; -} diff --git a/templates/system/pkg.nix b/templates/system/pkg.nix deleted file mode 100644 index e291949..0000000 --- a/templates/system/pkg.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - inputs, - ... -} @ Inputs: let - main-repo = ""; - branch = ""; - packages = Inputs.pkgs-list.${main-repo}.${branch}; -in { - options = {}; - imports = []; - config = { - environment.systemPackages = with packages; [ - ]; - }; -} diff --git a/templates/universal/multi.nix b/templates/universal/multi.nix deleted file mode 100644 index cf46dc9..0000000 --- a/templates/universal/multi.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - config, - lib, - pkgs-list, - ... -} @ Inputs: let - name = ""; - subfolder = ""; - # repo = ""; - # branch = ""; - # packages = pkgs-list.${repo}.${branch}; - options.${name} = { - enable = lib.mkEnableOption "Enables and configures ${name}"; - }; - cfg = config.${name}; - # settings = { - # }; -in { - config = { - homeModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.homeModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - nixosModule = { - lib, - config, - ... - }: { - inherit options; - imports = - map (file: ./${subfolder}/${file}.nix) [ - ] - ++ map (file: - (import ./${subfolder}/${file}.nix { - inherit config; - inherit lib; - inherit (Inputs) pkgs-list inputs; - }).config.nixosModule) []; - config = lib.mkIf cfg.enable { - # inherit (settings); - }; - }; - }; -} diff --git a/tools.nix b/tools.nix new file mode 100644 index 0000000..48bebc1 --- /dev/null +++ b/tools.nix @@ -0,0 +1,260 @@ +{lib, ...}: +with lib; let + contextModuleImport = { + imports, + subfolder, + context, + currentDirPath, + ... + } @ deps: + map (file: + (import ./${currentDirPath}/${subfolder}/${file}.nix { + inherit (deps) inputs config lib pkgs-list tools; + parentPathAsList = deps.currentPathAsList; + }).config.${ + context + }) + imports; + + inheritance = { + settings = { + currentPathAsList, + imports, + settings, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + builtins.listToAttrs (map (setting: { + name = + if (currentPathAsList == []) + then setting + else first; + value = + if (currentPathAsList == []) + then settings.${setting} + else + (inheritance.settings { + currentPathAsList = lists.drop 1 currentPathAsList; + imports = imports; + settings = settings; + }); + }) + imports); + config = { + currentPathAsList, + config, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in + if (currentPathAsList == []) + then config + else + inheritance.config { + currentPathAsList = lists.drop 1 currentPathAsList; + config = config.${first}; + }; + options = { + currentPathAsList, + options, + }: let + first = lists.last (lists.take 1 currentPathAsList); + in (listToAttrs [ + { + name = first; + value = + if (currentPathAsList == [first]) + then options + else + inheritance.options { + currentPathAsList = lists.drop 1 currentPathAsList; + inherit options; + }; + } + ]); + }; + + contextualModule = { + options ? null, + specialOptions ? null, + imports ? null, + specialImports ? null, + togglable ? true, + Config, + context, + ... + } @ deps: { + lib, + config, + ... + }: let + inherit (deps) subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + in + ( + if options != null + then { + options = + inheritance.options { + inherit currentPathAsList options; + } + // ( + if specialOptions != null + then + if builtins.hasAttr context specialOptions + then specialOptions + else {} + else {} + ); + } + else { + } + ) + // ( + if imports != null + then { + imports = + contextModuleImport { + inherit imports subfolder tools currentPathAsList lib config pkgs-list currentDirPath inputs; + context = context; + } + ++ ( + if specialImports != null + then + if builtins.hasAttr context specialImports + then specialImports.${context} + else [] + else [] + ); + } + else + ( + if specialImports != null + then { + imports = + if builtins.hasAttr context specialImports + then specialImports.${context} + else []; + } + else { + } + ) + ) + // { + config = + if togglable + then (mkIf deps.cfg.enable Config) + else Config; + }; + + moduleParams = { + config, + lib, + pkgs-list, + parentPathAsList, + tools, + name, + togglable ? true, + subfolder ? null, + main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. + branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. + imports ? null, + specialImports ? null, + options ? null, + specialOptions ? null, + settings ? null, + extras ? null, + }: rec { + inherit config lib pkgs-list parentPathAsList tools; + inherit name togglable subfolder main-repo branch imports specialImports options specialOptions settings extras; + packages = + if main-repo != null && branch != null + then pkgs-list.${main-repo}.${branch} + else null; + currentPathAsList = parentPathAsList ++ [name]; + currentDirPath = path.subpath.join (lists.flatten ["./." parentPathAsList]); + cfg = inheritance.config { + inherit config currentPathAsList; + }; + inheritedSettings = + if imports != null || settings != null + then + inheritance.settings { + inherit currentPathAsList imports settings; + } + else { + }; + Common = + inheritedSettings + // { + }; + }; + fullModule = { + config, + lib, + pkgs-list, + parentPathAsList, + tools, + name, + togglable ? true, + subfolder ? null, + main-repo ? null, # pas sur que ce soit necessaire plus j'y reflechis. + branch ? null, # pas sur que ce soit necessaire plus j'y reflechis. + imports ? null, + specialImports ? null, + options ? null, + specialOptions ? null, + settings ? null, + extras ? null, + packages ? null, + currentPathAsList, + currentDirPath, + cfg, + inheritedSettings, + Common, + Home ? {}, + System ? {}, + }: let + HomeConfig = Common // Home; + SystemConfig = Common // System; + in { + config = { + Home = contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + inherit specialImports specialOptions; # user defined + inherit togglable; # user defined + context = "Home"; + Config = HomeConfig; + }; + System = contextualModule { + inherit lib config tools; # deps + inherit subfolder currentPathAsList pkgs-list cfg currentDirPath; # generated + inherit imports options; # user defined + inherit specialImports specialOptions; # user defined + inherit togglable; # user defined + context = "System"; + Config = SystemConfig; + }; + }; + }; + + ifExists = config: configPathString: value: let + pathAsList = splitString "." configPathString; + name = lists.last pathAsList; + parentPathAsList = lists.drop 1 (lists.reverseList (lists.drop 1 (lists.reverseList pathAsList))); + parentPath = attrsets.getAttrFromPath parentPathAsList config; + configPath = attrsets.getAttrFromPath (lists.drop 1 pathAsList) config; + modulePath = configPath.enable; + emptyValue = + if isString value + then "" + else if isList value + then [] + else {}; + in + if parentPath.enable && builtins.hasAttr name parentPath && modulePath + then value + else emptyValue; +in { + inherit inheritance contextModuleImport contextualModule moduleParams fullModule ifExists; +} diff --git a/utils.nix b/utils.nix deleted file mode 100644 index d25f3e5..0000000 --- a/utils.nix +++ /dev/null @@ -1,73 +0,0 @@ -{lib, ...}: let - importWithArgs = { - file, - context, - args, - }: - ( - import file - args - ).config.${ - context - }; - # multiContextModule = { - # lib, - # module-path, - # pkgs-list, - # name, - # subfolder ? "", - # repo ? "", - # branch ? "", - # options ? {}, - # settings ? {}, - # multiContextImports ? [], - # homeOnlyImports ? [], - # homeConfig ? {}, - # nixosOnlyImports ? [], - # nixosConfig ? {}, - # }: let - # packages = - # if repo != "" && branch != "" - # then pkgs-list.${repo}.${branch} - # else null; - # opt_path = module-path.${name}; - # cfg = options.${opt_path}; - # in { - # inherit options; - # imports = multiContextImports; - # homeModule = { - # lib, - # config, - # ... - # }: { - # imports = homeOnlyImports; - # config = lib.mkIf (cfg.enable) homeConfig; - # }; - # nixosModule = { - # lib, - # config, - # ... - # }: { - # imports = nixosOnlyImports; - # config = lib.mkIf (cfg.enable) nixosConfig; - # }; - # }; - contextualModule = { - name, - config, - lib, - options, - import-list ? [], - context, - }: let - cfg = config.${name}; - in { - config = lib.mkIf cfg.enable { - inherit options; - imports = import-list; - }; - }; -in { - inherit importWithArgs; - # multiContextModule; -}