~kennylevinsen/greetd-devel

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch
4 3

[PATCH greetd 1/3] Revert "Remove 'env' from start_session"

Details
Message ID
<20220813191610.37833-1-alebastr89@gmail.com>
DKIM signature
missing
Download raw message
Patch: +15 -13
This reverts commit 1bc6ddbf67397494b7097e92a901344782d394ae.
---
 agreety/src/main.rs             | 1 +
 fakegreet/src/main.rs           | 2 +-
 greetd/src/context.rs           | 6 +++---
 greetd/src/server.rs            | 2 +-
 greetd/src/session/interface.rs | 4 ++--
 greetd/src/session/worker.rs    | 7 ++++---
 greetd_ipc/src/lib.rs           | 2 +-
 man/greetd-ipc-7.scd            | 4 ++--
 8 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/agreety/src/main.rs b/agreety/src/main.rs
index d0c2806..0168a71 100644
--- a/agreety/src/main.rs
+++ b/agreety/src/main.rs
@@ -107,6 +107,7 @@ fn login(node: &str, cmd: &mut Option<String>) -> Result<LoginResult, Box<dyn st
                        None => prompt_stderr("Command: ")?,
                    };
                    next_request = Request::StartSession {
                        env: vec![],
                        cmd: vec![command.to_string()],
                    }
                }
diff --git a/fakegreet/src/main.rs b/fakegreet/src/main.rs
index 0a23c77..187551e 100644
--- a/fakegreet/src/main.rs
+++ b/fakegreet/src/main.rs
@@ -137,7 +137,7 @@ async fn client_handler(ctx: &Context, mut s: UnixStream) -> Result<(), Error> {
                    res => wrap_result(res),
                }
            }
            Request::StartSession { cmd } => wrap_result(ctx.start(cmd).await),
            Request::StartSession { cmd, env: _ } => wrap_result(ctx.start(cmd).await),
            Request::CancelSession => wrap_result(ctx.cancel().await),
        };

diff --git a/greetd/src/context.rs b/greetd/src/context.rs
index cff0a44..5025015 100644
--- a/greetd/src/context.rs
+++ b/greetd/src/context.rs
@@ -103,7 +103,7 @@ impl Context {
            }
        }

        scheduled_session.send_args(cmd).await?;
        scheduled_session.send_args(cmd, vec![]).await?;
        scheduled_session.start().await
    }

