sxmo: get gesture support working

This commit is contained in:
2023-05-17 06:58:37 +00:00
parent 14a4d8d577
commit a96e10617f

View File

@@ -1,5 +1,8 @@
# this work derives from noneucat's sxmo service/packages, found via NUR # this work derives from noneucat's sxmo service/packages, found via NUR
# - <repo:nix-community/nur-combined:repos/noneucat/modules/pinephone/sxmo.nix> # - <repo:nix-community/nur-combined:repos/noneucat/modules/pinephone/sxmo.nix>
# other nix works:
# - <https://github.com/wentam/sxmo-nix>
# - <https://github.com/chuangzhu/nixpkgs-sxmo>
# #
# sxmo documentation: # sxmo documentation:
# - <repo:anjan/sxmo-docs-next> # - <repo:anjan/sxmo-docs-next>
@@ -15,10 +18,14 @@
# - list available daemons: `sxmo_daemons.sh list` # - list available daemons: `sxmo_daemons.sh list`
# - query if a daemon is active: `sxmo_daemons.sh running <my-daemon>` # - query if a daemon is active: `sxmo_daemons.sh running <my-daemon>`
# - start daemon: `sxmo_daemons.sh start <my-daemon>` # - start daemon: `sxmo_daemons.sh start <my-daemon>`
# - managable by `superctl`
# - `superctl status`
# - user hooks: # - user hooks:
# - live in ~/.config/sxmo/hooks/ # - live in ~/.config/sxmo/hooks/
# - logs: # - logs:
# - live in ~/.local/state/sxmo.log # - live in ~/.local/state/sxmo.log
# - ~/.local/state/superd.log
# - ~/.local/state/superd/logs/<daemon>.log
# - `journalctl --user --boot` (lightm redirects the sxmo session stdout => systemd) # - `journalctl --user --boot` (lightm redirects the sxmo session stdout => systemd)
# #
# - default components: # - default components:
@@ -31,7 +38,7 @@
with lib; with lib;
let let
cfg = config.sane.gui.phosh; cfg = config.sane.gui.sxmo;
in in
{ {
options = { options = {
@@ -39,6 +46,38 @@ in
default = false; default = false;
type = types.bool; type = types.bool;
}; };
sane.gui.sxmo.hooks = mkOption {
type = types.package;
default = pkgs.runCommand "sxmo-hooks" { } ''
mkdir -p $out
ln -s ${pkgs.sxmo-utils}/share/sxmo/default_hooks $out/bin
'';
description = ''
hooks to make visible to sxmo.
a hook is a script generally of the name sxmo_hook_<thing>.sh
which is called by sxmo at key moments to proide user programmability.
'';
};
sane.gui.sxmo.deviceHooks = mkOption {
type = types.package;
default = pkgs.runCommand "sxmo-device-hooks" { } ''
mkdir -p $out
ln -s ${pkgs.sxmo-utils}/share/sxmo/default_hooks/unknown $out/bin
'';
description = ''
device-specific hooks to make visible to sxmo.
this package supplies things like `sxmo_hook_inputhandler.sh`.
a hook is a script generally of the name sxmo_hook_<thing>.sh
which is called by sxmo at key moments to proide user programmability.
'';
};
sane.gui.sxmo.terminal = mkOption {
type = types.nullOr (types.enum [ "foot" "st" "vte" ]);
default = "st";
description = ''
name of terminal to use for sxmo_terminal.sh
'';
};
}; };
config = mkMerge [ config = mkMerge [
@@ -51,7 +90,7 @@ in
}; };
} }
(mkIf config.sane.gui.sxmo.enable { (mkIf cfg.enable {
sane.programs.sxmoApps.enableFor.user.colin = true; sane.programs.sxmoApps.enableFor.user.colin = true;
# TODO: probably need to enable pipewire # TODO: probably need to enable pipewire
@@ -101,15 +140,37 @@ in
inotify-tools inotify-tools
libnotify libnotify
lisgd lisgd
mako
superd superd
sway sway
sxmo-utils sxmo-utils
cfg.deviceHooks
cfg.hooks
xdg-user-dirs xdg-user-dirs
]; ] ++ lib.optionals (cfg.terminal != null) [ pkgs."${cfg.terminal}" ];
environment.sessionVariables.XDG_DATA_DIRS = [ environment.sessionVariables = {
# TODO: only need the share/sxmo directly linked XDG_DATA_DIRS = [
"${pkgs.sxmo-utils}/share" # TODO: only need the share/sxmo directly linked
]; "${pkgs.sxmo-utils}/share"
];
# XXX: make sure the user is part of the `input` group!
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-id/usb-Wacom_Co._Ltd._Pen_and_multitouch_sensor-event-if00";
# sxmo tries to determine device type from /proc/device-tree/compatible,
# but that doesn't seem to exist on NixOS? (or maybe it just doesn't exist
# on non-aarch64 builds).
# the device type informs (at least):
# - SXMO_WIFI_MODULE
# - SXMO_RTW_SCAN_INTERVAL
# - SXMO_SYS_FILES
# - SXMO_TOUCHSCREEN_ID
# - SXMO_MONITOR
# - SXMO_ALSA_CONTROL_NAME
# - SXMO_SWAY_SCALE
# see <repo:mil/sxmo-utils:scripts/deviceprofiles>
# SXMO_DEVICE_NAME = "pine64,pinephone-1.2";
} // lib.optionalAttrs (cfg.terminal != null) {
TERMCMD = lib.mkDefault (if cfg.terminal == "vte" then "vte-2.91" else cfg.terminal);
};
}) })
]; ];
} }