Re: [gentoo-user] Re: Unlocking Plasma desktop in Gentoo without systemd

2018-02-12 Thread Daniel Frey
On 09/12/17 05:13, Michael Palimaka wrote:
> On 09/12/2017 05:04 AM, Daniel Frey wrote:
>> According to a comment in the bug, you can try to figure out which
>> session it is (ck-list-sessions) and look for the X11 display property
>> set. This will not work (or could be difficult) if you have several
>> users using KDE at the same time and can't tell the sessions apart.
>>
>> Once you figure that out, remember the session name and:
>>
>> # su -c 'dbus-send --system --print-reply \
>> --dest="org.freedesktop.ConsoleKit" \
>>  /org/freedesktop/ConsoleKit/ \
>> org.freedesktop.ConsoleKit.Session.Unlock'
>>
> 
> If there a nice way to wrap this up in a script I'd be interesting in
> shipping this for non-logind systems.
> 
> Another option is sys-auth/elogind, which provides the logind interface
> and tools (like loginctl) for non-systemd systems. This is what I've
> been testing with OpenRC for some time.
> 
> I read that ConsoleKit is also supporting the logind dbus interface now.
> This would in theory make it easy to create a tool to unlock the
> session, but I haven't had a chance to test it yet.
> 

Well, I forgot to disable my screen locker during an update and got bit
by this again. It's a pain typing it manually (especially when you run a
monitor in portrait mode.)

I had some time and put together a general-purpose bash script. A note
of warning, I'm not an expert at bash by any means, but I was able to
test this several ways as I haven't restarted my computer yet.

I'll attach it if someone else wants to try it out. It's simply called
ck-unlock-session.

Dan
#!/bin/sh

# This script is to make unlocking using OpenRC/Consolekit easier when the KDE 
Screenlocker breaks.
#
# Version: 0.1
# Date written: February 2, 2018
#
# Copyright (C) 2018 Daniel Frey
#
# This script is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
#
# Some notes:
#   -The switch processing/argument handling is very basic.
#   -This script assumes session names start with "Session" when listing
#sessions. This is settable via a variable.
#
# Possible actions:
#   -h : Show help screen
#   -l : List current consolekit sessions
#   -u : Unlock specified session (one parameter required - the session name)
#   -a : Attempt to unlock all sessions

# Return code documentation
#
#  0: Script executed normally
#  1: Root access is not present for script
#  2: No arguments passed
#  3: Multiple actions requested, can only do one at a time
#  4: Argument passed was not recognized
#  5: Multiple arguments passed for unlock single session, only one needed
#  6: The argument required for unlocksession() is missing (internal error)

# Return code constants
readonly ERR_NORMAL_OPERATION=0
readonly ERR_NO_ROOT=1
readonly ERR_NO_ARGS=2
readonly ERR_TOO_MANY_ACTIONS=3
readonly ERR_INVALID_ARGUMENTS=4
readonly ERR_TOO_MANY_ARGS=5
readonly ERR_INTERNAL_ARG_MISSING=6

# Action parameter constants
readonly ACTION_NONE=0
readonly ACTION_HELP=1
readonly ACTION_LIST=2
readonly ACTION_UNLOCKALL=3
readonly ACTION_UNLOCK=4

# This is what's used to look for a session via consolekit.
# By default, assume it is prefixed with "Session".
SESSION_SEARCH_PREFIX=Session

# Check to make sure script has root access, if not... abort now!
if [ $EUID -ne 0 ]; then
echo "This script must be run as root."
exit $ERR_NO_ROOT
fi

function showhelp () {
echo "`basename $0`: a script that helps unlock consolekit sessions

Usage: `basename $0` [action] [parameters]

Actions:
-l : list current sessions available for unlocking 

-u : unlock session specified as a parameter

-a : attempt to unlock all current sessions

-h : this screen

Parameters:
The -u parameter requires a session name to unlock, use -l to list
sessions.

Example:

To unlock a single session, use:
  `basename $0` -u Session1

No arguments will show this screen."
}

function listsessions() {
# Get a list of all sessions, and remove the full colon from the 
session name
ALLSESSIONS=`ck-list-sessions | grep -i ^$SESSION_SEARCH_PREFIX | rev | 
cut -c 2- | rev`

echo
echo "Sessions present on this machine, space-delineated:"
echo
echo $ALLSESSIONS
echo
echo
echo "Session detail (to help locate a specific session:"
ck-list-sessions | grep -A 2 -i ^$SESSION_SEARCH_PREFIX
}

