nix-files/hosts/common/programs/wvkbd.nix

55 lines
1.6 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.sane.programs.wvkbd;
in
{
sane.programs.wvkbd = {
packageUnwrapped = pkgs.wvkbd.overrideAttrs (base: {
postPatch = (base.postPatch or "") + ''
substituteInPlace layout.mobintl.h \
--replace-fail '#define KBD_KEY_BORDER 2' '#define KBD_KEY_BORDER 1'
'';
});
sandbox.method = "bwrap";
sandbox.whitelistWayland = true;
env.KEYBOARD = "wvkbd-mobintl";
services.wvkbd = {
description = "wvkbd: wayland virtual keyboard";
after = [ "graphical-session.target" ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
# --hidden: send SIGUSR2 to unhide
ExecStart = lib.escapeShellArgs [
"env"
# wvkbd layers:
# - full
# - landscape
# - special (e.g. coding symbols like ~)
# - emoji
# - nav
# - simple (like landscape, but no parens/tab/etc; even fewer chars)
# - simplegrid (simple, but grid layout)
# - dialer (digits)
# - cyrillic
# - arabic
# - persian
# - greek
# - georgian
"WVKBD_LANDSCAPE_LAYERS=landscape,special,emoji"
"WVKBD_LAYERS=full,special,emoji"
"WVKBD_HEIGHT=216" #< default: 250 (pixels)
# "WVKBD_LANDSCAPE_HEIGHT=??" #< default: 120 (pixels)
# more settings tunable inside config.h when compiling:
# - KBD_KEY_BORDER = 2
"${cfg.package}/bin/wvkbd-mobintl"
"--hidden"
];
Type = "simple";
};
};
};
}