From 2cb72d2c1de40001f796b6ba668a8a94207cc7bc Mon Sep 17 00:00:00 2001 From: guibuilder_pel7x64builder0 Date: Wed, 28 Nov 2018 17:31:11 +0100 Subject: [PATCH] cinnamon downgrade to 3.8 tree Signed-off-by: guibuilder_pel7x64builder0 --- SOURCES/10_cinnamon-common.gschema.override | 9 +- SOURCES/cinnamon-3.8.8_port_libnm.patch | 912 ++++++++++++++++++++ SPECS/cinnamon.spec | 30 +- 3 files changed, 928 insertions(+), 23 deletions(-) create mode 100644 SOURCES/cinnamon-3.8.8_port_libnm.patch diff --git a/SOURCES/10_cinnamon-common.gschema.override b/SOURCES/10_cinnamon-common.gschema.override index aefa342..283b2fd 100644 --- a/SOURCES/10_cinnamon-common.gschema.override +++ b/SOURCES/10_cinnamon-common.gschema.override @@ -5,7 +5,6 @@ startup-animation=true workspace-expo-view-as-grid=true enable-indicators=false enabled-applets=['panel1:right:0:systray@cinnamon.org', 'panel1:left:0:menu@cinnamon.org', 'panel1:left:1:show-desktop@cinnamon.org', 'panel1:left:2:panel-launchers@cinnamon.org', 'panel1:left:3:window-list@cinnamon.org', 'panel1:right:1:keyboard@cinnamon.org', 'panel1:right:2:notifications@cinnamon.org', 'panel1:right:3:removable-drives@cinnamon.org', 'panel1:right:4:user@cinnamon.org', 'panel1:right:5:network@cinnamon.org', 'panel1:right:6:blueberry@cinnamon.org', 'panel1:right:7:power@cinnamon.org', 'panel1:right:8:calendar@cinnamon.org', 'panel1:right:9:sound@cinnamon.org'] -app-menu-label='Menu' [org.cinnamon.sounds] login-enabled=true @@ -55,13 +54,13 @@ secondary-color='#5789ca' menus-have-icons=true font-name='Noto Sans 9' gtk-overlay-scrollbars=false -gtk-theme='Mint-Y-Dark-Aqua' -icon-theme='Mint-Y-Aqua' +gtk-theme='Mint-Y-Dark' +icon-theme='Mint-Y' [org.cinnamon.desktop.wm.preferences] button-layout=':minimize,maximize,close' titlebar-font='Noto Sans Bold 10' -theme='Mint-Y-Dark-Aqua' +theme='Mint-Y-Dark' [org.cinnamon.SessionManager] quit-delay-toggle=true @@ -75,4 +74,4 @@ menus-have-icons=true lock-on-suspend=true [org.cinnamon.theme] -name='Mint-Y-Dark-Aqua' +name='Mint-Y-Dark' diff --git a/SOURCES/cinnamon-3.8.8_port_libnm.patch b/SOURCES/cinnamon-3.8.8_port_libnm.patch new file mode 100644 index 0000000..d5098a9 --- /dev/null +++ b/SOURCES/cinnamon-3.8.8_port_libnm.patch @@ -0,0 +1,912 @@ +From f411d70b9fdd33bfc88d4fa458af2670e6350ae7 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Fri, 6 Jul 2018 09:38:56 +0100 +Subject: [PATCH 1/4] Network applet: Port to libnm + +--- + configure.ac | 2 +- + .../applets/network@cinnamon.org/applet.js | 293 ++++++++++----------- + js/misc/modemManager.js | 4 +- + src/Makefile.am | 2 +- + 4 files changed, 139 insertions(+), 162 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c8f251911..ade112733 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -77,7 +77,7 @@ PKG_CHECK_MODULES(CINNAMON, gio-2.0 >= $GIO_MIN_VERSION + libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION + gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION + polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes +- libnm-glib libnm-util atk-bridge-2.0) ++ libnm atk-bridge-2.0) + + PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0) + +diff --git a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +index ddea51a36..c6c63646d 100644 +--- a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js ++++ b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +@@ -2,8 +2,7 @@ const Applet = imports.ui.applet; + const GLib = imports.gi.GLib; + const GObject = imports.gi.GObject; + const Lang = imports.lang; +-const NetworkManager = imports.gi.NetworkManager; +-const NMClient = imports.gi.NMClient; ++const NM = imports.gi.NM; + const Signals = imports.signals; + const St = imports.gi.St; + const Mainloop = imports.mainloop; +@@ -35,26 +34,14 @@ const NMAccessPointSecurity = { + }; + + // small optimization, to avoid using [] all the time +-const NM80211Mode = NetworkManager['80211Mode']; +-const NM80211ApFlags = NetworkManager['80211ApFlags']; +-const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags']; ++const NM80211Mode = NM['80211Mode']; ++const NM80211ApFlags = NM['80211ApFlags']; ++const NM80211ApSecurityFlags = NM['80211ApSecurityFlags']; + + // number of wireless networks that should be visible + // (the remaining are placed into More...) + const NUM_VISIBLE_NETWORKS = 5; + +-function ssidCompare(one, two) { +- if (!one || !two) +- return false; +- if (one.length != two.length) +- return false; +- for (let i = 0; i < one.length; i++) { +- if (one[i] != two[i]) +- return false; +- } +- return true; +-} +- + // shared between NMNetworkMenuItem and NMDeviceWWAN + function signalToIcon(value) { + if (value > 80) +@@ -76,7 +63,7 @@ function sortAccessPoints(accessPoints) { + } + + function ssidToLabel(ssid) { +- let label = NetworkManager.utils_ssid_to_utf8(ssid); ++ let label = NM.utils_ssid_to_utf8(ssid.get_data()); + if (!label) + label = _(""); + return label; +@@ -200,8 +187,10 @@ NMWiredSectionTitleMenuItem.prototype = { + this.setToggleState(device.connected); + // if this device is not controllable, hide the switch + this._switch.actor.visible = device.controllable; +- } else ++ } else { + this.setStatus(''); ++ this._switch.actor.visible = false; ++ } + }, + + activate: function(event) { +@@ -386,7 +375,7 @@ NMDevice.prototype = { + }, + + deactivate: function() { +- this.device.disconnect(function() {}); ++ this.device.disconnect_async(null, null); + }, + + activate: function() { +@@ -397,16 +386,16 @@ NMDevice.prototype = { + // pick the most recently used connection and connect to that + // or if no connections ever set, create an automatic one + if (this._connections.length > 0) { +- this._client.activate_connection(this._connections[0].connection, this.device, null, null); ++ this._client.activate_connection_async(this._connections[0].connection, this.device, null, null, null); + } else if (this._autoConnectionName) { + let connection = this._createAutomaticConnection(); + if (connection) +- this._client.add_and_activate_connection(connection, this.device, null, null); ++ this._client.add_and_activate_connection_async(connection, this.device, null, null, null); + } + }, + + get connected() { +- return this.device.state == NetworkManager.DeviceState.ACTIVATED; ++ return this.device.state == NM.DeviceState.ACTIVATED; + }, + + setActiveConnection: function(activeConnection) { +@@ -493,25 +482,25 @@ NMDevice.prototype = { + + get statusLabel(){ + switch(this.device.state) { +- case NetworkManager.DeviceState.DISCONNECTED: +- case NetworkManager.DeviceState.ACTIVATED: ++ case NM.DeviceState.DISCONNECTED: ++ case NM.DeviceState.ACTIVATED: + return null; +- case NetworkManager.DeviceState.UNMANAGED: ++ case NM.DeviceState.UNMANAGED: + /* Translators: this is for network devices that are physically present but are not + under NetworkManager's control (and thus cannot be used in the menu) */ + return _("unmanaged"); +- case NetworkManager.DeviceState.DEACTIVATING: ++ case NM.DeviceState.DEACTIVATING: + return _("disconnecting..."); +- case NetworkManager.DeviceState.PREPARE: +- case NetworkManager.DeviceState.CONFIG: +- case NetworkManager.DeviceState.IP_CONFIG: +- case NetworkManager.DeviceState.IP_CHECK: +- case NetworkManager.DeviceState.SECONDARIES: ++ case NM.DeviceState.PREPARE: ++ case NM.DeviceState.CONFIG: ++ case NM.DeviceState.IP_CONFIG: ++ case NM.DeviceState.IP_CHECK: ++ case NM.DeviceState.SECONDARIES: + return _("connecting..."); +- case NetworkManager.DeviceState.NEED_AUTH: ++ case NM.DeviceState.NEED_AUTH: + /* Translators: this is for network connections that require some kind of key or password */ + return _("authentication required"); +- case NetworkManager.DeviceState.UNAVAILABLE: ++ case NM.DeviceState.UNAVAILABLE: + // This state is actually a compound of various states (generically unavailable, + // firmware missing, carrier not available), that are exposed by different properties + // (whose state may or may not updated when we receive state-changed). +@@ -522,7 +511,7 @@ NMDevice.prototype = { + module, which is missing */ + return _("firmware missing"); + } +- if (this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) { ++ if (this.device.capabilities & NM.DeviceCapabilities.CARRIER_DETECT) { + if (!this._carrierChangedId) + this._carrierChangedId = this.device.connect('notify::carrier', Lang.bind(this, this._substateChanged)); + if (!this.carrier) { +@@ -533,7 +522,7 @@ NMDevice.prototype = { + /* Translators: this is for a network device that cannot be activated (for example it + is disabled by rfkill, or it has no coverage */ + return _("unavailable"); +- case NetworkManager.DeviceState.FAILED: ++ case NM.DeviceState.FAILED: + return _("connection failed"); + default: + log('Device state invalid, is %d'.format(this.device.state)); +@@ -543,7 +532,7 @@ NMDevice.prototype = { + + get controllable(){ + // controllable for every state except unavailable or unmanaged +- if(this.device.state === NetworkManager.DeviceState.UNAVAILABLE || this.device.state === NetworkManager.DeviceState.UNMANAGED) ++ if(this.device.state === NM.DeviceState.UNAVAILABLE || this.device.state === NM.DeviceState.UNMANAGED) + return false; + + return true; +@@ -575,7 +564,7 @@ NMDevice.prototype = { + }, + + _shouldShowConnectionList: function() { +- return (this.device.state >= NetworkManager.DeviceState.DISCONNECTED); ++ return (this.device.state >= NM.DeviceState.DISCONNECTED); + }, + + _createSection: function() { +@@ -592,7 +581,7 @@ NMDevice.prototype = { + for(let j = 0; j < this._connections.length; ++j) { + let obj = this._connections[j]; + if (this._activeConnection && +- obj.connection == this._activeConnection._connection) ++ obj.connection == this._activeConnection.connection) + continue; + obj.item = this._createConnectionItem(obj); + +@@ -610,7 +599,7 @@ NMDevice.prototype = { + this._autoConnectionItem.connect('activate', Lang.bind(this, function() { + let connection = this._createAutomaticConnection(); + if (connection) +- this._client.add_and_activate_connection(connection, this.device, null, null); ++ this._client.add_and_activate_connection_async(connection, this.device, null, null, null); + })); + this.section.addMenuItem(this._autoConnectionItem); + } +@@ -621,14 +610,14 @@ NMDevice.prototype = { + let item = new PopupMenu.PopupMenuItem(obj.name); + + item.connect('activate', Lang.bind(this, function() { +- this._client.activate_connection(connection, this.device, null, null); ++ this._client.activate_connection_async(connection, this.device, null, null, null); + })); + return item; + }, + + _createActiveConnectionItem: function() { + let title; +- let active = this._activeConnection._connection; ++ let active = this._activeConnection.connection; + if (active) { + title = active._name; + } else { +@@ -646,11 +635,11 @@ NMDevice.prototype = { + return; + } + +- if (oldstate == NetworkManager.DeviceState.ACTIVATED) { ++ if (oldstate == NM.DeviceState.ACTIVATED) { + this.emit('network-lost'); + } + +- if (newstate == NetworkManager.DeviceState.FAILED) { ++ if (newstate == NM.DeviceState.FAILED) { + this.emit('activation-failed', reason); + } + +@@ -694,10 +683,10 @@ NMDevice.prototype = { + } + else { + switch (this.device.get_device_type()) { +- case NetworkManager.DeviceType.ETHERNET: return _("Ethernet"); +- case NetworkManager.DeviceType.WIFI: return _("Wifi"); +- case NetworkManager.DeviceType.MODEM: return _("Modem"); +- case NetworkManager.DeviceType.BT: return _("Bluetooth"); ++ case NM.DeviceType.ETHERNET: return _("Ethernet"); ++ case NM.DeviceType.WIFI: return _("Wifi"); ++ case NM.DeviceType.MODEM: return _("Modem"); ++ case NM.DeviceType.BT: return _("Bluetooth"); + default: return ""; + } + } +@@ -748,13 +737,13 @@ NMDeviceWired.prototype = { + }, + + _createAutomaticConnection: function() { +- let connection = new NetworkManager.Connection(); +- connection._uuid = NetworkManager.utils_uuid_generate(); +- connection.add_setting(new NetworkManager.SettingWired()); +- connection.add_setting(new NetworkManager.SettingConnection({ ++ let connection = new NM.SimpleConnection(); ++ connection._uuid = NM.utils_uuid_generate(); ++ connection.add_setting(new NM.SettingWired()); ++ connection.add_setting(new NM.SettingConnection({ + uuid: connection._uuid, + id: this._autoConnectionName, +- type: NetworkManager.SETTING_WIRED_SETTING_NAME, ++ type: NM.SETTING_WIRED_SETTING_NAME, + autoconnect: true + })); + return connection; +@@ -781,26 +770,26 @@ NMDeviceModem.prototype = { + try { + is_wwan = true; + this.mobileDevice = new ModemManager.BroadbandModem(device.udi, device.current_capabilities); +- if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) { +- this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME; +- } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) { +- this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME; +- } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) { +- this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME; ++ if (this._capabilities & NM.DeviceModemCapabilities.GSM_UMTS) { ++ this._connectionType = NM.SETTING_GSM_SETTING_NAME; ++ } else if (this._capabilities & NM.DeviceModemCapabilities.LTE) { ++ this._connectionType = NM.SETTING_GSM_SETTING_NAME; ++ } else if (this._capabilities & NM.DeviceModemCapabilities.CDMA_EVDO) { ++ this._connectionType = NM.SETTING_CDMA_SETTING_NAME; + } + } + catch (e){ + global.logError(e); + } +- } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) { ++ } else if (this._capabilities & NM.DeviceModemCapabilities.GSM_UMTS) { + is_wwan = true; + this.mobileDevice = new ModemManager.ModemGsm(device.udi); +- this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME; +- } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) { ++ this._connectionType = NM.SETTING_GSM_SETTING_NAME; ++ } else if (this._capabilities & NM.DeviceModemCapabilities.CDMA_EVDO) { + is_wwan = true; + this.mobileDevice = new ModemManager.ModemCdma(device.udi); +- this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME; +- } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) { ++ this._connectionType = NM.SETTING_CDMA_SETTING_NAME; ++ } else if (this._capabilities & NM.DeviceModemCapabilities.LTE) { + is_wwan = true; + // FIXME: support signal quality + } +@@ -848,7 +837,7 @@ NMDeviceModem.prototype = { + }, + + get connected() { +- return this._enabled && this.device.state == NetworkManager.DeviceState.ACTIVATED; ++ return this._enabled && this.device.state == NM.DeviceState.ACTIVATED; + }, + + destroy: function() { +@@ -917,13 +906,13 @@ NMDeviceBluetooth.prototype = { + }, + + _createAutomaticConnection: function() { +- let connection = new NetworkManager.Connection(); +- connection._uuid = NetworkManager.utils_uuid_generate(); +- connection.add_setting(new NetworkManager.SettingBluetooth()); +- connection.add_setting(new NetworkManager.SettingConnection({ ++ let connection = new NM.SimpleConnection(); ++ connection._uuid = NM.utils_uuid_generate(); ++ connection.add_setting(new NM.SettingBluetooth()); ++ connection.add_setting(new NM.SettingConnection({ + uuid: connection._uuid, + id: this._autoConnectionName, +- type: NetworkManager.SETTING_BLUETOOTH_SETTING_NAME, ++ type: NM.SETTING_BLUETOOTH_SETTING_NAME, + autoconnect: false + })); + return connection; +@@ -963,7 +952,7 @@ NMDeviceVPN.prototype = { + }, + + connectionValid: function(connection) { +- return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME; ++ return connection._type == NM.SETTING_VPN_SETTING_NAME; + }, + + get empty() { +@@ -986,7 +975,7 @@ NMDeviceVPN.prototype = { + + deactivate: function() { + if (this._activeConnection) +- this._client.deactivate_connection(this._activeConnection); ++ this._client.deactivate_connection(this._activeConnection, null); + }, + + statusLabel: null, +@@ -1128,7 +1117,7 @@ NMDeviceWireless.prototype = { + for (let i = 0; i < bestApObj.accessPoints.length; i++) { + let ap = bestApObj.accessPoints[i]; + if (ap.connection_valid(best)) { +- this._client.activate_connection(best, this.device, ap.dbus_path, null); ++ this._client.activate_connection_async(best, this.device, ap.path, null, null); + break; + } + } +@@ -1142,7 +1131,7 @@ NMDeviceWireless.prototype = { + if (this._networks.length > 0) { + let connection = this._createAutomaticConnection(this._networks[0]); + let accessPoints = sortAccessPoints(this._networks[0].accessPoints); +- this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null); ++ this._client.add_and_activate_connection_async(connection, this.device, accessPoints[0].path, null, null); + } + }, + +@@ -1229,7 +1218,7 @@ NMDeviceWireless.prototype = { + }, + + _networkCompare: function(network, accessPoint) { +- if (!ssidCompare(network.ssid, accessPoint.get_ssid())) ++ if (!network.ssid.equal (accessPoint.get_ssid())) + return false; + if (network.mode != accessPoint.mode) + return false; +@@ -1396,7 +1385,7 @@ NMDeviceWireless.prototype = { + let accessPoints = sortAccessPoints(accessPointObj.accessPoints); + for (let i = 0; i < accessPoints.length; i++) { + if (accessPoints[i].connection_valid(connection)) { +- this._client.activate_connection(connection, this.device, accessPoints[i].dbus_path, null); ++ this._client.activate_connection_async(connection, this.device, accessPoints[i].path, null, null); + break; + } + } +@@ -1503,8 +1492,7 @@ NMDeviceWireless.prototype = { + }, + + _createActiveConnectionItem: function() { +- if (this._activeConnection._connection) { +- let connection = this._activeConnection._connection; ++ if (this._activeConnection.connection) { + if (!this._activeNetwork) { + if (this.device.active_access_point) { + let networkPos = this._findNetwork(this.device.active_access_point); +@@ -1520,7 +1508,7 @@ NMDeviceWireless.prototype = { + if (this._activeNetwork) + this._activeConnectionItem = new NMNetworkMenuItem(this._activeNetwork.accessPoints, undefined, { reactive: false }); + else +- this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(connection._name, 'network-wireless-connected', { reactive: false }); ++ this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(this._activeConnection.connection._name, 'network-wireless-connected', { reactive: false }); + } else { + // We cannot read the connection (due to ACL, or API incompatibility), but we still show signal if we have it + if (this._activeNetwork) +@@ -1536,25 +1524,26 @@ NMDeviceWireless.prototype = { + + _createAutomaticConnection: function(apObj) { + let name; +- let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid); ++ let ssid = NM.utils_ssid_to_utf8(apObj.ssid.get_data()); + if (ssid) { + /* TRANSLATORS: this the automatic wireless connection name (including the network name) */ + name = _("Auto %s").format(ssid); + } else + name = _("Auto wireless"); + +- let connection = new NetworkManager.Connection(); +- connection.add_setting(new NetworkManager.SettingWireless()); +- connection.add_setting(new NetworkManager.SettingConnection({ ++ let connection = new NM.SimpleConnection(); ++ connection.add_setting(new NM.SettingWireless()); ++ connection.add_setting(new NM.SettingConnection({ + id: name, + autoconnect: true, // NetworkManager will know to ignore this if appropriate +- uuid: NetworkManager.utils_uuid_generate(), +- type: NetworkManager.SETTING_WIRELESS_SETTING_NAME ++ uuid: NM.utils_uuid_generate(), ++ type: NM.SETTING_WIRELESS_SETTING_NAME + })); + return connection; + }, + + _createNetworkItem: function(apObj, position) { ++ + if(!apObj.accessPoints || apObj.accessPoints.length == 0) { + // this should not happen, but I have no idea why it happens + return; +@@ -1578,10 +1567,10 @@ NMDeviceWireless.prototype = { + // 802.1x-enabled APs require further configuration, so they're + // handled in cinnamon-settings + Util.spawn(['cinnamon-settings', 'network', 'connect-8021x-wifi', +- this.device.get_path(), accessPoints[0].dbus_path]); ++ this.device.get_path(), accessPoints[0].path]); + } else { + let connection = this._createAutomaticConnection(apObj); +- this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null); ++ this._client.add_and_activate_connection_async(connection, this.device, accessPoints[0].path, null, null); + } + })); + } +@@ -1684,7 +1673,16 @@ CinnamonNetworkApplet.prototype = { + this._currentIconName = undefined; + this._setIcon('network-offline'); + +- this._client = NMClient.Client.new(); ++ NM.Client.new_async(null, Lang.bind(this, this._clientGot)); ++ } ++ catch (e) { ++ global.logError(e); ++ } ++ }, ++ ++ _clientGot: function(obj, result) { ++ try { ++ this._client = NM.Client.new_finish(result); + + this._statusSection = new PopupMenu.PopupMenuSection(); + this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false }); +@@ -1750,7 +1748,7 @@ CinnamonNetworkApplet.prototype = { + let devices = this._devices.wireless.devices; + + for (let i = 0; i < devices.length; i++) { +- devices[i].device.request_scan_simple(null); ++ devices[i].device.request_scan(null); + } + })); + +@@ -1773,42 +1771,36 @@ CinnamonNetworkApplet.prototype = { + + // Device types + this._dtypes = { }; +- this._dtypes[NetworkManager.DeviceType.ETHERNET] = NMDeviceWired; +- this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless; +- this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem; +- this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth; +- // TODO: WiMax support ++ this._dtypes[NM.DeviceType.ETHERNET] = NMDeviceWired; ++ this._dtypes[NM.DeviceType.WIFI] = NMDeviceWireless; ++ this._dtypes[NM.DeviceType.MODEM] = NMDeviceModem; ++ this._dtypes[NM.DeviceType.BT] = NMDeviceBluetooth; + + // Connection types + this._ctypes = { }; +- this._ctypes[NetworkManager.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS; +- this._ctypes[NetworkManager.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED; +- this._ctypes[NetworkManager.SETTING_PPPOE_SETTING_NAME] = NMConnectionCategory.WIRED; +- this._ctypes[NetworkManager.SETTING_PPP_SETTING_NAME] = NMConnectionCategory.WIRED; +- this._ctypes[NetworkManager.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN; +- this._ctypes[NetworkManager.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN; +- this._ctypes[NetworkManager.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN; +- this._ctypes[NetworkManager.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN; +- +- this._settings = NMClient.RemoteSettings.new(null); +- this._connectionsReadId = this._settings.connect('connections-read', Lang.bind(this, function() { +- this._readConnections(); +- this._readDevices(); +- this._syncNMState(); +- +- // Connect to signals late so that early signals don't find in inconsistent state +- // and connect only once (this signal handler can be called again if NetworkManager goes up and down) +- if (!this._inited) { +- this._inited = true; +- this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState)); +- this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState)); +- this._client.connect('notify::state', Lang.bind(this, this._syncNMState)); +- this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon)); +- this._client.connect('device-added', Lang.bind(this, this._deviceAdded)); +- this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved)); +- this._settings.connect('new-connection', Lang.bind(this, this._newConnection)); +- } +- })); ++ this._ctypes[NM.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS; ++ this._ctypes[NM.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED; ++ this._ctypes[NM.SETTING_PPPOE_SETTING_NAME] = NMConnectionCategory.WIRED; ++ this._ctypes[NM.SETTING_PPP_SETTING_NAME] = NMConnectionCategory.WIRED; ++ this._ctypes[NM.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN; ++ this._ctypes[NM.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN; ++ this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN; ++ this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN; ++ ++ this._readConnections(); ++ this._readDevices(); ++ this._syncNMState(); ++ ++ this._client.connect('notify::nm-running', Lang.bind(this, this._syncNMState)); ++ this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState)); ++ this._client.connect('notify::state', Lang.bind(this, this._syncNMState)); ++ this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon)); ++ this._client.connect('device-added', Lang.bind(this, this._deviceAdded)); ++ this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved)); ++ this._client.connect('connection-added', Lang.bind(this, this._connectionAdded)); ++ this._client.connect('connection-removed', Lang.bind(this, this._connectionRemoved)); ++ ++ this._inited = true; + + this._periodicUpdateIcon(); + +@@ -1951,7 +1943,7 @@ CinnamonNetworkApplet.prototype = { + + this._syncSectionTitle(wrapper.category); + } else +- log('Invalid network device type, is ' + device.get_device_type()); ++ log('Unknown network device type, is ' + device.get_device_type()); + }, + + _deviceRemoved: function(client, device) { +@@ -2009,24 +2001,12 @@ CinnamonNetworkApplet.prototype = { + a._inited = true; + } + +- if (!a._connection) { +- a._connection = this._settings.get_connection_by_path(a.connection); +- +- if (a._connection) { +- a._type = a._connection._type; +- a._section = this._ctypes[a._type]; +- if (a._errorLogged) { +- log('network applet: Found connection for active'); +- a._errorLogged = false; +- } +- } else { +- a._connection = null; +- a._type = null; +- a._section = null; +- if (!a._errorLogged) { +- a._errorLogged = true; +- log('network applet: Cannot find connection for active (or connection cannot be read)'); +- } ++ if (!a._type) { ++ a._type = a.connection._type; ++ a._section = this._ctypes[a._type]; ++ if (a._errorLogged) { ++ log('network applet: Found connection for active'); ++ a._errorLogged = false; + } + } + +@@ -2036,7 +2016,7 @@ CinnamonNetworkApplet.prototype = { + continue; + } + +- if (a.state == NetworkManager.ActiveConnectionState.ACTIVATED) { ++ if (a.state == NM.ActiveConnectionState.ACTIVATED) { + if (!default_ip4) { + // We didn't find the default IPV4 device yet.. + if (!default_ip6) { +@@ -2051,7 +2031,7 @@ CinnamonNetworkApplet.prototype = { + } + } + } +- if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING) { ++ if (a.state == NM.ActiveConnectionState.ACTIVATING) { + activating = a; + } + +@@ -2063,7 +2043,7 @@ CinnamonNetworkApplet.prototype = { + } + + if (!a._primaryDevice) { +- if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) { ++ if (a._type != NM.SETTING_VPN_SETTING_NAME) { + // find a good device to be considered primary + a._primaryDevice = null; + let devices = a.get_devices() || [ ]; +@@ -2080,7 +2060,7 @@ CinnamonNetworkApplet.prototype = { + if (a._primaryDevice) + a._primaryDevice.setActiveConnection(a); + +- if (a.state == NetworkManager.ActiveConnectionState.ACTIVATED && ++ if (a.state == NM.ActiveConnectionState.ACTIVATED && + a._primaryDevice && a._primaryDevice._notification) { + a._primaryDevice._notification.destroy(); + a._primaryDevice._notification = null; +@@ -2092,7 +2072,7 @@ CinnamonNetworkApplet.prototype = { + }, + + _notifyActivated: function(activeConnection) { +- if (activeConnection.state == NetworkManager.ActiveConnectionState.ACTIVATED && ++ if (activeConnection.state == NM.ActiveConnectionState.ACTIVATED && + activeConnection._primaryDevice && activeConnection._primaryDevice._notification) { + activeConnection._primaryDevice._notification.destroy(); + activeConnection._primaryDevice._notification = null; +@@ -2102,29 +2082,27 @@ CinnamonNetworkApplet.prototype = { + }, + + _readConnections: function() { +- let connections = this._settings.list_connections(); ++ let connections = this._client.get_connections(); + for (let i = 0; i < connections.length; i++) { + let connection = connections[i]; + if (connection._uuid) { + // connection was already seen (for example because NetworkManager was restarted) + continue; + } +- connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved)); +- connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection)); ++ connection._updatedId = connection.connect('changed', Lang.bind(this, this._updateConnection)); + + this._updateConnection(connection); + this._connections.push(connection); + } + }, + +- _newConnection: function(settings, connection) { ++ _connectionAdded: function(client, connection) { + if (connection._uuid) { + // connection was already seen + return; + } + +- connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved)); +- connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection)); ++ connection._updatedId = connection.connect('changed', Lang.bind(this, this._updateConnection)); + + this._updateConnection(connection); + this._connections.push(connection); +@@ -2132,7 +2110,7 @@ CinnamonNetworkApplet.prototype = { + this._updateIcon(); + }, + +- _connectionRemoved: function(connection) { ++ _connectionRemoved: function(client, connection) { + let pos = this._connections.indexOf(connection); + if (pos != -1) + this._connections.splice(pos); +@@ -2150,12 +2128,11 @@ CinnamonNetworkApplet.prototype = { + } + + connection._uuid = null; +- connection.disconnect(connection._removedId); + connection.disconnect(connection._updatedId); + }, + + _updateConnection: function(connection) { +- let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME); ++ let connectionSettings = connection.get_setting_by_name(NM.SETTING_CONNECTION_SETTING_NAME); + connection._type = connectionSettings.type; + + connection._section = this._ctypes[connection._type] || NMConnectionCategory.INVALID; +@@ -2201,7 +2178,7 @@ CinnamonNetworkApplet.prototype = { + }, + + _syncNMState: function() { +- if (!this._client.manager_running) { ++ if (!this._client.nm_running) { + log('NetworkManager is not running, hiding...'); + this.menu.close(); + this.actor.hide(); +@@ -2231,7 +2208,7 @@ CinnamonNetworkApplet.prototype = { + if (!mc) { + this._setIcon('network-offline'); + this.set_applet_tooltip(_("No connection")); +- } else if (mc.state == NetworkManager.ActiveConnectionState.ACTIVATING) { ++ } else if (mc.state == NM.ActiveConnectionState.ACTIVATING) { + new_delay = FAST_PERIODIC_UPDATE_FREQUENCY_SECONDS; + switch (mc._section) { + case NMConnectionCategory.WWAN: +@@ -2273,7 +2250,7 @@ CinnamonNetworkApplet.prototype = { + this.set_applet_tooltip(_("Connected to the wireless network")); + } else { + this._setIcon('network-wireless-signal-' + signalToIcon(ap.strength)); +- this.set_applet_tooltip(_("Wireless connection") + ": " + ap.get_ssid() + " ("+ ap.strength +"%)"); ++ this.set_applet_tooltip(_("Wireless connection") + ": " + ssidToLabel(ap.get_ssid()) + " ("+ ap.strength +"%)"); + } + } else { + log('Active connection with no primary device?'); +diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js +index 6f95ead2a..b7d455ff3 100644 +--- a/js/misc/modemManager.js ++++ b/js/misc/modemManager.js +@@ -2,7 +2,7 @@ + + const Gio = imports.gi.Gio; + const Lang = imports.lang; +-const NMGtk = imports.gi.NMGtk; ++const NMA = imports.gi.NMA; + const Signals = imports.signals; + + // _getMobileProvidersDatabase: +@@ -14,7 +14,7 @@ let _mpd; + function _getMobileProvidersDatabase() { + if (_mpd == null) { + try { +- _mpd = new NMGtk.MobileProvidersDatabase(); ++ _mpd = new NMA.MobileProvidersDatabase(); + _mpd.init(null); + } catch (e) { + log(e.message); +diff --git a/src/Makefile.am b/src/Makefile.am +index 9fdfe0a06..ad314d8ba 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -222,7 +222,7 @@ libcinnamon_la_LIBADD = \ + libcinnamon_la_CPPFLAGS = $(cinnamon_cflags) + + Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir +-Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 CMenu-3.0 NetworkManager-1.0 NMClient-1.0 ++Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 CMenu-3.0 NM-1.0 + Cinnamon_0_1_gir_CFLAGS = $(libcinnamon_la_CPPFLAGS) -I $(srcdir) + Cinnamon_0_1_gir_LIBS = libcinnamon.la + Cinnamon_0_1_gir_FILES = $(libcinnamon_la_gir_sources) + +From 7555c8d67802abc143ed27ddee190ef567837415 Mon Sep 17 00:00:00 2001 +From: ?UTF-8?q?Bj=C3=B6rn=20Esser?= +Date: Fri, 6 Jul 2018 09:41:10 +0100 +Subject: [PATCH 2/4] network: Support user connections + +--- + .../applets/network@cinnamon.org/applet.js | 32 +++++++++++++++++++--- + 1 file changed, 28 insertions(+), 4 deletions(-) + +diff --git a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +index c6c63646d..ca441cd58 100644 +--- a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js ++++ b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +@@ -73,6 +73,11 @@ function NMNetworkMenuItem() { + this._init.apply(this, arguments); + } + ++function default_to_private_connections(client) { ++ let perms = client.get_permission_result (NM.Client.ClientPermission.SETTINGS_MODIFY_SYSTEM); ++ return (perms != NM.Client.ClientPermissionResult.YES); ++} ++ + NMNetworkMenuItem.prototype = { + __proto__: PopupMenu.PopupBaseMenuItem.prototype, + +@@ -740,12 +745,14 @@ NMDeviceWired.prototype = { + let connection = new NM.SimpleConnection(); + connection._uuid = NM.utils_uuid_generate(); + connection.add_setting(new NM.SettingWired()); +- connection.add_setting(new NM.SettingConnection({ ++ let setting_conn = new NM.SettingConnection({ + uuid: connection._uuid, + id: this._autoConnectionName, + type: NM.SETTING_WIRED_SETTING_NAME, + autoconnect: true +- })); ++ }); ++ setting_conn.add_permission('user', GLib.get_user_name(), null); ++ connection.add_setting(setting_conn); + return connection; + } + }; +@@ -995,6 +1002,8 @@ NMDeviceWireless.prototype = { + this._overflowItem = null; + this._networks = [ ]; + ++ this._client = client; ++ + // breaking the layers with this, but cannot call + // this.connectionValid until I have a device + this.device = device; +@@ -1533,12 +1542,27 @@ NMDeviceWireless.prototype = { + + let connection = new NM.SimpleConnection(); + connection.add_setting(new NM.SettingWireless()); +- connection.add_setting(new NM.SettingConnection({ ++ let setting_conn = new NM.SettingConnection({ + id: name, + autoconnect: true, // NetworkManager will know to ignore this if appropriate + uuid: NM.utils_uuid_generate(), + type: NM.SETTING_WIRELESS_SETTING_NAME +- })); ++ }); ++ if (default_to_private_connections(this._client)) { ++ setting_conn.add_permission('user', GLib.get_user_name(), null); ++ if (apObj.security == NMAccessPointSecurity.WPA2_PSK || ++ apObj.security == NMAccessPointSecurity.WPA_PSK) { ++ connection.add_setting(new NM.SettingWirelessSecurity({ ++ psk_flags: NM.SettingSecretFlags.AGENT_OWNED ++ })); ++ } ++ if (apObj.security == NMAccessPointSecurity.WEP) { ++ connection.add_setting(new NM.SettingWirelessSecurity({ ++ wep_key_flags: NM.SettingSecretFlags.AGENT_OWNED ++ })); ++ } ++ } ++ connection.add_setting(setting_conn); + return connection; + }, + + +From fa508106d085e48b722049570ca29554e5468fba Mon Sep 17 00:00:00 2001 +From: Maximiliano Curia +Date: Fri, 6 Jul 2018 09:53:10 +0100 +Subject: [PATCH 3/4] Adjust Debian Control + +--- + debian/control | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/debian/control b/debian/control +index 83f743041..a7fd7413a 100644 +--- a/debian/control ++++ b/debian/control +@@ -28,7 +28,8 @@ Build-Depends: + libgudev-1.0-dev, + libjson-glib-dev (>= 0.13.2), + libmuffin-dev (>= 3.8), +- libnm-glib-dev (>= 0.8.999), ++ libnm-dev (>= 1.6) [linux-any], ++ libnma-dev [linux-any], + libpolkit-agent-1-dev (>= 0.100), + libpulse-dev, + librsvg2-dev, +@@ -63,8 +64,8 @@ Depends: + gir1.2-gtkclutter-1.0, + gir1.2-keybinder-3.0, + gir1.2-meta-muffin-0.0 (>= ${cinnamon:Version}), +- gir1.2-networkmanager-1.0, +- gir1.2-nmgtk-1.0, ++ gir1.2-nm-1.0 [linux-any] | gir1.2-networkmanager-1.0 [linux-any], ++ gir1.2-nma-1.0 [linux-any], + gir1.2-notify-0.7, + gir1.2-polkit-1.0, + gir1.2-soup-2.4, +@@ -84,7 +85,7 @@ Depends: + mesa-utils, + metacity, + nemo (>= ${cinnamon:Version}), +- network-manager-gnome, ++ network-manager-gnome [linux-any], + policykit-1-gnome, + python3, + python3-dbus, + +From c30f921431e02a2f35e6234c5500592b46f52f4e Mon Sep 17 00:00:00 2001 +From: Leigh Scott +Date: Sun, 22 Jul 2018 12:58:32 +0100 +Subject: [PATCH 4/4] Fix mistake + +--- + files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +index ca441cd58..3d6015099 100644 +--- a/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js ++++ b/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js +@@ -74,8 +74,8 @@ function NMNetworkMenuItem() { + } + + function default_to_private_connections(client) { +- let perms = client.get_permission_result (NM.Client.ClientPermission.SETTINGS_MODIFY_SYSTEM); +- return (perms != NM.Client.ClientPermissionResult.YES); ++ let perms = client.get_permission_result (NM.ClientPermission.SETTINGS_MODIFY_SYSTEM); ++ return (perms != NM.ClientPermissionResult.YES); + } + + NMNetworkMenuItem.prototype = { diff --git a/SPECS/cinnamon.spec b/SPECS/cinnamon.spec index 0be5971..1905641 100644 --- a/SPECS/cinnamon.spec +++ b/SPECS/cinnamon.spec @@ -1,9 +1,10 @@ %global __requires_exclude ^lib%{name}.so|^lib%{name}-js.so -%global cjs_version 4.0.0 -%global cinnamon_desktop_version 4.0.0 +%global clutter_version 1.12.2 +%global cjs_version 3.8.0 +%global cinnamon_desktop_version 3.8.0 %global gobject_introspection_version 1.38.0 -%global muffin_version 4.0.0 +%global muffin_version 3.8.0 %global json_glib_version 0.13.2 # For wallpaper. @@ -13,8 +14,8 @@ %global __python %{__python3} Name: cinnamon -Version: 4.0.2 -Release: 1%{?dist} +Version: 3.8.9 +Release: 2%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ and LGPLv2+ URL: https://github.com/linuxmint/%{name} @@ -29,9 +30,11 @@ Patch2: revert_25aef37.patch Patch3: default_panal_launcher.patch Patch4: remove_crap_from_menu.patch Patch5: replace-metacity-with-openbox.patch +Patch6: %{url}/pull/7699.patch#/%{name}-3.8.8_port_libnm.patch BuildRequires: gcc-c++ +BuildRequires: pkgconfig(clutter-1.0) >= %{clutter_version} BuildRequires: pkgconfig(dbus-glib-1) BuildRequires: desktop-file-utils BuildRequires: pkgconfig(cjs-1.0) >= %{cjs_version} @@ -125,7 +128,7 @@ Requires: system-logos # Theming Requires: google-noto-sans-fonts -Requires: %{name}-themes >= 1:1.7.4-0.2.20181112gitb94b890 +Requires: %{name}-themes # RequiredComponents in the session files Requires: nemo%{?_isa} @@ -242,6 +245,9 @@ picture-uri='file:///usr/share/backgrounds/default.xml' %endif EOF +# Provide symlink for the default menu icon. +%{__ln_s} %{_datadir}/pixmaps/fedora-logo-sprite.svg %{buildroot}%{_datadir}/%{name}/theme/menu.svg + # Provide symlink for the background-propeties. %{__ln_s} %{_datadir}/gnome-background-properties %{buildroot}%{_datadir}/%{name}-background-properties @@ -275,18 +281,6 @@ EOF %changelog -* Tue Nov 20 2018 Leigh Scott - 4.0.2-1 -- Update to 4.0.2 release - -* Wed Nov 14 2018 Leigh Scott - 4.0.1-2 -- Switch theme and add version to cinnamon-themes requires - -* Mon Nov 12 2018 Leigh Scott - 4.0.1-1 -- Update to 4.0.1 release - -* Sat Nov 03 2018 Leigh Scott - 4.0.0-1 -- Update to 4.0.0 release - * Sun Oct 07 2018 Leigh Scott - 3.8.9-2 - Drop EPEL/RHEL support