function unlocksession () {
# This function expects one parameter set (the session to unlock.
# Make sure the parameter exists before continuing.
if 

Re: [gentoo-user] Re: Unlocking Plasma desktop in Gentoo without systemd

2017-09-13 Thread J. Roeleveld
On Tuesday, September 12, 2017 2:13:32 PM CEST Michael Palimaka wrote:
> On 09/12/2017 05:04 AM, Daniel Frey wrote:
> > According to a comment in the bug, you can try to figure out which
> > session it is (ck-list-sessions) and look for the X11 display property
> > set. This will not work (or could be difficult) if you have several
> > users using KDE at the same time and can't tell the sessions apart.
> > 
> > Once you figure that out, remember the session name and:
> > 
> > # su -c 'dbus-send --system --print-reply \
> > --dest="org.freedesktop.ConsoleKit" \
> > 
> >  /org/freedesktop/ConsoleKit/ \
> > 
> > org.freedesktop.ConsoleKit.Session.Unlock'
> 
> If there a nice way to wrap this up in a script I'd be interesting in
> shipping this for non-logind systems.

There is:
joost@eve ~ $ cat /usr/local/bin/unlock-screens.sh 
ck-list-sessions | grep Session | sed 's/\(.*\):/dbus-send --system --print-
reply --dest\=\"org.freedesktop.ConsoleKit\" \/org\/freedesktop\/ConsoleKit\/
\1 org.freedesktop.ConsoleKit.Session.Unlock/' | sh

joost@eve ~ $ cat /usr/local/bin/lock-screens.sh 
ck-list-sessions | grep Session | sed 's/\(.*\):/dbus-send --system --print-
reply --dest\=\"org.freedesktop.ConsoleKit\" \/org\/freedesktop\/ConsoleKit\/
\1 org.freedesktop.ConsoleKit.Session.Lock/' | sh


I build these when I encountered this same issue nearly a year ago. I run them 
as "root" and they will (un)lock ALL X-sessions.

> Another option is sys-auth/elogind, which provides the logind interface
> and tools (like loginctl) for non-systemd systems. This is what I've
> been testing with OpenRC for some time.

If it works better, I have no issue with it being pulled in.

> I read that ConsoleKit is also supporting the logind dbus interface now.
> This would in theory make it easy to create a tool to unlock the
> session, but I haven't had a chance to test it yet.

Better solutions are always welcome.

--
Joost



Re: [gentoo-user] Re: Unlocking Plasma desktop in Gentoo without systemd

2017-09-12 Thread Mick
On Tuesday, 12 September 2017 13:13:32 BST Michael Palimaka wrote:
> On 09/12/2017 05:04 AM, Daniel Frey wrote:
> > According to a comment in the bug, you can try to figure out which
> > session it is (ck-list-sessions) and look for the X11 display property
> > set. This will not work (or could be difficult) if you have several
> > users using KDE at the same time and can't tell the sessions apart.
> > 
> > Once you figure that out, remember the session name and:
> > 
> > # su -c 'dbus-send --system --print-reply \
> > --dest="org.freedesktop.ConsoleKit" \
> > 
> >  /org/freedesktop/ConsoleKit/ \
> > 
> > org.freedesktop.ConsoleKit.Session.Unlock'
> 
> If there a nice way to wrap this up in a script I'd be interesting in
> shipping this for non-logind systems.
> 
> Another option is sys-auth/elogind, which provides the logind interface
> and tools (like loginctl) for non-systemd systems. This is what I've
> been testing with OpenRC for some time.
> 
> I read that ConsoleKit is also supporting the logind dbus interface now.
> This would in theory make it easy to create a tool to unlock the
> session, but I haven't had a chance to test it yet.

I think if Plasma shipped with screenlock unset as a default this problem 
would not exist for non-systemd set ups.  I disabled Plasma's screenlock and 
after after some time of inactivity eventually DPMS kicks in and the monitors 
go into power saving mode.  This negates for needing special scripts elogind 
or anything else KDE/Plasma never needed before now.

Nevertheless, the suggestions for using dbus-send were useful for getting me 
out of a hole.  Thanks again! :-)
-- 
Regards,
Mick

signature.asc
Description: This is a digitally signed message part.


[gentoo-user] Re: Unlocking Plasma desktop in Gentoo without systemd

2017-09-12 Thread Michael Palimaka
On 09/12/2017 05:04 AM, Daniel Frey wrote:
> According to a comment in the bug, you can try to figure out which
> session it is (ck-list-sessions) and look for the X11 display property
> set. This will not work (or could be difficult) if you have several
> users using KDE at the same time and can't tell the sessions apart.
> 
> Once you figure that out, remember the session name and:
> 
> # su -c 'dbus-send --system --print-reply \
> --dest="org.freedesktop.ConsoleKit" \
>  /org/freedesktop/ConsoleKit/ \
> org.freedesktop.ConsoleKit.Session.Unlock'
> 

If there a nice way to wrap this up in a script I'd be interesting in
shipping this for non-logind systems.

Another option is sys-auth/elogind, which provides the logind interface
and tools (like loginctl) for non-systemd systems. This is what I've
been testing with OpenRC for some time.

I read that ConsoleKit is also supporting the logind dbus interface now.
This would in theory make it easy to create a tool to unlock the
session, but I haven't had a chance to test it yet.