diff options
| -rw-r--r-- | internal/system/acl.go (renamed from system/acl.go) | 2 | ||||
| -rw-r--r-- | internal/system/acl/acl.go (renamed from system/acl/acl.go) | 0 | ||||
| -rw-r--r-- | internal/system/acl/acl_test.go (renamed from system/acl/acl_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/acl/libacl-helper.c (renamed from system/acl/libacl-helper.c) | 0 | ||||
| -rw-r--r-- | internal/system/acl/libacl-helper.go (renamed from system/acl/libacl-helper.go) | 0 | ||||
| -rw-r--r-- | internal/system/acl/libacl-helper.h (renamed from system/acl/libacl-helper.h) | 0 | ||||
| -rw-r--r-- | internal/system/acl/libacl-helper_test.go (renamed from system/acl/libacl-helper_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/acl/perms.go (renamed from system/acl/perms.go) | 0 | ||||
| -rw-r--r-- | internal/system/acl/perms_test.go (renamed from system/acl/perms_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/acl_test.go (renamed from system/acl_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/dbus.go (renamed from system/dbus.go) | 2 | ||||
| -rw-r--r-- | internal/system/dbus/address.go (renamed from system/dbus/address.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/address_escape_test.go (renamed from system/dbus/address_escape_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/address_test.go (renamed from system/dbus/address_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/dbus/config.go (renamed from system/dbus/config.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/config_test.go (renamed from system/dbus/config_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/dbus/dbus.go (renamed from system/dbus/dbus.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/dbus_test.go (renamed from system/dbus/dbus_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/dbus/export_test.go (renamed from system/dbus/export_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/proc.go (renamed from system/dbus/proc.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/proc_test.go (renamed from system/dbus/proc_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/proxy.go (renamed from system/dbus/proxy.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/samples_test.go (renamed from system/dbus/samples_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/testdata/dev.vencord.Vesktop.json (renamed from system/dbus/testdata/dev.vencord.Vesktop.json) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/testdata/org.chromium.Chromium+.json (renamed from system/dbus/testdata/org.chromium.Chromium+.json) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/testdata/org.chromium.Chromium.json (renamed from system/dbus/testdata/org.chromium.Chromium.json) | 0 | ||||
| -rw-r--r-- | internal/system/dbus/testdata/uk.gensokyo.CrashTestDummy.json (renamed from system/dbus/testdata/uk.gensokyo.CrashTestDummy.json) | 0 | ||||
| -rw-r--r-- | internal/system/dbus_test.go (renamed from system/dbus_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/dispatcher.go (renamed from system/dispatcher.go) | 6 | ||||
| -rw-r--r-- | internal/system/dispatcher_test.go (renamed from system/dispatcher_test.go) | 6 | ||||
| -rw-r--r-- | internal/system/link.go (renamed from system/link.go) | 0 | ||||
| -rw-r--r-- | internal/system/link_test.go (renamed from system/link_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/mkdir.go (renamed from system/mkdir.go) | 0 | ||||
| -rw-r--r-- | internal/system/mkdir_test.go (renamed from system/mkdir_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/output.go (renamed from system/output.go) | 0 | ||||
| -rw-r--r-- | internal/system/output_test.go (renamed from system/output_test.go) | 0 | ||||
| -rw-r--r-- | internal/system/system.go (renamed from system/system.go) | 2 | ||||
| -rw-r--r-- | internal/system/system_test.go (renamed from system/system_test.go) | 2 | ||||
| -rw-r--r-- | internal/system/wayland.go (renamed from system/wayland.go) | 4 | ||||
| -rw-r--r-- | internal/system/wayland/conn.go (renamed from system/wayland/conn.go) | 1 | ||||
| -rw-r--r-- | internal/system/wayland/security-context-v1-protocol.c (renamed from system/wayland/security-context-v1-protocol.c) | 0 | ||||
| -rw-r--r-- | internal/system/wayland/security-context-v1-protocol.h (renamed from system/wayland/security-context-v1-protocol.h) | 0 | ||||
| -rw-r--r-- | internal/system/wayland/wayland-client-helper.c (renamed from system/wayland/wayland-client-helper.c) | 0 | ||||
| -rw-r--r-- | internal/system/wayland/wayland-client-helper.h (renamed from system/wayland/wayland-client-helper.h) | 0 | ||||
| -rw-r--r-- | internal/system/wayland/wayland.go (renamed from system/wayland/wayland.go) | 20 | ||||
| -rw-r--r-- | internal/system/wayland_test.go (renamed from system/wayland_test.go) | 4 | ||||
| -rw-r--r-- | internal/system/xcb/changehosts.go (renamed from system/internal/xcb/changehosts.go) | 0 | ||||
| -rw-r--r-- | internal/system/xcb/xcb.go (renamed from system/internal/xcb/xcb.go) | 0 | ||||
| -rw-r--r-- | internal/system/xhost.go (renamed from system/xhost.go) | 2 | ||||
| -rw-r--r-- | internal/system/xhost_test.go (renamed from system/xhost_test.go) | 2 | ||||
| -rw-r--r-- | system/acl/deprecated.go | 25 | ||||
| -rw-r--r-- | system/dbus/deprecated.go | 115 | ||||
| -rw-r--r-- | system/deprecated.go | 50 | ||||
| -rw-r--r-- | system/wayland/deprecated.go (renamed from system/wayland/consts.go) | 16 |
54 files changed, 243 insertions, 30 deletions
diff --git a/system/acl.go b/internal/system/acl.go index c89a4780..854e812b 100644 --- a/system/acl.go +++ b/internal/system/acl.go @@ -8,7 +8,7 @@ import ( "hakurei.app/container/check" "hakurei.app/hst" - "hakurei.app/system/acl" + "hakurei.app/internal/system/acl" ) // UpdatePerm calls UpdatePermType with the [Process] criteria. diff --git a/system/acl/acl.go b/internal/system/acl/acl.go index 366ad533..366ad533 100644 --- a/system/acl/acl.go +++ b/internal/system/acl/acl.go diff --git a/system/acl/acl_test.go b/internal/system/acl/acl_test.go index c6c3e562..b0dd58d7 100644 --- a/system/acl/acl_test.go +++ b/internal/system/acl/acl_test.go @@ -13,7 +13,7 @@ import ( "strconv" "testing" - "hakurei.app/system/acl" + "hakurei.app/internal/system/acl" ) const testFileName = "acl.test" diff --git a/system/acl/libacl-helper.c b/internal/system/acl/libacl-helper.c index d1df8167..d1df8167 100644 --- a/system/acl/libacl-helper.c +++ b/internal/system/acl/libacl-helper.c diff --git a/system/acl/libacl-helper.go b/internal/system/acl/libacl-helper.go index 22575296..22575296 100644 --- a/system/acl/libacl-helper.go +++ b/internal/system/acl/libacl-helper.go diff --git a/system/acl/libacl-helper.h b/internal/system/acl/libacl-helper.h index b86eb170..b86eb170 100644 --- a/system/acl/libacl-helper.h +++ b/internal/system/acl/libacl-helper.h diff --git a/system/acl/libacl-helper_test.go b/internal/system/acl/libacl-helper_test.go index 13d23a3c..13d23a3c 100644 --- a/system/acl/libacl-helper_test.go +++ b/internal/system/acl/libacl-helper_test.go diff --git a/system/acl/perms.go b/internal/system/acl/perms.go index fbc99e82..fbc99e82 100644 --- a/system/acl/perms.go +++ b/internal/system/acl/perms.go diff --git a/system/acl/perms_test.go b/internal/system/acl/perms_test.go index 16b282a7..3d5e3df5 100644 --- a/system/acl/perms_test.go +++ b/internal/system/acl/perms_test.go @@ -3,7 +3,7 @@ package acl_test import ( "testing" - "hakurei.app/system/acl" + "hakurei.app/internal/system/acl" ) func TestPerms(t *testing.T) { diff --git a/system/acl_test.go b/internal/system/acl_test.go index 2202d957..1fc3b1a2 100644 --- a/system/acl_test.go +++ b/internal/system/acl_test.go @@ -7,7 +7,7 @@ import ( "hakurei.app/container/stub" "hakurei.app/hst" - "hakurei.app/system/acl" + "hakurei.app/internal/system/acl" ) func TestACLUpdateOp(t *testing.T) { diff --git a/system/dbus.go b/internal/system/dbus.go index 424f9dfa..b9021b81 100644 --- a/system/dbus.go +++ b/internal/system/dbus.go @@ -13,7 +13,7 @@ import ( "hakurei.app/container" "hakurei.app/hst" - "hakurei.app/system/dbus" + "hakurei.app/internal/system/dbus" ) // ErrDBusConfig is returned when a required [hst.BusConfig] argument is nil. diff --git a/system/dbus/address.go b/internal/system/dbus/address.go index edee7e20..edee7e20 100644 --- a/system/dbus/address.go +++ b/internal/system/dbus/address.go diff --git a/system/dbus/address_escape_test.go b/internal/system/dbus/address_escape_test.go index 4ef48f8b..4ef48f8b 100644 --- a/system/dbus/address_escape_test.go +++ b/internal/system/dbus/address_escape_test.go diff --git a/system/dbus/address_test.go b/internal/system/dbus/address_test.go index 5de90535..9ed48214 100644 --- a/system/dbus/address_test.go +++ b/internal/system/dbus/address_test.go @@ -5,7 +5,7 @@ import ( "reflect" "testing" - "hakurei.app/system/dbus" + "hakurei.app/internal/system/dbus" ) func TestParse(t *testing.T) { diff --git a/system/dbus/config.go b/internal/system/dbus/config.go index 2a09ee90..2a09ee90 100644 --- a/system/dbus/config.go +++ b/internal/system/dbus/config.go diff --git a/system/dbus/config_test.go b/internal/system/dbus/config_test.go index 644c766f..dec4cb16 100644 --- a/system/dbus/config_test.go +++ b/internal/system/dbus/config_test.go @@ -7,7 +7,7 @@ import ( "testing" "hakurei.app/hst" - "hakurei.app/system/dbus" + "hakurei.app/internal/system/dbus" ) func TestConfigArgs(t *testing.T) { diff --git a/system/dbus/dbus.go b/internal/system/dbus/dbus.go index 9ea89f51..9ea89f51 100644 --- a/system/dbus/dbus.go +++ b/internal/system/dbus/dbus.go diff --git a/system/dbus/dbus_test.go b/internal/system/dbus/dbus_test.go index 3a9af578..9fc2b539 100644 --- a/system/dbus/dbus_test.go +++ b/internal/system/dbus/dbus_test.go @@ -12,8 +12,8 @@ import ( "time" "hakurei.app/internal/helper" + "hakurei.app/internal/system/dbus" "hakurei.app/message" - "hakurei.app/system/dbus" ) func TestFinalise(t *testing.T) { diff --git a/system/dbus/export_test.go b/internal/system/dbus/export_test.go index bc24f3f3..bc24f3f3 100644 --- a/system/dbus/export_test.go +++ b/internal/system/dbus/export_test.go diff --git a/system/dbus/proc.go b/internal/system/dbus/proc.go index 0bd9c6b3..0bd9c6b3 100644 --- a/system/dbus/proc.go +++ b/internal/system/dbus/proc.go diff --git a/system/dbus/proc_test.go b/internal/system/dbus/proc_test.go index 544856ed..544856ed 100644 --- a/system/dbus/proc_test.go +++ b/internal/system/dbus/proc_test.go diff --git a/system/dbus/proxy.go b/internal/system/dbus/proxy.go index 9de49c41..9de49c41 100644 --- a/system/dbus/proxy.go +++ b/internal/system/dbus/proxy.go diff --git a/system/dbus/samples_test.go b/internal/system/dbus/samples_test.go index 7db3d6b9..7db3d6b9 100644 --- a/system/dbus/samples_test.go +++ b/internal/system/dbus/samples_test.go diff --git a/system/dbus/testdata/dev.vencord.Vesktop.json b/internal/system/dbus/testdata/dev.vencord.Vesktop.json index 05259774..05259774 100644 --- a/system/dbus/testdata/dev.vencord.Vesktop.json +++ b/internal/system/dbus/testdata/dev.vencord.Vesktop.json diff --git a/system/dbus/testdata/org.chromium.Chromium+.json b/internal/system/dbus/testdata/org.chromium.Chromium+.json index 0a27d719..0a27d719 100644 --- a/system/dbus/testdata/org.chromium.Chromium+.json +++ b/internal/system/dbus/testdata/org.chromium.Chromium+.json diff --git a/system/dbus/testdata/org.chromium.Chromium.json b/internal/system/dbus/testdata/org.chromium.Chromium.json index be027f39..be027f39 100644 --- a/system/dbus/testdata/org.chromium.Chromium.json +++ b/internal/system/dbus/testdata/org.chromium.Chromium.json diff --git a/system/dbus/testdata/uk.gensokyo.CrashTestDummy.json b/internal/system/dbus/testdata/uk.gensokyo.CrashTestDummy.json index 43272f67..43272f67 100644 --- a/system/dbus/testdata/uk.gensokyo.CrashTestDummy.json +++ b/internal/system/dbus/testdata/uk.gensokyo.CrashTestDummy.json diff --git a/system/dbus_test.go b/internal/system/dbus_test.go index eedb2335..f79c8482 100644 --- a/system/dbus_test.go +++ b/internal/system/dbus_test.go @@ -12,7 +12,7 @@ import ( "hakurei.app/container/stub" "hakurei.app/hst" "hakurei.app/internal/helper" - "hakurei.app/system/dbus" + "hakurei.app/internal/system/dbus" ) func TestDBusProxyOp(t *testing.T) { diff --git a/system/dispatcher.go b/internal/system/dispatcher.go index cdc95072..86aebcaa 100644 --- a/system/dispatcher.go +++ b/internal/system/dispatcher.go @@ -7,9 +7,9 @@ import ( "os" "hakurei.app/hst" - "hakurei.app/system/acl" - "hakurei.app/system/dbus" - "hakurei.app/system/internal/xcb" + "hakurei.app/internal/system/acl" + "hakurei.app/internal/system/dbus" + "hakurei.app/internal/system/xcb" ) type osFile interface { diff --git a/system/dispatcher_test.go b/internal/system/dispatcher_test.go index fd6e5d09..8000f0c7 100644 --- a/system/dispatcher_test.go +++ b/internal/system/dispatcher_test.go @@ -10,9 +10,9 @@ import ( "hakurei.app/container/stub" "hakurei.app/hst" - "hakurei.app/system/acl" - "hakurei.app/system/dbus" - "hakurei.app/system/internal/xcb" + "hakurei.app/internal/system/acl" + "hakurei.app/internal/system/dbus" + "hakurei.app/internal/system/xcb" ) // call initialises a [stub.Call]. diff --git a/system/link.go b/internal/system/link.go index a13adaae..a13adaae 100644 --- a/system/link.go +++ b/internal/system/link.go diff --git a/system/link_test.go b/internal/system/link_test.go index d719931f..d719931f 100644 --- a/system/link_test.go +++ b/internal/system/link_test.go diff --git a/system/mkdir.go b/internal/system/mkdir.go index f375579c..f375579c 100644 --- a/system/mkdir.go +++ b/internal/system/mkdir.go diff --git a/system/mkdir_test.go b/internal/system/mkdir_test.go index e8ffde2a..e8ffde2a 100644 --- a/system/mkdir_test.go +++ b/internal/system/mkdir_test.go diff --git a/system/output.go b/internal/system/output.go index 71acace4..71acace4 100644 --- a/system/output.go +++ b/internal/system/output.go diff --git a/system/output_test.go b/internal/system/output_test.go index c0cbfdfe..c0cbfdfe 100644 --- a/system/output_test.go +++ b/internal/system/output_test.go diff --git a/system/system.go b/internal/system/system.go index cadaab04..f518975c 100644 --- a/system/system.go +++ b/internal/system/system.go @@ -44,7 +44,7 @@ type Op interface { String() string } -// TypeString extends [Enablement.String] to support [User] and [Process]. +// TypeString extends [hst.Enablement.String] to support [User] and [Process]. func TypeString(e hst.Enablement) string { switch e { case User: diff --git a/system/system_test.go b/internal/system/system_test.go index 83df9dee..b0773b0f 100644 --- a/system/system_test.go +++ b/internal/system/system_test.go @@ -11,8 +11,8 @@ import ( "hakurei.app/container/check" "hakurei.app/container/stub" "hakurei.app/hst" + "hakurei.app/internal/system/xcb" "hakurei.app/message" - "hakurei.app/system/internal/xcb" ) func TestCriteria(t *testing.T) { diff --git a/system/wayland.go b/internal/system/wayland.go index bb144d8c..8883148e 100644 --- a/system/wayland.go +++ b/internal/system/wayland.go @@ -7,8 +7,8 @@ import ( "hakurei.app/container/check" "hakurei.app/hst" - "hakurei.app/system/acl" - "hakurei.app/system/wayland" + "hakurei.app/internal/system/acl" + "hakurei.app/internal/system/wayland" ) type waylandConn interface { diff --git a/system/wayland/conn.go b/internal/system/wayland/conn.go index 86e0a288..c55fe704 100644 --- a/system/wayland/conn.go +++ b/internal/system/wayland/conn.go @@ -1,4 +1,3 @@ -// Package wayland implements Wayland security_context_v1 protocol. package wayland import ( diff --git a/system/wayland/security-context-v1-protocol.c b/internal/system/wayland/security-context-v1-protocol.c index 5b15b1b4..5b15b1b4 100644 --- a/system/wayland/security-context-v1-protocol.c +++ b/internal/system/wayland/security-context-v1-protocol.c diff --git a/system/wayland/security-context-v1-protocol.h b/internal/system/wayland/security-context-v1-protocol.h index f973619e..f973619e 100644 --- a/system/wayland/security-context-v1-protocol.h +++ b/internal/system/wayland/security-context-v1-protocol.h diff --git a/system/wayland/wayland-client-helper.c b/internal/system/wayland/wayland-client-helper.c index 5a2c9a01..5a2c9a01 100644 --- a/system/wayland/wayland-client-helper.c +++ b/internal/system/wayland/wayland-client-helper.c diff --git a/system/wayland/wayland-client-helper.h b/internal/system/wayland/wayland-client-helper.h index eae8936d..eae8936d 100644 --- a/system/wayland/wayland-client-helper.h +++ b/internal/system/wayland/wayland-client-helper.h diff --git a/system/wayland/wayland.go b/internal/system/wayland/wayland.go index 2aa1fe15..7a8694cd 100644 --- a/system/wayland/wayland.go +++ b/internal/system/wayland/wayland.go @@ -1,3 +1,4 @@ +// Package wayland implements Wayland security_context_v1 protocol. package wayland //go:generate sh -c "wayland-scanner client-header `pkg-config --variable=datarootdir wayland-protocols`/wayland-protocols/staging/security-context/security-context-v1.xml security-context-v1-protocol.h" @@ -13,10 +14,21 @@ import "C" import ( "errors" "strings" + "syscall" ) -var ( - ErrContainsNull = errors.New("string contains null character") +const ( + // Display contains the name of the server socket + // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1147) + // which is concatenated with XDG_RUNTIME_DIR + // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1171) + // or used as-is if absolute + // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1176). + Display = "WAYLAND_DISPLAY" + + // FallbackName is used as the wayland socket name if WAYLAND_DISPLAY is unset + // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1149). + FallbackName = "wayland-0" ) var resErr = [...]error{ @@ -27,10 +39,10 @@ var resErr = [...]error{ func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFd uintptr) error { if hasNull(appID) || hasNull(instanceID) { - return ErrContainsNull + return syscall.EINVAL } res := C.hakurei_bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFd)) return resErr[int32(res)] } -func hasNull(s string) bool { return strings.IndexByte(s, '\x00') > -1 } +func hasNull(s string) bool { return strings.IndexByte(s, 0) > -1 } diff --git a/system/wayland_test.go b/internal/system/wayland_test.go index 6805b0c2..083c8ba7 100644 --- a/system/wayland_test.go +++ b/internal/system/wayland_test.go @@ -6,8 +6,8 @@ import ( "testing" "hakurei.app/container/stub" - "hakurei.app/system/acl" - "hakurei.app/system/wayland" + "hakurei.app/internal/system/acl" + "hakurei.app/internal/system/wayland" ) type stubWaylandConn struct { diff --git a/system/internal/xcb/changehosts.go b/internal/system/xcb/changehosts.go index 8b05614b..8b05614b 100644 --- a/system/internal/xcb/changehosts.go +++ b/internal/system/xcb/changehosts.go diff --git a/system/internal/xcb/xcb.go b/internal/system/xcb/xcb.go index 3dc62c3f..3dc62c3f 100644 --- a/system/internal/xcb/xcb.go +++ b/internal/system/xcb/xcb.go diff --git a/system/xhost.go b/internal/system/xhost.go index 9a547f43..27e60c2b 100644 --- a/system/xhost.go +++ b/internal/system/xhost.go @@ -2,7 +2,7 @@ package system import ( "hakurei.app/hst" - "hakurei.app/system/internal/xcb" + "hakurei.app/internal/system/xcb" ) // ChangeHosts inserts the target user into X11 hosts and deletes it once its [Enablement] is no longer satisfied. diff --git a/system/xhost_test.go b/internal/system/xhost_test.go index 759f7536..853da651 100644 --- a/system/xhost_test.go +++ b/internal/system/xhost_test.go @@ -5,7 +5,7 @@ import ( "hakurei.app/container/stub" "hakurei.app/hst" - "hakurei.app/system/internal/xcb" + "hakurei.app/internal/system/xcb" ) func TestXHostOp(t *testing.T) { diff --git a/system/acl/deprecated.go b/system/acl/deprecated.go new file mode 100644 index 00000000..4119057b --- /dev/null +++ b/system/acl/deprecated.go @@ -0,0 +1,25 @@ +// Package acl exposes the internal/system/acl package. +// +// Deprecated: This package will be removed in 0.4. +package acl + +import ( + _ "unsafe" // for go:linkname + + "hakurei.app/internal/system/acl" +) + +type Perm = acl.Perm + +const ( + Read = acl.Read + Write = acl.Write + Execute = acl.Execute +) + +// Update replaces ACL_USER entry with qualifier uid. +// +//go:linkname Update hakurei.app/internal/system/acl.Update +func Update(name string, uid int, perms ...Perm) error + +type Perms = acl.Perms diff --git a/system/dbus/deprecated.go b/system/dbus/deprecated.go new file mode 100644 index 00000000..67a309c2 --- /dev/null +++ b/system/dbus/deprecated.go @@ -0,0 +1,115 @@ +// Package dbus exposes the internal/system/dbus package. +// +// Deprecated: This package will be removed in 0.4. +package dbus + +import ( + "context" + "io" + _ "unsafe" // for go:linkname + + "hakurei.app/hst" + "hakurei.app/internal/system/dbus" + "hakurei.app/message" +) + +type AddrEntry = dbus.AddrEntry + +// EqualAddrEntries returns whether two slices of [AddrEntry] are equal. +// +//go:linkname EqualAddrEntries hakurei.app/internal/system/dbus.EqualAddrEntries +func EqualAddrEntries(entries, target []AddrEntry) bool + +// Parse parses D-Bus address according to +// https://dbus.freedesktop.org/doc/dbus-specification.html#addresses +// +//go:linkname Parse hakurei.app/internal/system/dbus.Parse +func Parse(addr []byte) ([]AddrEntry, error) + +type ParseError = dbus.ParseError + +const ( + ErrNoColon = dbus.ErrNoColon + ErrBadPairSep = dbus.ErrBadPairSep + ErrBadPairKey = dbus.ErrBadPairKey + ErrBadPairVal = dbus.ErrBadPairVal + ErrBadValLength = dbus.ErrBadValLength + ErrBadValByte = dbus.ErrBadValByte + ErrBadValHexLength = dbus.ErrBadValHexLength + ErrBadValHexByte = dbus.ErrBadValHexByte +) + +type BadAddressError = dbus.BadAddressError + +// ProxyPair is an upstream dbus address and a downstream socket path. +type ProxyPair = dbus.ProxyPair + +// Args returns the xdg-dbus-proxy arguments equivalent of [hst.BusConfig]. +// +//go:linkname Args hakurei.app/internal/system/dbus.Args +func Args(c *hst.BusConfig, bus ProxyPair) (args []string) + +// NewConfig returns the address of a new [hst.BusConfig] with optional defaults. +// +//go:linkname NewConfig hakurei.app/internal/system/dbus.NewConfig +func NewConfig(id string, defaults, mpris bool) *hst.BusConfig + +const ( + /* + SessionBusAddress is the name of the environment variable where the address of the login session message bus is given in. + + If that variable is not set, applications may also try to read the address from the X Window System root window property _DBUS_SESSION_BUS_ADDRESS. + The root window property must have type STRING. The environment variable should have precedence over the root window property. + + The address of the login session message bus is given in the DBUS_SESSION_BUS_ADDRESS environment variable. + If DBUS_SESSION_BUS_ADDRESS is not set, or if it's set to the string "autolaunch:", + the system should use platform-specific methods of locating a running D-Bus session server, + or starting one if a running instance cannot be found. + Note that this mechanism is not recommended for attempting to determine if a daemon is running. + It is inherently racy to attempt to make this determination, since the bus daemon may be started just before or just after the determination is made. + Therefore, it is recommended that applications do not try to make this determination for their functionality purposes, and instead they should attempt to start the server. + + This package diverges from the specification, as the caller is unlikely to be an X client, or be in a position to autolaunch a dbus server. + So a fallback address with a socket located in the well-known default XDG_RUNTIME_DIR formatting is used. + */ + SessionBusAddress = dbus.SessionBusAddress + + /* + SystemBusAddress is the name of the environment variable where the address of the system message bus is given in. + + If that variable is not set, applications should try to connect to the well-known address unix:path=/var/run/dbus/system_bus_socket. + Implementations of the well-known system bus should listen on an address that will result in that connection being successful. + */ + SystemBusAddress = dbus.SystemBusAddress + + // FallbackSystemBusAddress is used when [SystemBusAddress] is not set. + FallbackSystemBusAddress = dbus.FallbackSystemBusAddress +) + +// Address returns the session and system bus addresses copied from environment, +// or appropriate fallback values if they are not set. +// +//go:linkname Address hakurei.app/internal/system/dbus.Address +func Address() (session, system string) + +// ProxyName is the file name or path to the proxy program. +// Overriding ProxyName will only affect Proxy instance created after the change. +// +//go:linkname ProxyName hakurei.app/internal/system/dbus.ProxyName +var ProxyName string + +// Proxy holds the state of a xdg-dbus-proxy process, and should never be copied. +type Proxy = dbus.Proxy + +// Final describes the outcome of a proxy configuration. +type Final = dbus.Final + +// Finalise creates a checked argument writer for [Proxy]. +// +//go:linkname Finalise hakurei.app/internal/system/dbus.Finalise +func Finalise(sessionBus, systemBus ProxyPair, session, system *hst.BusConfig) (final *Final, err error) + +// New returns a new instance of [Proxy]. +// +//go:linkname New hakurei.app/internal/system/dbus.New +func New(ctx context.Context, msg message.Msg, final *Final, output io.Writer) *Proxy diff --git a/system/deprecated.go b/system/deprecated.go new file mode 100644 index 00000000..3f0a423d --- /dev/null +++ b/system/deprecated.go @@ -0,0 +1,50 @@ +// Package system exposes the internal/system package. +// +// Deprecated: This package will be removed in 0.4. +package system + +import ( + "context" + _ "unsafe" // for go:linkname + + "hakurei.app/hst" + "hakurei.app/internal/system" + "hakurei.app/message" +) + +// ErrDBusConfig is returned when a required hst.BusConfig argument is nil. +// +//go:linkname ErrDBusConfig hakurei.app/internal/system.ErrDBusConfig +var ErrDBusConfig error + +// OpError is returned by [I.Commit] and [I.Revert]. +type OpError = system.OpError + +const ( + // User type is reverted at final instance exit. + User = system.User + // Process type is unconditionally reverted on exit. + Process = system.Process + + CM = system.CM +) + +// Criteria specifies types of Op to revert. +type Criteria = system.Criteria + +// Op is a reversible system operation. +type Op = system.Op + +// TypeString extends [Enablement.String] to support [User] and [Process]. +// +//go:linkname TypeString hakurei.app/internal/system.TypeString +func TypeString(e hst.Enablement) string + +// New returns the address of a new [I] targeting uid. +// +//go:linkname New hakurei.app/internal/system.New +func New(ctx context.Context, msg message.Msg, uid int) (sys *I) + +// An I provides deferred operating system interaction. [I] must not be copied. +// Methods of [I] must not be used concurrently. +type I = system.I diff --git a/system/wayland/consts.go b/system/wayland/deprecated.go index 672e6392..bf364d9a 100644 --- a/system/wayland/consts.go +++ b/system/wayland/deprecated.go @@ -1,5 +1,17 @@ +// Package wayland exposes the internal/system/wayland package. +// +// Deprecated: This package will be removed in 0.4. package wayland +import ( + _ "unsafe" // for go:linkname + + "hakurei.app/internal/system/wayland" +) + +// Conn represents a connection to the wayland display server. +type Conn = wayland.Conn + const ( // WaylandDisplay contains the name of the server socket // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1147) @@ -7,9 +19,9 @@ const ( // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1171) // or used as-is if absolute // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1176). - WaylandDisplay = "WAYLAND_DISPLAY" + WaylandDisplay = wayland.Display // FallbackName is used as the wayland socket name if WAYLAND_DISPLAY is unset // (https://gitlab.freedesktop.org/wayland/wayland/-/blob/1.23.1/src/wayland-client.c#L1149). - FallbackName = "wayland-0" + FallbackName = wayland.FallbackName ) |
