From 390a29b54e7d043fb02dcf87a32ed8385da0a647 Mon Sep 17 00:00:00 2001 From: aliriza Date: Fri, 19 Jan 2024 09:16:37 +0000 Subject: [PATCH] fix client show issue --- src/client/MainWindow.py | 4 ++-- src/client/cli.py | 8 ++++++-- src/client/main.py | 19 ++++++++----------- src/common/asyncfunc.py | 8 ++++++++ src/service/service.py | 2 ++ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/client/MainWindow.py b/src/client/MainWindow.py index 41dc472..11c3c27 100755 --- a/src/client/MainWindow.py +++ b/src/client/MainWindow.py @@ -148,7 +148,7 @@ def power_mode_event(self, widget): data["new-mode"] = "performance" send_server(data) - @asynchronous + @idle def update(self,data): self.init() print(data) @@ -173,7 +173,7 @@ def update(self,data): self.o("ui_scale_brightness").set_value((cur*100)/max) else: self.o("ui_box_brightness").set_visible(False) - if "show" in data: + if "show" in data and data["show"] == str(os.getuid()): self.open_window_event(None) if self.current_mode == "powersave": self.o("ui_button_powersave").set_sensitive(False) diff --git a/src/client/cli.py b/src/client/cli.py index 369b980..aa77627 100755 --- a/src/client/cli.py +++ b/src/client/cli.py @@ -7,7 +7,7 @@ def usage(): print("Usage: ppm [set/get] [mode/backlight] (value)") exit(1) -if len(sys.argv) <= 2: +if len(sys.argv) <= 2 and sys.argv[1] != "show": usage() if not os.path.exists("/run/ppm"): @@ -16,7 +16,11 @@ def usage(): data = {} data["pid"] = os.getpid() -if sys.argv[1] == "set": +if sys.argv[1] == "show": + data["show"] = str(os.getuid()) + with open("/run/ppm","w") as f: + f.write(json.dumps(data)) +elif sys.argv[1] == "set": if len(sys.argv) <= 3: usage() if sys.argv[2] == "mode": diff --git a/src/client/main.py b/src/client/main.py index b74ac53..c903fab 100755 --- a/src/client/main.py +++ b/src/client/main.py @@ -3,26 +3,23 @@ from MainWindow import * import os, sys -import gi +import gi, json gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Gio, GLib client_dir = "/run/user/{}/ppm/".format(os.getuid()) no_show = False if os.path.exists(client_dir): - data = {} - data["pid"] = os.getpid() - data["show"] = "1" - for fifo in listdir(client_dir): - if os.path.exists("/proc/{}".format(fifo)): - writefile(client_dir + fifo, json.dumps(data)) - no_show = True - else: - os.unlink(client_dir + fifo) + if len(os.listdir(client_dir)) > 0: + data = {} + data["pid"] = os.getpid() + data["show"] = str(os.getuid()) + no_show = True + with open("/run/ppm","w") as f: + f.write(json.dumps(data)) if no_show: exit(0) - class Application(Gtk.Application): def __init__(self, *args, **kwargs): super().__init__(*args, application_id="tr.org.pardus.power-manager", diff --git a/src/common/asyncfunc.py b/src/common/asyncfunc.py index 2d89da7..5412c46 100755 --- a/src/common/asyncfunc.py +++ b/src/common/asyncfunc.py @@ -7,3 +7,11 @@ def wrapper(*args, **kwargs): return thread return wrapper + +from gi.repository import GObject + +def idle(func): + def wrapper(*args, **kwargs): + GObject.idle_add(func, *args, **kwargs) + return wrapper + diff --git a/src/service/service.py b/src/service/service.py index 0c44e7d..16bad84 100755 --- a/src/service/service.py +++ b/src/service/service.py @@ -39,6 +39,8 @@ def main(data): # client update udata = {} udata["mode"] = power.get_mode() + if "show" in data: + udata["show"] = data["show"] udata["backlight"] = {} for dev in backlight.get_devices(): udata["backlight"][dev] = {}