From 51dd82ebd907b7eaae701e32b504aeef08472716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuncay=20=C3=87OLAK?= Date: Wed, 22 Apr 2020 15:30:28 +0300 Subject: [PATCH] get display number method has been added for gnome desktop env --- libpam-script/pam_script_ses_close | 2 +- libpam-script/pam_script_ses_open | 2 +- src/base/util/util.py | 18 ++++++++++++++++++ src/plugins/conky/execute_conky.py | 11 ++++++++--- src/plugins/conky/execute_xmessage.py | 6 +++++- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/libpam-script/pam_script_ses_close b/libpam-script/pam_script_ses_close index f5bab47..3e7c898 100755 --- a/libpam-script/pam_script_ses_close +++ b/libpam-script/pam_script_ses_close @@ -15,7 +15,7 @@ function log() { } if [ -n $PAM_USER ] && [ $PAM_USER != "root" ]; then - if ([ -n $PAM_SERVICE ] && [[ $PAM_SERVICE == *"dm" ]]) || ([ -n $PAM_TTY ] && [[ $PAM_TTY == ":"* ]]); then + if ([ -n $PAM_SERVICE ] && [[ ( $PAM_SERVICE == *"dm" || $PAM_SERVICE == "gdm"* )]]) || ([ -n $PAM_TTY ] && [[ $PAM_TTY == ":"* ]]); then SERVICE="none" if [ -n $PAM_SERVICE ]; then SERVICE="$PAM_SERVICE" diff --git a/libpam-script/pam_script_ses_open b/libpam-script/pam_script_ses_open index 3512806..021ab1c 100755 --- a/libpam-script/pam_script_ses_open +++ b/libpam-script/pam_script_ses_open @@ -15,7 +15,7 @@ function log() { } if [ -n $PAM_USER ] && [ $PAM_USER != "root" ]; then - if ([ -n $PAM_SERVICE ] && [[ $PAM_SERVICE == *"dm" ]]) || ([ -n $PAM_TTY ] && [[ $PAM_TTY == ":"* ]]); then + if ([ -n $PAM_SERVICE ] && [[ ( $PAM_SERVICE == "gdm"* || $PAM_SERVICE == *"dm" )]]) || ([ -n $PAM_TTY ] && [[ $PAM_TTY == ":"* ]]); then SERVICE="none" if [ -n $PAM_SERVICE ]; then SERVICE="$PAM_SERVICE" diff --git a/src/base/util/util.py b/src/base/util/util.py index c8dec3e..bf500fa 100644 --- a/src/base/util/util.py +++ b/src/base/util/util.py @@ -430,6 +430,24 @@ class Util: display_number = ":"+str(display_number) return display_number + @staticmethod + def get_username_display_gnome(user): + result_code, p_out, p_err = Util.execute("who | awk '{print $1, $5}' | sed 's/(://' | sed 's/)//'", result=True) + display_number = None + result = [] + lines = str(p_out).split('\n') + for line in lines: + arr = line.split(' ') + if len(arr) > 1 and str(arr[1]).isnumeric() is True: + result.append(line) + for res in result: + arr = res.split(" ") + username = arr[0] + if username == user: + display_number = ":" + arr[1] + # print("--->>> dis no: " + str(display_number)) + return display_number + @staticmethod def get_desktop_env(): xfce4_session = "/usr/bin/xfce4-session" diff --git a/src/plugins/conky/execute_conky.py b/src/plugins/conky/execute_conky.py index 0901e34..74184d3 100644 --- a/src/plugins/conky/execute_conky.py +++ b/src/plugins/conky/execute_conky.py @@ -102,16 +102,21 @@ class RunConkyCommand(AbstractPlugin): self.create_file(self.conky_config_global_autorun_file) self.write_file(self.conky_config_global_autorun_file, self.conky_autorun_content) - users=self.Sessions.user_name() + users = self.Sessions.user_name() + desktop_env = self.get_desktop_env() + self.logger.info("Get desktop environment is {0}".format(desktop_env)) for user in users: user_display = self.Sessions.display(user) + if desktop_env == "gnome": + user_display = self.get_username_display_gnome(user) + if user_display is None: self.logger.debug('[Conky] executing for display none for user '+ str(user)) self.execute('conky -q', result=False) - else : + else: self.logger.debug('[Conky] user display ' + str(user_display) +' user '+ str(user)) - conky_cmd= 'su ' + str(user) + ' -c ' + ' "conky --display=' + str(user_display) + ' " ' + conky_cmd = 'su ' + str(user) + ' -c ' + ' "conky --display=' + str(user_display) + ' " ' self.logger.debug('[Conky] executing command: ' + str(conky_cmd)) self.execute(conky_cmd, result=False) diff --git a/src/plugins/conky/execute_xmessage.py b/src/plugins/conky/execute_xmessage.py index 12708c4..6001fcc 100644 --- a/src/plugins/conky/execute_xmessage.py +++ b/src/plugins/conky/execute_xmessage.py @@ -26,12 +26,16 @@ class RunXMessageCommand(AbstractPlugin): def execute_xmessage(self, message): - users = self.Sessions.user_name(); + users = self.Sessions.user_name() self.logger.debug('[XMessage] users : ' + str(users)) + desktop_env = self.get_desktop_env() + self.logger.info("Get desktop environment is {0}".format(desktop_env)) for user in users: user_display = self.Sessions.display(user) user_ip = self.Sessions.userip(user) + if desktop_env == "gnome": + user_display = self.get_username_display_gnome(user) if user_display is None: self.logger.debug('[XMessage] executing for display none for user ' + str(user))