Bladeren bron

Base: Launch Clipboard at session start-up

The clipboard service hasn't been ported to user-based portals with
others services as it is needed at `GUI::Application` creation and thus
before the first login, as the `LoginServer` needs one.

This problem as been solved thanks to session-based portals, a clipboard
portal is now created at boot for the "login" session and another for
each "user" session.

With a user-based portal, the "login" portal would have needed to be
created for the `root` user, exposing us to security issues. It now, can
be owned by the `window` user.
Lucas CHOLLET 2 jaren geleden
bovenliggende
commit
3197c1793a
3 gewijzigde bestanden met toevoegingen van 8 en 3 verwijderingen
  1. 2 2
      Base/etc/SystemServer.ini
  2. 5 0
      Base/home/anon/.config/SystemServer.ini
  3. 1 1
      Userland/Libraries/LibGUI/Clipboard.cpp

+ 2 - 2
Base/etc/SystemServer.ini

@@ -20,10 +20,10 @@ User=window
 StdIO=/dev/tty0
 
 [Clipboard]
-Socket=/tmp/portal/clipboard
+Socket=/tmp/session/%sid/portal/clipboard
 SocketPermissions=600
 Priority=low
-User=anon
+User=window
 
 [Shell@tty0]
 Executable=/bin/Shell

+ 5 - 0
Base/home/anon/.config/SystemServer.ini

@@ -1,3 +1,8 @@
+[Clipboard]
+Socket=/tmp/session/%sid/portal/clipboard
+SocketPermissions=600
+Priority=low
+
 [ConfigServer]
 Socket=/tmp/session/%sid/portal/config
 SocketPermissions=600

+ 1 - 1
Userland/Libraries/LibGUI/Clipboard.cpp

@@ -16,7 +16,7 @@ namespace GUI {
 class ConnectionToClipboardServer final
     : public IPC::ConnectionToServer<ClipboardClientEndpoint, ClipboardServerEndpoint>
     , public ClipboardClientEndpoint {
-    IPC_CLIENT_CONNECTION(ConnectionToClipboardServer, "/tmp/portal/clipboard"sv)
+    IPC_CLIENT_CONNECTION(ConnectionToClipboardServer, "/tmp/session/%sid/portal/clipboard"sv)
 
 private:
     ConnectionToClipboardServer(NonnullOwnPtr<Core::Stream::LocalSocket> socket)