diff --git a/configuration.nix b/configuration.nix
index 5b32832..ae182e1 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -14,10 +14,8 @@ let
in {
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
- #./egirls-qa.nix
+ ./egirls-qa.nix
./postfix.nix
- ./nebula.nix
- ./gpu.nix
#./stalwart.nix
#./vpn.nix
#/home/jaina/src/nix-deployments/nordvpn/containers.nix
@@ -86,10 +84,34 @@ in {
programs.steam.enable = true;
- services.xserver.videoDrivers = [ "modesetting" ];
+ services.xserver.videoDrivers = [ "nvidia" "modesetting" ];
+ #services.xserver.videoDrivers = [ "modesetting" "nvidia" "displaylink" ];
+ #services.xserver.videoDrivers = [ "modesetting" "nouveau" ];
+ # specialisation.nouveau.configuration = { ... }: {
+ # services.xserver.videoDrivers = [ "modesetting" "nouveau" ];
+ # boot.blacklistedKernelModules = [ "bbswitch" "nvidia" "nvidia-drm" ];
+ # };
+ # nixpkgs.overlays = [
+ # (self: prev: {
+ # unstable = import unstableTarball { config = config.nixpkgs.config; };
+ # })
- specialisation.nouveau.configuration = { jaina.gpuDriver = "nouveau"; };
- specialisation.intel.configuration = { jaina.gpuDriver = "intel"; };
+ # # (self: prev: {
+ # # sway-unwrapped = prev.sway-unwrapped.override {
+ # # wlroots_0_16 = self.wlroots_0_16.overrideAttrs {
+ # # patches = [
+ # # (prev.fetchpatch {
+ # # url =
+ # # "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/b4f932e370ed03d88f202191eaf60965/DisplayLink.patch";
+ # # sha256 = lib.fakeHash;
+ # # })
+ # # ];
+ # # };
+ # # };
+ # # })
+
+ # ];
+ #nixpkgs.overlays = [ (self: prev: { mesa = prev.unstable.mesa; }) ];
hardware.opengl = {
enable = true;
@@ -104,7 +126,15 @@ in {
intel-gpu-tools
];
};
-
+ hardware.nvidia.modesetting.enable = true;
+ boot.blacklistedKernelModules = [ "nouveau" "bbswitch" ];
+ #[ "nvidia" ];
+ #boot.kernelParams = [ "i915.force_probe=46a6" ];
+ hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
+ # hardware.nvidia.package =
+ # config.boot.kernelPackages.nvidiaPackages.production;
+ #hardware.nvidia.package = unstable.linuxKernel.packages.linux_6_1.nvidia_x11;
+ hardware.nvidia.open = true;
environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; };
networking.hostName = "harrowhark"; # Define your hostname.
@@ -248,7 +278,7 @@ in {
xdg.portal = {
enable = true;
- #wlr.enable = false;
+ wlr.enable = false;
extraPortals =
[ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland ];
};
@@ -286,6 +316,8 @@ in {
wireplumber.enable = true;
};
+ services.mullvad-vpn.enable = true;
+
programs.hyprland.enable = true;
programs.dconf.enable = true;
@@ -312,6 +344,76 @@ in {
21027
];
+ services.nginx = {
+ enable = true;
+ package = pkgs.openresty;
+
+ proxyCachePath."media_cache" = {
+ enable = true;
+ maxSize = "1g";
+ inactive = "10m";
+ keysZoneName = "media_cache";
+ };
+
+ virtualHosts."media.dev.egirls.gay" = {
+ listen = [
+ {
+ port = 443;
+ addr = "0.0.0.0";
+ ssl = true;
+ }
+ {
+ port = 80;
+ addr = "0.0.0.0";
+ }
+ ];
+ useACMEHost = "ANY.dev.egirls.gay";
+ forceSSL = true;
+
+ extraConfig = ''
+
+ proxy_cache media_cache;
+ proxy_cache_valid 200 10m;
+ proxy_cache_lock on;
+
+ add_header X-Cache $upstream_cache_status;
+ proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
+ proxy_hide_header X-Amz-ID-2;
+ proxy_hide_header X-Amz-Request-ID;
+ proxy_hide_header X-Wasabi-CM-Reference-ID;
+
+ proxy_hide_header Set-Cookie;
+ proxy_ignore_headers Set-Cookie;
+ '';
+
+ locations."/".extraConfig = "return 404;";
+
+ locations."/misskey/" = {
+ #recommendedProxySettings = true;
+ extraConfig = ''
+ proxy_http_version 1.1;
+
+ include /etc/nixos-secrets/s3-access-nginx.conf;
+
+ set $s3_bucket 'egirls-gay-misskey';
+ set $path_full '/$s3_bucket$request_uri';
+
+ set_by_lua $now "return ngx.http_time(ngx.time())";
+ set $signature_string "GET\n\n\n\nx-amz-date:''${now}\n$path_full";
+ set_hmac_sha1 $s3_signature $s3_secret $signature_string;
+ set_encode_base64 $s3_signature_b64 $s3_signature;
+
+ proxy_set_header x-amz-date $now;
+ proxy_set_header Authorization "AWS $s3_access:$s3_signature_b64";
+
+ proxy_ssl_session_reuse on;
+ rewrite .* $path_full break;
+ proxy_pass https://s3.us-west-1.wasabisys.com;
+ '';
+ };
+ };
+ };
+
# networking.nat = {
# enable = true;
# internalInterfaces = [ "ve-vpn" ];
diff --git a/egirls-qa.nix b/egirls-qa.nix
index c265eb0..2ab8b1f 100644
--- a/egirls-qa.nix
+++ b/egirls-qa.nix
@@ -12,13 +12,6 @@
services.nginx = {
enable = true;
recommendedProxySettings = true;
- package = pkgs.openresty;
- proxyCachePath."media_cache" = {
- enable = true;
- maxSize = "1g";
- inactive = "10m";
- keysZoneName = "media_cache";
- };
virtualHosts = let
mkHost = upstream: {
listen = [
@@ -61,62 +54,6 @@
};
"eg.dev.egirls.gay" = mkHost "http://127.0.0.1:3000";
"goto.dev.egirls.gay" = mkHost "http://127.0.0.1:8080";
-"media.dev.egirls.gay" = {
- listen = [
- {
- port = 443;
- addr = "0.0.0.0";
- ssl = true;
- }
- {
- port = 80;
- addr = "0.0.0.0";
- }
- ];
- useACMEHost = "ANY.dev.egirls.gay";
- forceSSL = true;
-
- extraConfig = ''
-
- proxy_cache media_cache;
- proxy_cache_valid 200 10m;
- proxy_cache_lock on;
-
- add_header X-Cache $upstream_cache_status;
- proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
- proxy_hide_header X-Amz-ID-2;
- proxy_hide_header X-Amz-Request-ID;
- proxy_hide_header X-Wasabi-CM-Reference-ID;
-
- proxy_hide_header Set-Cookie;
- proxy_ignore_headers Set-Cookie;
- '';
-
- locations."/".extraConfig = "return 404;";
-
- locations."/misskey/" = {
- #recommendedProxySettings = true;
- extraConfig = ''
- proxy_http_version 1.1;
-
- include /etc/nixos-secrets/s3-access-nginx.conf;
-
- set $s3_bucket 'egirls-gay-misskey';
- set $path_full '/$s3_bucket$request_uri';
-
- set_by_lua $now "return ngx.http_time(ngx.time())";
- set $signature_string "GET\n\n\n\nx-amz-date:''${now}\n$path_full";
- set_hmac_sha1 $s3_signature $s3_secret $signature_string;
- set_encode_base64 $s3_signature_b64 $s3_signature;
-
- proxy_set_header x-amz-date $now;
- proxy_set_header Authorization "AWS $s3_access:$s3_signature_b64";
-
- proxy_ssl_session_reuse on;
- rewrite .* $path_full break;
- proxy_pass https://s3.us-west-1.wasabisys.com;
- '';
- };
};
};
diff --git a/flake.lock b/flake.lock
index e8e5c78..a2a4a74 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,33 +1,12 @@
{
"nodes": {
- "home-manager": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1720042825,
- "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "release-24.05",
- "repo": "home-manager",
- "type": "github"
- }
- },
"nixpkgs": {
"locked": {
- "lastModified": 1724242322,
- "narHash": "sha256-HMpK7hNjhEk4z5SFg5UtxEio9OWFocHdaQzCfW1pE7w=",
+ "lastModified": 1717555607,
+ "narHash": "sha256-WZ1s48OODmRJ3DHC+I/DtM3tDRuRJlNqMvxvAPTD7ec=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "224042e9a3039291f22f4f2ded12af95a616cca0",
+ "rev": "0b8e7a1ae5a94da2e1ee3f3030a32020f6254105",
"type": "github"
},
"original": {
@@ -39,7 +18,6 @@
},
"root": {
"inputs": {
- "home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"stable": "stable",
"unstable": "unstable"
@@ -47,11 +25,11 @@
},
"stable": {
"locked": {
- "lastModified": 1724242322,
- "narHash": "sha256-HMpK7hNjhEk4z5SFg5UtxEio9OWFocHdaQzCfW1pE7w=",
+ "lastModified": 1717555607,
+ "narHash": "sha256-WZ1s48OODmRJ3DHC+I/DtM3tDRuRJlNqMvxvAPTD7ec=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "224042e9a3039291f22f4f2ded12af95a616cca0",
+ "rev": "0b8e7a1ae5a94da2e1ee3f3030a32020f6254105",
"type": "github"
},
"original": {
@@ -63,11 +41,11 @@
},
"unstable": {
"locked": {
- "lastModified": 1724224976,
- "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
+ "lastModified": 1714076141,
+ "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
+ "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 83cc757..0281c34 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,13 +4,8 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
stable.url = "github:NixOS/nixpkgs/nixos-24.05";
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
-
- home-manager = {
- url = "github:nix-community/home-manager/release-24.05";
- inputs.nixpkgs.follows = "nixpkgs";
- };
};
- outputs = { self, nixpkgs, stable, unstable, home-manager, ... }@attrs: {
+ outputs = { self, nixpkgs, stable, unstable }@attrs: {
nixosConfigurations.harrowhark = nixpkgs.lib.nixosSystem rec {
pkgs = let
nixpkgsConfig = {
@@ -32,13 +27,6 @@
({ config, pkgs, options, ... }: {
nix.registry.nixpkgs.flake = nixpkgs;
})
-
- home-manager.nixosModules.home-manager
- {
- home-manager.useGlobalPkgs = true;
- home-manager.useUserPackages = true;
- home-manager.users.jaina = import ./home-manager/home.nix;
- }
];
};
};
diff --git a/gpu.nix b/gpu.nix
deleted file mode 100644
index b3977ec..0000000
--- a/gpu.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ config, lib, ... }:
-
-let cfg = config.jaina;
-in {
- options = {
- jaina.gpuDriver = lib.mkOption {
- type = lib.types.str;
- default = "nvidia";
- };
- };
- config = lib.mkMerge [
- (lib.mkIf (cfg.gpuDriver == "nvidia") {
- services.xserver.videoDrivers = [ "nvidia" ];
- hardware.nvidia.modesetting.enable = true;
- hardware.nvidia.open = true;
- hardware.nvidia.package =
- config.boot.kernelPackages.nvidiaPackages.stable;
- boot.blacklistedKernelModules = [ "nouveau" ];
- })
- (lib.mkIf (cfg.gpuDriver == "nouveau") {
- services.xserver.videoDrivers = [ "nouveau" ];
- boot.blacklistedKernelModules = [ "nvidia" "nvidia-drm" ];
- })
- (lib.mkIf (cfg.gpuDriver == "intel") {
- boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia-drm" ];
- })
- ];
-}
diff --git a/home-manager/.gitignore b/home-manager/.gitignore
deleted file mode 100644
index 930a600..0000000
--- a/home-manager/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-__pycache__
-**.kak.**
diff --git a/home-manager/catppuccin/latte.nix b/home-manager/catppuccin/latte.nix
deleted file mode 100644
index 4df14b1..0000000
--- a/home-manager/catppuccin/latte.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- rosewater = "#dc8a78";
- flamingo = "#dd7878";
- pink = "#ea76cb";
- mauve = "#8839ef";
- red = "#d20f39";
- maroon = "#e64553";
- peach = "#fe640b";
- yellow = "#df8e1d";
- green = "#40a02b";
- teal = "#179299";
- sky = "#04a5e5";
- sapphire = "#209fb5";
- blue = "#1e66f5";
- lavender = "#7287fd";
- text = "#4c4f69";
- subtext1 = "#5c5f77";
- subtext0 = "#6c6f85";
- overlay2 = "#7c7f93";
- overlay1 = "#8c8fa1";
- overlay0 = "#9ca0b0";
- surface2 = "#acb0be";
- surface1 = "#bcc0cc";
- surface0 = "#ccd0da";
- base = "#eff1f5";
- mantle = "#e6e9ef";
- crust = "#dce0e8";
-}
diff --git a/home-manager/catppuccin/mocha.nix b/home-manager/catppuccin/mocha.nix
deleted file mode 100644
index a78de2f..0000000
--- a/home-manager/catppuccin/mocha.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- rosewater = "#f5e0dc";
- flamingo = "#f2cdcd";
- pink = "#f5c2e7";
- mauve = "#cba6f7";
- red = "#f38ba8";
- maroon = "#eba0ac";
- peach = "#fab387";
- yellow = "#f9e2af";
- green = "#a6e3a1";
- teal = "#94e2d5";
- sky = "#89dceb";
- sapphire = "#74c7ec";
- blue = "#89b4fa";
- lavender = "#b4befe";
- text = "#cdd6f4";
- subtext1 = "#bac2de";
- subtext0 = "#a6adc8";
- overlay2 = "#9399b2";
- overlay1 = "#7f849c";
- overlay0 = "#6c7086";
- surface2 = "#585b70";
- surface1 = "#45475a";
- surface0 = "#313244";
- base = "#1e1e2e";
- mantle = "#181825";
- crust = "#11111b";
-}
diff --git a/home-manager/flake.lock b/home-manager/flake.lock
deleted file mode 100644
index c8411a4..0000000
--- a/home-manager/flake.lock
+++ /dev/null
@@ -1,247 +0,0 @@
-{
- "nodes": {
- "flake-utils": {
- "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"
- }
- },
- "home-manager": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1718530513,
- "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
- "owner": "nix-community",
- "repo": "home-manager",
- "rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
- "type": "github"
- },
- "original": {
- "owner": "nix-community",
- "ref": "release-24.05",
- "repo": "home-manager",
- "type": "github"
- }
- },
- "hyprland": {
- "inputs": {
- "hyprland-protocols": "hyprland-protocols",
- "nixpkgs": [
- "nixpkgs"
- ],
- "systems": "systems",
- "wlroots": "wlroots",
- "xdph": "xdph"
- },
- "locked": {
- "lastModified": 1701881246,
- "narHash": "sha256-p7el5oQZPy9l1zyIrlHu6nA4BAu59eLoSqBjhkw2jaw=",
- "owner": "hyprwm",
- "repo": "Hyprland",
- "rev": "d74607e414dcd16911089a6d4b6aeb661c880923",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "ref": "v0.33.1",
- "repo": "Hyprland",
- "type": "github"
- }
- },
- "hyprland-protocols": {
- "inputs": {
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1691753796,
- "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=",
- "owner": "hyprwm",
- "repo": "hyprland-protocols",
- "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "hyprland-protocols",
- "type": "github"
- }
- },
- "nixgl": {
- "inputs": {
- "flake-utils": "flake-utils",
- "nixpkgs": "nixpkgs"
- },
- "locked": {
- "lastModified": 1713543440,
- "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
- "owner": "guibou",
- "repo": "nixGL",
- "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
- "type": "github"
- },
- "original": {
- "owner": "guibou",
- "repo": "nixGL",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1660551188,
- "narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_2": {
- "locked": {
- "lastModified": 1719253556,
- "narHash": "sha256-A/76RFUVxZ/7Y8+OMVL1Lc8LRhBxZ8ZE2bpMnvZ1VpY=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "fc07dc3bdf2956ddd64f24612ea7fc894933eb2e",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "release-24.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "root": {
- "inputs": {
- "home-manager": "home-manager",
- "hyprland": "hyprland",
- "nixgl": "nixgl",
- "nixpkgs": "nixpkgs_2",
- "stable": "stable",
- "unstable": "unstable"
- }
- },
- "stable": {
- "locked": {
- "lastModified": 1705957679,
- "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "9a333eaa80901efe01df07eade2c16d183761fa3",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "release-23.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "systems": {
- "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"
- }
- },
- "unstable": {
- "locked": {
- "lastModified": 1719082008,
- "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "9693852a2070b398ee123a329e68f0dab5526681",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixpkgs-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "wlroots": {
- "flake": false,
- "locked": {
- "host": "gitlab.freedesktop.org",
- "lastModified": 1701368958,
- "narHash": "sha256-7kvyoA91etzVEl9mkA/EJfB6z/PltxX7Xc4gcr7/xlo=",
- "owner": "wlroots",
- "repo": "wlroots",
- "rev": "5d639394f3e83b01596dcd166a44a9a1a2583350",
- "type": "gitlab"
- },
- "original": {
- "host": "gitlab.freedesktop.org",
- "owner": "wlroots",
- "repo": "wlroots",
- "rev": "5d639394f3e83b01596dcd166a44a9a1a2583350",
- "type": "gitlab"
- }
- },
- "xdph": {
- "inputs": {
- "hyprland-protocols": [
- "hyprland",
- "hyprland-protocols"
- ],
- "nixpkgs": [
- "hyprland",
- "nixpkgs"
- ],
- "systems": [
- "hyprland",
- "systems"
- ]
- },
- "locked": {
- "lastModified": 1700508250,
- "narHash": "sha256-X4o/mifI7Nhu0UKYlxx53wIC+gYDo3pVM9L2u3PE2bE=",
- "owner": "hyprwm",
- "repo": "xdg-desktop-portal-hyprland",
- "rev": "eb120ff25265ecacd0fc13d7dab12131b60d0f47",
- "type": "github"
- },
- "original": {
- "owner": "hyprwm",
- "repo": "xdg-desktop-portal-hyprland",
- "type": "github"
- }
- }
- },
- "root": "root",
- "version": 7
-}
diff --git a/home-manager/flake.nix b/home-manager/flake.nix
deleted file mode 100644
index efcd228..0000000
--- a/home-manager/flake.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- description = "home manager flake";
-
- inputs = {
- nixpkgs.url = "github:nixos/nixpkgs/release-24.05";
- stable.url = "github:nixos/nixpkgs/release-23.05";
- unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
- nixgl.url = "github:guibou/nixGL";
- home-manager = {
- url = "github:nix-community/home-manager/release-24.05";
- inputs.nixpkgs.follows = "nixpkgs";
- # url = "github:nix-community/home-manager/master";
- #inputs.nixpkgs.follows = "unstable";
- };
- hyprland = {
- url = "github:hyprwm/Hyprland/v0.33.1";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- };
-
- outputs = { nixpkgs, stable, unstable, home-manager, hyprland, nixgl, ... }: {
- defaultPackage.x86_64-linux = home-manager.defaultPackage.x86_64-linux;
-
- homeConfigurations = let system = "x86_64-linux";
- in rec {
- "jaina" = home-manager.lib.homeManagerConfiguration {
- pkgs = let
- nixpkgsConfig = {
- inherit system;
- config.allowUnfree = true;
- };
- in import nixpkgs (nixpkgsConfig // {
- overlays = [
- (new: prev: {
- unstable = import unstable nixpkgsConfig;
- stable = import stable nixpkgsConfig;
- })
- nixgl.overlay
- ];
- });
-
- #inputs.cat = import ./catppuccin/mocha.nix;
-
- modules = [ ./home.nix ];
- };
- };
- };
-}
diff --git a/home-manager/fontconfig.nix b/home-manager/fontconfig.nix
deleted file mode 100644
index ae97b34..0000000
--- a/home-manager/fontconfig.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-with lib;
-let
- cfg = config.fonts.fontconfig-extra;
-in {
- options.fonts.fontconfig-extra = {
- enable = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether to enable advanced fontconfig configuration.
- This will allow you to set default fonts for your applications.
- '';
- };
-
- defaultFonts = let
- mkFontOption = name: mkOption {
- type = types.nullOr hm.types.fontType;
- default = null;
- description = ''
- The default font to use when a ${name} font is requested.
- '';
- };
- in {
- sans-serif = mkFontOption "sans-serif";
- serif = mkFontOption "serif";
- monospace = mkFontOption "monospace";
- };
- };
-
- config = mkIf cfg.enable {
- home.packages = let
- optionalPackage = opt: optional (opt != null && opt.package != null) opt.package;
- in concatMap optionalPackage [
- cfg.defaultFonts.sans-serif
- cfg.defaultFonts.serif
- cfg.defaultFonts.monospace
- ];
-
- xdg.configFile."fontconfig/conf.d/80-hm-fonts-extra.conf".text = let
- mkConfig = family: font: mapNullable (notNullFont: ''
-
-
- ${family}
-
-
- ${font.name}
-
-
- '') font;
- configs = concatStrings (filter (v: ! isNull v) (
- attrValues (mapAttrs mkConfig cfg.defaultFonts)
- ));
- in ''
-
-
-
- ${configs}
-
- '';
- };
-}
diff --git a/home-manager/home.nix b/home-manager/home.nix
deleted file mode 100644
index abbec29..0000000
--- a/home-manager/home.nix
+++ /dev/null
@@ -1,550 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-# TODOs:
-# - Add in configs for:
-# + Rofi
-# + mako
-# + The scratchpad manager (maybe wait for hyprland)
-# - Setup better on-screen-keyboard support
-# - rofi-emoji
-# - Create settings bar or something
-# - Figure out how to get info or widgets on lockscreen
-# - Explore Hyprland
-
-let
- fonts = {
- primary = {
- name = "Iosevka Comfy Duo";
- package = pkgs.iosevka-comfy.comfy-duo;
- size = 11;
- };
- serif = {
- name = "Iosevka Comfy Motion Duo";
- package = pkgs.iosevka-comfy.comfy-motion-duo;
- size = 11;
- };
- fixed = {
- name = "Iosevka Comfy Wide";
- package = pkgs.iosevka-comfy.comfy-wide;
- size = 11;
- };
-
- wmOverlay =
- lib.trivial.mergeAttrs fonts.primary { size = fonts.primary.size + 1; };
- };
- fronters = {
- jams = {
- name = "jams";
- displayName = "jams";
- accents = {
- primary = "Green";
- secondary = "Teal";
- };
- wallpaper = ./wallpapers/slimejaina_extinct_lesboba.png;
- };
-
- velma = {
- name = "velma";
- displayName = "Velma Jade";
- accents = {
- primary = "Peach";
- secondary = "Yellow";
- };
- wallpaper = ./wallpapers/velma_picrew_cropped.png;
- };
-
- alys = {
- name = "alys";
- displayName = "alys elrena";
- nicknames = [ "elrena" ];
- accents = {
- primary = "Blue";
- secondary = "Sapphire";
- };
- wallpaper = ./wallpapers/elrena-lauriam-cropped.jpg;
- };
-
- sarina = {
- name = "sarina";
- displayName = "Sarina";
- nicknames = [ "rachel" ];
- accents = {
- primary = "Pink";
- secondary = "Mauve";
- };
- wallpaper = ./wallpapers/sarina.png;
- };
-
- denise = {
- name = "denise";
- displayName = "denise_";
- nicknames = [ "0x7F454C46" "_denise" ];
- accents = {
- primary = "Lavender";
- secondary = "Blue";
- };
- wallpaper = ./wallpapers/denise_picrew_2.png;
- };
- };
- defaultFront = fronters.jams;
-in {
- nixpkgs.config.allowUnfree = true;
-
- imports = [ ./jwm.nix ./fontconfig.nix ];
-
- jainawm = {
- enable = true;
- fonts = fonts;
- phelper = {
- profiles = fronters;
- defaultProfile = "jams";
- makeSpecializations = true;
- };
- };
- # specialization = builtins.mapAttrs (n: c: { configuration = {
- # jainawm.phelper.activeProfile = n;
- # home.activation.recordVersion = lib.hm.dag.entryAnywhere "";
- # }; }) fronters;
-
- # Home Manager needs a bit of information about you and the
- # paths it should manage.
- home.username = "jaina";
- home.homeDirectory = "/home/jaina";
-
- fonts.fontconfig-extra = {
- enable = true;
- defaultFonts = {
- sans-serif = fonts.primary;
- serif = fonts.serif;
- monospace = fonts.fixed;
- };
- };
-
- xdg.enable = true;
- xdg.cacheHome = builtins.toPath "${config.home.homeDirectory}/.cache";
- xdg.configHome = builtins.toPath "${config.home.homeDirectory}/.config";
- xdg.dataHome = builtins.toPath "${config.home.homeDirectory}/.local/share";
- xdg.stateHome = builtins.toPath "${config.home.homeDirectory}/.local/state";
- #xdg.mimeApps = {};
- xdg.userDirs = {
- enable = true;
- desktop = null;
- publicShare = null;
- templates = null;
- documents = "${config.home.homeDirectory}/documents";
- download = "${config.home.homeDirectory}/downloads";
- music = "${config.home.homeDirectory}/music";
- pictures = "${config.home.homeDirectory}/pictures";
- videos = "${config.home.homeDirectory}/videos";
- };
-
- xdg.desktopEntries = {
- webcord = {
- name = "WebCord";
- terminal = false;
- exec =
- "webcord --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu";
- };
- };
-
- # home.activation = {
- # recordVersion = lib.mkDefault (lib.hm.dag.entryAfter ["writeBoundary"] ''
- # rm -f "${config.xdg.stateHome}/hm-generation"
- # ${pkgs.coreutils}/bin/ln -s "$(
- # ${pkgs.home-manager}/bin/home-manager generations | \
- # ${pkgs.coreutils}/bin/head -n1 | \
- # ${pkgs.gawk}/bin/awk '{ print $7; }'
- # )" \
- # "${config.xdg.stateHome}/hm-generation"
- # '');
- # };
-
- gtk = {
- enable = true;
- font = fonts.primary;
- };
- home.pointerCursor = {
- gtk.enable = true;
- x11.enable = true;
- name = "Catppuccin-Mocha-Light-Cursors";
- size = 32;
- package = pkgs.catppuccin-cursors.mochaLight;
- };
-
- home.enableNixpkgsReleaseCheck = true;
-
- programs.kitty = {
- enable = true;
- font = fonts.fixed;
- theme = "Catppuccin-Mocha";
-
- settings = {
- background_opacity = "0.85";
- show_hyperlink_targets = true;
- enable_audio_bell = false;
- visual_bell_duration = "0.05";
- };
- };
-
- home.packages = with pkgs; [
- neofetch
- less
- fish
- killall
- htop
- wget
- binutils
- coreutils-full
- zip
- unzip
- git
-
- #sway
- #rofi-wayland
- #waybar
- bc
- mako
- python3
- swaybg
- swayidle
- brightnessctl
- pamixer
- libnotify
- inotify-tools
- wl-clipboard
- pulseaudio
- pipewire
- sqlite
- grim
- slurp
- swaylock-effects
- xdg-user-dirs
-
- firefox
-
- firefox-devedition-bin
-
- qutebrowser
- #qutebrowser-qt6
- kakoune
- kitty
- keepassxc
- discord
- webcord
-
- pavucontrol
- evince
-
- # (steam.override {
- # extraPkgs = pkgs:
- # with pkgs; [
- # xorg.libXcursor
- # xorg.libXi
- # xorg.libXinerama
- # xorg.libXScrnSaver
- # libpng
- # libpulseaudio
- # libvorbis
- # stdenv.cc.cc.lib
- # libkrb5
- # keyutils
-
- # # GW2
- # libpng12
- # gnutls
- # freetype
- # zlib
- # #llvm
- # ];
- # })
- steam
- gamemode
- lutris
- #wine
- #wine64
- wineWowPackages.stableFull
- SDL2
- vulkan-loader
-
- mpd
-
- mpv
-
- #rofi-emoji
- squeekboard
- wtype
-
- qbittorrent
- qbittorrent-nox
- nftables
-
- fabric-installer
- minecraft-server
- prismlauncher
-
- syncthing
-
- nixos-generators
-
- qemu_kvm
- OVMF.fd
-
- clementine
-
- gnumake
- gcc
-
- appimage-run
-
- shticker-book-unwritten
-
- jq
-
- iosevka-comfy.comfy-duo
- iosevka-comfy.comfy-wide-duo
- iosevka
-
- font-awesome
- (nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
-
- pinta
-
- krita
- blender
-
- p7zip
-
- go
- #zig
- #unstable.zig_0_11
-
- llvm
- libclang
-
- luajitPackages.fennel
- fnlfmt
-
- lmms
-
- aspell
-
- libreoffice
-
- #yarn
- #postgresql
- sqlite
- #redis
-
- emacs
-
- #rofi-wayland
-
- colmena
-
- liferea
- evolution
- okular
-
- nixfmt
-
- stable.dolphin-emu
-
- glxinfo
-
- #any-nix-shell
- nix-your-shell
-
- gdb
-
- scdl
- ffmpeg
- unstable.yt-dlp
- stable.spotdl
-
- strawberry
-
- element-desktop
-
- #(eww.override { withWayland = true; })
- eww
- socat
-
- (rustPlatform.buildRustPackage rec {
- pname = "hyprland-workspaces";
- version = "v2.0.1";
- src = fetchFromGitHub {
- owner = "FieldofClay";
- repo = pname;
- rev = version;
- sha256 = "GhUjvFMlgjTdgtV9ASW7IqE2dBktPyOlRwg6qM1r7vc=";
- };
-
- # patches = [ ./patches/hyprland-workspaces/output-monitor-info.patch ];
-
- # need to patch cargo.lock for unreleased hyprland-rs
- # cargoLock = {
- # lockFileContents =
- # builtins.readFile ./patches/hyprland-workspaces/Cargo.lock;
- # outputHashes = {
- # "hyprland-0.3.13" =
- # "sha256-m3Ax6gvD+TAClSGvFrFTZ8Xs0Kgd55cZPu7q5O9s8uk=";
- # };
- # };
-
- cargoSha256 = "zjgm4HllLtRKvjSgSOWIWc7igF/T8oxvIfbmwz/POEo=";
- })
-
- zscroll
-
- file
-
- heroic
-
- #nixgl.auto.nixVulkanNvidia
- #nixgl.auto.nixGLNvidiaBumblebee
-
- opusTools
-
- shotcut
- kdePackages.kdenlive
- glaxnimate
- mediainfo
-
- dig
- vlc
- ]; # end pkgs
-
- fonts.fontconfig.enable = true;
-
- programs.command-not-found.enable = true;
-
- home.sessionPath = [ "${config.home.homeDirectory}/.local/bin" ];
- home.sessionVariables = {
- VISUAL = "kak";
- EDITOR = "kak";
- BROWSER = "qutebrowser";
- PAGER = "less";
- TERMINAL = "kitty";
-
- SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent.socket";
- };
-
- programs.fish = {
- enable = true;
- shellAliases = {
- l = "ls -lah";
- psa = "ps aux";
- swaytree = "swaymsg -p -t get_tree | less";
- apcurl = "curl -H 'Accept: application/activity+json'";
- sway-game-output =
- "swaymsg 'output eDP-1 scale 1' && swaymsg 'output eDP-1 mode --custom 1920x1080' && swaymsg 'input * pointer_accel 0.35'";
- sway-normal-output =
- "swaymsg 'output eDP-1 scale 2' && swaymsg 'output eDP-1 mode 3000x2000' && swaymsg 'input * pointer_accel 0'";
- yt-mp3 =
- "yt-dlp --extract-audio --audio-quality 0 --embed-metadata --embed-thumbnail";
- };
- interactiveShellInit = ''
- neofetch
- if test -z "$DISPLAY" && test (tty) = "/dev/tty1"
- echo "Launching sway...."
- exec sh -c "sway | grep -v 'not resolve keysym' >$XDG_RUNTIME_DIR/sway.log 2>&1"
- end
- '';
- shellInit = ''
- #any-nix-shell fish --info-right | source
- if command -q nix-your-shell
- nix-your-shell fish | source
- end
- '';
- };
-
- programs.swaylock = {
- enable = true;
- package = pkgs.swaylock-effects;
- settings = {
- ignore-empty-password = true;
- show-failed-attempts = true;
- image = lib.mkDefault "${defaultFront.wallpaper}";
- effect-blur = "5x5";
- clock = true;
- };
- };
-
- services.swayidle = let
- mkFullscreenCheck = let
- jqFilter = ''
- ..
- | select (type == "object")
- | select (has("type") and (.type == "con" or .type == "floating_con"))
- | select (.visible and .fullscreen_mode != 0)
- '';
- in cmd:
- toString (pkgs.writeScript "fullscreen-check-wrapper" ''
- #!/bin/sh
- fullscreen_windows="$(${pkgs.sway}/bin/swaymsg -t get_tree | ${pkgs.jq}/bin/jq ${
- lib.strings.escapeShellArg jqFilter
- })"
- if [ -z "$fullscreen_windows" ]; then
- ${cmd}
- # else
- # Ignoring timeout command because there is a fullscreen window active
- # (such as a game or a movie)
- fi
- '');
- grace-period = 60;
- lock-timeout = 300;
- screen-timeout = 450;
- suspend-timeout = 600;
- lock-cmd = "${pkgs.swaylock-effects}/bin/swaylock --daemonize";
- set-screen = state: "${pkgs.sway}/bin/swaymsg 'output * dpms ${state}'";
- in {
- enable = true;
- events = [
- {
- event = "before-sleep";
- command = "${pkgs.systemd}/bin/loginctl lock-session";
- }
- {
- event = "lock";
- command = "${lock-cmd}";
- }
- {
- event = "after-resume";
- command = set-screen "on";
- }
- ];
- timeouts = [
- {
- timeout = lock-timeout;
- command = mkFullscreenCheck
- "${lock-cmd} --fade-in=3 --grace=${toString grace-period}";
- }
- {
- timeout = screen-timeout;
- command = set-screen "off";
- resumeCommand = set-screen "on";
- }
- {
- timeout = suspend-timeout;
- command = "${pkgs.systemd}/bin/systemctl suspend";
- }
- ];
- };
-
- services.syncthing.enable = true;
-
- programs.mangohud.enable = true;
-
- # Let Home Manager install and manage itself.
- programs.home-manager.enable = true;
-
- # This value determines the Home Manager release that your
- # configuration is compatible with. This helps avoid breakage
- # when a new Home Manager release introduces backwards
- # incompatible changes.
- #
- # You can update Home Manager without changing this value. See
- # the Home Manager release notes for a list of state version
- # changes in each release.
- home.stateVersion = "22.11";
-}
diff --git a/home-manager/jwm.nix b/home-manager/jwm.nix
deleted file mode 100644
index f31b9ff..0000000
--- a/home-manager/jwm.nix
+++ /dev/null
@@ -1,499 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-with lib;
-with builtins;
-let cfg = config.jainawm;
-in {
- options.jainawm = {
- enable = mkOption {
- type = types.bool;
- default = false;
- };
-
- terminal = {
- name = mkOption {
- type = types.str;
- default = "kitty";
- };
- package = mkOption {
- type = types.package;
- default = pkgs.kitty;
- };
- binPath = mkOption {
- type = types.str;
- readOnly = true;
- };
- };
-
- fonts = let fontOption = mkOption { type = lib.hm.types.fontType; };
- in {
- primary = fontOption;
- serif = fontOption;
- fixed = fontOption;
- wmOverlay = fontOption;
- };
-
- catppuccin = mkOption {
- #type = types.attrs;
- default = import ./catppuccin/mocha.nix;
- description = ''
- Set of colors to use for theme configuration.
- '';
- };
-
- accents = {
- primary = mkOption { type = types.str; };
- secondary = mkOption { type = types.str; };
- };
-
- wallpaper = mkOption { type = types.path; };
-
- startup = mkOption {
- type = types.listOf (type.submodule {
- options = {
- enable = mkEnableOption "Enable the given startup command";
-
- command = mkOption { type = types.str; };
-
- always = mkOption {
- type = types.bool;
- default = false;
- descrioption =
- "If true, the command will be ran when the window manager is reset";
- };
- };
- });
- };
- };
-
- imports = [
- ./jwm/sway.nix
- ./jwm/rofi.nix
- ./jwm/phelper.nix
- ./jwm/kanshi.nix
- ./jwm/waybar.nix
- ./jwm/ptray.nix
- ];
-
- config = let
- cat = cfg.catppuccin;
- #front = getAttr cfg.selectedFront cfg.fronters;
- fonts = cfg.fonts;
- in mkIf cfg.enable {
- jainawm.terminal.binPath =
- "${cfg.terminal.package}/bin/${cfg.terminal.name}";
- services.mako = {
- enable = true;
- anchor = "top-right";
-
- height = 100;
- width = 500;
- padding = "10";
- layer = "overlay";
-
- font = "${fonts.primary.name} ${toString (fonts.primary.size + 1)}";
- textColor = cat.text;
- backgroundColor = "${cat.surface0}cc";
- progressColor = "over ${cat.surface2}cc";
-
- borderColor =
- builtins.getAttr (lib.strings.toLower cfg.accents.primary) cat;
- borderRadius = 10;
- borderSize = 3;
-
- defaultTimeout = null;
- maxVisible = null;
- # groupBy =
- # iconPath =
- extraConfig = ''
- on-button-left=invoke-default-action
- on-touch=invoke-default-action
- on-button-right=dismiss
-
- [app-name="discord"]
- layer=overlay
- on-button-left=exec /usr/bin/env dropwinctl show discord && makoctl invoke -n "$id" && makoctl dismiss -n "$id"
-
- [app-name="JWM"]
- layer=overlay
-
- [app-name="JWM" category="audio" body~="1\([0-9][1-9]|[1-9][0-9]\)"]
- background-color=${cat.surface2}f8
- progress-color=over ${cat.red}cc
- '';
- };
-
- #jainawm.wallpaper = front.wallpaper;
- jainawm.rofi.accents =
- mapAttrs (n: c: builtins.getAttr (lib.strings.toLower c) cat) cfg.accents;
- jainawm.rofi.font = fonts.wmOverlay;
- jainawm.ptray = {
- enable = true;
- items = {
- discord = {
- match_classes = [ "WebCord" "discord" ];
- exec =
- "${pkgs.webcord}/bin/webcord --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu";
- };
-
- keepass = {
- match_classes = [ "org.keepassxc.KeePassXC" ];
- exec = "${pkgs.keepassxc}/bin/keepassxc";
- };
- };
- # drops = let
- # fx = [
- # "opacity 0.97"
- # "floating enable"
- # "resize set 80ppt 80ppt"
- # "move position 10ppt -10"
- # "sticky enable"
- # ];
- # in {
- # discord = {
- # match = [ "WebCord" "discord" ];
- # start = "${pkgs.discord}/bin/discord";
- # customization = fx;
- # };
- # keepass = {
- # match = [ "org.keepassxc.KeePassXC" ];
- # start = "${pkgs.keepassxc}/bin/keepassxc";
- # customization = fx;
- # };
- # matrix = {
- # match = [ "Element" ];
- # start = "${element-desktop}/bin/element-desktop";
- # customization = fx;
- # };
- # };
- };
- #jainawm.rofi.accent = "#ff0000";
- #jainawm.rofi.enable = true;
- #programs.waybar.style = builtins.readFile ./waybar/style.css;
-
- jainawm.kanshi.enable = true;
- jainawm.sway.enable = true;
- # TODO
- xdg.configFile."hypr/hyprpaper.conf".text = ''
- preload = ${cfg.wallpaper}
- wallpaper = ,${cfg.wallpaper}
- '';
- home.activation."switch-hyprpaper-wallpaper" =
- lib.hm.dag.entryAfter [ "writeBoundary" ] ''
- export PATH="$PATH:${config.wayland.windowManager.hyprland.package}/bin:${pkgs.jq}/bin"
- for inst in $(ls ''${XDG_RUNTIME_DIR:-/run/user/$UID}/hypr); do
- $DRY_RUN_CMD hyprctl -i $inst hyprpaper preload ${cfg.wallpaper} || true
- (hyprctl monitors -j -i $inst | jq --raw-output '.[] | .name' || true) | \
- xargs -I{} $DRY_RUN_CMD hyprctl -i $inst hyprpaper wallpaper '{},${cfg.wallpaper}'
- $DRY_RUN_CMD hyprctl -i $inst hyprpaper unload all || true
- done
- '';
- xdg.configFile."eww/theme_cat.scss".text = concatStringsSep "\n"
- (mapAttrsToList (name: value: "$cat-${name}: ${value};") cfg.catppuccin);
- xdg.configFile."eww/theme_jwm.scss".text = ''
- @import "theme_cat"
- $jwm-accent: $cat-${lib.strings.toLower cfg.accents.primary};
- $jwm-accent2: $cat-${lib.strings.toLower cfg.accents.secondary};
- $jwm-accent-contrast: $cat-crust;
- '';
-
- home.activation.reloadHyprland =
- lib.hm.dag.entryAfter [ "writeBoundary" ] ''
- export PATH="$PATH:${config.wayland.windowManager.hyprland.package}/bin"
-
- ls ''${XDG_RUNTIME_DIR:-/run/user/$UID}/hypr || true | \
- xargs -I{} $DRY_RUN_CMD hyprctl reload -i {}
- '';
- wayland.windowManager.hyprland.enable = true;
- #wayland.windowManager.hyprland.settings = { };
- wayland.windowManager.hyprland.extraConfig = let
- removeHash = col: builtins.replaceStrings [ "#" ] [ "" ] col;
- getColor = name:
- removeHash (builtins.getAttr (lib.strings.toLower name) cfg.catppuccin);
- mainMod = "SUPER";
- playerctl = "${pkgs.playerctl}/bin/playerctl --player strawberry";
- hide-special = pkgs.writeShellScript "jwm-hyprland-hide-special" ''
- hyprctl monitors -j | jq -r '.[] | .specialWorkspace.name | select(. | length > 0) | .[8:]' \
- | xargs -I{} hyprctl dispatcher togglespecialworkspace "{}" >/dev/null
- '';
- rofi-emoji = let
- rofi-emoji-theme = ''
- element selected {
- background-color: rgba(0,0,0,0 %);
- border-color: ${cfg.rofi.accents.primary}ff;
- border: 2px;
- }
- element {
- children: ["element-text"];
- }
- element-text {
- horizontal-align: 0.5;
- font: "${fonts.primary.name} 25";
- margin: 0px;
- }
- listview {
- flow: horizontal;
- columns: 7;
- }
- '';
- in pkgs.writeShellScript "rofi-emoji" ''
- ${config.programs.rofi.finalPackage}/bin/rofi \
- -show emoji -modes emoji \
- -emoji-format '{emoji}' \
- -theme-str ${lib.strings.escapeShellArg rofi-emoji-theme} \
- $@
- '';
- playerctlPrevOrScan = pkgs.writeScript "playerctlPrevOrScan" ''
- if [ "$(${playerctl} metadata --format '{{position}}')" -lt 10000000 ]; then
- ${playerctl} previous
- else
- ${playerctl} position 0
- fi
- '';
- in ''
- $mainMod = ${mainMod}
-
- # For all categories, see https://wiki.hyprland.org/Configuring/Variables/
- input {
- kb_layout = us
- kb_variant =
- kb_model =
- kb_options = altwin:swap_lalt_lwin,altwin:menu_win
- kb_rules =
-
- follow_mouse = 1
-
- touchpad {
- natural_scroll = yes
- }
-
- sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
- }
-
- gestures {
- workspace_swipe = true
- workspace_swipe_fingers = 4
- }
-
- general {
- col.active_border = rgba(${getColor cfg.accents.primary}ee)
- col.inactive_border = rgba(${removeHash cfg.catppuccin.surface0}aa)
-
- gaps_in = 10
- gaps_out = 20
- border_size = 2
-
- layout = dwindle
- }
-
- decoration {
- rounding = 10
- drop_shadow = yes
- shadow_range = 20
- shadow_render_power = 2
- col.shadow = rgba(000000ee)
- col.shadow_inactive = rgba(00000000)
-
- blur {
- size = 5
- passes = 2
-
- special = true
- }
- }
-
- layerrule = blur, rofi|notifications
- layerrule = ignorealpha 0.4, rofi|notifications
-
- animations {
- enabled = yes
-
- # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
-
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
-
- animation = windows, 1, 7, myBezier
- animation = windowsOut, 1, 7, default, popin 80%
- animation = border, 1, 10, default
- animation = borderangle, 1, 8, default
- animation = fade, 1, 7, default
- animation = workspaces, 1, 6, default
- animation = specialWorkspace, 1, 6, default, slidevert
- }
-
- dwindle {
- preserve_split = yes
- }
-
- gestures {
- workspace_swipe = on
- }
-
- bind = ${mainMod}, Return, exec, ${cfg.terminal.binPath}
- bind = ${mainMod}, D, exec, rofi -show drun
- bind = ${mainMod} SHIFT, S, exec, jwm screenshot-region
- binde = ${mainMod} SHIFT, Q, killactive,
- bind = ${mainMod} SHIFT, E, exit,
- bind = ${mainMod}, F, fullscreen,
- bind = ${mainMod}, Q, exec, ${hide-special}
-
- bindle = , XF86MonBrightnessUp, exec, jwm bright 5
- bindle = , XF86MonBrightnessDown, exec, jwm bright -5
- bindle = , XF86AudioRaiseVolume, exec, jwm vol 5
- bindle = , XF86AudioLowerVolume, exec, jwm vol -5
- bindl = , XF86AudioMute, exec, jwm vol toggle-mute
- bindl = , XF86AudioPlay, exec, ${playerctl} play-pause
- bindl = , XF86AudioNext, exec, ${playerctl} next
- bindl = , XF86AudioPrev, exec, ${playerctlPrevOrScan}
- bindl = ${mainMod} CTRL, right, exec, ${playerctl} next
- bindl = ${mainMod} CTRL, left, exec, ${playerctlPrevOrScan}
- bindl = , XF86AudioStop, exec, ${playerctl} stop
-
- # Move focus with mainMod + arrow keys
- bind = ${mainMod}, left, movefocus, l
- bind = ${mainMod}, down, movefocus, d
- bind = ${mainMod}, up, movefocus, u
- bind = ${mainMod}, right, movefocus, r
- bind = ${mainMod}, h, movefocus, l
- bind = ${mainMod}, j, movefocus, d
- bind = ${mainMod}, k, movefocus, u
- bind = ${mainMod}, l, movefocus, r
-
- # Move focused window with mainMod + Shift + direction keys
- bind = ${mainMod} SHIFT, left, moveWindowOrGroup, l
- bind = ${mainMod} SHIFT, down, moveWindowOrGroup, d
- bind = ${mainMod} SHIFT, up, moveWindowOrGroup, u
- bind = ${mainMod} SHIFT, right, moveWindowOrGroup, r
- bind = ${mainMod} SHIFT, h, moveWindowOrGroup, l
- bind = ${mainMod} SHIFT, j, moveWindowOrGroup, d
- bind = ${mainMod} SHIFT, k, moveWindowOrGroup, u
- bind = ${mainMod} SHIFT, l, moveWindowOrGroup, r
-
- # Switch workspaces with mainMod + [0-9]
- bind = ${mainMod}, 1, workspace, 1
- bind = ${mainMod}, 2, workspace, 2
- bind = ${mainMod}, 3, workspace, 3
- bind = ${mainMod}, 4, workspace, 4
- bind = ${mainMod}, 5, workspace, 5
- bind = ${mainMod}, 6, workspace, 6
- bind = ${mainMod}, 7, workspace, 7
- bind = ${mainMod}, 8, workspace, 8
- bind = ${mainMod}, 9, workspace, 9
- bind = ${mainMod}, 0, workspace, 10
-
- # Move active window to a workspace with mainMod + SHIFT + [0-9]
- bind = ${mainMod} SHIFT, 1, movetoworkspace, 1
- bind = ${mainMod} SHIFT, 2, movetoworkspace, 2
- bind = ${mainMod} SHIFT, 3, movetoworkspace, 3
- bind = ${mainMod} SHIFT, 4, movetoworkspace, 4
- bind = ${mainMod} SHIFT, 5, movetoworkspace, 5
- bind = ${mainMod} SHIFT, 6, movetoworkspace, 6
- bind = ${mainMod} SHIFT, 7, movetoworkspace, 7
- bind = ${mainMod} SHIFT, 8, movetoworkspace, 8
- bind = ${mainMod} SHIFT, 9, movetoworkspace, 9
- bind = ${mainMod} SHIFT, 0, movetoworkspace, 10
-
- # Scroll through existing workspaces with mainMod + scroll
- bind = ${mainMod}, mouse_down, workspace, e+1
- bind = ${mainMod}, mouse_up, workspace, e-1
-
- bind = ${mainMod}, TAB, workspace, e+1
- bind = ${mainMod}, GRAVE, workspace, e-1
- bind = ${mainMod} SHIFT, TAB, movetoworkspace, e+1
- bind = ${mainMod} SHIFT, GRAVE, movetoworkspace, e-1
-
- # Move/resize windows with mainMod + LMB/RMB and dragging
- bindm = ${mainMod}, mouse:272, movewindow
- bindm = ${mainMod}, mouse:273, resizewindow
-
- # Resize current window
- bind = ${mainMod}, R, submap, resize
- submap = resize
- binde =, left, resizeActive, -10 0
- binde =, down, resizeActive, 0 10
- binde =, up, resizeActive, 0 -10
- binde =, right, resizeActive, 10 0
- binde =, h, resizeActive, -10 0
- binde =, j, resizeActive, 0 10
- binde =, k, resizeActive, 0 -10
- binde =, l, resizeActive, 10 0
- bind=,escape,submap,reset
- bind=,return,submap,reset
- submap = reset
-
- # App Launcher
- bind = ${mainMod}, I, submap, app
- submap = app
- bind = , D, togglespecialworkspace, discord
- bind = , D, submap, reset
- bind = SHIFT, D, movetoworkspace, special:discord
- bind = SHIFT, D, submap, reset
- bind = , K, togglespecialworkspace, keepass
- bind = , K, submap, reset
- bind = SHIFT, K, movetoworkspace, special:keepass
- bind = SHIFT, K, submap, reset
- bind = , W, exec, jwm web-launcher
- bind = , W, submap, reset
- bind = , Return, submap, reset
- bind = , Escape, submap, reset
- submap = reset
-
- # OS commands
- bind = ${mainMod}, P, submap, command
- submap = command
- bind = , M, exec, jwm mic toggle-mute
- bind = , M, submap, reset
- bind = , S, exec, jwm switch-launcher
- bind = , S, submap, reset
- bind = , D, exec, jwm toggle-dwt
- bind = , D, submap, reset
- bind = , Return, submap, reset
- bind = , Escape, submap, reset
- submap = reset
-
- # Emoji
- bind = ${mainMod}, PERIOD, exec, ${rofi-emoji} -emoji-mode stdout | xargs wtype
-
- windowrule = noborder,^(steam_app_)(.*)$
- windowrule = noblur,^(steam_app_)(.*)$
-
- windowrulev2 = workspace special:discord,class:(WebCord)
- windowrulev2 = workspace special:keepass,class:(org.keepassxc.KeePassXC)
- source=~/.config/hypr/hyprland.conf.backup
- '';
- #wayland.windowManager.hyprland = {
- # extraConfig = ''
- # source=~/.config/hypr/hyprland.conf.backup
- # '';
- #enable = true;
- #};
- #jainawm.sway.useFx = true;
-
- home.packages = with pkgs; [ playerctl hyprpaper ];
-
- qt = {
- #enable = true;
- enable = false;
- platformTheme.name = "gtk";
- };
-
- gtk.enable = true;
- gtk.theme = {
- name = "Catppuccin-Mocha-Standard-${cfg.accents.primary}-Dark";
- package = pkgs.catppuccin-gtk.override {
- accents = [ (lib.strings.toLower cfg.accents.primary) ];
- variant = "mocha";
- };
- };
- programs.swaylock.settings.image = "${cfg.wallpaper}";
- #wayland.windowManager.sway.config.output."*".bg = "${front.wallpaper} fill";
-
- # programs.rofi.theme = import ./rofi-theme.nix {
- # cat = cat;
- # front = front;
- # fonts = cfg.fonts;
- # lib = lib;
- # config = config;
- # };
- };
-}
diff --git a/home-manager/jwm/eww/eww.scss b/home-manager/jwm/eww/eww.scss
deleted file mode 100644
index 4e6257a..0000000
--- a/home-manager/jwm/eww/eww.scss
+++ /dev/null
@@ -1,95 +0,0 @@
-@import "theme_cat_mocha"
-@import "theme_jwm"
-
-* {
- font-family: 'Iosevka Comfy Duo, Symbols Nerd Font, Font Awesome';
-}
-
-.background {
- background-color: rgba(#000, 0);
-}
-
-.bar {
- background-color: rgba($cat-mantle, 0.9);
- padding: 5px 10px;
- border-radius: 10px;
- margin: 10px;
- margin-bottom: 0px;
-}
-
-.modules > widget {
- background-color: rgba(#000, 0);
-}
-
-.modules > widget > *,
-.modules > * {
- background-color: rgba($cat-surface1, 0.7);
- border-radius: 10px;
- margin: 0px 10px;
- padding: 0px 10px;
-}
-
-.modules > .container {
- padding: 0px;
-}
-
-.modules > .container > widget > *,
-.modules > .container > * {
- padding: 0px 8px;
-}
-.modules > .container > widget:first-child > *,
-.modules > .container > *:first-child {
- border-top-left-radius: 10px;
- border-bottom-left-radius: 10px;
- padding-left: 10px;
-}
-.modules > .container > widget:last-child > *,
-.modules > .container > *:last-child {
- border-top-right-radius: 10px;
- border-bottom-right-radius: 10px;
- padding-right: 10px;
-}
-
-.workspaces { padding: 0px; }
-.workspaces .item {
- font-size: 90%;
- min-width: 12px;
- padding: 0px 8px;
- border-radius: 10px;
- background-color: rgba(0,0,0,0);
- color: $cat-text;
-}
-
-.workspaces .item:focus,
-.workspaces .item.workspace-active,
-.workspaces .item:hover {
- font-size: 100%;
-}
-
-.workspaces .item.workspace-active {
- background-color: $jwm-accent;
- color: $jwm-accent-contrast;
-}
-
-.audio-controls { padding: 0; }
-.audio-controls .volume-control { padding-right: 6px; }
-.audio-controls .mic-control .icon { padding-left: 6px; }
-
-.volume-control .icon { font-size: 18px; }
-.volume-control .value { padding-left: 6px; }
-.volume-control.muted .icon { color: $cat-red; }
-.volume-control.muted .value {
- color: $cat-subtext0;
- text-decoration: line-through;
-}
-
-.mic-control.muted .icon { color: $cat-subtext0; }
-
-.playerctl.playing .music-icon {
- background-color: $jwm-accent;
- color: $jwm-accent-contrast;
-}
-.playerctl.paused .details { color: $cat-subtext0; }
-.playerctl .details > *:first-child, .playerctl > *:first-child { padding-left: 0px; }
-.playerctl .details > *:last-child, .playerctl > *:last-child { padding-right: 0px; }
-.playerctl .details > * { padding: 0px 5px; }
diff --git a/home-manager/jwm/eww/eww.yuck b/home-manager/jwm/eww/eww.yuck
deleted file mode 100644
index 52118f1..0000000
--- a/home-manager/jwm/eww/eww.yuck
+++ /dev/null
@@ -1,288 +0,0 @@
-;; --------- Variables
-
-;; --------- Listeners
-
-(deflisten hyprland-window
- `
- socat -U - /tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | \
- grep 'activewindow>>' --line-buffered | \
- sed 's/^activewindow>>[^,]*,//' --unbuffered
- `)
-
-(deflisten hyprland-submap
- `
- socat -U - /tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | \
- grep 'submap>>' --line-buffered | \
- sed 's/^submap>>//' --unbuffered
- `)
-
-(deflisten workspace-list
- :initial '[]'
- `hyprland-workspaces _ | jq --compact-output --unbuffered '[
- .[] | select(.id > 0)
- ]'`)
-
-(deflisten current-workspace
- :initial '[]'
- `hyprland-workspaces _ | jq --compact-output --unbuffered '
- .[] | select(.id > 0) | select(.class | contains("active")) | .id
- '`)
-
-
-(deflisten audio-out-volume
- :initial 0
- `
- pamixer --get-volume
- pactl subscribe | grep --line-buffered "'change' on sink" | xargs -I {} pamixer --get-volume
- `
-)
-
-(deflisten audio-out-mute
- :initial false
- `
- pamixer --get-mute
- pactl subscribe | grep --line-buffered "'change' on sink" | xargs -I {} pamixer --get-mute
- `
-)
-
-(deflisten audio-in-mute
- :initial false
- `
- pamixer --get-mute --source @DEFAULT_SOURCE@
- pactl subscribe | grep --line-buffered "'change' on source" | xargs -I {} pamixer --get-mute --source @DEFAULT_SOURCE@
- `
-)
-
-
-(deflisten playerctl-status :initial "" `playerctl status --player strawberry --follow --format '{{lc(status)}}'`)
-(deflisten playerctl-title `playerctl metadata --player strawberry --follow --format '{{title}}'`)
-(deflisten playerctl-artist `playerctl metadata --player strawberry --follow --format '{{artist}}'`)
-(deflisten playerctl-album `playerctl metadata --player strawberry --follow --format '{{album}}'`)
-(deflisten playerctl-position `playerctl metadata --player strawberry --follow --format '{{duration(position)}}'`)
-(deflisten playerctl-length `playerctl metadata --player strawberry --follow --format '{{duration(mpris:length)}}'`)
-
-;; -------------- Widgets
-
-(defwidget window-title [?limit-width]
- (label
- :visible {strlength(hyprland-window) > 0}
- :text hyprland-window
- :class "window-title"
- :tooltip hyprland-window
- :limit-width {limit-width ?: 999}
- )
-)
-
-(defwidget wm-mode []
- (eventbox
- :class "wm-mode"
- :visible {strlength(hyprland-submap) > 0}
- :onclick `hyprctl dispatch submap '' >/dev/null`
- (label
- :text hyprland-submap
- :tooltip hyprland-submap
- )
- )
-)
-
-(defwidget workspaces [monitor]
- (box
- :class "workspaces"
- (eventbox
- :onscroll `~/.config/eww/hyprworkspace {} ${monitor} ${current-workspace}`
- (box
- (for i in {jq(workspace-list, '[ .[] | select (.monitor == "${monitor}") ]')}
- (button
- :onclick "bash -c 'hyprctl dispatch workspace ${i.id} >/dev/null'"
- :class "item ${i.class}"
- "${i.name}"
- )
- )
- )
- )
- )
-)
-
-(defwidget clock []
- (label
- :class "clock"
- :text {formattime(EWW_TIME, "%H:%M")}
- )
-)
-
-(defwidget battery [bat]
- (box
- :class {"battery " + (EWW_BATTERY[bat].capacity < 15 && EWW_BATTERY[bat].status != "Charging" ? "critical" : "") }
- :style {EWW_BATTERY[bat].status == "Charging" ? "padding-left: 8px" : "padding-left: 3px"}
- :space-evenly false
- (box
- :visible {EWW_BATTERY[bat].status == 'Charging'}
- :style "margin-right: 3px"
- (transform
- :rotate 75
- :translate-x "-19px"
- :translate-y "-4px"
- (label :text ""))
- )
- (transform
- :visible {EWW_BATTERY[bat].status != 'Charging'}
- :rotate 75
- :translate-x "-21px"
- (label :text {
- EWW_BATTERY[bat].capacity < 10 ? "" :
- EWW_BATTERY[bat].capacity < 20 ? "" :
- EWW_BATTERY[bat].capacity < 30 ? "" :
- EWW_BATTERY[bat].capacity < 40 ? "" :
- EWW_BATTERY[bat].capacity < 50 ? "" :
- EWW_BATTERY[bat].capacity < 60 ? "" :
- EWW_BATTERY[bat].capacity < 70 ? "" :
- EWW_BATTERY[bat].capacity < 80 ? "" :
- EWW_BATTERY[bat].capacity < 90 ? "" :
- ""
- }))
- (label :text "100%")
- )
-)
-
-(defwidget volume-control []
- (eventbox
- :onclick `pamixer --toggle-mute`
- ;;:onclick `notify-send "handler triggered"`
- :onscroll `
- amt=1
- if [ "{}" = "up" ]; then
- pamixer --increase $amt
- else
- pamixer --decrease $amt
- fi
- `
- (box
- :space-evenly false
- :class {"volume-control " + (audio-out-mute ? "muted " : "")}
- (label
- :class "icon"
- :text {
- audio-out-mute ? "" : (
- audio-out-volume < 10 ? "" :
- audio-out-volume < 60 ? "" :
- ""
- )
- }
- )
- (label :class "value" :text "${audio-out-volume}%")
- )
- )
-)
-
-(defwidget mic-control []
- (eventbox
- :class {"mic-control " + (audio-in-mute ? "muted " : "")}
- :onclick `pamixer --toggle-mute --source @DEFAULT_SOURCE@`
- (label
- :class "icon"
- :text {audio-in-mute ? "" : ""}
- )
- )
-)
-
-(defwidget audio-controls []
- (box :class "container audio-controls" :space-evenly false (volume-control) (mic-control))
-)
-
-(defwidget playerctl [?limit-width]
- (box
- :space-evenly false
- :class "container playerctl ${playerctl-status}"
- (eventbox
- (label :class "music-icon" :text "")
- )
- (eventbox
- :visible { playerctl-status != '' }
- :onclick 'playerctl --player strawberry play-pause'
- :onrightclick 'playerctl --player strawberry next'
- :onmiddleclick 'playerctl --player strawberry previous'
- (box
- :class "details"
- :space-evenly false
- :tooltip `${playerctl-title} - ${playerctl-artist} - ${playerctl-album}`
- (label
- :class "status-icon"
- :text { (playerctl-status == 'playing') ? '' : '' }
- )
- (label
- :class "track-info"
- :limit-width limit-width
- :text `${playerctl-title} - ${playerctl-artist} - ${playerctl-album}`
- )
- (label
- :class "position"
- :markup `[${playerctl-position}/${playerctl-length}]`
- )
- )
- )
- )
-)
-
-;; ---------- Bars
-
-(defwidget bar [monitor ?title-limit-width]
- (centerbox :class "bar"
- :class "bar"
- (box :class "modules modules-left"
- :space-evenly false
- :halign "start"
- (workspaces :monitor monitor)
- (wm-mode)
- (playerctl :limit-width 60)
- )
- (box :class "modules modules-center"
- :space-evenly false
- :halign "center"
- (window-title :limit-width title-limit-width)
- )
- (box :class "modules modules-right"
- :space-evenly false
- :halign "end"
- (audio-controls)
- (battery :bat "BAT0")
- (clock)
- )
- )
-)
-
-(defwindow bar-window-0
- :monitor 0
- :geometry (geometry :x "0%"
- :width "100%"
- :height "30px"
- :anchor "top center")
- :stacking "fg"
- ;; :reserve (struts :distance "80px" :side "top")
- :exclusive true
- :windowtype "dock"
- (box (bar :monitor "eDP-1" :title-limit-width 100))
-)
-(defwindow bar-window-1
- :monitor 1
- :geometry (geometry :x "0%"
- :width "100%"
- :height "30px"
- :anchor "top center")
- :stacking "fg"
- ;; :reserve (struts :distance "80px" :side "top")
- :exclusive true
- :windowtype "dock"
- (box (bar :monitor "DP-3"))
-)
-(defwindow bar-window-2
- :monitor 2
- :geometry (geometry :x "0%"
- :width "100%"
- :height "30px"
- :anchor "top center")
- :stacking "fg"
- ;; :reserve (struts :distance "80px" :side "top")
- :exclusive true
- :windowtype "dock"
- (box (bar :monitor "DP-2" :title-limit-width 60))
-)
diff --git a/home-manager/jwm/eww/hyprworkspace b/home-manager/jwm/eww/hyprworkspace
deleted file mode 100755
index d2fa1b2..0000000
--- a/home-manager/jwm/eww/hyprworkspace
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-cmd=$1
-monitor=$2
-current=$3
-
-
-if [ "$cmd" = "down" ]; then
- to_change=$(
- hyprctl workspaces -j | jq --raw-output '
- [ .[] | select(.monitor == "'$monitor'" and .id > 0) | .id ] |
- ([ .[] | select(. < '$current') ] | max) // max
- ')
-elif [ "$cmd" = "up" ]; then
- to_change=$(
- hyprctl workspaces -j | jq --raw-output '
- [ .[] | select(.monitor == "'$monitor'" and .id > 0) | .id ] |
- ([ .[] | select(. > '$current') ] | min) // min
- ')
-fi
-
-hyprctl dispatch workspace $to_change >/dev/null
diff --git a/home-manager/jwm/eww/theme_cat_latte.scss b/home-manager/jwm/eww/theme_cat_latte.scss
deleted file mode 100644
index 6350423..0000000
--- a/home-manager/jwm/eww/theme_cat_latte.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-$cat-rosewater: #dc8a78;
-$cat-flamingo: #dd7878;
-$cat-pink: #ea76cb;
-$cat-mauve: #8839ef;
-$cat-red: #d20f39;
-$cat-maroon: #e64553;
-$cat-peach: #fe640b;
-$cat-yellow: #df8e1d;
-$cat-green: #40a02b;
-$cat-teal: #179299;
-$cat-sky: #04a5e5;
-$cat-sapphire: #209fb5;
-$cat-blue: #1e66f5;
-$cat-lavender: #7287fd;
-$cat-text: #4c4f69;
-$cat-subtext1: #5c5f77;
-$cat-subtext0: #6c6f85;
-$cat-overlay2: #7c7f93;
-$cat-overlay1: #8c8fa1;
-$cat-overlay0: #9ca0b0;
-$cat-surface2: #acb0be;
-$cat-surface1: #bcc0cc;
-$cat-surface0: #ccd0da;
-$cat-base: #eff1f5;
-$cat-mantle: #e6e9ef;
-$cat-crust: #dce0e8;
diff --git a/home-manager/jwm/eww/theme_cat_mocha.scss b/home-manager/jwm/eww/theme_cat_mocha.scss
deleted file mode 100644
index 0fa15c6..0000000
--- a/home-manager/jwm/eww/theme_cat_mocha.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-$cat-rosewater: #f5e0dc;
-$cat-flamingo: #f2cdcd;
-$cat-pink: #f5c2e7;
-$cat-mauve: #cba6f7;
-$cat-red: #f38ba8;
-$cat-maroon: #eba0ac;
-$cat-peach: #fab387;
-$cat-yellow: #f9e2af;
-$cat-green: #a6e3a1;
-$cat-teal: #94e2d5;
-$cat-sky: #89dceb;
-$cat-sapphire: #74c7ec;
-$cat-blue: #89b4fa;
-$cat-lavender: #b4befe;
-$cat-text: #cdd6f4;
-$cat-subtext1: #bac2de;
-$cat-subtext0: #a6adc8;
-$cat-overlay2: #9399b2;
-$cat-overlay1: #7f849c;
-$cat-overlay0: #6c7086;
-$cat-surface2: #585b70;
-$cat-surface1: #45475a;
-$cat-surface0: #313244;
-$cat-base: #1e1e2e;
-$cat-mantle: #181825;
-$cat-crust: #11111b;
diff --git a/home-manager/jwm/eww/theme_jwm.scss b/home-manager/jwm/eww/theme_jwm.scss
deleted file mode 100644
index 13e2e13..0000000
--- a/home-manager/jwm/eww/theme_jwm.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-$jwm-accent: $cat-green;
-$jwm-accent2: $cat-blue;
-$jwm-accent-contrast: $cat-crust;
diff --git a/home-manager/jwm/kanshi.nix b/home-manager/jwm/kanshi.nix
deleted file mode 100644
index 9c52ecf..0000000
--- a/home-manager/jwm/kanshi.nix
+++ /dev/null
@@ -1,84 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-with builtins;
-
-let cfg = config.jainawm.kanshi;
-in {
- options.jainawm.kanshi = { enable = mkEnableOption "Enable kanshi config"; };
-
- config = mkIf cfg.enable {
- wayland.windowManager.sway.config.startup = [{
- command = "${pkgs.kanshi}/bin/kanshictl reload";
- always = true;
- }];
- home.packages = [ pkgs.kanshi ];
- services.kanshi = {
- enable = true;
- profiles = let
- laptop = "eDP-1";
- asus1440 = "Ancor Communications Inc ASUS MG278 0x00001EC0";
- hp1080 = "HP Inc. HP 24mh 3CM2023MLQ ";
- #asus1440 = "DP-3";
- #hp1080 = "DP-2";
- in {
- undocked = {
- outputs = [{
- criteria = laptop;
- mode = "1920x1200";
- }];
- };
-
- undocked-game = {
- outputs = [{
- criteria = laptop;
- mode = "1920x1080";
- transform = "normal";
- status = "enable";
- }];
- };
-
- docked = let
- # asusCoords = {
- # x = 0;
- # y = 0;
- # };
- asusCoords = {
- x = 1080;
- y = 100;
- };
- mkPosition = x: y:
- "${toString (asusCoords.x + x)},${toString (asusCoords.y + y)}";
- in {
- outputs = [
- {
- criteria = laptop;
- mode = "1920x1200";
- #position = "3640,1080";
- position = mkPosition 2560 980;
- transform = "normal";
- status = "enable";
- }
- {
- criteria = asus1440;
- mode = "2560x1440"; # TODO: figure out 144Hz
- #position = "1080,100";
- position = mkPosition 0 0;
- transform = "normal";
- status = "enable";
- }
- {
- criteria = hp1080;
- mode = "1920x1080";
- #position = "0,0";
- #position = "-1080,100";
- position = mkPosition (-1080) 100;
- transform = "90";
- status = "enable";
- }
- ];
- };
- };
- };
- };
-}
diff --git a/home-manager/jwm/phelper.nix b/home-manager/jwm/phelper.nix
deleted file mode 100644
index 7fc0270..0000000
--- a/home-manager/jwm/phelper.nix
+++ /dev/null
@@ -1,152 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
- cfg = config.jainawm;
- cat = cfg.catppuccin;
- profileDir = "${config.xdg.stateHome}/phelper";
- profilePath = "${profileDir}/active-profile";
-
-in {
- options.jainawm.phelper = {
- enable = mkOption {
- type = types.bool;
- default = true;
- };
-
- defaultProfile = mkOption { type = types.str; };
- specialisationProfile = mkOption {
- type = types.nullOr types.str;
- default = null;
- };
- makeSpecializations = mkOption {
- type = types.bool;
- default = false;
- };
-
- profiles = mkOption {
- type = types.attrsOf (types.submodule {
- options = {
- name = mkOption { type = types.str; };
-
- displayName = mkOption {
- type = types.nonEmptyStr;
- description = ''
- Display name to use for the profile.
- '';
- };
-
- nicknames = mkOption {
- type = types.listOf types.str;
- default = [ ];
- };
-
- accents = let
- colorType = types.enum [
- "Rosewater"
- "Flamingo"
- "Pink"
- "Mauve"
- "Red"
- "Maroon"
- "Peach"
- "Yellow"
- "Green"
- "Teal"
- "Sky"
- "Sapphire"
- "Blue"
- "Lavender"
- ];
- in {
- primary = mkOption {
- type = colorType;
- description = "The primary accent to use.";
- };
- secondary = mkOption {
- type = colorType;
- description = "The secondary accent to use.";
- };
- };
-
- wallpaper = mkOption { type = types.path; };
- };
- });
- };
- };
-
- config = let
- useDefault = builtins.isNull cfg.phelper.specialisationProfile;
- activeProfileName = if !useDefault then
- cfg.phelper.specialisationProfile
- else
- cfg.phelper.defaultProfile;
- activeProfile = getAttr activeProfileName cfg.phelper.profiles;
- in mkIf cfg.phelper.enable {
- jainawm = {
- wallpaper = activeProfile.wallpaper;
- accents = activeProfile.accents;
- };
-
- assertions = [{
- assertion = config.xdg.userDirs.enable;
- message = "xdg.userDirs.enable must be set";
- }];
-
- home.activation.phelperSetProfile =
- let path = "${config.xdg.stateHome}/phelper/active-profile";
- in lib.hm.dag.entryAfter [ "writeBoundary" ] ''
- $DRY_RUN_CMD mkdir -p "${config.xdg.stateHome}/phelper"
- $DRY_RUN_CMD echo "${activeProfile.name}" > "${path}"
- '';
-
- # When switching to a "base" (not a profile specialisation) generation,
- # keep track of what the
- home.activation.phelperTrackSpecialization = lib.mkDefault
- (lib.hm.dag.entryAfter [ "writeBoundary" ] ''
- $DRY_RUN_CMD rm -f "${config.xdg.stateHome}/phelper/base-generation"
- $DRY_RUN_CMD ${pkgs.coreutils}/bin/ln -s "$(
- ${pkgs.home-manager}/bin/home-manager generations | \
- ${pkgs.coreutils}/bin/head -n1 | \
- ${pkgs.gawk}/bin/awk '{ print $7; }'
- )" \
- "${config.xdg.stateHome}/phelper/base-generation"
- '');
-
- specialisation = mkIf useDefault (mapAttrs (n: c: {
- configuration = {
- jainawm.phelper.specialisationProfile = n;
- home.activation.phelperTrackSpecialization =
- lib.hm.dag.entryAnywhere "";
- };
- }) cfg.phelper.profiles);
-
- xdg.configFile = let
- mkFiles = name: profile: {
- "phelper/profiles/${name}/name".text = profile.name;
- "phelper/profiles/${name}/display-name".text = profile.displayName;
- "phelper/profiles/${name}/nicknames".text =
- lib.concatStringsSep "\n" profile.nicknames;
- "phelper/profiles/${name}/wallpaper".source = profile.wallpaper;
- "phelper/profiles/${name}/wallpaper.${
- builtins.unsafeDiscardStringContext
- (lib.lists.last (lib.strings.splitString "." profile.wallpaper))
- }".source = profile.wallpaper;
- };
- in lists.foldl lib.trivial.mergeAttrs { }
- (mapAttrsToList mkFiles cfg.phelper.profiles);
-
- home.packages = let
- pkg = pkgs.stdenv.mkDerivation {
- name = "phelper-tools";
-
- dontUnpack = true;
-
- installPhase = ''
- mkdir -p "$out/bin"
- cp "${./phelper/phelper.sh}" "$out/bin/phelper"
- '';
- };
- in [ pkg ];
- };
-}
diff --git a/home-manager/jwm/phelper/phelper.sh b/home-manager/jwm/phelper/phelper.sh
deleted file mode 100755
index f56eca9..0000000
--- a/home-manager/jwm/phelper/phelper.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-
-profile_dir="$XDG_CONFIG_HOME/phelper/profiles"
-active_profile_file="$XDG_STATE_HOME/phelper/active-profile"
-
-get_option () {
- what="$1"
- who="$2"
- if [ -z "$who" ]; then
- who="$(phelper who)"
- fi
-
- path="$profile_dir/$who"
-
- case "$what" in
- "display-name") cat "$path/display-name" ;;
- "wallpaper") echo "$path/wallpaper" ;;
- "nicknames") cat "$path/nicknames" ;;
- #"theme_color") echo "$theme_color" ;;
- *)
- echo "Unknown var"
- exit 1
- ;;
- esac
-}
-
-do_switch () {
- who="$1"
- file="$XDG_STATE_HOME/phelper/base-generation/specialisation/$who/activate"
- if [ -e "$file" ]; then
- "$file"
- else
- echo "Profile $who not setup"
- exit 1
- fi
-}
-
-arg="$1"
-shift 1
-case "$arg" in
- "list") ls -1 "$profile_dir" ;;
- "switch") do_switch "$@" ;;
- "who") cat "$active_profile_file" ;;
- "get") get_option "$@" ;;
-esac
-
diff --git a/home-manager/jwm/ptray.nix b/home-manager/jwm/ptray.nix
deleted file mode 100644
index aa61f74..0000000
--- a/home-manager/jwm/ptray.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ lib, pkgs, config, ... }:
-
-with lib;
-with builtins;
-
-let cfg = config.jainawm.ptray;
-in {
- options.jainawm.ptray = {
- enable = mkEnableOption "Enable ptray support";
- items = mkOption {
- type = types.anything;
- default = { };
- };
-
- style = mkOption {
- type = types.listOf types.str;
- default = [
- "floating enable"
- "opacity 0.97"
- "resize set 80ppt 80ppt"
- "move position 10ppt -10"
- "sticky enable"
- ];
- };
-
- finalPackage = mkOption {
- type = types.package;
- readOnly = true;
- };
- };
-
- config = mkIf cfg.enable {
- wayland.windowManager.sway.config.window.commands = let
- mkRules = let
- style = concatStringsSep ",, " cfg.style;
- mkRulesForClass = class: [
- ({
- command = style;
- criteria = { class = class; };
- })
- ({
- command = style;
- criteria = { app_id = class; };
- })
- ];
- in name: item: map mkRulesForClass item.match_classes;
- in lists.flatten (mapAttrsToList mkRules cfg.items);
- wayland.windowManager.sway.config.startup =
- [{ command = "${cfg.finalPackage}/bin/ptray"; }];
-
- jainawm.ptray.finalPackage =
- # prob not the right way to do this but i don't really care
- let python = pkgs.python311;
- in python.pkgs.buildPythonPackage {
- name = "jwm-ptray";
- version = "0.1";
-
- src = ./ptray;
-
- doCheck = false;
-
- propagatedBuildInputs = with python.pkgs; [ inotify ];
- };
-
- xdg.configFile."ptray/config.json".text =
- builtins.toJSON ({ items = cfg.items; });
- home.packages = [ cfg.finalPackage ];
- };
-}
diff --git a/home-manager/jwm/ptray/config.py b/home-manager/jwm/ptray/config.py
deleted file mode 100644
index 697e182..0000000
--- a/home-manager/jwm/ptray/config.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import os
-import json
-
-CONFIG_FILE = os.path.join(os.getenv('XDG_CONFIG_HOME'), 'ptray', 'config.json')
-
-DESKTOP = os.getenv('XDG_CURRENT_DESKTOP')
-
-if DESKTOP == 'i3' or DESKTOP == 'sway':
- STATE_DIR = '{}.{}'.format(os.getenv('I3SOCK'), 'ptray')
-elif DESKTOP == "hyprland":
- STATE_DIR = '{}/{}.ptray'.format(os.getenv("XDG_RUNTIME_DIR"), os.getenv("HYPRLAND_INSTANCE_SIGNATURE"))
-else:
- raise ValueError('Unsupported value of XDG_CURRENT_DESKTOP: {}'.format(DESKTOP))
-
-def read_config(path=CONFIG_FILE):
- with open(path, 'r') as f:
- config = json.load(f)
- return config
diff --git a/home-manager/jwm/ptray/hyprland/__init__.py b/home-manager/jwm/ptray/hyprland/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/home-manager/jwm/ptray/hyprland/protocol.py b/home-manager/jwm/ptray/hyprland/protocol.py
deleted file mode 100644
index 680476a..0000000
--- a/home-manager/jwm/ptray/hyprland/protocol.py
+++ /dev/null
@@ -1,117 +0,0 @@
-import os
-import socket
-import json
-from typing import NamedTuple, Any
-
-HYPR = "/tmp/hypr/{}".format(os.getenv("HYPRLAND_INSTANCE_SIGNATURE"))
-
-COMMANDSOCK = "{}/.socket.sock".format(HYPR)
-EVENTSOCK = "{}/.socket2.sock".format(HYPR)
-
-BUF_SIZE = 2 ** 20
-
-class EventType(Enum):
- WORKSPACE = "workspace"
- FOCUSED_MON = "focusedmon"
- ACTIVE_WINDOW = "activewindow"
- ACTIVE_WINDOW_V2 = "activewindowv2"
- FULLSCREEN = "fullscreen"
- MONITOR_REMOVED = "monitorremoved"
- MONITOR_ADDED = "monitoradded"
- CREATE_WORKSPACE = "createworkspace"
- DESTROY_WORKSPACE = "destroyworkspace"
- MOVE_WORKSPACE = "moveworkspace"
- ACTIVE_LAYOUT = "activelayout"
- OPEN_WINDOW = "openwindow"
- CLOSE_WINDOW = "closewindow"
- MOVE_WINDOW = "movewindow"
- OPEN_LAYER = "openlayer"
- CLOSE_LAYER = "closelayer"
- SUBMAP = "submap"
- CHANGE_FLOATING_MODE = "changefloatingmode"
- URGENT = "urgent"
- MINIMIZE = "minimize"
- SCREENCAST = "screencast"
- WINDOW_TITLE = "windowtitle"
-
-class Event(NamedTuple):
- type : EventType
- value : str
-
-def subscribe(sockfile=EVENTSOCK):
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM | socket.SOCK_CLOEXEC)
- sock.connect(sockfile)
-
- while True:
- msg = sock.recvmsg(BUF_SIZE)[0]
- type, value = msg.split('>>', 1)
-
- return Event(type=type, value=value)
-
-def hyprctl(cmd, sockfile=COMMANDSOCK):
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM | socket.SOCK_CLOEXEC)
- try:
- sock.connect(sockfile)
-
- header = 'j/'.encode('utf-8')
- payload = cmd.encode('utf-8')
-
- sock.sendmsg([header, payload])
-
- msg = sock.recvmsg(BUF_SIZE)[0]
- finally:
- sock.close()
-
- return json.loads(msg)
-
-print(json.dumps(hyprctl('clients')))
-
-class Monitor:
- event_handler = None
- tracked_classes = None
-
- window_ids = None
-
- def __init__(self, event_handler, tracked_classes):
- self.event_handler = event_handler
- self.tracked_classes = tracked_classes
- self.window_ids = {name: set() for name in tracked_classes}
-
- windows = hyprctl('clients')
- monitors = hyprctl('monitors')
- open_workspaces = [m['specialWorkspace']['id'] for m in monitors]
- for window in windows:
- for name: classes in tracked_classes.items():
- for cls in classes:
- if cls in window['class']:
- id = window['address']
- self.event_handler.on_create(name, id)
- self.window_ids[name].add(id)
-
- workspace_id = window['workspace']['id']
- if workspace_id < 0:
- self.event_handler.on_float(name, id)
- if workspace_id in open_workspaces:
- self.event_handler.on_visible(name, id)
- else:
- self.event_handler.on_invisible(name, id)
- else:
- self.event_handler.on_tile(name, id)
- self.event_handler.on_visible(name, id)
-
- def listen(self):
- for event in subscribe():
- self.handle_event(event)
-
- def match_window_id_to_name(self, id):
- for name, ids in self.window_ids.items():
- if id in ids:
- return name
- return None
-
- def handle_event(self, event):
- if event == EventType.MOVE_WINDOW:
- id, workspace = event.split(',', 1)
- if workspace.startsWith('special'):
- self.even
- movewindow>>2700e80,special:3
diff --git a/home-manager/jwm/ptray/i3sway/__init__.py b/home-manager/jwm/ptray/i3sway/__init__.py
deleted file mode 100644
index 8b13789..0000000
--- a/home-manager/jwm/ptray/i3sway/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/home-manager/jwm/ptray/i3sway/commands.py b/home-manager/jwm/ptray/i3sway/commands.py
deleted file mode 100644
index 8653997..0000000
--- a/home-manager/jwm/ptray/i3sway/commands.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from i3sway.protocol import Connection, ConnType
-
-class Client:
- conn = None
- def __init__(self):
- self.conn = Connection()
-
- def __enter__(self):
- return self
-
- def __exit__(self, *details):
- self.conn.close()
-
- def cmd_on_window(self, id, cmd):
- if self.conn.type == ConnType.SWAY:
- criteria = '[con_id={}]'.format(id)
- else:
- criteria = '[id={}]'.format(id)
-
- return self.conn.exec('{} {}'.format(criteria, cmd))
-
- def show_window(self, id):
- self.cmd_on_window(id, "focus")
-
- def hide_window(self, id):
- self.cmd_on_window(id, "move to scratchpad")
-
- def run(self, command):
- self.conn.exec("exec {}".format(command))
-
diff --git a/home-manager/jwm/ptray/i3sway/monitor.py b/home-manager/jwm/ptray/i3sway/monitor.py
deleted file mode 100644
index 087add9..0000000
--- a/home-manager/jwm/ptray/i3sway/monitor.py
+++ /dev/null
@@ -1,112 +0,0 @@
-from i3sway.protocol import Connection, MessageType
-
-class Monitor:
- tracked_classes = None
- cmd_sock = None
- subscription_sock = None
- event_handler = None
- conn_type = None
-
- def __enter__(self):
- return self
-
- def __exit__(self, *details):
- self.cmd_sock.close()
- self.subscription_sock.close()
-
- def __init__(self, event_handler, tracked_classes):
- self.event_handler = event_handler
- self.tracked_classes = tracked_classes
-
- self.cmd_sock = Connection()
- self.subscription_sock = Connection()
-
- tree = self.cmd_sock.request(MessageType.GET_TREE).payload
-
- def parse_tree(root):
- if root.get('window') is not None or root.get('app_id') is not None:
- # Application window
- for name, classes in tracked_classes.items():
- if self.container_matches_classes(root, classes):
- id = str(root['id'])
- self.event_handler.on_create(name, id)
- if root['visible']:
- self.event_handler.on_visible(name, id)
-
- if root['type'] == 'floating_con':
- self.event_handler.on_float(name, id)
- elif root['type'] == 'con':
- self.event_handler.on_tile(name, id)
- else:
- for node in root['nodes']:
- parse_tree(node)
- for node in root['floating_nodes']:
- parse_tree(node)
-
- parse_tree(tree)
-
- def container_matches_classes(self, container, classes):
- normalize = lambda v: v.lower() if v is not None else ''
- app_id = container.get('app_id')
- window_props = container.get('window_properties')
- instance = window_props.get('instance') if window_props is not None else None
- window_class = window_props.get('class') if window_props is not None else None
-
- app_id = normalize(app_id)
- instance = normalize(instance)
- window_class = normalize(window_class)
- for keyword in classes:
- kw = normalize(keyword)
- if kw in app_id or kw in instance or kw in window_class:
- return True
-
- return False
-
- def listen(self):
- for event in self.subscription_sock.subscribe(['window']):
- self.handle_event(event)
-
- def is_window_in_scratchpad(self, id):
- def scan_tree(root, is_in_scratch):
- if root['id'] == id:
- return is_in_scratch
- is_scratch = is_in_scratch or (
- root['type'] == 'workspace' and root['name'] == '__i3_scratch'
- )
- for node in root['nodes'] + root['floating_nodes']:
- result = scan_tree(node, is_scratch)
- if result is not None:
- return result
-
- tree = self.cmd_sock.request(MessageType.GET_TREE)
- return scan_tree(tree.payload, False)
-
- def handle_event(self, event):
- if event.type == MessageType.window:
- return self.handle_window_event(event)
-
- def handle_window_event(self, event):
- container = event['container']
-
- for name, classes in self.tracked_classes.items():
- change = event['change']
- if self.container_matches_classes(container, classes):
- id = str(container['id'])
- if change == 'new':
- self.event_handler.on_create(name, id)
- elif change == 'focus':
- self.event_handler.on_visible(name, id)
- elif change == 'close':
- self.event_handler.on_destroy(name, id)
- elif change == 'move':
- if container['visible']:
- self.event_handler.on_visible(name, id)
- else:
- self.event_handler.on_invisible(name, id)
- elif change == 'floating':
- if container['type'] == 'floating_con':
- self.event_handler.on_float(name, id)
- elif container['type'] == 'con':
- self.event_handler.on_tile(name, id)
-
-
diff --git a/home-manager/jwm/ptray/i3sway/protocol.py b/home-manager/jwm/ptray/i3sway/protocol.py
deleted file mode 100644
index 0b56cc7..0000000
--- a/home-manager/jwm/ptray/i3sway/protocol.py
+++ /dev/null
@@ -1,133 +0,0 @@
-import json
-import socket
-import struct
-import os
-
-from enum import Enum, IntEnum
-from typing import NamedTuple, Any
-
-class ConnType(Enum):
- SWAY = 'sway'
- I3 = 'i3'
-
-SWAYSOCK = os.getenv('SWAYSOCK')
-I3SOCK = os.getenv('I3SOCK')
-
-class MessageType(IntEnum):
- # Commands / Replies
- RUN_COMMAND = 0
- GET_WORKSPACES = 1
- SUBSCRIBE = 2
- GET_OUTPUTS = 3
- GET_TREE = 4
- GET_MARKS = 5
- GET_BAR_CONFIG = 6
- GET_VERSION = 7
- GET_BINDING_NODES = 8
- GET_CONFIG = 9
- SEND_TICK = 10
- SYNC = 11
- GET_BINDING_STATE = 12
- GET_INPUTS = 100
- GET_SEATS = 101
-
- # Events
- workspace = 0x80000000
- mode = 0x80000002
- window = 0x80000003
- barconfig_update = 0x80000004
- binding = 0x80000005
- shutdown = 0x80000006
- tick = 0x80000007
- bar_state_update = 0x80000014
- input = 0x80000015
-
-class Message(NamedTuple):
- type : MessageType
- payload : Any
-
- MAGIC = 'i3-ipc'.encode('utf-8')
- HEADER_FORMAT = '=6sII'
- HEADER_LEN = struct.calcsize(HEADER_FORMAT)
-
- def accept(sock):
- header = sock.recvmsg(Message.HEADER_LEN)[0]
- magic, len, type = struct.unpack(Message.HEADER_FORMAT, header)
- if magic != Message.MAGIC:
- raise ValueError('Protocol error, expected magic value {}, got magic value {}' % (Message.MAGIC, magic))
-
- payload_buf = sock.recvmsg(len)[0]
- payload = json.loads(payload_buf)
-
- return Message(type=type, payload=payload)
-
- def send(self, sock):
- if self.payload is None:
- payload_buf = bytes([])
- elif isinstance(self.payload, str):
- payload_buf = self.payload.encode('utf-8')
- else:
- payload_buf = json.dumps(self.payload).encode('utf-8')
- payload_len = len(payload_buf)
-
- header = struct.pack(Message.HEADER_FORMAT, Message.MAGIC, payload_len, self.type)
- sock.sendmsg([header, payload_buf])
-
- def __getitem__(self, key):
- return self.payload[key]
-
-class Connection:
- sock: socket.socket
- type: ConnType
- subscription_open: bool = False
-
- def __init__(self, type=None, sockfile=None):
- self.type = type
- if sockfile is None:
- if type == ConnType.SWAY or (type is None and SWAYSOCK is not None):
- sockfile = SWAYSOCK
- self.type = ConnType.SWAY
- elif type == ConnType.I3 or (type is None and I3SOCK is not None):
- sockfile = I3SOCK
- self.type = ConnType.I3
- else:
- raise ValueError('No compatible window managers found')
-
- self.sock = socket.socket(
- socket.AF_UNIX,
- socket.SOCK_STREAM,# | socket.SOCK_NONBLOCK | socket.SOCK_CLOEXEC,
- )
- self.sock.connect(sockfile)
-
- def __enter__(self):
- return self
- def __exit__(self, *details):
- self.close()
-
- def close(self):
- self.sock.close()
-
- def subscribe(self, events: list):
- if self.subscription_open:
- raise ValueError('Subscription already open on socket')
-
- reply = self.request(MessageType.SUBSCRIBE, events)
- if not reply['success']:
- raise ValueError('Subscription failed')
-
- self.subscription_open = True
- while True:
- yield Message.accept(self.sock)
-
- def exec(self, command: str):
- return self.request(MessageType.RUN_COMMAND, command)
-
- def request(self, type: MessageType, payload: Any = None) -> Message:
- if self.subscription_open:
- raise ValueError('Subscription open on socket')
- message = Message(type=type, payload=payload)
- message.send(self.sock)
- reply = Message.accept(self.sock)
- if reply.type != type:
- print('Incorrect reply type', reply.type)
- return reply
diff --git a/home-manager/jwm/ptray/ptray b/home-manager/jwm/ptray/ptray
deleted file mode 100755
index c22768c..0000000
--- a/home-manager/jwm/ptray/ptray
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-
-from i3sway.monitor import Monitor
-from config import read_config
-from state import StateWriter
-
-"""
-{
- "items": {
- "discord": {
- "match_class": [ "discord" "WebCord" ],
- "exec": "webcord",
- },
- },
-}
-"""
-
-config = read_config()
-
-state = StateWriter(config)
-class_map = {name: defn['match_classes'] for name, defn in config['items'].items()}
-with Monitor(state, class_map) as wm:
- wm.listen()
diff --git a/home-manager/jwm/ptray/ptrayctl b/home-manager/jwm/ptray/ptrayctl
deleted file mode 100755
index 98fc2c2..0000000
--- a/home-manager/jwm/ptray/ptrayctl
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import argparse
-import inotify.adapters
-from i3sway.commands import Client
-from config import read_config
-from state import open_file, format_path
-
-parser = argparse.ArgumentParser(
- prog='ptrayctl',
- description='manages user pseudo-tray',
-)
-
-parser.add_argument('command', choices=['show', 'hide', 'watch', 'toggle'])
-parser.add_argument('name', nargs='?')
-parser.add_argument('-a', '--all', action='store_true', help='Include windows that are not floating')
-
-args = parser.parse_args()
-config = read_config()
-
-def show_window(name):
- with Client() as client:
- is_open = False
- with open_file(name, 'window_ids') as f:
- for line in f:
- is_open = True
- client.show_window(int(line))
- if not is_open:
- with open_file(name, 'exec') as f:
- client.run(f.read())
-
-def hide_window(name):
- if not args.all:
- with open_file(name, 'tiled_ids') as f:
- ignore_ids = f.read().split('\n')
- else:
- ignore_ids = []
-
- with Client() as client:
- with open_file(name, 'window_ids') as f:
- for line in f:
- if line not in ignore_ids:
- client.hide_window(int(line))
-
-def hide_all():
- for name in config['items']:
- hide_window(name)
-
-def toggle_window(name):
- with open_file(name, 'status') as f:
- status = f.read()
- if status == 'fg':
- hide_window(name)
- else:
- show_window(name)
-
-def watch_window(name):
- i = inotify.adapters.Inotify()
- i.add_watch(format_path(name, ''))
- def read_status():
- with open_file(name, 'status') as f:
- return f.read()
-
- status = read_status()
- print(status, flush=True)
-
- for event in i.event_gen(yield_nones=False):
- (_, type_names, _, filename) = event
- if 'IN_CLOSE_WRITE' in type_names and filename == 'status':
- new_status = read_status()
- if status != new_status:
- print(new_status, flush=True)
- status = new_status
-
-if args.command == 'show':
- if args.name is None:
- raise ValueError('name must be specified for show commands')
-
- show_window(args.name)
-elif args.command == 'hide':
- if args.name is None:
- hide_all()
- else:
- hide_window(args.name)
-elif args.command == 'toggle':
- if args.name is None:
- raise ValueError('name must be specified for toggle commands')
-
- toggle_window(args.name)
-elif args.command == 'watch':
- if args.name is None:
- raise ValueError('name must be specified for watch commands')
-
- watch_window(args.name)
-
diff --git a/home-manager/jwm/ptray/requirements.txt b/home-manager/jwm/ptray/requirements.txt
deleted file mode 100644
index 5d47832..0000000
--- a/home-manager/jwm/ptray/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-inotify
diff --git a/home-manager/jwm/ptray/setup.py b/home-manager/jwm/ptray/setup.py
deleted file mode 100644
index 99f2604..0000000
--- a/home-manager/jwm/ptray/setup.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-from distutils.core import setup
-
-setup(
- name='ptray',
- version='0.1',
- scripts=[ 'ptray', 'ptrayctl' ],
- packages=['', 'i3sway'],
-)
diff --git a/home-manager/jwm/ptray/state.py b/home-manager/jwm/ptray/state.py
deleted file mode 100644
index bc7c3fa..0000000
--- a/home-manager/jwm/ptray/state.py
+++ /dev/null
@@ -1,85 +0,0 @@
-import os
-from config import STATE_DIR
-
-def format_path(name, property):
- return '{}/{}/{}'.format(STATE_DIR, name, property)
-
-
-def write_file(dir, basename, content):
- os.makedirs('{}/{}'.format(STATE_DIR, dir), exist_ok=True)
- path = format_path(dir, basename)
- with open(path, 'w') as f:
- f.write(content)
-
-def open_file(dir, basename):
- path = format_path(dir, basename)
- return open(path, 'r')
-
-def add_window(tracking: dict, name, window_id: str):
- new_dict = tracking.copy()
- new_dict[name] = new_dict.get(name, set()) | {window_id}
- return new_dict
-
-def remove_window(tracking: dict, name, window_id: str):
- new_dict = tracking.copy()
- new_dict[name] = new_dict.get(name, set()) - {window_id}
- return new_dict
-
-def read_config(path):
- with open(path, 'r') as f:
- config = json.load(f)
- return config
-
-class StateWriter:
- tracked_ids = None
- visible_ids = None
- config = None
-
- def __init__(self, config):
- self.config = config
- self.tracked_ids = {name: set() for name in config['items'].keys()}
- self.visible_ids = {name: set() for name in config['items'].keys()}
- self.tiled_ids = {name: set() for name in config['items'].keys()}
- for name, defn in config['items'].items():
- write_file(name, 'exec', defn['exec'])
- write_file(name, 'status', '')
- write_file(name, 'window_ids', '')
-
- def update_window_state(self, name):
- if len(self.visible_ids[name]) != 0:
- write_file(name, 'status', 'fg')
- elif len(self.tracked_ids[name]) != 0:
- write_file(name, 'status', 'bg')
- else:
- write_file(name, 'status', '')
-
- write_file(name, 'window_ids', '\n'.join(self.tracked_ids[name]))
- write_file(name, 'tiled_ids', '\n'.join(self.tiled_ids[name]))
-
- def on_visible(self, item_name, window_id, tiled=False):
- self.visible_ids[item_name] = self.visible_ids[item_name] | {window_id}
- self.update_window_state(item_name)
-
- def on_invisible(self, item_name, window_id):
- self.visible_ids[item_name] = self.visible_ids[item_name] - {window_id}
- self.update_window_state(item_name)
-
- def on_create(self, item_name, window_id):
- self.tracked_ids[item_name] = self.tracked_ids[item_name] | {window_id}
- self.update_window_state(item_name)
-
- def on_destroy(self, item_name, window_id):
- self.tracked_ids[item_name] = self.tracked_ids[item_name] - {window_id}
- self.visible_ids[item_name] = self.visible_ids[item_name] - {window_id}
- self.tiled_ids[item_name] = self.tiled_ids[item_name] - {window_id}
- self.update_window_state(item_name)
-
- def on_tile(self, item_name, window_id):
- self.tiled_ids[item_name] = self.tiled_ids[item_name] | {window_id}
- self.update_window_state(item_name)
-
- def on_float(self, item_name, window_id):
- self.tiled_ids[item_name] = self.tiled_ids[item_name] - {window_id}
- self.update_window_state(item_name)
-
-
diff --git a/home-manager/jwm/rofi.nix b/home-manager/jwm/rofi.nix
deleted file mode 100644
index dfa451e..0000000
--- a/home-manager/jwm/rofi.nix
+++ /dev/null
@@ -1,126 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-let
- cfg = config.jainawm;
- cat = cfg.catppuccin;
-in {
- options.jainawm.rofi = {
- enable = mkOption {
- type = types.bool;
- default = true;
- };
-
- font = mkOption { type = lib.hm.types.fontType; };
-
- accents = {
- primary = mkOption { type = types.str; };
- secondary = mkOption { type = types.str; };
- };
- };
-
- config = {
- programs.rofi = let font = cfg.rofi.font;
- in {
- enable = true;
- package = pkgs.rofi-wayland;
- plugins = with pkgs; [ rofi-emoji ];
- font = "${font.name} ${builtins.toString font.size}";
- location = "top-left";
-
- cycle = true;
- terminal = cfg.terminal.binPath;
- xoffset = 10;
- yoffset = 10;
-
- theme = let
- font = cfg.fonts.wmOverlay;
- inherit (config.lib.formats.rasi) mkLiteral;
- in {
- "*" = {
- transparency = "real";
- background-color = mkLiteral "#00000000";
- text-color = mkLiteral cat.text;
- };
-
- configuration = {
- show-icons = true;
- # drun = {
- # display-name = "";
- # };
- };
-
- window = {
- background-color = mkLiteral "${cat.base}cc";
- border = mkLiteral "3px";
- border-color = mkLiteral cfg.rofi.accents.primary;
- border-radius = mkLiteral "10px";
- x-offset = mkLiteral "10px";
- y-offset = mkLiteral "10px";
- width = mkLiteral "500px";
- location = mkLiteral "northwest";
- };
-
- mainbox = { padding = mkLiteral "1em"; };
-
- inputbar = {
- margin = mkLiteral "0px 5px";
- children = [ (mkLiteral "prompt") (mkLiteral "entry") ];
- };
-
- prompt = { vertical-align = mkLiteral "0.5"; };
-
- entry = {
- border-radius = mkLiteral "100%";
- padding = mkLiteral "5px 15px";
- margin = mkLiteral "0px 0px 0px 10px";
- background-color = mkLiteral "${cat.overlay0}cc";
- vertical-align = mkLiteral "0.5";
- };
-
- message = {
- horizontal-align = mkLiteral "1.0";
- text-color = mkLiteral cat.subtext0;
- margin = mkLiteral "0px 5px";
- };
-
- textbox = {
- horizontal-align = mkLiteral "inherit";
- text-color = mkLiteral "inherit";
- };
-
- listview = {
- margin = mkLiteral "15px 0px 0px 0px";
- lines = 10;
- fixed-height = false;
- dynamic = true;
- cycle = false;
- };
-
- element = {
- border-radius = mkLiteral "4px";
- padding = mkLiteral "5px";
- };
-
- "element.active" = {
- #background-color = mkLiteral "${cat.overlay0}cc";
- border = mkLiteral "2px";
- border-color = mkLiteral cfg.rofi.accents.secondary;
- };
-
- "element.selected" = {
- background-color = mkLiteral cfg.rofi.accents.primary;
- text-color = mkLiteral cat.base;
- };
-
- element-icon = { size = mkLiteral "20px"; };
-
- element-text = {
- text-color = mkLiteral "inherit";
- vertical-align = mkLiteral "0.5";
- margin = mkLiteral "0px 0px 0px 5px";
- };
- };
- };
- };
-}
diff --git a/home-manager/jwm/sway.nix b/home-manager/jwm/sway.nix
deleted file mode 100644
index dfa85b5..0000000
--- a/home-manager/jwm/sway.nix
+++ /dev/null
@@ -1,213 +0,0 @@
-{ config, lib, pkgs, nixpkgs, ... }:
-
-with lib;
-let
- cfg = config.jainawm;
- ptray = config.jainawm.ptray.finalPackage;
-in {
- options.jainawm.sway = {
- enable = mkEnableOption "Enable the use of swaywm, a tiling window manager";
- useFx = mkEnableOption "Replace sway with swayfx";
- };
-
- config = let cat = cfg.catppuccin;
- in mkIf cfg.enable {
-
- home.packages = with pkgs; [ wlr-randr ];
- wayland.windowManager.sway = {
- enable = cfg.sway.enable;
-
- # package = pkgs.sway.override {
- # sway-unwrapped = pkgs.sway-unwrapped.override {
- # wlroots_0_16 = pkgs.wlroots_0_16.overrideAttrs (final: prev: {
- # pname = prev.pname + "-displaylink";
- # patches = [
- # (pkgs.fetchpatch {
- # url =
- # "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/b4f932e370ed03d88f202191eaf60965/DisplayLink.patch";
- # sha256 = "sha256-1HheLsOSnj4OMiA35QCHkWprTNgAeG2tXrGbaQyUrF4=";
- # })
- # ];
- # });
- # };
- # };
-
- package = let c = config.wayland.windowManager.sway;
- in mkIf cfg.sway.useFx (pkgs.unstable.sway.override {
- sway-unwrapped = pkgs.unstable.swayfx;
- extraSessionCommands = c.extraSessionCommands;
- extraOptions = c.extraOptions;
- withBaseWrapper = c.wrapperFeatures.base;
- withGtkWrapper = c.wrapperFeatures.gtk;
- });
-
- systemd.enable = true;
- config = {
- modifier = "Mod4";
- bars = [{ command = "waybar"; }];
- gaps.inner = 20;
-
- fonts = let font = cfg.fonts.primary;
- in {
- names = [ font.name ];
- # NOTE: add 0.0 to force conversion to floating point rational
- # TODO: Need to cast integer to floating point, what's the right way?
- size = font.size + 0.0;
- };
-
- colors = {
- focused = {
- border = cat.surface2;
- background = cat.surface2;
- text = cat.text;
- indicator = cat.green;
- childBorder = cat.surface2;
- };
- focusedInactive = {
- border = cat.surface1;
- background = cat.surface1;
- text = cat.subtext1;
- indicator = cat.teal;
- childBorder = cat.surface1;
- };
- unfocused = {
- border = cat.surface0;
- background = cat.surface0;
- text = cat.subtext0;
- indicator = cat.teal;
- childBorder = cat.surface0;
- };
- urgent = {
- border = cat.red;
- background = cat.maroon;
- text = cat.text;
- indicator = cat.red;
- childBorder = cat.red;
- };
- };
-
- menu = "${pkgs.rofi-wayland}/bin/rofi -show drun -modes drun,run";
- terminal = cfg.terminal.binPath;
-
- focus.mouseWarping = true;
- focus.wrapping = "yes";
-
- keybindings = let
- modifier = config.wayland.windowManager.sway.config.modifier;
- screenshotRegion = "jwm screenshot-region";
- # swaymsg -t get_tree | jq '.. | select(type == "object") | select (has("type") and (.type == "con" or .type == "floating_con")) | select(.visible) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height) \(.name)"' -r | slurp -r | grim -g - - | wl-copy
- volUp = "jwm vol 5";
- volDown = "jwm vol -5";
- volMute = "jwm vol toggle-mute";
- brightUp = "jwm bright 5";
- brightDown = "jwm bright -5";
- musPlay = "playerctl play-pause";
- in lib.mkOptionDefault {
- "${modifier}+tab" = "workspace next";
- "${modifier}+grave" = "workspace prev";
- "${modifier}+q" = "exec ptrayctl hide";
- "${modifier}+t" = "layout tabbed";
- "${modifier}+p" = "mode command";
- "${modifier}+i" = "mode app";
-
- "--locked XF86MonBrightnessUp" = "exec ${brightUp}";
- "--locked XF86MonBrightnessDown" = "exec ${brightDown}";
-
- "--locked XF86AudioRaiseVolume" = "exec ${volUp}";
- "--locked XF86AudioLowerVolume" = "exec ${volDown}";
- "--locked XF86AudioMute" = "exec ${volMute}";
- "--locked XF86AudioPlay" = "exec ${musPlay}";
- "--locked XF86AudioNext" = "exec playerctl next";
- "--locked XF86AudioPrev" = "exec playerctl previous";
- "--locked XF86AudioStop" = "exec playerctl stop";
-
- "${modifier}+shift+s" = "exec ${screenshotRegion}";
-
- "${modifier}+minus" = "floating toggle";
- "${modifier}+shift+equal" = "move to scratchpad";
- "${modifier}+equal" =
- "rofi -show scratchpad -modes 'scratchpad:~/.config/rofi/bin/scratchpad'";
- };
-
- input = {
- "type:keyboard" = {
- xkb_options = lib.strings.concatStringsSep "," [
- "altwin:swap_lalt_lwin"
- "altwin:menu_win"
- ];
- };
- "type:touchpad" = {
- dwt = "enabled";
- tap = "enabled";
- natural_scroll = "enabled";
- middle_emulation = "enabled";
- drag = "enabled";
- };
- };
-
- window.hideEdgeBorders = "smart";
-
- modes = lib.mkOptionDefault {
- app = let
- discord = "${ptray}/bin/ptrayctl toggle discord";
- keepass = "${ptray}/bin/ptrayctl toggle keepass";
- web = "jwm web-launcher";
- in {
- Escape = "mode default";
- Return = "mode default";
-
- d = "exec ${discord},, mode default";
- k = "exec ${keepass},, mode default";
- w = "exec ${web},, mode default";
- };
-
- command = let
- switch = "jwm switch-launcher";
- micMute = "jwm mic toggle-mute";
- lock = "jwm lock";
- typeEmoji = "rofi -show emoji -emoji-mode stdout | xargs wtype";
- in {
- Escape = "mode default";
- Return = "mode default";
-
- "e" = "exec ${typeEmoji},, mode default";
- m = "exec ${micMute},, mode default";
- s = "exec ${switch},, mode default";
- l = "exec ${lock},, mode default";
- };
- };
-
- window.commands = [{
- command = "floating enable,, sticky enable,, opacity 0.9";
- criteria = { title = "Picture-in-Picture"; };
- }];
-
- output = { "*" = { bg = lib.mkDefault "${cfg.wallpaper} fill"; }; };
-
- seat = {
- "*" = { xcursor_theme = "Catppuccin-Mocha-Light-Cursors 32"; };
- };
-
- startup = [
- #{ command = ''plhelper switch "$(plhelper who)"''; always = true; }
- #{ command = "dropwind"; }
- { command = "mako"; }
- {
- command = "playerctld";
- }
- # {
- # command =
- # "${pkgs.xdg-desktop-portal-wlr}/libexec/xdg-desktop-portal-wlr";
- # always = true;
- # }
-
- ];
- };
- extraConfig = ''
- hide_edge_borders --i3 smart
- for_window [title=".*"] inhibit_idle fullscreen
- '';
- extraOptions = [ "--unsupported-gpu" ];
- };
- };
-}
diff --git a/home-manager/jwm/waybar.css b/home-manager/jwm/waybar.css
deleted file mode 100644
index 4b6239d..0000000
--- a/home-manager/jwm/waybar.css
+++ /dev/null
@@ -1,146 +0,0 @@
-* {
- font-family: 'Iosevka Comfy Duo, Symbols Nerd Font, Font Awesome';
-}
-
-window#waybar {
- background-color: rgba(0, 0, 0, 0);
- box-shadow: inset 0px 8px 5px -5px rgba(17, 17, 27, 0.9);
-}
-
-window#waybar > box.horizontal {
- margin: 8px 10px;
- margin-bottom: 0px;
-
- border-radius: 10px;
- padding: 5px 10px;
- background-color: rgba(17, 17, 27, 0.9);
- /* background-color: @theme_unfocused_base_color; */
-}
-
-box.modules-left > widget > *,
-box.modules-left > box,
-box.modules-center > widget > *,
-box.modules-center > box,
-box.modules-right > widget > *,
-box.modules-right > box
-{
- background-color: @borders;
- border-radius: 10px;
- margin: 0px 10px;
-}
-
-#tray > widget > image,
-box.modules-left widget > *,
-box.modules-center widget > *,
-box.modules-right widget > * {
- padding: 0px 8px;
-}
-
-box.modules-left box widget:first-child > *,
-box.modules-center box widget:first-child > *,
-box.modules-right box widget:first-child > * {
- padding-left: 10px;
- border-bottom-left-radius: 10px;
- border-top-left-radius: 10px;
-}
-
-box.modules-left box widget:last-child > *,
-box.modules-center box widget:last-child > *,
-box.modules-right box widget:last-child > * {
- padding-right: 10px;
- border-bottom-right-radius: 10px;
- border-top-right-radius: 10px;
-}
-
-
-/* Light up */
-#custom-player-icon.playing,
-#workspaces button.focused,
-#workspaces button.active {
- background-color: @theme_selected_bg_color;
- color: @theme_selected_fg_color;
-}
-
-/* Grey out */
-#custom-mpris.paused,
-#pulseaudio.input.source-muted {
- color: #a6adc8;
-}
-
-/* individual customizations */
-#workspaces { padding: 0px; }
-#workspaces button {
- font-size: 90%;
- min-width: 12px;
- padding: 0px 8px;
- border-radius: 10px;
-}
-
-#workspaces button.focused,
-#workspaces button.active,
-#workspaces button:hover {
- font-size: 100%;
-}
-
-window#waybar.empty .modules-center > widget > * {
- background-color: rgba(0, 0, 0, 0);
-}
-
-#idle_inhibitor.activated {
- color: @theme_bg_color;
- background-color: @theme_fg_color;
-}
-
-#tray { padding: 0px; }
-
-#custom-discord.fg { background-color: #7289DA; /* blurple */ }
-#custom-discord.bg { background-color: #4E5D94; /* dark blurple*/ }
-
-#custom-keepass.fg { background-color: #E6A117; }
-#custom-keepass.bg { background-color: #B37D12; }
-
-#pulseaudio.output-icon.muted { color: @error_color; }
-#wireplumber.output.muted, #pulseaudio.output.muted {
- /*color: @theme_unfocused_text_color;*/
- color: #a6adc8;
- text-decoration: line-through;
-}
-#pulseaudio.input.source-muted { color: #a6adc8; }
-
-#pulseaudio.output-icon {
- padding-right: 0px;
- font-size: 18px
-}
-#wireplumber.output, #pulseaudio.output {
- padding-left: 5px;
-}
-#pulseaudio.input {
- padding-left: 5px;
-}
-
-#battery {
- padding-left: 4px;
- padding-right: 0px;
-}
-#battery.secondary {
- padding: 0px;
-}
-#battery.critical:not(.charging) {
- /*color: #f53c3c;*/
- color: @error_color;
- /*color: #ffffff;*/
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-@keyframes blink {
- to {
- background-color: @theme_fg_color;
- color: @theme_bg_color;
- }
-}
-#upower {
- padding-left: 0px;
-}
diff --git a/home-manager/jwm/waybar.nix b/home-manager/jwm/waybar.nix
deleted file mode 100644
index bbff0f8..0000000
--- a/home-manager/jwm/waybar.nix
+++ /dev/null
@@ -1,225 +0,0 @@
-{ lib, pkgs, config, ... }:
-
-with lib;
-
-let
- ptray = config.jainawm.ptray.finalPackage;
- watchPtrayIcon = name: displayName:
- pkgs.writeShellScript "watchPtrayIcon-${name}" ''
- trap 'kill 0' EXIT
- ${ptray}/bin/ptrayctl watch ${name} | while read line; do
- echo '{"text":"update","tooltip":"${displayName}","class":"'"$line"'"}'
- done
- '';
-in {
- options.jainawm.waybar = { enable = mkEnableOption "Enable waybar"; };
-
- config = {
- programs.waybar = {
- enable = true;
- style = builtins.readFile ./waybar.css;
- #package = pkgs.unstable.waybar;
- settings = [{
- layer = "top";
- position = "top";
- mode = "dock";
- name = "main";
-
- modules-left = [
- "sway/workspaces"
- "sway/mode"
-
- "group/musicplayer"
- ];
- modules-center = [ "sway/window" ];
- modules-right = [
- "group/tray"
- "group/volume"
- "group/battery"
-
- "clock"
- ];
-
- "group/musicplayer" = {
- orientation = "horizontal";
- modules = [ "custom/player-icon" "custom/mpris" ];
- };
-
- "group/tray" = {
- orientation = "horizontal";
- modules =
- [ "idle_inhibitor" "tray" "custom/discord" "custom/keepass" ];
- };
- "tray" = { };
-
- "group/volume" = {
- orientation = "horizontal";
- modules =
- [ "pulseaudio#output-icon" "pulseaudio#output" "pulseaudio#input" ];
- };
-
- "group/battery" = {
- orientation = "horizontal";
- modules = [ "battery" "upower" ];
- };
-
- "custom/player-icon" =
- let playerctl = "${pkgs.playerctl}/bin/playerctl --player strawberry";
- in {
- format = "{icon}";
- format-icons = "";
- exec = ''
- trap 'kill 0' EXIT
- (
- echo "";
- ${playerctl} status --follow --format \
- '{"text":"music","class":"{{lc(status)}}","tooltip":"strawberry"}'
- ) | (
- while read line; do
- if [ -n "$line" ]; then
- echo "$line"
- else
- echo '{"text":"music","tooltip":"strawberry"}'
- fi
- done
- );
- '';
- on-click = ''
- ${pkgs.sway}/bin/swaymsg '[app_id=org.strawberrymusicplayer.] focus' >/dev/null \
- || swaymsg exec strawberry
- '';
- return-type = "json";
- };
-
- "custom/mpris" =
- let playerctl = "${pkgs.playerctl}/bin/playerctl --player strawberry";
- in {
- format = "{icon} {}";
- format-icons = {
- playing = "";
- paused = "";
- };
- exec = let
- playerctlFormat = ''
- {"title":"{{title}}","artist":"{{artist}}","album":"{{album}}","position":"{{duration(position)}}","length":"{{duration(mpris:length)}}","status":"{{lc(status)}}"}'';
- jqFilter = ''
- def escape: . | gsub("&"; "&") | gsub("<"; "<") | gsub(">"; ">");
- try (
- . + {
- mainText: ("\([.title,.artist,.album] | map(select(length > 0)) | join(" - "))") | escape,
- progressText: ((select((.position | length) > 0 and (.length | length > 0)) | "[\(.position)/\(.length)]" | escape) // "")
- } | . + {
- progress: ((. | select(.progressText | length > 0) | " \(.progressText)") // "")
- } | {
- text: (.mainText + .progress),
- alt: (.status)
- } | { text, alt, tooltip: (.text), class: (.alt) }
- ) catch ""
- '';
- mainFormat =
- "{{title}} - {{artist}} - {{album}} [{{duration(position)}}/{{duration(mpris:length)}}]";
- in ''
- trap 'kill 0' EXIT
- ${playerctl} metadata --follow --format '${playerctlFormat}' | (
- # playerctl has a bug where it only shows that a stopped stream has stopped after it starts again. but it does spit out an empty line. so we do a lot of work special-casing those
- while read line; do
- if [ -n "$line" ]; then echo "$line"; else echo '" "'; fi
- done
- ) | jq '${jqFilter}' --unbuffered --compact-output --raw-output
- '';
- max-length = 80;
- on-click = "${playerctl} play-pause";
- on-click-middle = "${playerctl} previous";
- on-click-right = "${playerctl} next";
- return-type = "json";
- };
-
- idle_inhibitor = {
- format = "{icon}";
- format-icons = {
- activated = "";
- deactivated = "";
- };
- tooltip-format-activated = "Idle inhibitor enabled";
- tooltip-format-deactivated = "Idle inhibitor disabled";
- };
-
- "custom/discord" = {
- format = "";
- exec = watchPtrayIcon "discord" "Discord";
- on-click = "${ptray}/bin/ptrayctl toggle discord";
- restart-interval = 5;
- return-type = "json";
- };
-
- "custom/keepass" = {
- format = "";
- exec = watchPtrayIcon "keepass" "KeePassXC (Password Manager)";
- # exec =
- # "~/.config/waybar/scripts/watchstatus keepass KeePassXC 'KeePassXC (Password Manager)'";
- #return-type = "json";
- on-click = "${ptray}/bin/ptrayctl toggle keepass";
- on-click-middle = "killall keepassxc";
- restart-interval = 5;
- return-type = "json";
- };
-
- "pulseaudio#output-icon" = {
- format = "{icon}";
- format-muted = "";
-
- format-icons = {
- headphone = "";
- hands-free = "";
- headset = "";
- phone = "";
- portable = "";
- car = "";
- default = [ "" "" "" ];
- };
- on-click = "jwm vol toggle-mute";
- on-click-right = "dropwinctl toggle pavucontrol";
- };
-
- "pulseaudio#output" = {
- format = "{volume}%";
- on-click = "jwm vol toggle-mute";
- on-click-right = "dropwinctl toggle pavucontrol";
- };
-
- "pulseaudio#input" = {
- format = "{format_source}";
- format-source = "";
- format-source-muted = "";
- on-click = "jwm mic toggle-mute";
- on-click-right = "dropwinctl toggle pavucontrol";
- };
-
- battery = {
- bat = "BAT0";
- states = {
- warning = 30;
- critical = 15;
- };
- format = "{icon}";
- rotate = 90;
- format-charging = "";
- tooltip-format = "Battery: {capacity}%";
- format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
- };
-
- upower = {
- format = "{percentage}";
- format-alt = "{time}";
- icon-size = 1;
- };
-
- clock = {
- tooltip-format = ''
- {:%Y %B}
- {calendar}'';
- };
- }];
- };
- };
-}
diff --git a/home-manager/patches/hyprland-workspaces/Cargo.lock b/home-manager/patches/hyprland-workspaces/Cargo.lock
deleted file mode 100644
index cea4c51..0000000
--- a/home-manager/patches/hyprland-workspaces/Cargo.lock
+++ /dev/null
@@ -1,773 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "addr2line"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "async-trait"
-version = "0.1.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
-
-[[package]]
-name = "backtrace"
-version = "0.3.71"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
-dependencies = [
- "addr2line",
- "cc",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
-]
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bytes"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
-
-[[package]]
-name = "cc"
-version = "1.0.90"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "convert_case"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-
-[[package]]
-name = "derive_more"
-version = "0.99.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
-dependencies = [
- "convert_case",
- "proc-macro2",
- "quote",
- "rustc_version",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "doc-comment"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
-
-[[package]]
-name = "futures"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
-
-[[package]]
-name = "futures-executor"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
-dependencies = [
- "futures-core",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-io"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
-
-[[package]]
-name = "futures-macro"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "futures-sink"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
-
-[[package]]
-name = "futures-task"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
-
-[[package]]
-name = "futures-util"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-macro",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
-[[package]]
-name = "gimli"
-version = "0.28.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
-
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "hex"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
-[[package]]
-name = "hyprland"
-version = "0.3.13"
-source = "git+https://github.com/hyprland-community/hyprland-rs?rev=4a6ef94#4a6ef944e8453d47dab02ab5e14e4926d2278aee"
-dependencies = [
- "async-trait",
- "derive_more",
- "doc-comment",
- "futures",
- "hex",
- "hyprland-macros",
- "lazy_static",
- "num-traits",
- "paste",
- "regex",
- "serde",
- "serde_json",
- "serde_repr",
- "strum",
- "tokio",
-]
-
-[[package]]
-name = "hyprland-macros"
-version = "0.3.13"
-source = "git+https://github.com/hyprland-community/hyprland-rs?rev=4a6ef94#4a6ef944e8453d47dab02ab5e14e4926d2278aee"
-dependencies = [
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "hyprland-workspaces"
-version = "1.2.3"
-dependencies = [
- "hyprland",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "libc"
-version = "0.2.153"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
-
-[[package]]
-name = "lock_api"
-version = "0.4.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
-dependencies = [
- "autocfg",
- "scopeguard",
-]
-
-[[package]]
-name = "memchr"
-version = "2.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "mio"
-version = "0.8.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
-dependencies = [
- "libc",
- "wasi",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "object"
-version = "0.32.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
-dependencies = [
- "cfg-if",
- "libc",
- "redox_syscall",
- "smallvec",
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "paste"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
-dependencies = [
- "bitflags",
-]
-
-[[package]]
-name = "regex"
-version = "1.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
-
-[[package]]
-name = "rustc_version"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
-dependencies = [
- "semver",
-]
-
-[[package]]
-name = "rustversion"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
-
-[[package]]
-name = "ryu"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
-
-[[package]]
-name = "scopeguard"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-[[package]]
-name = "semver"
-version = "1.0.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
-
-[[package]]
-name = "serde"
-version = "1.0.197"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.197"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.115"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_repr"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "signal-hook-registry"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "slab"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
-
-[[package]]
-name = "socket2"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "strum"
-version = "0.26.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
-dependencies = [
- "strum_macros",
-]
-
-[[package]]
-name = "strum_macros"
-version = "0.26.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "rustversion",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.58"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "tokio"
-version = "1.37.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "num_cpus",
- "parking_lot",
- "pin-project-lite",
- "signal-hook-registry",
- "socket2",
- "tokio-macros",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.58",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.4",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
diff --git a/home-manager/patches/hyprland-workspaces/output-monitor-info.patch b/home-manager/patches/hyprland-workspaces/output-monitor-info.patch
deleted file mode 100644
index 13b4182..0000000
--- a/home-manager/patches/hyprland-workspaces/output-monitor-info.patch
+++ /dev/null
@@ -1,894 +0,0 @@
-From 6e78240ab57d6c06444d2d3cc767b69a8e582561 Mon Sep 17 00:00:00 2001
-From: jaina heartles
-Date: Thu, 4 Apr 2024 20:07:32 -0700
-Subject: [PATCH] Output monitor and id as well
-
----
- Cargo.lock | 432 ++++++++++++++++++++++++++++++++--------------------
- Cargo.toml | 3 +-
- src/main.rs | 4 +
- 3 files changed, 275 insertions(+), 164 deletions(-)
-
-diff --git a/Cargo.lock b/Cargo.lock
-index f818a23..cea4c51 100644
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -2,31 +2,61 @@
- # It is not intended for manual editing.
- version = 3
-
-+[[package]]
-+name = "addr2line"
-+version = "0.21.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
-+dependencies = [
-+ "gimli",
-+]
-+
-+[[package]]
-+name = "adler"
-+version = "1.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-+
- [[package]]
- name = "aho-corasick"
--version = "0.7.20"
-+version = "1.1.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
-+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
- dependencies = [
- "memchr",
- ]
-
- [[package]]
- name = "async-trait"
--version = "0.1.66"
-+version = "0.1.79"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b84f9ebcc6c1f5b8cb160f6990096a5c127f423fcb6e1ccc46c370cbdfb75dfc"
-+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
- dependencies = [
- "proc-macro2",
- "quote",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
- name = "autocfg"
--version = "1.1.0"
-+version = "1.2.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
-+
-+[[package]]
-+name = "backtrace"
-+version = "0.3.71"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
-+dependencies = [
-+ "addr2line",
-+ "cc",
-+ "cfg-if",
-+ "libc",
-+ "miniz_oxide",
-+ "object",
-+ "rustc-demangle",
-+]
-
- [[package]]
- name = "bitflags"
-@@ -36,9 +66,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
- [[package]]
- name = "bytes"
--version = "1.4.0"
-+version = "1.6.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
-+
-+[[package]]
-+name = "cc"
-+version = "1.0.90"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
-
- [[package]]
- name = "cfg-if"
-@@ -73,9 +109,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
-
- [[package]]
- name = "futures"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
-+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
- dependencies = [
- "futures-channel",
- "futures-core",
-@@ -88,9 +124,9 @@ dependencies = [
-
- [[package]]
- name = "futures-channel"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
-+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
- dependencies = [
- "futures-core",
- "futures-sink",
-@@ -98,15 +134,15 @@ dependencies = [
-
- [[package]]
- name = "futures-core"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
-+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
-
- [[package]]
- name = "futures-executor"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
-+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
- dependencies = [
- "futures-core",
- "futures-task",
-@@ -115,38 +151,38 @@ dependencies = [
-
- [[package]]
- name = "futures-io"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
-+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
-
- [[package]]
- name = "futures-macro"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
-+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
- dependencies = [
- "proc-macro2",
- "quote",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
- name = "futures-sink"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
-+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
-
- [[package]]
- name = "futures-task"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
-+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
-
- [[package]]
- name = "futures-util"
--version = "0.3.27"
-+version = "0.3.30"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
-+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
- dependencies = [
- "futures-channel",
- "futures-core",
-@@ -160,6 +196,12 @@ dependencies = [
- "slab",
- ]
-
-+[[package]]
-+name = "gimli"
-+version = "0.28.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
-+
- [[package]]
- name = "heck"
- version = "0.4.1"
-@@ -168,12 +210,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
- [[package]]
- name = "hermit-abi"
--version = "0.2.6"
-+version = "0.3.9"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
--dependencies = [
-- "libc",
--]
-+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
- [[package]]
- name = "hex"
-@@ -183,9 +222,8 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-
- [[package]]
- name = "hyprland"
--version = "0.3.8"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "a84219159a2b7df96e2e6a8b8806d97c94d7ba2f661a0d4dd843d66b59f0ca28"
-+version = "0.3.13"
-+source = "git+https://github.com/hyprland-community/hyprland-rs?rev=4a6ef94#4a6ef944e8453d47dab02ab5e14e4926d2278aee"
- dependencies = [
- "async-trait",
- "derive_more",
-@@ -206,12 +244,11 @@ dependencies = [
-
- [[package]]
- name = "hyprland-macros"
--version = "0.3.4"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "c941d3d52e979612af8cb94e8de49000c7fada2014a7791d173ab41339f4e4eb"
-+version = "0.3.13"
-+source = "git+https://github.com/hyprland-community/hyprland-rs?rev=4a6ef94#4a6ef944e8453d47dab02ab5e14e4926d2278aee"
- dependencies = [
- "quote",
-- "syn 2.0.12",
-+ "syn 2.0.58",
- ]
-
- [[package]]
-@@ -225,9 +262,9 @@ dependencies = [
-
- [[package]]
- name = "itoa"
--version = "1.0.6"
-+version = "1.0.11"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
-+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
- [[package]]
- name = "lazy_static"
-@@ -237,66 +274,74 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
- [[package]]
- name = "libc"
--version = "0.2.140"
-+version = "0.2.153"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
-+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
-
- [[package]]
- name = "lock_api"
--version = "0.4.9"
-+version = "0.4.11"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
-+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
- dependencies = [
- "autocfg",
- "scopeguard",
- ]
-
- [[package]]
--name = "log"
--version = "0.4.17"
-+name = "memchr"
-+version = "2.7.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
--dependencies = [
-- "cfg-if",
--]
-+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
-
- [[package]]
--name = "memchr"
--version = "2.5.0"
-+name = "miniz_oxide"
-+version = "0.7.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
-+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
-+dependencies = [
-+ "adler",
-+]
-
- [[package]]
- name = "mio"
--version = "0.8.6"
-+version = "0.8.11"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
-+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
- dependencies = [
- "libc",
-- "log",
- "wasi",
-- "windows-sys",
-+ "windows-sys 0.48.0",
- ]
-
- [[package]]
- name = "num-traits"
--version = "0.2.15"
-+version = "0.2.18"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
-+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
- dependencies = [
- "autocfg",
- ]
-
- [[package]]
- name = "num_cpus"
--version = "1.15.0"
-+version = "1.16.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
-+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
- dependencies = [
- "hermit-abi",
- "libc",
- ]
-
-+[[package]]
-+name = "object"
-+version = "0.32.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
-+dependencies = [
-+ "memchr",
-+]
-+
- [[package]]
- name = "parking_lot"
- version = "0.12.1"
-@@ -309,28 +354,28 @@ dependencies = [
-
- [[package]]
- name = "parking_lot_core"
--version = "0.9.7"
-+version = "0.9.9"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
-+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
- dependencies = [
- "cfg-if",
- "libc",
- "redox_syscall",
- "smallvec",
-- "windows-sys",
-+ "windows-targets 0.48.5",
- ]
-
- [[package]]
- name = "paste"
--version = "1.0.12"
-+version = "1.0.14"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79"
-+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
-
- [[package]]
- name = "pin-project-lite"
--version = "0.2.9"
-+version = "0.2.14"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
-+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
-
- [[package]]
- name = "pin-utils"
-@@ -340,36 +385,48 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
- [[package]]
- name = "proc-macro2"
--version = "1.0.52"
-+version = "1.0.79"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
-+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
- dependencies = [
- "unicode-ident",
- ]
-
- [[package]]
- name = "quote"
--version = "1.0.26"
-+version = "1.0.35"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
-+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
- dependencies = [
- "proc-macro2",
- ]
-
- [[package]]
- name = "redox_syscall"
--version = "0.2.16"
-+version = "0.4.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
- dependencies = [
- "bitflags",
- ]
-
- [[package]]
- name = "regex"
--version = "1.7.1"
-+version = "1.10.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
-+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
-+dependencies = [
-+ "aho-corasick",
-+ "memchr",
-+ "regex-automata",
-+ "regex-syntax",
-+]
-+
-+[[package]]
-+name = "regex-automata"
-+version = "0.4.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
- dependencies = [
- "aho-corasick",
- "memchr",
-@@ -378,9 +435,15 @@ dependencies = [
-
- [[package]]
- name = "regex-syntax"
--version = "0.6.28"
-+version = "0.8.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
-+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
-+
-+[[package]]
-+name = "rustc-demangle"
-+version = "0.1.23"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
-
- [[package]]
- name = "rustc_version"
-@@ -393,53 +456,53 @@ dependencies = [
-
- [[package]]
- name = "rustversion"
--version = "1.0.12"
-+version = "1.0.14"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
-+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
-
- [[package]]
- name = "ryu"
--version = "1.0.13"
-+version = "1.0.17"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
-+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
-
- [[package]]
- name = "scopeguard"
--version = "1.1.0"
-+version = "1.2.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
- [[package]]
- name = "semver"
--version = "1.0.17"
-+version = "1.0.22"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
-+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
-
- [[package]]
- name = "serde"
--version = "1.0.156"
-+version = "1.0.197"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4"
-+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
- dependencies = [
- "serde_derive",
- ]
-
- [[package]]
- name = "serde_derive"
--version = "1.0.156"
-+version = "1.0.197"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d"
-+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
- dependencies = [
- "proc-macro2",
- "quote",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
- name = "serde_json"
--version = "1.0.94"
-+version = "1.0.115"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
-+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
- dependencies = [
- "itoa",
- "ryu",
-@@ -448,13 +511,13 @@ dependencies = [
-
- [[package]]
- name = "serde_repr"
--version = "0.1.11"
-+version = "0.1.18"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "395627de918015623b32e7669714206363a7fc00382bf477e72c1f7533e8eafc"
-+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
- dependencies = [
- "proc-macro2",
- "quote",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
-@@ -468,49 +531,49 @@ dependencies = [
-
- [[package]]
- name = "slab"
--version = "0.4.8"
-+version = "0.4.9"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
-+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
- dependencies = [
- "autocfg",
- ]
-
- [[package]]
- name = "smallvec"
--version = "1.10.0"
-+version = "1.13.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
-+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
-
- [[package]]
- name = "socket2"
--version = "0.4.9"
-+version = "0.5.6"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
-+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
- dependencies = [
- "libc",
-- "winapi",
-+ "windows-sys 0.52.0",
- ]
-
- [[package]]
- name = "strum"
--version = "0.24.1"
-+version = "0.26.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
-+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
- dependencies = [
- "strum_macros",
- ]
-
- [[package]]
- name = "strum_macros"
--version = "0.24.3"
-+version = "0.26.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
-+checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
- dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "rustversion",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
-@@ -526,9 +589,9 @@ dependencies = [
-
- [[package]]
- name = "syn"
--version = "2.0.12"
-+version = "2.0.58"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "79d9531f94112cfc3e4c8f5f02cb2b58f72c97b7efd85f70203cc6d8efda5927"
-+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
- dependencies = [
- "proc-macro2",
- "quote",
-@@ -537,14 +600,13 @@ dependencies = [
-
- [[package]]
- name = "tokio"
--version = "1.26.0"
-+version = "1.37.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
-+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
- dependencies = [
-- "autocfg",
-+ "backtrace",
- "bytes",
- "libc",
-- "memchr",
- "mio",
- "num_cpus",
- "parking_lot",
-@@ -552,25 +614,25 @@ dependencies = [
- "signal-hook-registry",
- "socket2",
- "tokio-macros",
-- "windows-sys",
-+ "windows-sys 0.48.0",
- ]
-
- [[package]]
- name = "tokio-macros"
--version = "1.8.2"
-+version = "2.2.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
-+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
- dependencies = [
- "proc-macro2",
- "quote",
-- "syn 1.0.109",
-+ "syn 2.0.58",
- ]
-
- [[package]]
- name = "unicode-ident"
--version = "1.0.8"
-+version = "1.0.12"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
-+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
- [[package]]
- name = "wasi"
-@@ -579,89 +641,133 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
- [[package]]
--name = "winapi"
--version = "0.3.9"
-+name = "windows-sys"
-+version = "0.48.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
- dependencies = [
-- "winapi-i686-pc-windows-gnu",
-- "winapi-x86_64-pc-windows-gnu",
-+ "windows-targets 0.48.5",
- ]
-
- [[package]]
--name = "winapi-i686-pc-windows-gnu"
--version = "0.4.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
--
--[[package]]
--name = "winapi-x86_64-pc-windows-gnu"
--version = "0.4.0"
-+name = "windows-sys"
-+version = "0.52.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-+dependencies = [
-+ "windows-targets 0.52.4",
-+]
-
- [[package]]
--name = "windows-sys"
--version = "0.45.0"
-+name = "windows-targets"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
- dependencies = [
-- "windows-targets",
-+ "windows_aarch64_gnullvm 0.48.5",
-+ "windows_aarch64_msvc 0.48.5",
-+ "windows_i686_gnu 0.48.5",
-+ "windows_i686_msvc 0.48.5",
-+ "windows_x86_64_gnu 0.48.5",
-+ "windows_x86_64_gnullvm 0.48.5",
-+ "windows_x86_64_msvc 0.48.5",
- ]
-
- [[package]]
- name = "windows-targets"
--version = "0.42.2"
-+version = "0.52.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
- dependencies = [
-- "windows_aarch64_gnullvm",
-- "windows_aarch64_msvc",
-- "windows_i686_gnu",
-- "windows_i686_msvc",
-- "windows_x86_64_gnu",
-- "windows_x86_64_gnullvm",
-- "windows_x86_64_msvc",
-+ "windows_aarch64_gnullvm 0.52.4",
-+ "windows_aarch64_msvc 0.52.4",
-+ "windows_i686_gnu 0.52.4",
-+ "windows_i686_msvc 0.52.4",
-+ "windows_x86_64_gnu 0.52.4",
-+ "windows_x86_64_gnullvm 0.52.4",
-+ "windows_x86_64_msvc 0.52.4",
- ]
-
- [[package]]
- name = "windows_aarch64_gnullvm"
--version = "0.42.2"
-+version = "0.48.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-+
-+[[package]]
-+name = "windows_aarch64_gnullvm"
-+version = "0.52.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
-+
-+[[package]]
-+name = "windows_aarch64_msvc"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
- [[package]]
- name = "windows_aarch64_msvc"
--version = "0.42.2"
-+version = "0.52.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
-
- [[package]]
- name = "windows_i686_gnu"
--version = "0.42.2"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-+
-+[[package]]
-+name = "windows_i686_gnu"
-+version = "0.52.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
-
- [[package]]
- name = "windows_i686_msvc"
--version = "0.42.2"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-+
-+[[package]]
-+name = "windows_i686_msvc"
-+version = "0.52.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
-
- [[package]]
- name = "windows_x86_64_gnu"
--version = "0.42.2"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-+
-+[[package]]
-+name = "windows_x86_64_gnu"
-+version = "0.52.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
-
- [[package]]
- name = "windows_x86_64_gnullvm"
--version = "0.42.2"
-+version = "0.48.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-+
-+[[package]]
-+name = "windows_x86_64_gnullvm"
-+version = "0.52.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
-+
-+[[package]]
-+name = "windows_x86_64_msvc"
-+version = "0.48.5"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
- [[package]]
- name = "windows_x86_64_msvc"
--version = "0.42.2"
-+version = "0.52.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
-diff --git a/Cargo.toml b/Cargo.toml
-index b2fa53d..5e73508 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -6,6 +6,7 @@ edition = "2021"
- # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
- [dependencies]
--hyprland = "0.3.8"
-+#hyprland = "0.3.8"
-+hyprland = { git = "https://github.com/hyprland-community/hyprland-rs", rev = "4a6ef94" }
- serde_json = "1.0"
- serde = "1.0"
-diff --git a/src/main.rs b/src/main.rs
-index 6ed7490..7845349 100644
---- a/src/main.rs
-+++ b/src/main.rs
-@@ -26,6 +26,8 @@ struct WorkspaceCustom {
- pub id: i32,
- pub active: bool,
- pub class: String,
-+ pub monitor: String,
-+ pub monitor_id: u8,
- }
-
- fn output(monitor: &str) {
-@@ -67,6 +69,8 @@ fn output(monitor: &str) {
- id: workspace.id,
- active,
- class,
-+ monitor: workspace.monitor.clone(),
-+ monitor_id: workspace.monitor_id,
- };
- out_workspaces.push(ws);
- }
---
-2.42.0
-
diff --git a/home-manager/wallpapers/denise_picrew_2.png b/home-manager/wallpapers/denise_picrew_2.png
deleted file mode 100644
index 4efee9b..0000000
Binary files a/home-manager/wallpapers/denise_picrew_2.png and /dev/null differ
diff --git a/home-manager/wallpapers/denise_picrew_3.png b/home-manager/wallpapers/denise_picrew_3.png
deleted file mode 100644
index 157aed4..0000000
Binary files a/home-manager/wallpapers/denise_picrew_3.png and /dev/null differ
diff --git a/home-manager/wallpapers/elrena-lauriam-cropped.jpg b/home-manager/wallpapers/elrena-lauriam-cropped.jpg
deleted file mode 100644
index be1c109..0000000
Binary files a/home-manager/wallpapers/elrena-lauriam-cropped.jpg and /dev/null differ
diff --git a/home-manager/wallpapers/sarina.png b/home-manager/wallpapers/sarina.png
deleted file mode 100644
index b671f22..0000000
Binary files a/home-manager/wallpapers/sarina.png and /dev/null differ
diff --git a/home-manager/wallpapers/slimejaina_extinct_lesboba.png b/home-manager/wallpapers/slimejaina_extinct_lesboba.png
deleted file mode 100644
index 34944be..0000000
Binary files a/home-manager/wallpapers/slimejaina_extinct_lesboba.png and /dev/null differ
diff --git a/home-manager/wallpapers/velma_picrew.png b/home-manager/wallpapers/velma_picrew.png
deleted file mode 100644
index 482e304..0000000
Binary files a/home-manager/wallpapers/velma_picrew.png and /dev/null differ
diff --git a/home-manager/wallpapers/velma_picrew_cropped.png b/home-manager/wallpapers/velma_picrew_cropped.png
deleted file mode 100644
index cf7ee11..0000000
Binary files a/home-manager/wallpapers/velma_picrew_cropped.png and /dev/null differ
diff --git a/nebula.nix b/nebula.nix
deleted file mode 100644
index ff4325d..0000000
--- a/nebula.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, pkgs, ... }:
-
-{
- environment.systemPackages = with pkgs; [ nebula ];
- services.nebula.networks.home = {
- enable = true;
- cert = "/var/lib/nebula/harrowhark.crt";
- key = "/var/lib/nebula/harrowhark.key";
- ca = "/var/lib/nebula/ca.crt";
-
- lighthouses = [ "172.16.0.1" ];
- staticHostMap."172.16.0.1" = [ "5.78.100.40:4242" ];
-
- firewall.inbound = [{
- host = "any";
- port = "any";
- proto = "any";
- }];
- firewall.outbound = [{
- host = "any";
- port = "any";
- proto = "any";
- }];
- };
-
- networking.hosts."172.16.0.2" =
- [ "torrent.home" "sonarr.home" "radarr.home" "prowlarr.home" ];
-}