add fht compositor

This commit is contained in:
Henry Hiles 2026-04-17 12:40:40 -04:00
commit badacda762
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
7 changed files with 138 additions and 5 deletions

View file

Before

Width:  |  Height:  |  Size: 362 KiB

After

Width:  |  Height:  |  Size: 362 KiB

Before After
Before After

View file

@ -0,0 +1,6 @@
{
programs.dms-shell = {
enable = true;
systemd.enable = false;
};
}

View file

@ -0,0 +1,98 @@
{ inputs, pkgs, ... }:
{
imports = [ inputs.fht-compositor.nixosModules.default ];
programs.fht-compositor =
let
config = {
autostart = [ "dms run" ];
general = {
focus-follows-mouse = true;
inner-gaps = 10;
outer-gaps = 30;
};
decorations = {
border = {
thickness = 4;
radius = 12;
};
blur.disable = true;
};
keybinds = {
Alt-Tab = "focus-next-window";
Super-f = "fullscreen-focused-window";
Super-Ctrl-q = "quit";
Super-Ctrl-r = "reload-config";
Super-t = {
action = "run-command";
arg = "ptyxis";
};
Super-Down = {
action = "change-window-proportion";
arg = 0.5;
};
Super-Up = {
action = "change-window-proportion";
arg = -0.5;
};
Super-Left = {
action = "change-mwfact";
arg = -0.1;
};
Super-Right = {
action = "change-mwfact";
arg = 0.1;
};
keybindings = builtins.listToAttrs (
builtins.genList (i: {
name = "Super-${toString (i + 1)}";
value = {
action = "focus-workspace";
arg = i;
};
}) 9
);
};
mousebinds = {
Super-Left = "swap-tile";
Super-wheeldown = "focus-previous-workspace";
Super-wheelup = "focus-next-workspace";
};
rules = [
{
match-app-id = [ ".*" ];
floating = false;
}
];
outputs = {
HDMI-A-1.position.x = 0;
DP-3.position.x = 1920;
};
cursor = {
name = "GoogleDot-Blue";
size = 24;
};
};
in
{
enable = true;
package =
inputs.fht-compositor.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs
(old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
postInstall = (old.postInstall or "") + ''
wrapProgram $out/bin/fht-compositor \
--add-flags "-c ${(pkgs.formats.toml { }).generate "config.toml" config}"
'';
});
};
}

25
flake.lock generated
View file

@ -665,6 +665,30 @@
"type": "github" "type": "github"
} }
}, },
"fht-compositor": {
"inputs": {
"flake-parts": [
"flake-parts"
],
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": []
},
"locked": {
"lastModified": 1776249126,
"narHash": "sha256-67QnaoJmncKx4Xj+TrnZ1qGjrE4lhTTYb51bWAuHAjM=",
"owner": "nferhat",
"repo": "fht-compositor",
"rev": "a6a03db175083749889dbcc0ab1e53fbc4e5d191",
"type": "github"
},
"original": {
"owner": "nferhat",
"repo": "fht-compositor",
"type": "github"
}
},
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -2656,6 +2680,7 @@
"continuwuity": "continuwuity", "continuwuity": "continuwuity",
"cozybot": "cozybot", "cozybot": "cozybot",
"disko": "disko", "disko": "disko",
"fht-compositor": "fht-compositor",
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_3", "flake-parts": "flake-parts_3",
"gnome-mobile": "gnome-mobile", "gnome-mobile": "gnome-mobile",

View file

@ -74,6 +74,14 @@
url = "github:Henry-Hiles/dotfiles-fork"; url = "github:Henry-Hiles/dotfiles-fork";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
fht-compositor = {
url = "github:nferhat/fht-compositor";
inputs = {
nixpkgs.follows = "nixpkgs";
rust-overlay.follows = "";
flake-parts.follows = "flake-parts";
};
};
}; };
outputs = outputs =

View file

@ -1,4 +0,0 @@
{ inputs, ... }:
{
environment.etc."backup".source = inputs.self;
}

View file

@ -14,7 +14,7 @@
]; ];
background = rec { background = rec {
picture-uri = "file://${./background.jpg}"; picture-uri = "file://${../../../background.jpg}";
picture-uri-dark = picture-uri; picture-uri-dark = picture-uri;
}; };