Don’t even try to refactor it.
commit
e9a6137281
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
import dbus
|
||||
from os.path import basename
|
||||
from xml.etree import ElementTree
|
||||
#pid = 17821
|
||||
IDLE_PROCESS = ["zsh", "bash"]
|
||||
KONSOLE_PATH = 'org.kde.konsole'
|
||||
|
||||
def is_shell(foreground_process_pid):
|
||||
|
||||
with open('/proc/{pid}/cmdline'.format(pid=foreground_process_pid)) as file:
|
||||
path = file.read()
|
||||
process_name = basename(path)[:-1] # \x00 >:
|
||||
return(process_name in IDLE_PROCESS)
|
||||
|
||||
|
||||
def get_sessions_ids(sessions_xml):
|
||||
root = ElementTree.fromstring(sessions_xml)
|
||||
return [x.attrib['name'] for x in root if x.tag == 'node']
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
session_bus = dbus.SessionBus()
|
||||
|
||||
id_list = get_sessions_ids(
|
||||
session_bus.get_object('org.kde.konsole', '/Sessions').Introspect()
|
||||
)
|
||||
|
||||
for x in id_list:
|
||||
object_path = "/Sessions/{id}".format(id=x)
|
||||
session = session_bus.get_object('org.kde.konsole', object_path)
|
||||
foreground_id = session.foregroundProcessId()
|
||||
if is_shell(foreground_id):
|
||||
session.runCommand("exit")
|
||||
|
Loading…
Reference in New Issue