Repository URL to install this package:
|
Version:
15.1.0-1 ▾
|
# (c) Copyright 2014-2015. CodeWeavers, Inc.
import os
import struct
import gtk
import cxguitools
import cxutils
import distversion
def window_manager_name():
root_window = gtk.gdk.get_default_root_window()
_type, _format, data = root_window.property_get("_NET_SUPPORTING_WM_CHECK")
wm_window = gtk.gdk.window_foreign_new(data[0])
_type, _format, data = wm_window.property_get("_NET_WM_NAME")
return data
def system_info_string():
lines = []
lines.append("%s %s" % (distversion.PRODUCT_NAME, distversion.PUBLIC_VERSION))
lines.append("Install location: %s" % cxutils.CX_ROOT)
lines.append("%s-bit OS" % (struct.calcsize("P") * 8))
lines.append("Desktop session: %s" % os.environ.get("DESKTOP_SESSION", ""))
try:
lines.append("Window manager: %s" % window_manager_name())
except:
pass
# locale information
lang = os.environ.get("LANG", "")
lines.append("Locale: %s" % lang)
for var in ('LC_ADDRESS', 'LC_COLLATE', 'LC_CTYPE', 'LC_IDENTIFICATION',
'LC_MONETARY', 'LC_MESSAGES', 'LC_MEASUREMENT', 'LC_NAME',
'LC_NUMERIC', 'LC_PAPER', 'LC_TELEPHONE', 'LC_TIME', 'LC_ALL'):
if var in os.environ and os.environ[var] != lang:
lines.append("%s: %s" % (var, os.environ[var]))
# distro information
try:
f = open("/etc/os-release", "r")
try:
contents = f.read()
finally:
f.close()
lines.append("\nContents of /etc/os-release:")
lines.append(contents.rstrip('\n'))
except:
try:
f = open("/etc/lsb-release", "r")
try:
contents = f.read()
finally:
f.close()
lines.append("\nContents of /etc/lsb-release:")
lines.append(contents.rstrip('\n'))
except:
lines.append("Failed reading /etc/os-release and /etc/lsb-release")
# cxdiag
retcode, out, err = cxutils.run(os.path.join(cxutils.CX_ROOT, "bin", "cxdiag"), stdout=cxutils.GRAB, stderr=cxutils.GRAB)
lines.append("\ncxdiag output:")
lines.append(out.rstrip('\n'))
if err:
lines.append("cxdiag err:")
lines.append(err.rstrip('\n'))
if retcode:
lines.append("cxdiag returned %s" % retcode)
return '\n'.join(lines)
class SystemInfoDialog(object):
def __init__(self):
self.system_info_string = system_info_string()
self.xml = gtk.Builder()
self.xml.set_translation_domain("crossover")
self.xml.add_from_file(cxguitools.get_ui_path("systeminfo"))
self.xml.connect_signals(self)
self.xml.get_object("TextContents").get_buffer().set_text(self.system_info_string)
def quit_requested(self, *_args):
self.xml.get_object("SystemInfoDlg").destroy()
cxguitools.toplevel_quit()
def copy_clicked(self, _caller):
clipboard = gtk.Clipboard()
clipboard.set_text(self.system_info_string)
clipboard.store()