Ophestra Umiker
3242ce3406
This is yet another remnant of Ego, as Ego unconditionally shares these resources and the absence of them are ignored and warned about in verbose logging. In our case they are individually opt-in so silently dropping them while the enablement is still set makes very little sense. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
38 lines
974 B
Go
38 lines
974 B
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path"
|
|
|
|
"git.ophivana.moe/cat/fortify/internal/acl"
|
|
"git.ophivana.moe/cat/fortify/internal/state"
|
|
"git.ophivana.moe/cat/fortify/internal/system"
|
|
)
|
|
|
|
const (
|
|
// https://manpages.debian.org/experimental/libwayland-doc/wl_display_connect.3.en.html
|
|
waylandDisplay = "WAYLAND_DISPLAY"
|
|
)
|
|
|
|
func (a *App) ShareWayland() {
|
|
a.setEnablement(state.EnableWayland)
|
|
|
|
// ensure Wayland socket ACL (e.g. `/run/user/%d/wayland-%d`)
|
|
if w, ok := os.LookupEnv(waylandDisplay); !ok {
|
|
state.Fatal("Wayland: WAYLAND_DISPLAY not set")
|
|
} else {
|
|
// add environment variable for new process
|
|
wp := path.Join(system.V.Runtime, w)
|
|
a.AppendEnv(waylandDisplay, wp)
|
|
if err := acl.UpdatePerm(wp, a.UID(), acl.Read, acl.Write, acl.Execute); err != nil {
|
|
state.Fatal(fmt.Sprintf("Error preparing Wayland '%s':", w), err)
|
|
} else {
|
|
state.RegisterRevertPath(wp)
|
|
}
|
|
if system.V.Verbose {
|
|
fmt.Printf("Wayland socket '%s' configured\n", w)
|
|
}
|
|
}
|
|
}
|