logo

inaban

Distrustful Wayland Compositor (inspired by XMonad and dwm) git clone https://hacktivis.me/git/inaban.git
commit: 2d0e5a96ba00d2b331404c7ab9f3882f938cc968
parent 11c5d8c85278dbd8451246fbb785028a29b3ed7e
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Mon, 10 May 2021 09:13:17 +0200

Describe current status and goals

Diffstat:

DREADME31-------------------------------
AREADME.md37+++++++++++++++++++++++++++++++++++++
Aaccessibility.md12++++++++++++
Asecurity.md28++++++++++++++++++++++++++++
4 files changed, 77 insertions(+), 31 deletions(-)

diff --git a/README b/README @@ -1,31 +0,0 @@ -## inaban -Inaban: Nickname of “稲葉姫子 (Inaba Himeko)”, a character in Kokoro Connect. Picked her for her personality regarding reality and trust. - -# Dependencies -- wlroots 0.13.0+ -- Wayland: wayland-server, wayland-scanner, wayland-protocols -- (lib)xkbcommon - -# Installation -The usual `make ; make install` works. Running inaban as root (setuid included) is unsupported, you need to use something like seatd or {e,systemd-}logind. - -# Inspirations -## XMonad -- Most of the shortcuts - -## dwm -- configuration and related code - -## cage, sway, rootston -- wlroots related code - -# Goals -- No client side decorations, might have borders on all the boxes (rendering and hitbox, should they ever manage to differ) -- Programs wanting to have more than simply asking for a regular surface should need special permissions - - listing of the surfaces should be something similar to a capability - - special position/size should be completely managed by the compositor - - resizes other than done by the compositor are denied -- If there is tiling should be powerful (like XMonad) yet simple (unlike i3) - -## Non-Goals -- XWayland as anything but a separated Wayland client (would recommend cage for this) diff --git a/README.md b/README.md @@ -0,0 +1,37 @@ +## inaban +Inaban: Nickname of “稲葉姫子 (Inaba Himeko)”, a character in Kokoro Connect. Picked her for her personality regarding reality and trust. + +# Dependencies +- wlroots 0.13.0+ +- Wayland: wayland-server, wayland-scanner, wayland-protocols +- (lib)xkbcommon +- a [`checkpassword`](https://cr.yp.to/checkpwd.html) implementation + +# Installation +The usual `make ; make install` works. Running inaban as root (setuid included) is unsupported, you need to use something like seatd or {e,systemd-}logind. + +# Inspirations +## XMonad +- Most of the shortcuts + +## dwm +- configuration and related code + +## cage, sway, rootston +- wlroots related code + +## Design and Goals/Non-Goals/… +Refer to: +- <./security.md> +- <./accessibility.md> + +# Goals +- No client side decorations, might have borders on all the boxes (rendering and hitbox, should they ever manage to differ) +- Programs wanting to have more than simply asking for a regular surface should need special permissions + - listing of the surfaces should be something similar to a capability + - special position/size should be completely managed by the compositor + - resizes other than done by the compositor are denied +- If there is tiling should be powerful (like XMonad) yet simple (unlike i3) + +## Non-Goals +- XWayland as anything but a separated Wayland client (would recommend cage for this) diff --git a/accessibility.md b/accessibility.md @@ -0,0 +1,12 @@ +# Accessibility +Until version 1.0 this serves as a roadmap. + +## Generic +- On first startup, it should try to launch orca and quickly ask if it will be needed by the user +- Interface should be usable with only a 2-button pointer or only a keyboard + +## Lockscreen +- Username, machine name +- Keyboard layout and modifier status +- "Access Granted" / "Access Denied" messages +- Support for braille(brltty) and speech output diff --git a/security.md b/security.md @@ -0,0 +1,28 @@ +# Security +Until version 1.0 this serves as a roadmap. + +Report security issues via an email to <contact+inaban@hacktivis.me> with <https://hacktivis.me/reop.pub> as my reop public key. + +## Design +### Focus +- Keyboard & Pointer focus is synchronised (keyboard focus warps the pointer) +- Applications cannot steal focus unless explicitely launched by the user + +### Special Permissions +Special permissions are needed for: Screen capturing/recording, app-requested fullscreen, snooping (including for accessibility purposes), monitor settings. + +- Because of linux's design, unless an application is registered and launched by the compositor a consent pop-in dialog is displayed + +### Fullscreen +- Applications can't fullscreen themselves (until proper process authentication on linux is discovered) + +### Lockscreen +- Inspired by <https://www.jwz.org/xscreensaver/toolkits.html> +- Wayland clients compositing (input & graphics) is disabled while locked; this also means that screen recording gets refused or when already authorized gets blank output. +- Normal applications get title/`app_id`/… displayed when Logo is pressed +- Separated authentication process launched by the compositor + - setuid-root is frowned upon, use TCB shadow + - PAM is unsupported, I believe it suffers design issues + - Can return only "Valid" or "Denied" to stdout; Other messages trigger a warning + - stderr for Error messages +- Screensavers are unsupported for now, they could be handed a special file descriptor