%PDF- %PDF-
Direktori : /lib/python2.7/site-packages/salt/modules/ |
Current File : //lib/python2.7/site-packages/salt/modules/gnomedesktop.py |
# -*- coding: utf-8 -*- ''' GNOME implementations ''' # Import Python libs from __future__ import absolute_import, print_function, unicode_literals import re import logging try: import pwd HAS_PWD = True except ImportError: HAS_PWD = False # Import Salt libs import salt.utils.path # Import 3rd-party libs try: from gi.repository import Gio, GLib # pylint: disable=W0611 HAS_GLIB = True except ImportError: HAS_GLIB = False log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = 'gnome' # Don't shadow built-in's. __func_alias__ = { 'set_': 'set' } def __virtual__(): ''' Only load if the Gio and Glib modules are available ''' if HAS_PWD and HAS_GLIB: return __virtualname__ return (False, 'The gnome_desktop execution module cannot be loaded: ' 'The Gio and GLib modules are not available') class _GSettings(object): def __init__(self, user, schema, key): self.SCHEMA = schema self.KEY = key self.USER = user self.UID = None self.HOME = None @property def gsetting_command(self): ''' return the command to run the gsettings binary ''' if salt.utils.path.which_bin(['dbus-run-session']): cmd = ['dbus-run-session', '--', 'gsettings'] else: cmd = ['dbus-launch', '--exit-with-session', 'gsettings'] return cmd def _get(self): ''' get the value for user in gsettings ''' user = self.USER try: uid = pwd.getpwnam(user).pw_uid except KeyError: log.info('User does not exist') return False cmd = self.gsetting_command + ['get', str(self.SCHEMA), str(self.KEY)] environ = {} environ['XDG_RUNTIME_DIR'] = '/run/user/{0}'.format(uid) result = __salt__['cmd.run_all'](cmd, runas=user, env=environ, python_shell=False) if 'stdout' in result: if 'uint32' in result['stdout']: return re.sub('uint32 ', '', result['stdout']) else: return result['stdout'] else: return False def _set(self, value): ''' set the value for user in gsettings ''' user = self.USER try: uid = pwd.getpwnam(user).pw_uid except KeyError: log.info('User does not exist') result = {} result['retcode'] = 1 result['stdout'] = 'User {0} does not exist'.format(user) return result cmd = self.gsetting_command + ['set', self.SCHEMA, self.KEY, value] environ = {} environ['XDG_RUNTIME_DIR'] = '/run/user/{0}'.format(uid) result = __salt__['cmd.run_all'](cmd, runas=user, env=environ, python_shell=False) return result def ping(**kwargs): ''' A test to ensure the GNOME module is loaded CLI Example: .. code-block:: bash salt '*' gnome.ping user=<username> ''' return True def getIdleDelay(**kwargs): ''' Return the current idle delay setting in seconds CLI Example: .. code-block:: bash salt '*' gnome.getIdleDelay user=<username> ''' _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.session', key='idle-delay') return _gsession._get() def setIdleDelay(delaySeconds, **kwargs): ''' Set the current idle delay setting in seconds CLI Example: .. code-block:: bash salt '*' gnome.setIdleDelay <seconds> user=<username> ''' _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.session', key='idle-delay') return _gsession._set(delaySeconds) def getClockFormat(**kwargs): ''' Return the current clock format, either 12h or 24h format. CLI Example: .. code-block:: bash salt '*' gnome.getClockFormat user=<username> ''' _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.interface', key='clock-format') return _gsession._get() def setClockFormat(clockFormat, **kwargs): ''' Set the clock format, either 12h or 24h format. CLI Example: .. code-block:: bash salt '*' gnome.setClockFormat <12h|24h> user=<username> ''' if clockFormat != '12h' and clockFormat != '24h': return False _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.interface', key='clock-format') return _gsession._set(clockFormat) def getClockShowDate(**kwargs): ''' Return the current setting, if the date is shown in the clock CLI Example: .. code-block:: bash salt '*' gnome.getClockShowDate user=<username> ''' _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.interface', key='clock-show-date') return _gsession._get() def setClockShowDate(kvalue, **kwargs): ''' Set whether the date is visible in the clock CLI Example: .. code-block:: bash salt '*' gnome.setClockShowDate <True|False> user=<username> ''' if kvalue is not True and kvalue is not False: return False _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.interface', key='clock-show-date') return _gsession._set(kvalue) def getIdleActivation(**kwargs): ''' Get whether the idle activation is enabled CLI Example: .. code-block:: bash salt '*' gnome.getIdleActivation user=<username> ''' _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.screensaver', key='idle-activation-enabled') return _gsession._get() def setIdleActivation(kvalue, **kwargs): ''' Set whether the idle activation is enabled CLI Example: .. code-block:: bash salt '*' gnome.setIdleActivation <True|False> user=<username> ''' if kvalue is not True and kvalue is not False: return False _gsession = _GSettings(user=kwargs.get('user'), schema='org.gnome.desktop.screensaver', key='idle-activation-enabled') return _gsession._set(kvalue) def get(schema=None, key=None, user=None, **kwargs): ''' Get key in a particular GNOME schema CLI Example: .. code-block:: bash salt '*' gnome.get user=<username> schema=org.gnome.desktop.screensaver key=idle-activation-enabled ''' _gsession = _GSettings(user=user, schema=schema, key=key) return _gsession._get() def set_(schema=None, key=None, user=None, value=None, **kwargs): ''' Set key in a particular GNOME schema CLI Example: .. code-block:: bash salt '*' gnome.set user=<username> schema=org.gnome.desktop.screensaver key=idle-activation-enabled value=False ''' _gsession = _GSettings(user=user, schema=schema, key=key) return _gsession._set(value)