diff --git a/flake.lock b/flake.lock index a19b836..90537ec 100644 --- a/flake.lock +++ b/flake.lock @@ -221,7 +221,7 @@ }, "devshell": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_6", "nixpkgs": [ "nixvim", "nixpkgs" @@ -260,11 +260,11 @@ "doomemacs": { "flake": false, "locked": { - "lastModified": 1720224658, - "narHash": "sha256-ugNtDBO92zFbRx7URXdvtzmGJGLPG6tzDC72UOpf9IA=", + "lastModified": 1720315114, + "narHash": "sha256-YeXi76K7U2U8u+s3B76zDtJYEglOD+JtIq0o/sGYFJI=", "owner": "doomemacs", "repo": "doomemacs", - "rev": "7bb5df4cd4ae3a0916616dd7e50566b3caa9c931", + "rev": "21a427c33b57ab66eb7caa2830c0dfe930509318", "type": "github" }, "original": { @@ -280,11 +280,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1720256942, - "narHash": "sha256-ohfS5d4yR+zdLTICE78rNJmqL/en0BNPGm5zCK6N0QA=", + "lastModified": 1720343386, + "narHash": "sha256-6OVidxIFSmlK7dWcU8UvTu5erv9yLXeCdRftaDR9wQk=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "6d9837126e1be779c8f34ed9fdd609e676a1b891", + "rev": "907ffaedc98068a23118e7d9d90ac7200095b3cd", "type": "github" }, "original": { @@ -301,11 +301,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1720247208, - "narHash": "sha256-isVgeEPkkRz2Tw3vx0J+HyIvKmwpyY4SNcw7MbKZa/I=", + "lastModified": 1720333712, + "narHash": "sha256-qZmpIPUe4mwdBGmKPBJ5KzvXH6GOCXheiusTAgNjAAA=", "owner": "nix-community", "repo": "fenix", - "rev": "27cbad7cc093c5298231b87daa04db9610053651", + "rev": "b78c98c53a46e2a2d6479a920f98aa0aeae56281", "type": "github" }, "original": { @@ -660,23 +660,8 @@ } }, "flake-utils_3": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { "inputs": { - "systems": "systems_7" + "systems": "systems_6" }, "locked": { "lastModified": 1710146030, @@ -692,10 +677,43 @@ "type": "github" } }, + "flake-utils_4": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flake-utils_5": { "inputs": { "systems": "systems_8" }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_9" + }, "locked": { "lastModified": 1701680307, "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", @@ -710,9 +728,9 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_7": { "inputs": { - "systems": "systems_10" + "systems": "systems_11" }, "locked": { "lastModified": 1685518550, @@ -728,6 +746,21 @@ "type": "github" } }, + "flakey-profile": { + "locked": { + "lastModified": 1712898590, + "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", + "owner": "lf-", + "repo": "flakey-profile", + "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", + "type": "github" + }, + "original": { + "owner": "lf-", + "repo": "flakey-profile", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -934,11 +967,11 @@ ] }, "locked": { - "lastModified": 1720188602, - "narHash": "sha256-lC3byBmhVZFzWl/dCic8+cKUEEAXAswWOYjq4paFmbo=", + "lastModified": 1720327769, + "narHash": "sha256-kAsg3Lg4YKKpGw+f1W2s5hzjP8B0y/juowvjK8utIag=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3582e5151498bc4d757e8361431ace8529e7bb7", + "rev": "6b7ce96f34b324e4e104abc30d06955d216bac71", "type": "github" }, "original": { @@ -1203,7 +1236,7 @@ }, "lib-aggregate": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_5", "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { @@ -1220,6 +1253,41 @@ "type": "github" } }, + "lix": { + "flake": false, + "locked": { + "lastModified": 1718419213, + "narHash": "sha256-WY7BGnu5PnbK4O8cKKv9kvxwzZIGbIQUQLGPHFXitI0=", + "rev": "253546d5fbf8a5aa60ac8164c1b4f5794dc4e9d1", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/253546d5fbf8a5aa60ac8164c1b4f5794dc4e9d1.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/lix/archive/2.90.0-rc1.tar.gz" + } + }, + "lix-module": { + "inputs": { + "flake-utils": "flake-utils_2", + "flakey-profile": "flakey-profile", + "lix": "lix", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1718778548, + "narHash": "sha256-64lB/NO6AQ6z6EDCemPSYZWX/Qc6Rt04cPia5T5v01g=", + "rev": "29ed1bb67751e5b107d08df35d18dda6d45324e9", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/29ed1bb67751e5b107d08df35d18dda6d45324e9.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0-rc1.tar.gz" + } + }, "naersk": { "inputs": { "nixpkgs": [ @@ -1245,7 +1313,7 @@ "neovim-flake": { "inputs": { "flake-parts": "flake-parts_2", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nil": "nil", "nixpkgs": [ "nixpkgs" @@ -1350,15 +1418,15 @@ "plugin-vim-vsnip": "plugin-vim-vsnip", "plugin-which-key": "plugin-which-key", "rnix-lsp": "rnix-lsp", - "systems": "systems_6", + "systems": "systems_7", "zig": "zig" }, "locked": { - "lastModified": 1720032146, - "narHash": "sha256-m+442OenNQB3SAhVWh2WmKVIauv+OFvl8a7U1weW19s=", + "lastModified": 1720293276, + "narHash": "sha256-MUhm7MFTQymDgKziGaEC34jFFpFROv3ZXlD6K+IF4Ek=", "owner": "notashelf", "repo": "nvf", - "rev": "3f5ed9e979f3048dc7ad07b0e9f0a6546588ce6c", + "rev": "f1849c0ce57452988bf600e354f33d864881b9ac", "type": "github" }, "original": { @@ -1511,6 +1579,22 @@ "type": "github" } }, + "nixos-hardware": { + "locked": { + "lastModified": 1719895800, + "narHash": "sha256-xNbjISJTFailxass4LmdWeV4jNhAlmJPwj46a/GxE6M=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "6e253f12b1009053eff5344be5e835f604bb64cd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, "nixpak": { "inputs": { "flake-parts": "flake-parts_5", @@ -1596,16 +1680,16 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1719957072, - "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", + "lastModified": 1720110830, + "narHash": "sha256-E5dN9GDV4LwMEduhBLSkyEz51zM17XkWZ3/9luvNOPs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", + "rev": "c0d0be00d4ecc4b51d2d6948e37466194c1e6c51", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -1618,11 +1702,11 @@ "nixpkgs": "nixpkgs_10" }, "locked": { - "lastModified": 1720254101, - "narHash": "sha256-uLdBJWNxJcq/avc9lSOZ9IbURy+fnRTkApPOkQJhGDY=", + "lastModified": 1720297047, + "narHash": "sha256-RXwn9ABn7cdMcachf8m6iu5nHDfY621movgpIM6M9vw=", "owner": "nix-community", "repo": "nixpkgs-wayland", - "rev": "3077de42e37d6835fc29196efda76991493c96c9", + "rev": "6cebaff2235ddd938eac062c48dfc14477e56b82", "type": "github" }, "original": { @@ -1821,11 +1905,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1720262861, - "narHash": "sha256-KMCrvbTAF9mdEv8ZcG6jqMCKmsZH7K5VTRw5Iv57Zl4=", + "lastModified": 1720298683, + "narHash": "sha256-CNtfHBwlKuTTanwmUI85Z/HkHShnqZs+WYyxQR8zRFY=", "owner": "nix-community", "repo": "nixvim", - "rev": "04a255ed7e24b0d54a158de5252e8471ac4c6d8f", + "rev": "6674dea8403747827431d4d8497c34023f93d047", "type": "github" }, "original": { @@ -1852,11 +1936,11 @@ }, "nur": { "locked": { - "lastModified": 1720262786, - "narHash": "sha256-lOw+DePpT6JEzudxzq/yhDqWW9fOga9vrojV2E1DgAs=", + "lastModified": 1720340553, + "narHash": "sha256-yltkWY9tbcTO1E9lsegEUcqcHdF+F3Yb8O79CjSAHrg=", "owner": "nix-community", "repo": "NUR", - "rev": "7907d743f2a29c574db99f3297da264fe5fe7a6e", + "rev": "64eb60afcb54464e61d34fda417e7a5c7a935c21", "type": "github" }, "original": { @@ -3466,8 +3550,10 @@ "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", + "lix-module": "lix-module", "neovim-flake": "neovim-flake", "neovim-nightly-overlay": "neovim-nightly-overlay", + "nixos-hardware": "nixos-hardware", "nixpak": "nixpak", "nixpkgs": "nixpkgs_8", "nixpkgs-wayland": "nixpkgs-wayland", @@ -3482,11 +3568,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1720175310, - "narHash": "sha256-PQG46r17hX06Q1akkuVSeMD1hfiNBENWVlgGn1SF/SE=", + "lastModified": 1720292183, + "narHash": "sha256-CPcdVpsgmNXYVsw4nKPrM23J5mYXtiotYMz2BjPDIKU=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "f2afcb874e7410121c366ae601660abe327e320b", + "rev": "058c88da66797eb588b47a4aac3e42847d1333d7", "type": "github" }, "original": { @@ -3535,7 +3621,7 @@ "nixpkgs" ], "searx-randomizer": "searx-randomizer", - "systems": "systems_9" + "systems": "systems_10" }, "locked": { "lastModified": 1719058240, @@ -3576,7 +3662,7 @@ }, "spicetify-nix": { "inputs": { - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_7", "nixpkgs": "nixpkgs_11" }, "locked": { @@ -3658,6 +3744,21 @@ } }, "systems_10": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_11": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -3779,16 +3880,16 @@ }, "systems_9": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -3883,7 +3984,7 @@ "zig": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "nixpkgs": "nixpkgs_6" }, "locked": { diff --git a/flake.nix b/flake.nix index a7f2938..f31fe9b 100644 --- a/flake.nix +++ b/flake.nix @@ -14,11 +14,17 @@ url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; }; + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; # Plugin to get split monitor workspaces split-monitor-workspaces = { url = "github:Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; }; + # Lix because fast rebuild times are cool + lix-module = { + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0-rc1.tar.gz"; + inputs.nixpkgs.follows = "nixpkgs"; + }; # Sandboxing nixpak = { url = "github:nixpak/nixpak"; diff --git a/hosts/default.nix b/hosts/default.nix index d963b97..f53a67a 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -21,7 +21,9 @@ in { ../modules inputs.home-manager.nixosModules.home-manager inputs.agenix.nixosModules.default + inputs.lix-module.nixosModules.default inputs.stylix.nixosModules.stylix + inputs.nixos-hardware.nixosModules.dell-xps-15-7590-nvidia ]; }; } diff --git a/hosts/vali/hermit/configuration.nix b/hosts/vali/hermit/configuration.nix index 636926d..3f5f710 100644 --- a/hosts/vali/hermit/configuration.nix +++ b/hosts/vali/hermit/configuration.nix @@ -62,7 +62,6 @@ mpv.enable = true; kitty.enable = true; newsboat.enable = true; - foot.enable = true; fish.enable = true; nh.enable = true; waybar.enable = true; @@ -70,6 +69,10 @@ schizofox.enable = true; anyrun.enable = true; ags.enable = true; + foot = { + enable = true; + server = false; + }; }; editors = { emacs = { @@ -89,10 +92,11 @@ stylix = { enable = true; scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-pale.yaml"; - cursor = {size = 16;}; + cursor = {size = 28;}; fontsizes = { - terminal = 12; - popups = 12; + terminal = 14; + popups = 14; + applications = 14; }; image = ../../../assets/wallpapers/tiredgod.png; }; diff --git a/hosts/vali/hermit/profile.nix b/hosts/vali/hermit/profile.nix index 45e6158..c843f8e 100644 --- a/hosts/vali/hermit/profile.nix +++ b/hosts/vali/hermit/profile.nix @@ -4,7 +4,7 @@ _: { ../../../options/common/bluetooth.nix ../../../options/desktop/fonts.nix ../../../options/common/networking.nix - # ../../../options/common/gpu/nvidia.nix + ../../../options/common/gpu/nvidia.nix ../../../options/desktop/monitors.nix ../../../overlay.nix ]; diff --git a/modules/cli/default.nix b/modules/cli/default.nix index 78901d3..e8000c8 100644 --- a/modules/cli/default.nix +++ b/modules/cli/default.nix @@ -1 +1 @@ -_: {imports = [./fish.nix ./nh.nix];} +_: {imports = [./fish.nix ./nh.nix ./starship.nix];} diff --git a/modules/cli/fish.nix b/modules/cli/fish.nix index ec76ec2..fa1615e 100644 --- a/modules/cli/fish.nix +++ b/modules/cli/fish.nix @@ -45,10 +45,10 @@ in { name = "done"; inherit (pkgs.fishPlugins.done) src; } - { - name = "tide"; - inherit (pkgs.fishPlugins.tide) src; - } + # { + # name = "tide"; + # inherit (pkgs.fishPlugins.tide) src; + # } ]; shellAbbrs = { diff --git a/modules/cli/starship.nix b/modules/cli/starship.nix index 8b00731..73e8032 100644 --- a/modules/cli/starship.nix +++ b/modules/cli/starship.nix @@ -4,15 +4,12 @@ ... }: let inherit (builtins) map; + inherit (config.modules.other.system) username; + hmCfg = config.home-manager.users.${username}; + inherit (lib.strings) concatStrings; in { - home = { - sessionVariables = { - STARSHIP_CACHE = "${config.xdg.cacheHome}/starship"; - }; - }; - - programs.starship = let + home-manager.users.${username} = let elemsConcatted = concatStrings ( map (s: "\$${s}") [ "hostname" @@ -29,75 +26,95 @@ in { ] ); in { - enable = true; + home.sessionVariables = { + STARSHIP_CACHE = "${hmCfg.home.homeDirectory}/.cache/starship"; + }; + programs.starship = { + enable = true; + enableFishIntegration = true; + enableTransience = true; + settings = { + scan_timeout = 2; + command_timeout = 2000; # nixpkgs makes starship implode with lower values + add_newline = false; + line_break.disabled = false; - settings = { - scan_timeout = 2; - command_timeout = 2000; # nixpkgs makes starship implode with lower values - add_newline = false; - line_break.disabled = false; + format = "${elemsConcatted}\n$character"; + # format = concatStrings [ + # "$hostname" + # #"$username" + # "$directory" + # "$shell" + # "$nix_shell" + # "$git_branch" + # "$git_commit" + # "$git_state" + # "$git_status" + # "$jobs" + # "$cmd_duration" + # "\n$character" + # ]; - format = "${elemsConcatted}\n$character"; - - hostname = { - ssh_only = true; - disabled = false; - format = "@[$hostname](bold blue) "; # the whitespace at the end is actually important - }; - - # configure specific elements - character = { - error_symbol = "[](bold red)"; - success_symbol = "[](bold green)"; - vicmd_symbol = "[](bold yellow)"; - format = "$symbol [|](bold bright-black) "; - }; - - username = { - format = "[$user]($style) in "; - }; - - directory = { - truncation_length = 2; - - # removes the read_only symbol from the format, it doesn't play nicely with my folder icon - format = "[ ](bold green) [$path]($style) "; - - # the following removes tildes from the path, and substitutes some folders with shorter names - substitutions = { - "~/Dev" = "Dev"; - "~/Documents" = "Docs"; + hostname = { + ssh_only = true; + disabled = false; + format = "@[$hostname](bold blue) "; # the whitespace at the end is actually important }; + + # configure specific elements + character = { + error_symbol = "[](bold red)"; + success_symbol = "[](bold green)"; + vicmd_symbol = "[](bold yellow)"; + format = "$symbol [|](bold bright-black) "; + }; + + username = { + format = "[$user]($style) in "; + }; + + directory = { + truncation_length = 2; + + # removes the read_only symbol from the format, it doesn't play nicely with my folder icon + format = "[ ](bold green) [$path]($style) "; + + # the following removes tildes from the path, and substitutes some folders with shorter names + substitutions = { + "~/Dev" = "Dev"; + "~/Documents" = "Docs"; + }; + }; + + # git + git_commit.commit_hash_length = 7; + git_branch.style = "bold purple"; + git_status = { + style = "red"; + ahead = "⇡ "; + behind = "⇣ "; + conflicted = " "; + renamed = "»"; + deleted = "✘ "; + diverged = "⇆ "; + modified = "!"; + stashed = "≡"; + staged = "+"; + untracked = "?"; + }; + + # language configurations + # the whitespaces at the end *are* necessary for proper formatting + lua.symbol = "[ ](blue) "; + python.symbol = "[ ](blue) "; + rust.symbol = "[ ](red) "; + nix_shell.symbol = "[󱄅 ](blue) "; + golang.symbol = "[󰟓 ](blue)"; + c.symbol = "[ ](black)"; + nodejs.symbol = "[󰎙 ](yellow)"; + + package.symbol = "📦 "; }; - - # git - git_commit.commit_hash_length = 7; - git_branch.style = "bold purple"; - git_status = { - style = "red"; - ahead = "⇡ "; - behind = "⇣ "; - conflicted = " "; - renamed = "»"; - deleted = "✘ "; - diverged = "⇆ "; - modified = "!"; - stashed = "≡"; - staged = "+"; - untracked = "?"; - }; - - # language configurations - # the whitespaces at the end *are* necessary for proper formatting - lua.symbol = "[ ](blue) "; - python.symbol = "[ ](blue) "; - rust.symbol = "[ ](red) "; - nix_shell.symbol = "[󱄅 ](blue) "; - golang.symbol = "[󰟓 ](blue)"; - c.symbol = "[ ](black)"; - nodejs.symbol = "[󰎙 ](yellow)"; - - package.symbol = "📦 "; }; }; } diff --git a/modules/gui/anyrun/anyrun.nix b/modules/gui/anyrun/anyrun.nix index c06134a..2af1421 100644 --- a/modules/gui/anyrun/anyrun.nix +++ b/modules/gui/anyrun/anyrun.nix @@ -6,7 +6,7 @@ ... }: with lib; let - username = config.modules.other.system.username; + inherit (config.modules.other.system) username; cfg = config.modules.programs.anyrun; in { options.modules.programs.anyrun.enable = mkEnableOption "anyrun"; @@ -20,11 +20,12 @@ in { plugins = with inputs.anyrun.packages.${pkgs.system}; [ applications dictionary - kidex + # kidex rink shell - symbols + # symbols translate + websearch ]; hideIcons = false; ignoreExclusiveZones = false; @@ -42,7 +43,13 @@ in { Config( desktop_actions: false, max_entries: 5, - terminal: Some("kitty"), + terminal: Some("foot"), + ) + ''; + extraConfigFiles."websearch.ron".text = '' + Config( + prefix: "?", + engines: [DuckDuckGo] ) ''; }; diff --git a/modules/other/xdg.nix b/modules/other/xdg.nix index b020786..ae5b3bb 100644 --- a/modules/other/xdg.nix +++ b/modules/other/xdg.nix @@ -1,5 +1,5 @@ {config, ...}: let - username = config.modules.other.system.username; + inherit (config.modules.other.system) username; hmCfg = config.home-manager.users.${username}; primary_browser = "Schizofox.desktop"; @@ -7,7 +7,7 @@ file_manager = "nautilus.desktop"; media_player = "mpv.desktop"; image_viewer = "imv.desktop"; - text_editor = "helix.desktop"; + text_editor = "nvim.desktop"; terminal = "foot.desktop"; in { environment.sessionVariables = {TERMINAL = "${terminal}";}; diff --git a/modules/styling/ags.nix b/modules/styling/ags.nix index c91193b..97e6117 100644 --- a/modules/styling/ags.nix +++ b/modules/styling/ags.nix @@ -13,18 +13,29 @@ in { options.modules.programs.ags.enable = mkEnableOption "ags"; config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + ags + bun + ddcutil + brightnessctl + gtksourceview + webkitgtk + gtksourceview4 + ollama + python311Packages.material-color-utilities + python311Packages.pywayland + pywal + sassc + webp-pixbuf-loader + ydotool + accountsservice + ]; + home-manager.users.${username} = { imports = [inputs.ags.homeManagerModules.default]; programs.ags = { enable = true; configDir = ./config; - extraPackages = with pkgs; [ - ags - bun - gtksourceview - webkitgtk - accountsservice - ]; }; }; }; diff --git a/modules/styling/config.bak/config.js b/modules/styling/config.bak/config.js new file mode 100644 index 0000000..e137af5 --- /dev/null +++ b/modules/styling/config.bak/config.js @@ -0,0 +1,21 @@ +const main = "/tmp/ags/main.js"; + +try { + await Utils.execAsync([ + "bun", + "build", + `${App.configDir}/main.ts`, + "--outfile", + main, + "--external", + "resource://*", + "--external", + "gi://*", + "--external", + "file://*", + ]); + await import(`file://${main}`); +} catch (error) { + console.error(error); + App.quit(); +} diff --git a/modules/styling/config/main.ts b/modules/styling/config.bak/main.ts similarity index 100% rename from modules/styling/config/main.ts rename to modules/styling/config.bak/main.ts diff --git a/modules/styling/config.bak/style.css b/modules/styling/config.bak/style.css new file mode 100644 index 0000000..29f8fdd --- /dev/null +++ b/modules/styling/config.bak/style.css @@ -0,0 +1,40 @@ +window.bar { + background-color: @theme_bg_color; + color: @theme_fg_color; +} + +button { + min-width: 0; + padding-top: 0; + padding-bottom: 0; + background-color: transparent; +} + +button:active { + background-color: @theme_selected_bg_color; +} + +button:hover { + border-bottom: 3px solid @theme_fg_color; +} + +label { + font-weight: bold; +} + +.workspaces button.focused { + border-bottom: 3px solid @theme_selected_bg_color; +} + +.client-title { + color: @theme_selected_bg_color; +} + +.notification { + color: yellow; +} + +levelbar block, +highlight { + min-height: 10px; +} diff --git a/modules/styling/config/assets/arch-symbolic.svg b/modules/styling/config/assets/arch-symbolic.svg new file mode 100644 index 0000000..7de9094 --- /dev/null +++ b/modules/styling/config/assets/arch-symbolic.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/styling/config/assets/debian-symbolic.svg b/modules/styling/config/assets/debian-symbolic.svg new file mode 100644 index 0000000..252f853 --- /dev/null +++ b/modules/styling/config/assets/debian-symbolic.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/styling/config/assets/fedora-symbolic.svg b/modules/styling/config/assets/fedora-symbolic.svg new file mode 100644 index 0000000..1a4e8c8 --- /dev/null +++ b/modules/styling/config/assets/fedora-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + + diff --git a/modules/styling/config/assets/flatpak-symbolic.svg b/modules/styling/config/assets/flatpak-symbolic.svg new file mode 100644 index 0000000..0c2bf62 --- /dev/null +++ b/modules/styling/config/assets/flatpak-symbolic.svg @@ -0,0 +1,52 @@ + + + + + Flatpak + + + + + Flatpak + + + + diff --git a/modules/styling/config/assets/google-gemini-symbolic.svg b/modules/styling/config/assets/google-gemini-symbolic.svg new file mode 100644 index 0000000..81f6729 --- /dev/null +++ b/modules/styling/config/assets/google-gemini-symbolic.svg @@ -0,0 +1,60 @@ + + + + + + + ionicons-v5_logos + + + + + + ionicons-v5_logos + + + + diff --git a/modules/styling/config/assets/nixos-symbolic.svg b/modules/styling/config/assets/nixos-symbolic.svg new file mode 100644 index 0000000..b697b0d --- /dev/null +++ b/modules/styling/config/assets/nixos-symbolic.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + diff --git a/modules/styling/config/assets/openai-symbolic.svg b/modules/styling/config/assets/openai-symbolic.svg new file mode 100644 index 0000000..8ffc912 --- /dev/null +++ b/modules/styling/config/assets/openai-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/modules/styling/config/assets/ubuntu-symbolic.svg b/modules/styling/config/assets/ubuntu-symbolic.svg new file mode 100644 index 0000000..07746c9 --- /dev/null +++ b/modules/styling/config/assets/ubuntu-symbolic.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/styling/config/config.js b/modules/styling/config/config.js index e137af5..e52568f 100644 --- a/modules/styling/config/config.js +++ b/modules/styling/config/config.js @@ -1,21 +1,70 @@ -const main = "/tmp/ags/main.js"; +"use strict"; +// Import +import Gdk from 'gi://Gdk'; +import App from 'resource:///com/github/Aylur/ags/app.js' +import * as Utils from 'resource:///com/github/Aylur/ags/utils.js' +// Widgets +import { Bar, BarCornerTopleft, BarCornerTopright } from './widgets/bar/main.js'; +import Cheatsheet from './widgets/cheatsheet/main.js'; +// import DesktopBackground from './widgets/desktopbackground/main.js'; +// import Dock from './widgets/dock/main.js'; +import Corner from './widgets/screencorners/main.js'; +import Indicator from './widgets/indicators/main.js'; +import Osk from './widgets/onscreenkeyboard/main.js'; +import Overview from './widgets/overview/main.js'; +import Session from './widgets/session/main.js'; +import SideLeft from './widgets/sideleft/main.js'; +import SideRight from './widgets/sideright/main.js'; -try { - await Utils.execAsync([ - "bun", - "build", - `${App.configDir}/main.ts`, - "--outfile", - main, - "--external", - "resource://*", - "--external", - "gi://*", - "--external", - "file://*", - ]); - await import(`file://${main}`); -} catch (error) { - console.error(error); - App.quit(); +const range = (length, start = 1) => Array.from({ length }, (_, i) => i + start); +function forMonitors(widget) { + const n = Gdk.Display.get_default()?.get_n_monitors() || 1; + return range(n, 0).map(widget).flat(1); } + +// SCSS compilation +Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicwal.scss'`); // reset music styles +Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicmaterial.scss'`); // reset music styles +function applyStyle() { + Utils.exec(`sassc ${App.configDir}/scss/main.scss ${App.configDir}/style.css`); + App.resetCss(); + App.applyCss(`${App.configDir}/style.css`); + console.log('[LOG] Styles loaded') +} +applyStyle(); + +const Windows = () => [ + // forMonitors(DesktopBackground), + // Dock(), + Overview(), + forMonitors(Indicator), + Cheatsheet(), + SideLeft(), + SideRight(), + Osk(), + Session(), + // forMonitors(Bar), + // forMonitors(BarCornerTopleft), + // forMonitors(BarCornerTopright), + forMonitors((id) => Corner(id, 'top left')), + forMonitors((id) => Corner(id, 'top right')), + forMonitors((id) => Corner(id, 'bottom left')), + forMonitors((id) => Corner(id, 'bottom right')), +]; +const CLOSE_ANIM_TIME = 210; // Longer than actual anim time to make sure widgets animate fully +export default { + css: `${App.configDir}/style.css`, + stackTraceOnError: true, + closeWindowDelay: { // For animations + 'sideright': CLOSE_ANIM_TIME, + 'sideleft': CLOSE_ANIM_TIME, + 'osk': CLOSE_ANIM_TIME, + }, + windows: Windows().flat(1), +}; + +// Stuff that don't need to be toggled. And they're async so ugh... +// Bar().catch(print); // Use this to debug the bar. Single monitor only. +forMonitors(Bar); +forMonitors(BarCornerTopleft); +forMonitors(BarCornerTopright); diff --git a/modules/styling/config/data/keybinds.js b/modules/styling/config/data/keybinds.js new file mode 100644 index 0000000..8d0eeb0 --- /dev/null +++ b/modules/styling/config/data/keybinds.js @@ -0,0 +1,135 @@ +export const keybindList = [[ + { + "icon": "pin_drop", + "name": "Workspaces: navigation", + "binds": [ + { "keys": ["", "+", "#"], "action": "Go to workspace #" }, + { "keys": ["", "+", "S"], "action": "Toggle special workspace" }, + { "keys": ["", "+", "(Scroll ↑↓)"], "action": "Go to workspace -1/+1" }, + { "keys": ["Ctrl", "", "+", "←"], "action": "Go to workspace on the left" }, + { "keys": ["Ctrl", "", "+", "→"], "action": "Go to workspace on the right" }, + { "keys": ["", "+", "PageUp"], "action": "Go to workspace on the left" }, + { "keys": ["", "+", "PageDown"], "action": "Go to workspace on the right" } + ], + "appeartick": 1 + }, + { + "icon": "overview_key", + "name": "Workspaces: management", + "binds": [ + { "keys": ["", "Alt", "+", "#"], "action": "Move window to workspace #" }, + { "keys": ["", "Alt", "+", "S"], "action": "Move window to special workspace" }, + { "keys": ["", "Alt", "+", "PageUp"], "action": "Move window to workspace on the left" }, + { "keys": ["", "Alt", "+", "PageDown"], "action": "Move window to workspace on the right" } + ], + "appeartick": 1 + }, + { + "icon": "move_group", + "name": "Windows", + "binds": [ + { "keys": ["", "+", "←↑→↓"], "action": "Focus window in direction" }, + { "keys": ["", "Shift", "+", "←↑→↓"], "action": "Swap window in direction" }, + { "keys": ["", "+", ";"], "action": "Split ratio -" }, + { "keys": ["", "+", "'"], "action": "Split ratio +" }, + { "keys": ["", "+", "Lmb"], "action": "Move window" }, + { "keys": ["", "+", "Mmb"], "action": "Move window" }, + { "keys": ["", "+", "Rmb"], "action": "Resize window" }, + { "keys": ["", "+", "F"], "action": "Fullscreen" }, + { "keys": ["", "Alt", "+", "F"], "action": "Fake fullscreen" } + ], + "appeartick": 1 + } +], +[ + { + "icon": "widgets", + "name": "Widgets (AGS)", + "binds": [ + { "keys": ["", "OR", "", "+", "Tab"], "action": "Toggle overview/launcher" }, + { "keys": ["Ctrl", "", "+", "R"], "action": "Restart AGS" }, + { "keys": ["", "+", "/"], "action": "Toggle this cheatsheet" }, + { "keys": ["", "+", "N"], "action": "Toggle system sidebar" }, + { "keys": ["", "+", "B", "OR", "", "+", "O"], "action": "Toggle utilities sidebar" }, + { "keys": ["", "+", "K"], "action": "Toggle virtual keyboard" }, + { "keys": ["Ctrl", "Alt", "+", "Del"], "action": "Power/Session menu" }, + + { "keys": ["Esc"], "action": "Exit a window" }, + { "keys": ["rightCtrl"], "action": "Dismiss/close sidebar" }, + + { "keys": ["Ctrl", "", "+", "T"], "action": "Change wallpaper+colorscheme" }, + + // { "keys": ["", "+", "B"], "action": "Toggle left sidebar" }, + // { "keys": ["", "+", "N"], "action": "Toggle right sidebar" }, + // { "keys": ["", "+", "G"], "action": "Toggle volume mixer" }, + // { "keys": ["", "+", "M"], "action": "Toggle useless audio visualizer" }, + // { "keys": ["(right)Ctrl"], "action": "Dismiss notification & close menus" } + ], + "appeartick": 2 + }, + { + "icon": "construction", + "name": "Utilities", + "binds": [ + { "keys": ["PrtSc"], "action": "Screenshot >> clipboard" }, + { "keys": ["", "Shift", "+", "S"], "action": "Screen snip >> clipboard" }, + { "keys": ["", "Shift", "+", "T"], "action": "Image to text >> clipboard" }, + { "keys": ["", "Shift", "+", "C"], "action": "Color picker" }, + { "keys": ["", "Alt", "+", "R"], "action": "Record region" }, + { "keys": ["Ctrl", "Alt", "+", "R"], "action": "Record region with sound" }, + { "keys": ["", "Shift", "Alt", "+", "R"], "action": "Record screen with sound" } + ], + "appeartick": 2 + }, + // { + // "icon": "edit", + // "name": "Edit mode", + // "binds": [ + // { "keys": ["Esc"], "action": "Exit Edit mode" }, + // { "keys": ["#"], "action": "Go to to workspace #" }, + // { "keys": ["Alt", "+", "#"], "action": "Dump windows to workspace #" }, + // { "keys": ["Shift", "+", "#"], "action": "Swap windows with workspace #" }, + // { "keys": ["Lmb"], "action": "Move window" }, + // { "keys": ["Mmb"], "action": "Move window" }, + // { "keys": ["Rmb"], "action": "Resize window" } + // ], + // "appeartick": 2 + // } +], +[ + { + "icon": "apps", + "name": "Apps", + "binds": [ + { "keys": ["", "+", "T"], "action": "Launch terminal: foot" }, + { "keys": ["", "+", "W"], "action": "Launch browser: Firefox" }, + { "keys": ["", "+", "C"], "action": "Launch editor: vscode" }, + { "keys": ["", "+", "X"], "action": "Launch editor: GNOME Text Editor" }, + { "keys": ["", "+", "I"], "action": "Launch settings: GNOME Control center" } + ], + "appeartick": 3 + }, + { + "icon": "keyboard", + "name": "Typing", + "binds": [ + { "keys": ["", "+", "V"], "action": "Clipboard history >> clipboard" }, + { "keys": ["", "+", "."], "action": "Emoji picker >> clipboard" }, + ], + "appeartick": 3 + }, + { + "icon": "terminal", + "name": "Launcher actions", + "binds": [ + { "keys": [">raw"], "action": "Toggle mouse acceleration" }, + { "keys": [">img"], "action": "Select wallpaper and generate colorscheme" }, + { "keys": [">light"], "action": "Switch to light theme" }, + { "keys": [">dark"], "action": "Switch to dark theme" }, + { "keys": [">badapple"], "action": "Apply black n' white colorscheme" }, + { "keys": [">color"], "action": "Pick acccent color" }, + { "keys": [">todo"], "action": "Type something after that to add a To-do item" }, + ], + "appeartick": 3 + } +]]; diff --git a/modules/styling/config/data/keyboardlayouts.js b/modules/styling/config/data/keyboardlayouts.js new file mode 100755 index 0000000..cb92b8a --- /dev/null +++ b/modules/styling/config/data/keyboardlayouts.js @@ -0,0 +1,218 @@ +// We're going to use ydotool +// See /usr/include/linux/input-event-codes.h for keycodes + +export const defaultOskLayout = "qwerty_full" +export const oskLayouts = { + qwerty_full: { + name: "QWERTY - Full", + name_short: "US", + comment: "Like physical keyboard", + // A key looks like this: { k: "a", ks: "A", t: "normal" } (key, key-shift, type) + // key types are: normal, tab, caps, shift, control, fn (normal w/ half height), space, expand + // keys: [ + // [{ k: "Esc", t: "fn" }, { k: "F1", t: "fn" }, { k: "F2", t: "fn" }, { k: "F3", t: "fn" }, { k: "F4", t: "fn" }, { k: "F5", t: "fn" }, { k: "F6", t: "fn" }, { k: "F7", t: "fn" }, { k: "F8", t: "fn" }, { k: "F9", t: "fn" }, { k: "F10", t: "fn" }, { k: "F11", t: "fn" }, { k: "F12", t: "fn" }, { k: "PrtSc", t: "fn" }, { k: "Del", t: "fn" }], + // [{ k: "`", ks: "~", t: "normal" }, { k: "1", ks: "!", t: "normal" }, { k: "2", ks: "@", t: "normal" }, { k: "3", ks: "#", t: "normal" }, { k: "4", ks: "$", t: "normal" }, { k: "5", ks: "%", t: "normal" }, { k: "6", ks: "^", t: "normal" }, { k: "7", ks: "&", t: "normal" }, { k: "8", ks: "*", t: "normal" }, { k: "9", ks: "(", t: "normal" }, { k: "0", ks: ")", t: "normal" }, { k: "-", ks: "_", t: "normal" }, { k: "=", ks: "+", t: "normal" }, { k: "Backspace", t: "shift" }], + // [{ k: "Tab", t: "tab" }, { k: "q", ks: "Q", t: "normal" }, { k: "w", ks: "W", t: "normal" }, { k: "e", ks: "E", t: "normal" }, { k: "r", ks: "R", t: "normal" }, { k: "t", ks: "T", t: "normal" }, { k: "y", ks: "Y", t: "normal" }, { k: "u", ks: "U", t: "normal" }, { k: "i", ks: "I", t: "normal" }, { k: "o", ks: "O", t: "normal" }, { k: "p", ks: "P", t: "normal" }, { k: "[", ks: "{", t: "normal" }, { k: "]", ks: "}", t: "normal" }, { k: "\\", ks: "|", t: "expand" }], + // [{ k: "Caps", t: "caps" }, { k: "a", ks: "A", t: "normal" }, { k: "s", ks: "S", t: "normal" }, { k: "d", ks: "D", t: "normal" }, { k: "f", ks: "F", t: "normal" }, { k: "g", ks: "G", t: "normal" }, { k: "h", ks: "H", t: "normal" }, { k: "j", ks: "J", t: "normal" }, { k: "k", ks: "K", t: "normal" }, { k: "l", ks: "L", t: "normal" }, { k: ";", ks: ":", t: "normal" }, { k: "'", ks: '"', t: "normal" }, { k: "Enter", t: "expand" }], + // [{ k: "Shift", t: "shift" }, { k: "z", ks: "Z", t: "normal" }, { k: "x", ks: "X", t: "normal" }, { k: "c", ks: "C", t: "normal" }, { k: "v", ks: "V", t: "normal" }, { k: "b", ks: "B", t: "normal" }, { k: "n", ks: "N", t: "normal" }, { k: "m", ks: "M", t: "normal" }, { k: ",", ks: "<", t: "normal" }, { k: ".", ks: ">", t: "normal" }, { k: "/", ks: "?", t: "normal" }, { k: "Shift", t: "expand" }], + // [{ k: "Ctrl", t: "control" }, { k: "Fn", t: "normal" }, { k: "Win", t: "normal" }, { k: "Alt", t: "normal" }, { k: "Space", t: "space" }, { k: "Alt", t: "normal" }, { k: "Menu", t: "normal" }, { k: "Ctrl", t: "control" }] + // ] + // A normal key looks like this: {label: "a", labelShift: "A", shape: "normal", keycode: 30, type: "normal"} + // A modkey looks like this: {label: "Ctrl", shape: "control", keycode: 29, type: "modkey"} + // key types are: normal, tab, caps, shift, control, fn (normal w/ half height), space, expand + keys: [ + [ + { keytype: "normal", label: "Esc", shape: "fn", keycode: 1 }, + { keytype: "normal", label: "F1", shape: "fn", keycode: 59 }, + { keytype: "normal", label: "F2", shape: "fn", keycode: 60 }, + { keytype: "normal", label: "F3", shape: "fn", keycode: 61 }, + { keytype: "normal", label: "F4", shape: "fn", keycode: 62 }, + { keytype: "normal", label: "F5", shape: "fn", keycode: 63 }, + { keytype: "normal", label: "F6", shape: "fn", keycode: 64 }, + { keytype: "normal", label: "F7", shape: "fn", keycode: 65 }, + { keytype: "normal", label: "F8", shape: "fn", keycode: 66 }, + { keytype: "normal", label: "F9", shape: "fn", keycode: 67 }, + { keytype: "normal", label: "F10", shape: "fn", keycode: 68 }, + { keytype: "normal", label: "F11", shape: "fn", keycode: 87 }, + { keytype: "normal", label: "F12", shape: "fn", keycode: 88 }, + { keytype: "normal", label: "PrtSc", shape: "fn", keycode: 99 }, + { keytype: "normal", label: "Del", shape: "fn", keycode: 111 } + ], + [ + { keytype: "normal", label: "`", labelShift: "~", shape: "normal", keycode: 41 }, + { keytype: "normal", label: "1", labelShift: "!", shape: "normal", keycode: 2 }, + { keytype: "normal", label: "2", labelShift: "@", shape: "normal", keycode: 3 }, + { keytype: "normal", label: "3", labelShift: "#", shape: "normal", keycode: 4 }, + { keytype: "normal", label: "4", labelShift: "$", shape: "normal", keycode: 5 }, + { keytype: "normal", label: "5", labelShift: "%", shape: "normal", keycode: 6 }, + { keytype: "normal", label: "6", labelShift: "^", shape: "normal", keycode: 7 }, + { keytype: "normal", label: "7", labelShift: "&", shape: "normal", keycode: 8 }, + { keytype: "normal", label: "8", labelShift: "*", shape: "normal", keycode: 9 }, + { keytype: "normal", label: "9", labelShift: "(", shape: "normal", keycode: 10 }, + { keytype: "normal", label: "0", labelShift: ")", shape: "normal", keycode: 11 }, + { keytype: "normal", label: "-", labelShift: "_", shape: "normal", keycode: 12 }, + { keytype: "normal", label: "=", labelShift: "+", shape: "normal", keycode: 13 }, + { keytype: "normal", label: "Backspace", shape: "expand", keycode: 14 } + ], + [ + { keytype: "normal", label: "Tab", shape: "tab", keycode: 15 }, + { keytype: "normal", label: "q", labelShift: "Q", shape: "normal", keycode: 16 }, + { keytype: "normal", label: "w", labelShift: "W", shape: "normal", keycode: 17 }, + { keytype: "normal", label: "e", labelShift: "E", shape: "normal", keycode: 18 }, + { keytype: "normal", label: "r", labelShift: "R", shape: "normal", keycode: 19 }, + { keytype: "normal", label: "t", labelShift: "T", shape: "normal", keycode: 20 }, + { keytype: "normal", label: "y", labelShift: "Y", shape: "normal", keycode: 21 }, + { keytype: "normal", label: "u", labelShift: "U", shape: "normal", keycode: 22 }, + { keytype: "normal", label: "i", labelShift: "I", shape: "normal", keycode: 23 }, + { keytype: "normal", label: "o", labelShift: "O", shape: "normal", keycode: 24 }, + { keytype: "normal", label: "p", labelShift: "P", shape: "normal", keycode: 25 }, + { keytype: "normal", label: "[", labelShift: "{", shape: "normal", keycode: 26 }, + { keytype: "normal", label: "]", labelShift: "}", shape: "normal", keycode: 27 }, + { keytype: "normal", label: "\\", labelShift: "|", shape: "expand", keycode: 43 } + ], + [ + //{ keytype: "normal", label: "Caps", shape: "caps", keycode: 58 }, // not needed as double-pressing shift does that + { keytype: "spacer", label: "", shape: "empty" }, + { keytype: "spacer", label: "", shape: "empty" }, + { keytype: "normal", label: "a", labelShift: "A", shape: "normal", keycode: 30 }, + { keytype: "normal", label: "s", labelShift: "S", shape: "normal", keycode: 31 }, + { keytype: "normal", label: "d", labelShift: "D", shape: "normal", keycode: 32 }, + { keytype: "normal", label: "f", labelShift: "F", shape: "normal", keycode: 33 }, + { keytype: "normal", label: "g", labelShift: "G", shape: "normal", keycode: 34 }, + { keytype: "normal", label: "h", labelShift: "H", shape: "normal", keycode: 35 }, + { keytype: "normal", label: "j", labelShift: "J", shape: "normal", keycode: 36 }, + { keytype: "normal", label: "k", labelShift: "K", shape: "normal", keycode: 37 }, + { keytype: "normal", label: "l", labelShift: "L", shape: "normal", keycode: 38 }, + { keytype: "normal", label: ";", labelShift: ":", shape: "normal", keycode: 39 }, + { keytype: "normal", label: "'", labelShift: '"', shape: "normal", keycode: 40 }, + { keytype: "normal", label: "Enter", shape: "expand", keycode: 28 } + ], + [ + { keytype: "modkey", label: "Shift", labelShift: "Shift ⇧", labelCaps: "Locked ⇩", shape: "shift", keycode: 42 }, + { keytype: "normal", label: "z", labelShift: "Z", shape: "normal", keycode: 44 }, + { keytype: "normal", label: "x", labelShift: "X", shape: "normal", keycode: 45 }, + { keytype: "normal", label: "c", labelShift: "C", shape: "normal", keycode: 46 }, + { keytype: "normal", label: "v", labelShift: "V", shape: "normal", keycode: 47 }, + { keytype: "normal", label: "b", labelShift: "B", shape: "normal", keycode: 48 }, + { keytype: "normal", label: "n", labelShift: "N", shape: "normal", keycode: 49 }, + { keytype: "normal", label: "m", labelShift: "M", shape: "normal", keycode: 50 }, + { keytype: "normal", label: ",", labelShift: "<", shape: "normal", keycode: 51 }, + { keytype: "normal", label: ".", labelShift: ">", shape: "normal", keycode: 52 }, + { keytype: "normal", label: "/", labelShift: "?", shape: "normal", keycode: 53 }, + { keytype: "modkey", label: "Shift", labelShift: "Shift ⇧", labelCaps: "Locked ⇩", shape: "expand", keycode: 54 } // optional + ], + [ + { keytype: "modkey", label: "Ctrl", shape: "control", keycode: 29 }, + // { label: "Super", shape: "normal", keycode: 125 }, // dangerous + { keytype: "modkey", label: "Alt", shape: "normal", keycode: 56 }, + { keytype: "normal", label: "Space", shape: "space", keycode: 57 }, + { keytype: "modkey", label: "Alt", shape: "normal", keycode: 100 }, + // { label: "Super", shape: "normal", keycode: 126 }, // dangerous + { keytype: "normal", label: "Menu", shape: "normal", keycode: 139 }, + { keytype: "modkey", label: "Ctrl", shape: "control", keycode: 97 } + ] + ] + }, + qwertz_full: { + name: "QWERTZ - Full", + name_short: "DE", + comment: "Keyboard layout commonly used in German-speaking countries", + keys: [ + [ + { keytype: "normal", label: "Esc", shape: "fn", keycode: 1 }, + { keytype: "normal", label: "F1", shape: "fn", keycode: 59 }, + { keytype: "normal", label: "F2", shape: "fn", keycode: 60 }, + { keytype: "normal", label: "F3", shape: "fn", keycode: 61 }, + { keytype: "normal", label: "F4", shape: "fn", keycode: 62 }, + { keytype: "normal", label: "F5", shape: "fn", keycode: 63 }, + { keytype: "normal", label: "F6", shape: "fn", keycode: 64 }, + { keytype: "normal", label: "F7", shape: "fn", keycode: 65 }, + { keytype: "normal", label: "F8", shape: "fn", keycode: 66 }, + { keytype: "normal", label: "F9", shape: "fn", keycode: 67 }, + { keytype: "normal", label: "F10", shape: "fn", keycode: 68 }, + { keytype: "normal", label: "F11", shape: "fn", keycode: 87 }, + { keytype: "normal", label: "F12", shape: "fn", keycode: 88 }, + { keytype: "normal", label: "Druck", shape: "fn", keycode: 99 }, + { keytype: "normal", label: "Entf", shape: "fn", keycode: 111 } + ], + [ + { keytype: "normal", label: "^", labelShift: "°", labelAlt: "′", shape: "normal", keycode: 41 }, + { keytype: "normal", label: "1", labelShift: "!", labelAlt: "¹", shape: "normal", keycode: 2 }, + { keytype: "normal", label: "2", labelShift: "\"", labelAlt: "²", shape: "normal", keycode: 3 }, + { keytype: "normal", label: "3", labelShift: "§", labelAlt: "³", shape: "normal", keycode: 4 }, + { keytype: "normal", label: "4", labelShift: "$", labelAlt: "¼", shape: "normal", keycode: 5 }, + { keytype: "normal", label: "5", labelShift: "%", labelAlt: "½", shape: "normal", keycode: 6 }, + { keytype: "normal", label: "6", labelShift: "&", labelAlt: "¬", shape: "normal", keycode: 7 }, + { keytype: "normal", label: "7", labelShift: "/", labelAlt: "{", shape: "normal", keycode: 8 }, + { keytype: "normal", label: "8", labelShift: "(", labelAlt: "[", shape: "normal", keycode: 9 }, + { keytype: "normal", label: "9", labelShift: ")", labelAlt: "]", shape: "normal", keycode: 10 }, + { keytype: "normal", label: "0", labelShift: "=", labelAlt: "}", shape: "normal", keycode: 11 }, + { keytype: "normal", label: "ß", labelShift: "?", labelAlt: "\\", shape: "normal", keycode: 12 }, + { keytype: "normal", label: "´", labelShift: "`", labelAlt: "¸", shape: "normal", keycode: 13 }, + { keytype: "normal", label: "⟵", shape: "expand", keycode: 14 } + ], + [ + { keytype: "normal", label: "Tab ⇆", shape: "tab", keycode: 15 }, + { keytype: "normal", label: "q", labelShift: "Q", labelAlt: "@", shape: "normal", keycode: 16 }, + { keytype: "normal", label: "w", labelShift: "W", labelAlt: "ſ", shape: "normal", keycode: 17 }, + { keytype: "normal", label: "e", labelShift: "E", labelAlt: "€", shape: "normal", keycode: 18 }, + { keytype: "normal", label: "r", labelShift: "R", labelAlt: "¶", shape: "normal", keycode: 19 }, + { keytype: "normal", label: "t", labelShift: "T", labelAlt: "ŧ", shape: "normal", keycode: 20 }, + { keytype: "normal", label: "z", labelShift: "Z", labelAlt: "←", shape: "normal", keycode: 21 }, + { keytype: "normal", label: "u", labelShift: "U", labelAlt: "↓", shape: "normal", keycode: 22 }, + { keytype: "normal", label: "i", labelShift: "I", labelAlt: "→", shape: "normal", keycode: 23 }, + { keytype: "normal", label: "o", labelShift: "O", labelAlt: "ø", shape: "normal", keycode: 24 }, + { keytype: "normal", label: "p", labelShift: "P", labelAlt: "þ", shape: "normal", keycode: 25 }, + { keytype: "normal", label: "ü", labelShift: "Ü", labelAlt: "¨", shape: "normal", keycode: 26 }, + { keytype: "normal", label: "+", labelShift: "*", labelAlt: "~", shape: "normal", keycode: 27 }, + { keytype: "normal", label: "↵", shape: "expand", keycode: 28 } + ], + [ + //{ keytype: "normal", label: "Umschalt ⇩", shape: "caps", keycode: 58 }, + { keytype: "spacer", label: "", shape: "empty" }, + { keytype: "spacer", label: "", shape: "empty" }, + { keytype: "normal", label: "a", labelShift: "A", labelAlt: "æ", shape: "normal", keycode: 30 }, + { keytype: "normal", label: "s", labelShift: "S", labelAlt: "ſ", shape: "normal", keycode: 31 }, + { keytype: "normal", label: "d", labelShift: "D", labelAlt: "ð", shape: "normal", keycode: 32 }, + { keytype: "normal", label: "f", labelShift: "F", labelAlt: "đ", shape: "normal", keycode: 33 }, + { keytype: "normal", label: "g", labelShift: "G", labelAlt: "ŋ", shape: "normal", keycode: 34 }, + { keytype: "normal", label: "h", labelShift: "H", labelAlt: "ħ", shape: "normal", keycode: 35 }, + { keytype: "normal", label: "j", labelShift: "J", labelAlt: "", shape: "normal", keycode: 36 }, + { keytype: "normal", label: "k", labelShift: "K", labelAlt: "ĸ", shape: "normal", keycode: 37 }, + { keytype: "normal", label: "l", labelShift: "L", labelAlt: "ł", shape: "normal", keycode: 38 }, + { keytype: "normal", label: "ö", labelShift: "Ö", labelAlt: "˝", shape: "normal", keycode: 39 }, + { keytype: "normal", label: "ä", labelShift: 'Ä', labelAlt: "^", shape: "normal", keycode: 40 }, + { keytype: "normal", label: "#", labelShift: '\'', labelAlt: "’", shape: "normal", keycode: 43 }, + { keytype: "spacer", label: "", shape: "empty" }, + //{ keytype: "normal", label: "↵", shape: "expand", keycode: 28 } + ], + [ + { keytype: "modkey", label: "Shift", labelShift: "Shift ⇧", labelCaps: "Locked ⇩", shape: "shift", keycode: 42 }, + { keytype: "normal", label: "<", labelShift: ">", labelAlt: "|", shape: "normal", keycode: 86 }, + { keytype: "normal", label: "y", labelShift: "Y", labelAlt: "»", shape: "normal", keycode: 44 }, + { keytype: "normal", label: "x", labelShift: "X", labelAlt: "«", shape: "normal", keycode: 45 }, + { keytype: "normal", label: "c", labelShift: "C", labelAlt: "¢", shape: "normal", keycode: 46 }, + { keytype: "normal", label: "v", labelShift: "V", labelAlt: "„", shape: "normal", keycode: 47 }, + { keytype: "normal", label: "b", labelShift: "B", labelAlt: "“", shape: "normal", keycode: 48 }, + { keytype: "normal", label: "n", labelShift: "N", labelAlt: "”", shape: "normal", keycode: 49 }, + { keytype: "normal", label: "m", labelShift: "M", labelAlt: "µ", shape: "normal", keycode: 50 }, + { keytype: "normal", label: ",", labelShift: ";", labelAlt: "·", shape: "normal", keycode: 51 }, + { keytype: "normal", label: ".", labelShift: ":", labelAlt: "…", shape: "normal", keycode: 52 }, + { keytype: "normal", label: "-", labelShift: "_", labelAlt: "–", shape: "normal", keycode: 53 }, + { keytype: "modkey", label: "Shift", labelShift: "Shift ⇧", labelCaps: "Locked ⇩", shape: "expand", keycode: 54 }, // optional + ], + [ + { keytype: "modkey", label: "Strg", shape: "control", keycode: 29 }, + //{ keytype: "normal", label: "", shape: "normal", keycode: 125 }, // dangerous + { keytype: "modkey", label: "Alt", shape: "normal", keycode: 56 }, + { keytype: "normal", label: "Leertaste", shape: "space", keycode: 57 }, + { keytype: "modkey", label: "Alt Gr", shape: "normal", keycode: 100 }, + // { label: "Super", shape: "normal", keycode: 126 }, // dangerous + //{ keytype: "normal", label: "Menu", shape: "normal", keycode: 139 }, // doesn't work? + { keytype: "modkey", label: "Strg", shape: "control", keycode: 97 }, + { keytype: "normal", label: "⇦", shape: "normal", keycode: 105 }, + { keytype: "normal", label: "⇨", shape: "normal", keycode: 106 }, + ] + ] + } +} \ No newline at end of file diff --git a/modules/styling/config/data/languages.js b/modules/styling/config/data/languages.js new file mode 100644 index 0000000..c61eedd --- /dev/null +++ b/modules/styling/config/data/languages.js @@ -0,0 +1,62 @@ +// For keyboard layout in lib/statusicons.js +// This list is not exhaustive. It just includes known/possible languages of users of my dotfiles +// Add your language here if you use multi-lang xkb input. Else, ignore +// Note that something like "French (Canada)" should go before "French" +// and "English (US)" should go before "English" +export const languages = [ + { + layout: 'us', + name: 'English (US)', + flag: '🇺🇸' + }, + { + layout: 'ru', + name: 'Russian', + flag: '🇷🇺', + }, + { + layout: 'pl', + name: 'Polish', + flag: '🇷🇵🇵🇱', + }, + { + layout: 'ro', + name: 'Romanian', + flag: '🇷🇴', + }, + { + layout: 'ca', + name: 'French (Canada)', + flag: '🇫🇷', + }, + { + layout: 'fr', + name: 'French', + flag: '🇫🇷', + }, + { + layout: 'tr', + name: 'Turkish', + flag: '🇹🇷', + }, + { + layout: 'jp', + name: 'Japanese', + flag: '🇯🇵', + }, + { + layout: 'cn', + name: 'Chinese', + flag: '🇨🇳', + }, + { + layout: 'vn', + name: 'Vietnamese', + flag: '🇻🇳', + }, + { + layout: 'undef', + name: 'Undefined', + flag: '🧐', + }, +] \ No newline at end of file diff --git a/modules/styling/config/data/quicklaunches.js b/modules/styling/config/data/quicklaunches.js new file mode 100644 index 0000000..a5a9562 --- /dev/null +++ b/modules/styling/config/data/quicklaunches.js @@ -0,0 +1,14 @@ +export const quickLaunchItems = [ + { + "name": "GitHub + Files×2", + "command": "github-desktop & nautilus --new-window & nautilus --new-window &" + }, + { + "name": "Terminal×2", + "command": "foot & foot &" + }, + { + "name": "Discord + Youtube + Github", + "command": "xdg-open 'https://discord.com/app' && xdg-open 'https://youtube.com/' && xdg-open 'https://github.com/' &" + }, +] \ No newline at end of file diff --git a/modules/styling/config/data/quotes.js b/modules/styling/config/data/quotes.js new file mode 100644 index 0000000..7cea990 --- /dev/null +++ b/modules/styling/config/data/quotes.js @@ -0,0 +1,14 @@ +export const quotes = [ + { + quote: 'Nvidia, fuck you', + author: 'Linus Torvalds', + }, + { + quote: 'reproducible system? cock and vagina?', + author: 'vaxry', + }, + { + quote: "haha pointers hee hee i love pointe-\\\nProcess Vaxry exited with signal SIGSEGV", + author: 'vaxry', + } +]; diff --git a/modules/styling/config/data/sourceviewtheme.xml b/modules/styling/config/data/sourceviewtheme.xml new file mode 100644 index 0000000..61b3324 --- /dev/null +++ b/modules/styling/config/data/sourceviewtheme.xml @@ -0,0 +1,106 @@ + + + end_4 + <_description>Monokai port but very random + + + + + + + + + + + + + + + + + + + + + + +