@@ -253,14 +253,14 @@ impl Context {
    }

    /// Schedule the session under configuration with the provided arguments.
    pub async fn start(&self, cmd: Vec<String>) -> Result<(), Error> {
    pub async fn start(&self, cmd: Vec<String>, env: Vec<String>) -> Result<(), Error> {
        let mut session = self.inner.write().await.configuring.take();

        match &mut session {
            Some(s) => match s.session.get_state().await? {
                SessionState::Ready => {
                    // Send our arguments to the session.
                    s.session.send_args(cmd).await?;
                    s.session.send_args(cmd, env).await?;

                    let mut inner = self.inner.write().await;
                    std::mem::swap(&mut session, &mut inner.scheduled);
diff --git a/greetd/src/server.rs b/greetd/src/server.rs
index 9dab635..041b64c 100644
--- a/greetd/src/server.rs
+++ b/greetd/src/server.rs
@@ -85,7 +85,7 @@ async fn client_handler(ctx: &Context, mut s: UnixStream) -> Result<(), Error> {
                    res => wrap_result(res),
                }
            }
            Request::StartSession { cmd } => wrap_result(ctx.start(cmd).await),
            Request::StartSession { cmd, env } => wrap_result(ctx.start(cmd, env).await),
            Request::CancelSession => wrap_result(ctx.cancel().await),
        };

diff --git a/greetd/src/session/interface.rs b/greetd/src/session/interface.rs
index 805f07a..a52d3f9 100644
--- a/greetd/src/session/interface.rs
+++ b/greetd/src/session/interface.rs
@@ -193,8 +193,8 @@ impl Session {
    ///
    /// Send the arguments that will be used to start the session.
    ///
    pub async fn send_args(&mut self, cmd: Vec<String>) -> Result<(), Error> {
        let msg = ParentToSessionChild::Args { cmd };
    pub async fn send_args(&mut self, cmd: Vec<String>, env: Vec<String>) -> Result<(), Error> {
        let msg = ParentToSessionChild::Args { env, cmd };
        msg.send(&mut self.sock).await?;

        let msg = SessionChildToParent::recv(&mut self.sock).await?;
diff --git a/greetd/src/session/worker.rs b/greetd/src/session/worker.rs
index f968968..9e691fa 100644
--- a/greetd/src/session/worker.rs
+++ b/greetd/src/session/worker.rs
@@ -46,6 +46,7 @@ pub enum ParentToSessionChild {
        resp: Option<String>,
    },
    Args {
        env: Vec<String>,
        cmd: Vec<String>,
    },
    Start,
@@ -110,8 +111,8 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> {
    SessionChildToParent::Success.send(sock)?;

    // Fetch our arguments from the parent.
    let cmd = match ParentToSessionChild::recv(sock)? {
        ParentToSessionChild::Args { cmd } => cmd,
    let (env, cmd) = match ParentToSessionChild::recv(sock)? {
        ParentToSessionChild::Args { env, cmd } => (env, cmd),
        ParentToSessionChild::Cancel => return Err("cancelled".into()),
        msg => return Err(format!("expected Args or Cancel, got: {:?}", msg).into()),
    };
@@ -200,7 +201,7 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> {
        ),
    ];

    for e in prepared_env.iter() {
    for e in prepared_env.iter().chain(env.iter()) {
        pam.putenv(e)?;
    }

diff --git a/greetd_ipc/src/lib.rs b/greetd_ipc/src/lib.rs
index a3fdf9d..970e6e8 100644
--- a/greetd_ipc/src/lib.rs
+++ b/greetd_ipc/src/lib.rs
@@ -75,7 +75,7 @@ pub enum Request {

    /// Start a successfully logged in session. This will fail if the session
    /// has pending messages or has encountered an error.
    StartSession { cmd: Vec<String> },
    StartSession { cmd: Vec<String>, env: Vec<String> },

    /// Cancel a session. This can only be done if the session has not been
    /// started. Cancel does not have to be called if an error has been
diff --git a/man/greetd-ipc-7.scd b/man/greetd-ipc-7.scd
index 8721918..d1dff3c 100644
--- a/man/greetd-ipc-7.scd
+++ b/man/greetd-ipc-7.scd
@@ -46,8 +46,8 @@ following hexdump:
:  response (string, optional)
:  Answers an authentication message. If the message was informative (info, error), then a response does not need to be set in this message. The session is ready to be started if a success is returned.
|  start_session
:  cmd (array of strings)
:  Requests for the session to be started using the provided command line. The session will start after the greeter process terminates.
:  cmd (array of strings), env (array of strings)
:  Requests for the session to be started using the provided command line, adding the supplied environment to that created by PAM. The session will start after the greeter process terminates.
|  cancel_session
: 
:  Cancels the session that is currently under configuration.
-- 
2.37.2

[PATCH greetd 2/3] ipc: ensure backward compatibility of the protocol

Details
Message ID
<20220813191610.37833-2-alebastr89@gmail.com>
In-Reply-To
<20220813191610.37833-1-alebastr89@gmail.com> (view parent)
DKIM signature
missing
Download raw message
Patch: +5 -1
If the client was compiled with the previous version of the protocol,
initialize StartSession.env with the default value instead of failing to
deserialize the message.
---
 greetd_ipc/src/lib.rs | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/greetd_ipc/src/lib.rs b/greetd_ipc/src/lib.rs
index 970e6e8..c20c00f 100644
--- a/greetd_ipc/src/lib.rs
+++ b/greetd_ipc/src/lib.rs
@@ -75,7 +75,11 @@ pub enum Request {

    /// Start a successfully logged in session. This will fail if the session
    /// has pending messages or has encountered an error.
    StartSession { cmd: Vec<String>, env: Vec<String> },
    StartSession {
        cmd: Vec<String>,
        #[serde(default)]
        env: Vec<String>,
    },

    /// Cancel a session. This can only be done if the session has not been
    /// started. Cancel does not have to be called if an error has been
-- 
2.37.2

[PATCH greetd 3/3] Change order of setting pam environment variables.

Details
Message ID
<20220813191610.37833-3-alebastr89@gmail.com>
In-Reply-To
<20220813191610.37833-1-alebastr89@gmail.com> (view parent)
DKIM signature
missing
Download raw message
Patch: +1 -1
Set the variables coming from a greeter first to ensure that the
duplicates will be overwritten by the values from greetd worker.
---
 greetd/src/session/worker.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/greetd/src/session/worker.rs b/greetd/src/session/worker.rs
index 9e691fa..20432a1 100644
--- a/greetd/src/session/worker.rs
+++ b/greetd/src/session/worker.rs
@@ -201,7 +201,7 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> {
        ),
    ];

    for e in prepared_env.iter().chain(env.iter()) {
    for e in env.iter().chain(prepared_env.iter()) {
        pam.putenv(e)?;
    }

-- 
2.37.2

[greetd/patches] build success

builds.sr.ht <builds@sr.ht>
Details
Message ID
<CM557IN8BPKU.3RD2OTEOX5UG@cirno2>
In-Reply-To
<20220813191610.37833-3-alebastr89@gmail.com> (view parent)
DKIM signature
missing
Download raw message
greetd/patches: SUCCESS in 3m45s

[Revert "Remove 'env' from start_session"][0] from [Aleksei Bavshin][1]

[0]: https://lists.sr.ht/~kennylevinsen/greetd-devel/patches/34645
[1]: alebastr89@gmail.com

✓ #822392 SUCCESS greetd/patches/archlinux.yml https://builds.sr.ht/~kennylevinsen/job/822392
✓ #822391 SUCCESS greetd/patches/alpine.yml    https://builds.sr.ht/~kennylevinsen/job/822391
Details
Message ID
<62LKGR.9KKLNZTMGBNV2@kl.wtf>
In-Reply-To
<20220813191610.37833-1-alebastr89@gmail.com> (view parent)
DKIM signature
missing
Download raw message
Applied, thanks!
Reply to thread Export thread (mbox)