{ ... }: { sane.programs.sane-open = { suggestedPrograms = [ "gdbus" "xdg-utils" ]; sandbox.autodetectCliPaths = "existing"; # for when opening a file sandbox.extraHomePaths = [ ".local/share/applications" ]; sandbox.extraRuntimePaths = [ "sway" ]; #< calls `swaymsg` to query rotation and see if there's room for a keyboard sandbox.keepPidsAndProc = true; #< to toggle keyboard sandbox.whitelistPortal = [ "DynamicLauncher" "OpenURI" ]; mime.associations."application/x-desktop" = "sane-open-desktop.desktop"; }; sane.programs."sane-open.clipboard" = { suggestedPrograms = [ "sane-open" ]; # this calls into `sane-open`, but explicitly doesn't use all functionality, # so doesn't need all sandboxing. # that might hint that the packages should be split/restructured... sandbox.whitelistWayland = true; #< to access clipboard sandbox.whitelistDbus.user = true; #< TODO: reduce }; }