Changeset cbf04e156a53eaad1bdb30e8a8c8a70d45c52385

Show
Ignore:
Timestamp:
05/07/10 19:30:02 (3 years ago)
Author:
= <=>
Children:
90a58396d069e2a13d4b97b9e120f4aeeb8ee690
Parents:
fccfcb75c2693072f149c4def7ab5c221f1ea0f2
git-committer:
= <=> (05/07/10 19:30:02)
Message:

implemented theme setter by domain name.

provided a sample configuration file.

close #483

See  http://devel.fuss.bz.it/wiki/FussDesktopControl

Location:
packages/fuss-desktop-control
Files:
1 added
3 modified

Legend:

Unmodified
Added
Removed
  • packages/fuss-desktop-control/debian/control

    r3d7a5e3 rcbf04e1  
    88Package: fuss-desktop-control 
    99Architecture: all 
    10 Depends: python, python-gtk2, python-twisted-web, python-dbus 
     10Depends: python, python-gtk2, python-twisted-web, python-dbus, python-gconf 
    1111Description: Fuss Workstion Desktop control 
    1212 This packages contains everything to control a Desktop Workstation 
  • packages/fuss-desktop-control/fuss-desktop-control

    r89c3a3d rcbf04e1  
    1212#  
    1313 
    14  
    1514__netport = 13401 
    1615 
     
    2019import os 
    2120import os.path 
     21import gconf 
     22import ConfigParser 
     23 
     24gconf_keys = { 
     25    "GTK_THEME": "/desktop/gnome/interface/gtk_theme", 
     26    "METACITY_THEME": "/apps/metacity/general/theme", 
     27    "ICON_THEME": "/desktop/gnome/interface/icon_theme", 
     28    "NOTIFICATION_THEME": "/apps/notification-daemon/theme", 
     29    "COLOR_SCHEME": "/desktop/gnome/interface/gtk_color_scheme", 
     30    "LOCKDOWN": "/desktop/gnome/lockdown/disable_theme_settings", 
     31    "BACKGROUND": "/desktop/gnome/background/picture_filename", 
     32    "APPLICATION_FONT": "/desktop/gnome/interface/font_name", 
     33    "DOCUMENTS_FONT": "/desktop/gnome/interface/document_font_name", 
     34    "DESKTOP_FONT": "/apps/nautilus/preferences/desktop_font", 
     35    "WINDOWTITLE_FONT": "/apps/metacity/general/titlebar_font", 
     36    "MONOSPACE_FONT": "/desktop/gnome/interface/monospace_font_name" 
     37    } 
    2238 
    2339try: 
     
    4561    sys.exit(2) 
    4662 
     63### GCONF STUFF 
     64 
     65gconf_client = gconf.client_get_default() 
     66def set_gconf(key, value): 
     67    m = None 
     68    if isinstance(value, int): 
     69        m = "set_int" 
     70    if isinstance(value, float): 
     71        m = "set_float" 
     72    if isinstance(value, bool): 
     73        m = "set_bool" 
     74    if isinstance(value, list): 
     75        m = "set_list" 
     76    if isinstance(value, str) or isinstance(value, unicode): 
     77        m = "set_string" 
     78    if not m: 
     79        return None 
     80    method = getattr(gconf_client, m) 
     81    try: 
     82        return method(key, value) 
     83    except: 
     84        return None 
     85 
     86## set theme by domain, see #483 
     87def set_theme_by_domain(): 
     88    p = os.popen("hostname --fqdn") 
     89    fqdn = p.read().strip() 
     90    p.close() 
     91    fqdn = 'pippo.spr' 
     92    s = fqdn.split(".") 
     93    if len(s)  < 2: 
     94        return 
     95    domain = s[1] 
     96    # read config, discover mapping 
     97    # between domains and themes, 
     98    # then apply the theme. 
     99    c = ConfigParser.ConfigParser() 
     100    files = ['/etc/fuss-desktop-control.conf', 
     101             'fuss-desktop-control.conf'] 
     102    file = None 
     103    for f in files: 
     104        if os.path.isfile(f): 
     105            file = f 
     106            break 
     107    if not file: 
     108        print "Conf file not found" 
     109        return 
     110    c.read(f) 
     111    sections = [x.split()[1] for x in c.sections() if 'domain' in x] 
     112    our_domain = None 
     113    for s in sections: 
     114        if domain in s: 
     115            our_domain = 'domain %s' %s 
     116            break 
     117 
     118    if not our_domain: 
     119        return 
     120     
     121    print "Working on", our_domain 
     122    options = c.items(our_domain) 
     123    for o in options: 
     124        if o[0].upper() in gconf_keys.keys(): 
     125            k = gconf_keys[o[0].upper()] 
     126            v = o[1] 
     127            print "SETTING", k, "TO", v 
     128            set_gconf(k, v) 
     129 
     130try: 
     131    print set_theme_by_domain() 
     132except Exception, e: 
     133    print "Can't set theme by domain:", e 
     134     
    47135#### SUPPORT FOR OCTOFUSS CLIENT ##### 
    48136def record_display_size(): 
     
    117205        except: 
    118206            return False 
     207 
     208    def xmlrpc_set_gconf(self, key, value): 
     209        return set_gconf(key, value) 
    119210     
    120211    def xmlrpc_screen_release(self): 
  • packages/fuss-desktop-control/fuss-desktop-control.1

    r03c57bc rcbf04e1  
    1 .TH FUSS-DESKTOP-CONTROL 8 "11 May 2009" Version 4.0 
     1.TH FUSS-DESKTOP-CONTROL 8 "7 May 2010" Version 5.0 
    22.SH NAME 
    33fuss-desktop-control - control a workstation desktop over the network 
     
    1010\fIfuss-desktop-control\fP is used to control a workstation desktop in a Fuss Network. 
    1111 
     12.SH FILES 
     13.PP 
     14\fI/etc/fuss-desktop-contro.conf\fP is used to configure the control of 
     15the workstation. 
     16 
    1217.SH SEE ALSO 
    1318octofuss(8) 
    1419 
    1520.SH COPYRIGHT 
    16 Copyright \(co  2006-2009 The Fuss Project 
     21Copyright \(co  2006-2010 The Fuss Project 
    1722 
    1823.SH AUTHORS