/usr/bin/ccsm is in compizconfig-settings-manager 1:0.9.13.1+18.04.20180302-0ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #! /usr/bin/python
# -*- coding: UTF-8 -*-
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Authors: Quinn Storm (quinn@beryl-project.org)
# Patrick Niklaus (marex@opencompositing.org)
# Copyright (C) 2007 Quinn Storm
DBUS_CCSM_SERVICE = 'org.compiz_fusion.ccsm'
DBUS_CCSM_PATH = '/org/compiz_fusion/ccsm'
DBUS_CCSM_INTERFACE = 'org.compiz_fusion.ccsm'
# from the D-Bus specification
DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER = 1
from optparse import OptionParser
import pygtk
pygtk.require('2.0')
import gtk
import sys
import os
def try_register_dbus ():
'''Return instance of dbus control object on success, None on failure'''
try:
import dbus, dbus.service
from dbus.mainloop.glib import DBusGMainLoop
except ImportError:
return
# rely on a reasonably new dbus-python
if dbus.version < (0, 80, 0):
return
class CCSMObject(dbus.service.Object):
main_window = None
@dbus.service.method(DBUS_CCSM_INTERFACE, in_signature='s', out_signature='')
def present (self, startup_id):
if startup_id:
self.main_window.set_startup_id(startup_id)
else:
self.main_window.present()
DBusGMainLoop(set_as_default=True)
try:
bus = dbus.SessionBus()
except dbus.DBusException:
return
try:
obj = bus.get_object(DBUS_CCSM_SERVICE, DBUS_CCSM_PATH)
obj = dbus.Interface(obj, DBUS_CCSM_INTERFACE)
except dbus.DBusException:
# no ccsm instance running
if (bus.request_name(DBUS_CCSM_SERVICE)
== DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER):
return CCSMObject(bus, DBUS_CCSM_PATH)
else:
return
else:
try:
display = gtk.gdk.display_get_default()
startup_id = gtk.gdk.x11_display_get_startup_notification_id(display)
obj.present(startup_id or "")
print('Another CCSM instance already running')
sys.exit(0)
except dbus.DBusException:
# error on present call so pretend it doesn't exist and start up normally
return
dbusObj = try_register_dbus()
if gtk.pygtk_version < (2,12,0):
raise SystemExit("PyGtk 2.12.0 or later required")
import compizconfig
import ccm
from ccm.Utils import GlobalUpdater
from ccm.Constants import Version, ConfFile
plugin = None
category = None
parser = OptionParser()
parser.add_option("-p", "--plugin", dest = "plugin",
help = "Directly jump to the page of PLUGIN",
metavar = "PLUGIN")
parser.add_option("-c", "--category", dest = "category",
help = "Directly jump to CATEGORY",
metavar = "CATEGORY")
parser.add_option("-v", "--version", dest = "version",
action = "store_true",
help = "Version")
(options, args) = parser.parse_args()
if options.version:
print("CCSM %s" % Version)
sys.exit(0)
if options.plugin:
plugin = options.plugin
if options.category:
category = options.category
context = compizconfig.Context(ccm.getDefaultScreen())
GlobalUpdater.SetContext (context)
mainWin = ccm.MainWin(context, plugin, category)
if dbusObj is not None:
dbusObj.main_window = mainWin
idle = ccm.IdleSettingsParser(context, mainWin)
mainWin.show_all()
# Check if we should show the first run warning dialog.
if os.path.isfile(ConfFile):
pass
else:
warning = ccm.FirstRun(mainWin)
warning.show_all()
gtk.main()
|