diff -Nru gnome-shell-extension-dashtodock-62/appIconIndicators.js gnome-shell-extension-dashtodock-62/appIconIndicators.js --- gnome-shell-extension-dashtodock-62/appIconIndicators.js 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/appIconIndicators.js 2018-01-14 20:31:16.000000000 +0000 @@ -169,7 +169,7 @@ // In the case of workspace isolation, we need to hide the dots of apps with // no windows in the current workspace - if (this._source.app.state != Shell.AppState.STOPPED && this._nWindows > 0) + if ((this._source.app.state != Shell.AppState.STOPPED || this._source.isLocation()) && this._nWindows > 0) this._isRunning = true; else this._isRunning = false; @@ -1114,4 +1114,4 @@ return resampledPixels; }, -}) \ No newline at end of file +}) diff -Nru gnome-shell-extension-dashtodock-62/appIcons.js gnome-shell-extension-dashtodock-62/appIcons.js --- gnome-shell-extension-dashtodock-62/appIcons.js 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/appIcons.js 2018-01-14 20:31:16.000000000 +0000 @@ -30,6 +30,7 @@ const Workspace = imports.ui.workspace; const Me = imports.misc.extensionUtils.getCurrentExtension(); +const FileManager1API = Me.imports.fileManager1API; const Utils = Me.imports.utils; const WindowPreview = Me.imports.windowPreview; const AppIconIndicators = Me.imports.appIconIndicators; @@ -86,6 +87,9 @@ this.remoteModel = remoteModel; this._indicator = null; + let appInfo = app.get_app_info(); + this._location = appInfo ? appInfo.get_string('XdtdUri') : null; + this.parent(app, iconParams); this._updateIndicatorStyle(); @@ -133,6 +137,11 @@ Lang.bind(this, this._updateIndicatorStyle) ]); }, this); + this._signalsHandler.add([ + FileManager1API.fm1Client, + 'windows-changed', + Lang.bind(this, this.onWindowsChanged) + ]); this._dtdSettings.connect('changed::scroll-action', Lang.bind(this, function() { this._optionalScrollCycleWindows(); @@ -282,7 +291,7 @@ [rect.x, rect.y] = this.actor.get_transformed_position(); [rect.width, rect.height] = this.actor.get_transformed_size(); - let windows = this.app.get_windows(); + let windows = this.getWindows(); if (this._dtdSettings.get_boolean('multi-monitor')){ let monitorIndex = this.monitorIndex; windows = windows.filter(function(w) { @@ -391,7 +400,7 @@ // We check if the app is running, and that the # of windows is > 0 in // case we use workspace isolation. let windows = this.getInterestingWindows(); - let appIsRunning = this.app.state == Shell.AppState.RUNNING + let appIsRunning = (this.app.state == Shell.AppState.RUNNING || this.isLocation()) && windows.length > 0; // Some action modes (e.g. MINIMIZE_OR_OVERVIEW) require overview to remain open @@ -562,7 +571,7 @@ // Try to manually activate the first window. Otherwise, when the app is activated by // switching to a different workspace, a launch spinning icon is shown and disappers only // after a timeout. - let windows = this.app.get_windows(); + let windows = this.getWindows(); if (windows.length > 0) Main.activateWindow(windows[0]) else @@ -717,10 +726,19 @@ return false; }, + getWindows: function() { + return getWindows(this.app, this._location); + }, + // Filter out unnecessary windows, for instance // nautilus desktop window. getInterestingWindows: function() { - return getInterestingWindows(this.app, this._dtdSettings, this.monitorIndex); + return getInterestingWindows(this.app, this._dtdSettings, this.monitorIndex, this._location); + }, + + // Does the Icon represent a location rather than an App + isLocation: function() { + return this._location != null; } }); /** @@ -805,7 +823,8 @@ })); } - let canFavorite = global.settings.is_writable('favorite-apps'); + let canFavorite = global.settings.is_writable('favorite-apps') && + !this._source.isLocation(); if (canFavorite) { this._appendSeparator(); @@ -827,7 +846,8 @@ } } - if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) { + if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop') && + !this._source.isLocation()) { this._appendSeparator(); let item = this._appendMenuItem(_("Show Details")); item.connect('activate', Lang.bind(this, function() { @@ -949,10 +969,18 @@ }); Signals.addSignalMethods(MyAppIconMenu.prototype); +function getWindows(app, location) { + if (location != null) { + return FileManager1API.fm1Client.getWindows(location); + } else { + return app.get_windows(); + } +} + // Filter out unnecessary windows, for instance // nautilus desktop window. -function getInterestingWindows(app, settings, monitorIndex) { - let windows = app.get_windows().filter(function(w) { +function getInterestingWindows(app, settings, monitorIndex, location) { + let windows = getWindows(app, location).filter(function(w) { return !w.skip_taskbar; }); diff -Nru gnome-shell-extension-dashtodock-62/dash.js gnome-shell-extension-dashtodock-62/dash.js --- gnome-shell-extension-dashtodock-62/dash.js 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/dash.js 2018-01-14 20:31:16.000000000 +0000 @@ -25,6 +25,7 @@ const Me = imports.misc.extensionUtils.getCurrentExtension(); const Utils = Me.imports.utils; const AppIcons = Me.imports.appIcons; +const Locations = Me.imports.locations; let DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME; let DASH_ITEM_LABEL_HIDE_TIME = Dash.DASH_ITEM_LABEL_HIDE_TIME; @@ -277,6 +278,12 @@ this._appSystem = Shell.AppSystem.get_default(); + // Remove Drive Icons + this._removables = new Locations.Removables(); + + // Trash Icon + this._trash = new Locations.Trash(); + this._signalsHandler.add([ this._appSystem, 'installed-changed', @@ -304,6 +311,14 @@ Main.overview, 'item-drag-cancelled', Lang.bind(this, this._onDragCancelled) + ], [ + this._trash, + 'changed', + Lang.bind(this, this._queueRedisplay) + ], [ + this._removables, + 'changed', + Lang.bind(this, this._queueRedisplay) ]); }, @@ -747,6 +762,14 @@ } } + if (this._dtdSettings.get_boolean('show-mounts')) { + Array.prototype.push.apply(newApps, this._removables.getApps()); + } + + if (this._dtdSettings.get_boolean('show-trash')) { + newApps.push(this._trash.getApp()); + } + // Figure out the actual changes to the list of items; we iterate // over both the list of items currently in the dash and the list // of items expected there, and collect additions and removals. diff -Nru gnome-shell-extension-dashtodock-62/debian/bzr-builder.manifest gnome-shell-extension-dashtodock-62/debian/bzr-builder.manifest --- gnome-shell-extension-dashtodock-62/debian/bzr-builder.manifest 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/debian/bzr-builder.manifest 2018-01-14 20:31:17.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version {debupstream}-1+954 -lp:~gnome-shell-extensions/gnome-shell-extensions/dash-to-dock-head revid:git-v1:4d8e36ec5d239453b2c3a62789e31aa16a99fb1c +# bzr-builder format 0.3 deb-version {debupstream}-1+956 +lp:~gnome-shell-extensions/gnome-shell-extensions/dash-to-dock-head revid:git-v1:00ff5e7d25642e8c4beedda050a271ca88d5e731 merge packaging lp:~gnome-shell-extensions/gnome-shell-extensions/gnome-shell-extension-dashtodock-packaging revid:git-v1:674a575ab6ed281756c3863c93a19269fcfdc940 diff -Nru gnome-shell-extension-dashtodock-62/debian/changelog gnome-shell-extension-dashtodock-62/debian/changelog --- gnome-shell-extension-dashtodock-62/debian/changelog 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/debian/changelog 2018-01-14 20:31:17.000000000 +0000 @@ -1,8 +1,8 @@ -gnome-shell-extension-dashtodock (62-1+954~ubuntu17.04.1) zesty; urgency=low +gnome-shell-extension-dashtodock (62-1+956~ubuntu17.04.1) zesty; urgency=low * Auto build. - -- Launchpad Package Builder Fri, 12 Jan 2018 15:40:09 +0000 + -- Launchpad Package Builder Sun, 14 Jan 2018 20:31:17 +0000 gnome-shell-extension-dashtodock (62-1) unstable; urgency=medium diff -Nru gnome-shell-extension-dashtodock-62/docking.js gnome-shell-extension-dashtodock-62/docking.js --- gnome-shell-extension-dashtodock-62/docking.js 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/docking.js 2018-01-14 20:31:16.000000000 +0000 @@ -509,6 +509,18 @@ }) ], [ this._settings, + 'changed::show-trash', + Lang.bind(this, function() { + this.dash.resetAppIcons(); + }) + ], [ + this._settings, + 'changed::show-mounts', + Lang.bind(this, function() { + this.dash.resetAppIcons(); + }) + ], [ + this._settings, 'changed::show-running', Lang.bind(this, function() { this.dash.resetAppIcons(); diff -Nru gnome-shell-extension-dashtodock-62/fileManager1API.js gnome-shell-extension-dashtodock-62/fileManager1API.js --- gnome-shell-extension-dashtodock-62/fileManager1API.js 1970-01-01 00:00:00.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/fileManager1API.js 2018-01-14 20:31:16.000000000 +0000 @@ -0,0 +1,157 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- + +const Gio = imports.gi.Gio; +const Lang = imports.lang; +const Signals = imports.signals; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const Utils = Me.imports.utils; + +const FileManager1Iface = '\ + \ + '; + +const FileManager1Proxy = Gio.DBusProxy.makeProxyWrapper(FileManager1Iface); + +/** + * This class implements a client for the org.freedesktop.FileManager1 dbus + * interface, and specifically for the XUbuntuOpenLocationsXids property that + * is not an official part of the interface. On Ubuntu, Nautilus has been + * patched to offer this additional property, and it maps file locations to + * Window XIDs, as the name suggests. + * + * When an unpatched Nautilus is running, we will never observe the property + * to contain anything interesting, but there will not be any correctness + * issues. + */ +var FileManager1Client = new Lang.Class({ + Name: 'DashToDock.FileManager1Client', + + _init: function() { + this._signalsHandler = new Utils.GlobalSignalsHandler(); + + this._locationMap = new Map(); + this._proxy = new FileManager1Proxy(Gio.DBus.session, + "org.freedesktop.FileManager1", + "/org/freedesktop/FileManager1", + Lang.bind(this, function(initable, error) { + // Use async construction to avoid blocking on errors. + if (error) { + global.log(error); + } else { + this._updateLocationMap(); + } + })); + + this._signalsHandler.add([ + this._proxy, + 'g-properties-changed', + Lang.bind(this, this._onPropertyChanged) + ], [ + // We must additionally listen for Screen events to know when to + // rebuild our location map when the set of available windows changes. + global.screen, + 'workspace-switched', + Lang.bind(this, this._updateLocationMap) + ], [ + global.screen, + 'window-entered-monitor', + Lang.bind(this, this._updateLocationMap) + ], [ + global.screen, + 'window-left-monitor', + Lang.bind(this, this._updateLocationMap) + ]); + }, + + destroy: function() { + this._signalsHandler.destroy(); + }, + + /** + * Return an array of windows that are showing a location or + * sub-directories of that location. + */ + getWindows: function(location) { + let ret = []; + for (let [k,v] of this._locationMap) { + if (k.startsWith(location)) { + for (let l of v) { + ret.push(l); + } + } + } + return ret; + }, + + _onPropertyChanged: function(proxy, changed, invalidated) { + let property = changed.unpack(); + if (property && 'XUbuntuOpenLocationsXids' in property) { + this._updateLocationMap(); + } + }, + + _updateLocationMap: function() { + let xidToLocations = this._proxy.XUbuntuOpenLocationsXids; + let xidToWindow = getXidToWindow(); + + let locationToWindow = new Map(); + for (let xid in xidToLocations) { + let locations = xidToLocations[xid]; + for (let i = 0; i < locations.length; i++) { + let l = locations[i]; + // Use a set to deduplicate when a window has a + // location open in multiple tabs. + if (!locationToWindow.has(l)) { + locationToWindow.set(l, new Set()); + } + let window = xidToWindow.get(parseInt(xid)); + if (window != null) { + locationToWindow.get(l).add(window); + } + } + } + this._locationMap = locationToWindow; + this.emit('windows-changed'); + } +}); +Signals.addSignalMethods(FileManager1Client.prototype); + +/** + * Construct a map of XIDs to MetaWindows. + * + * This is somewhat annoying as you cannot lookup a window by + * XID in any way, and must iterate through all of them looking + * for a match. + */ +function getXidToWindow() { + let xidToWindow = new Map(); + + for (let i = 0; i < global.screen.n_workspaces; i++) { + let ws = global.screen.get_workspace_by_index(i); + ws.list_windows().map(function(w) { + let xid = guessWindowXID(w); + if (xid != null) { + xidToWindow.set(parseInt(xid), w); + } + }); + } + return xidToWindow; +} + +/** + * Guesses the X ID of a window. + * + * This is the basic implementation that is sufficient for Nautilus + * windows. The pixel-saver extension has a much more complex + * implementation if we ever need it. + */ +function guessWindowXID(win) { + try { + return win.get_description().match(/0x[0-9a-f]+/)[0]; + } catch (err) { + return null; + } +} + +var fm1Client = new FileManager1Client(); diff -Nru gnome-shell-extension-dashtodock-62/locations.js gnome-shell-extension-dashtodock-62/locations.js --- gnome-shell-extension-dashtodock-62/locations.js 1970-01-01 00:00:00.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/locations.js 2018-01-14 20:31:16.000000000 +0000 @@ -0,0 +1,255 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Gtk = imports.gi.Gtk; +const Lang = imports.lang; +const Signals = imports.signals; +const Shell = imports.gi.Shell; + +// Use __ () and N__() for the extension gettext domain, and reuse +// the shell domain with the default _() and N_() +const Gettext = imports.gettext.domain('dashtodock'); +const __ = Gettext.gettext; +const N__ = function(e) { return e }; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const Utils = Me.imports.utils; + +/** + * This class maintains a Shell.App representing the Trash and keeps it + * up-to-date as the trash fills and is emptied over time. + */ +var Trash = new Lang.Class({ + Name: 'DashToDock.Trash', + + _init: function() { + this._file = Gio.file_new_for_uri('trash://'); + this._monitor = this._file.monitor_directory(0, null); + this._lastEmpty = null; + this._empty = null; + this._signalId = + this._monitor.connect('changed', + Lang.bind(this, this._onTrashChange)); + this._onTrashChange(); + }, + + destroy: function() { + this._monitor.disconnect(this._signalId); + }, + + _onTrashChange: function() { + let children = this._file.enumerate_children('*', 0, null); + let count = 0; + while (children.next_file(null) != null) { + count++; + } + children.close(null); + this._empty = count == 0; + if (this._lastEmpty != this._empty) { + this._makeApp(); + this.emit('changed'); + } + }, + + _makeApp: function() { + if (this._trashApp == null || + this._lastEmpty != this._empty) { + let trashKeys = new GLib.KeyFile(); + trashKeys.set_string('Desktop Entry', 'Name', __('Trash')); + trashKeys.set_string('Desktop Entry', 'Icon', + this._empty ? 'user-trash' : 'user-trash-full'); + trashKeys.set_string('Desktop Entry', 'Type', 'Application'); + trashKeys.set_string('Desktop Entry', 'Exec', 'gio open trash:///'); + trashKeys.set_string('Desktop Entry', 'StartupNotify', 'true'); + trashKeys.set_string('Desktop Entry', 'XdtdUri', 'trash:///'); + if (!this._empty) { + trashKeys.set_string('Desktop Entry', 'Actions', 'empty-trash;'); + trashKeys.set_string('Desktop Action empty-trash', 'Name', __('Empty Trash')); + trashKeys.set_string('Desktop Action empty-trash', 'Exec', + 'dbus-send --print-reply --dest=org.gnome.Nautilus /org/gnome/Nautilus org.gnome.Nautilus.FileOperations.EmptyTrash'); + } + + let trashAppInfo = Gio.DesktopAppInfo.new_from_keyfile(trashKeys); + this._trashApp = new Shell.App({appInfo: trashAppInfo}); + this._lastEmpty = this._empty; + } + }, + + getApp: function() { + return this._trashApp; + } +}); +Signals.addSignalMethods(Trash.prototype); + +/** + * This class maintains Shell.App representations for removable devices + * plugged into the system, and keeps the list of Apps up-to-date as + * devices come and go and are mounted and unmounted. + */ +var Removables = new Lang.Class({ + Name: "DashToDock.Removables", + + _init: function() { + this._signalsHandler = new Utils.GlobalSignalsHandler(); + + this._monitor = Gio.VolumeMonitor.get(); + this._volumeApps = [] + this._mountApps = [] + + this._monitor.get_volumes().forEach(Lang.bind(this, function(volume) { + this._onVolumeAdded(this._monitor, volume); + })); + + this._monitor.get_mounts().forEach(Lang.bind(this, function(mount) { + this._onMountAdded(this._monitor, mount); + })); + + this._signalsHandler.add([ + this._monitor, + 'mount-added', + Lang.bind(this, this._onMountAdded) + ], [ + this._monitor, + 'mount-removed', + Lang.bind(this, this._onMountRemoved) + ], [ + this._monitor, + 'volume-added', + Lang.bind(this, this._onVolumeAdded) + ], [ + this._monitor, + 'volume-removed', + Lang.bind(this, this._onVolumeRemoved) + ]); + }, + + destroy: function() { + this._signalsHandler.destroy(); + }, + + _getWorkingIconName: function(icon) { + if (icon instanceof Gio.ThemedIcon) { + let iconTheme = Gtk.IconTheme.get_default(); + let names = icon.get_names(); + for (let i = 0; i < names.length; i++) { + let iconName = names[i]; + if (iconTheme.has_icon(iconName)) { + return iconName; + } + } + return ''; + } else { + return icon.to_string(); + } + }, + + _onVolumeAdded: function(monitor, volume) { + if (!volume.can_mount()) { + return; + } + + let activationRoot = volume.get_activation_root(); + if (!activationRoot) { + // Can't offer to mount a device if we don't know + // where to mount it. + // These devices are usually ejectable so you + // don't normally unmount them anyway. + return; + } + let uri = GLib.uri_unescape_string(activationRoot.get_uri(), null); + + let volumeKeys = new GLib.KeyFile(); + volumeKeys.set_string('Desktop Entry', 'Name', volume.get_name()); + volumeKeys.set_string('Desktop Entry', 'Icon', this._getWorkingIconName(volume.get_icon())); + volumeKeys.set_string('Desktop Entry', 'Type', 'Application'); + volumeKeys.set_string('Desktop Entry', 'Exec', 'nautilus ' + uri); + volumeKeys.set_string('Desktop Entry', 'StartupNotify', 'true'); + volumeKeys.set_string('Desktop Entry', 'Actions', 'mount;'); + volumeKeys.set_string('Desktop Action mount', 'Name', __('Mount')); + volumeKeys.set_string('Desktop Action mount', 'Exec', 'gio mount ' + uri); + let volumeAppInfo = Gio.DesktopAppInfo.new_from_keyfile(volumeKeys); + let volumeApp = new Shell.App({appInfo: volumeAppInfo}); + this._volumeApps.push(volumeApp); + this.emit('changed'); + }, + + _onVolumeRemoved: function(monitor, volume) { + for (let i = 0; i < this._volumeApps.length; i++) { + let app = this._volumeApps[i]; + if (app.get_name() == volume.get_name()) { + this._volumeApps.splice(i, 1); + } + } + this.emit('changed'); + }, + + _onMountAdded: function(monitor, mount) { + // Filter out uninteresting mounts + if (!mount.can_eject() && !mount.can_unmount()) + return; + if (mount.is_shadowed()) + return; + + let volume = mount.get_volume(); + if (!volume || volume.get_identifier('class') == 'network') { + return; + } + + let escapedUri = mount.get_root().get_uri() + let uri = GLib.uri_unescape_string(escapedUri, null); + + let mountKeys = new GLib.KeyFile(); + mountKeys.set_string('Desktop Entry', 'Name', mount.get_name()); + mountKeys.set_string('Desktop Entry', 'Icon', + this._getWorkingIconName(volume.get_icon())); + mountKeys.set_string('Desktop Entry', 'Type', 'Application'); + mountKeys.set_string('Desktop Entry', 'Exec', 'gio open ' + uri); + mountKeys.set_string('Desktop Entry', 'StartupNotify', 'true'); + mountKeys.set_string('Desktop Entry', 'XdtdUri', escapedUri); + mountKeys.set_string('Desktop Entry', 'Actions', 'unmount;'); + if (mount.can_eject()) { + mountKeys.set_string('Desktop Action unmount', 'Name', __('Eject')); + mountKeys.set_string('Desktop Action unmount', 'Exec', + 'gio mount -e ' + uri); + } else { + mountKeys.set_string('Desktop Entry', 'Actions', 'unmount;'); + mountKeys.set_string('Desktop Action unmount', 'Name', __('Unmount')); + mountKeys.set_string('Desktop Action unmount', 'Exec', + 'gio mount -u ' + uri); + } + let mountAppInfo = Gio.DesktopAppInfo.new_from_keyfile(mountKeys); + let mountApp = new Shell.App({appInfo: mountAppInfo}); + this._mountApps.push(mountApp); + this.emit('changed'); + }, + + _onMountRemoved: function(monitor, mount) { + for (let i = 0; i < this._mountApps.length; i++) { + let app = this._mountApps[i]; + if (app.get_name() == mount.get_name()) { + this._mountApps.splice(i, 1); + } + } + this.emit('changed'); + }, + + getApps: function() { + // When we have both a volume app and a mount app, we prefer + // the mount app. + let apps = new Map(); + this._volumeApps.map(function(app) { + apps.set(app.get_name(), app); + }); + this._mountApps.map(function(app) { + apps.set(app.get_name(), app); + }); + + let ret = []; + for (let app of apps.values()) { + ret.push(app); + } + return ret; + } +}); +Signals.addSignalMethods(Removables.prototype); diff -Nru gnome-shell-extension-dashtodock-62/Makefile gnome-shell-extension-dashtodock-62/Makefile --- gnome-shell-extension-dashtodock-62/Makefile 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/Makefile 2018-01-14 20:31:17.000000000 +0000 @@ -2,9 +2,9 @@ UUID = dash-to-dock@micxgx.gmail.com BASE_MODULES = extension.js stylesheet.css metadata.json COPYING README.md -EXTRA_MODULES = convenience.js dash.js docking.js appIcons.js appIconIndicators.js launcherAPI.js windowPreview.js intellihide.js prefs.js theming.js utils.js Settings.ui +EXTRA_MODULES = convenience.js dash.js docking.js appIcons.js appIconIndicators.js fileManager1API.js launcherAPI.js locations.js windowPreview.js intellihide.js prefs.js theming.js utils.js Settings.ui EXTRA_MEDIA = logo.svg glossy.svg highlight_stacked_bg.svg highlight_stacked_bg_h.svg -TOLOCALIZE = prefs.js appIcons.js +TOLOCALIZE = prefs.js appIcons.js locations.js MSGSRC = $(wildcard po/*.po) ifeq ($(strip $(DESTDIR)),) INSTALLTYPE = local diff -Nru gnome-shell-extension-dashtodock-62/.pc/makefile-clean-translations/Makefile gnome-shell-extension-dashtodock-62/.pc/makefile-clean-translations/Makefile --- gnome-shell-extension-dashtodock-62/.pc/makefile-clean-translations/Makefile 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/.pc/makefile-clean-translations/Makefile 2018-01-14 20:31:17.000000000 +0000 @@ -2,9 +2,9 @@ UUID = dash-to-dock@micxgx.gmail.com BASE_MODULES = extension.js stylesheet.css metadata.json COPYING README.md -EXTRA_MODULES = convenience.js dash.js docking.js appIcons.js appIconIndicators.js launcherAPI.js windowPreview.js intellihide.js prefs.js theming.js utils.js Settings.ui +EXTRA_MODULES = convenience.js dash.js docking.js appIcons.js appIconIndicators.js fileManager1API.js launcherAPI.js locations.js windowPreview.js intellihide.js prefs.js theming.js utils.js Settings.ui EXTRA_MEDIA = logo.svg glossy.svg highlight_stacked_bg.svg highlight_stacked_bg_h.svg -TOLOCALIZE = prefs.js appIcons.js +TOLOCALIZE = prefs.js appIcons.js locations.js MSGSRC = $(wildcard po/*.po) ifeq ($(strip $(DESTDIR)),) INSTALLTYPE = local diff -Nru gnome-shell-extension-dashtodock-62/.pc/.quilt_patches gnome-shell-extension-dashtodock-62/.pc/.quilt_patches --- gnome-shell-extension-dashtodock-62/.pc/.quilt_patches 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/.pc/.quilt_patches 2018-01-14 20:31:17.000000000 +0000 @@ -1 +1 @@ -/home/buildd/build-RECIPEBRANCHBUILD-1514663/chroot-autobuild/home/buildd/work/tree/gnome-shell-extension-dashtodock-62/debian/patches +/home/buildd/build-RECIPEBRANCHBUILD-1515779/chroot-autobuild/home/buildd/work/tree/gnome-shell-extension-dashtodock-62/debian/patches diff -Nru gnome-shell-extension-dashtodock-62/.pc/.quilt_series gnome-shell-extension-dashtodock-62/.pc/.quilt_series --- gnome-shell-extension-dashtodock-62/.pc/.quilt_series 2018-01-12 15:40:09.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/.pc/.quilt_series 2018-01-14 20:31:17.000000000 +0000 @@ -1 +1 @@ -/home/buildd/build-RECIPEBRANCHBUILD-1514663/chroot-autobuild/home/buildd/work/tree/gnome-shell-extension-dashtodock-62/debian/patches/series +/home/buildd/build-RECIPEBRANCHBUILD-1515779/chroot-autobuild/home/buildd/work/tree/gnome-shell-extension-dashtodock-62/debian/patches/series diff -Nru gnome-shell-extension-dashtodock-62/po/cs.po gnome-shell-extension-dashtodock-62/po/cs.po --- gnome-shell-extension-dashtodock-62/po/cs.po 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/po/cs.po 2018-01-14 20:31:16.000000000 +0000 @@ -44,7 +44,7 @@ #: prefs.js:390 msgid "Show dock and application numbers" -msgstr "Zobrazování docku a čísel aplikací" +msgstr "Zobrazování doku a čísel aplikací" #: prefs.js:447 msgid "Customize middle-click behavior" @@ -93,7 +93,7 @@ #: Settings.ui.h:7 msgid "Show the dock if it is hidden" -msgstr "Zobrazit dock, pokud je skrytý" +msgstr "Zobrazit dok, pokud je skrytý" #: Settings.ui.h:8 msgid "" @@ -101,7 +101,7 @@ "shortcut." msgstr "" "Pokud je nastaveno automatické skrývání, stisknutím klávesové zkratky se " -"dock krátce zobrazí." +"dok krátce zobrazí." #: Settings.ui.h:9 msgid "Shortcut for the options above" @@ -172,7 +172,7 @@ #: Settings.ui.h:25 msgid "Show the dock on" -msgstr "Kde zobrazit dock" +msgstr "Kde zobrazit dok" #: Settings.ui.h:26 msgid "Show on all monitors." @@ -195,7 +195,7 @@ "Hide the dock when it obstructs a window of the current application. More " "refined settings are available." msgstr "" -"Skrýt dock, pokud překáží oknu aktivní aplikace. K dispozici jsou podrobnější " +"Skrýt dok, pokud překáží oknu aktivní aplikace. K dispozici jsou podrobnější " "nastavení." #: Settings.ui.h:33 @@ -204,11 +204,11 @@ #: Settings.ui.h:34 msgid "Dock size limit" -msgstr "Maximální velikost docku" +msgstr "Maximální velikost doku" #: Settings.ui.h:35 msgid "Panel mode: extend to the screen edge" -msgstr "Režim panelu (roztáhnout dock po celé délce obrazovky)" +msgstr "Režim panelu (roztáhnout dok po celé délce obrazovky)" #: Settings.ui.h:36 msgid "Icon size limit" @@ -217,7 +217,7 @@ #: Settings.ui.h:37 msgid "Fixed icon size: scroll to reveal other icons" msgstr "" -"Neměnná velikost ikon (rolováním na docku je možné zobrazit další ikony)" +"Neměnná velikost ikon (rolováním na doku je možné zobrazit další ikony)" #: Settings.ui.h:38 msgid "Position and size" @@ -257,7 +257,7 @@ #: Settings.ui.h:46 msgid "Move the applications button at the beginning of the dock." -msgstr "Přesunout tlačítko přístupu ke všem aplikacím na začátek docku" +msgstr "Přesunout tlačítko přístupu ke všem aplikacím na začátek doku" #: Settings.ui.h:47 msgid "Animate Show Applications." @@ -316,7 +316,7 @@ "Few customizations meant to integrate the dock with the default GNOME theme. " "Alternatively, specific options can be enabled below." msgstr "" -"Nastavení kvůli integraci docku s výchozím motivem GNOME; jinak lze použít " +"Nastavení kvůli integraci doku s výchozím motivem GNOME; jinak lze použít " "samostatné předvolby níže." #: Settings.ui.h:60 @@ -329,7 +329,7 @@ #: Settings.ui.h:62 msgid "Shrink the dash" -msgstr "Zmenšený dock" +msgstr "Zmenšený dok" #: Settings.ui.h:63 msgid "Show a dot for each windows of the application." @@ -341,19 +341,19 @@ #: Settings.ui.h:65 msgid "Set the background color for the dash." -msgstr "Nastavit barvu pozadí docku" +msgstr "Nastavit barvu pozadí doku" #: Settings.ui.h:66 msgid "Customize the dash color" -msgstr "Vlastní barva docku" +msgstr "Vlastní barva doku" #: Settings.ui.h:67 msgid "Tune the dash background opacity." -msgstr "Nastavit průhlednost docku" +msgstr "Nastavit průhlednost doku" #: Settings.ui.h:68 msgid "Customize opacity" -msgstr "Volitelná průhlednost" +msgstr "Přizpůsobení průhlednosti" #: Settings.ui.h:69 msgid "Opacity" @@ -373,7 +373,7 @@ #: Settings.ui.h:74 msgid "Moves the dash out of the overview transforming it in a dock" -msgstr "Vytvoří dock z přehledu činností a oblíbených aplikací" +msgstr "Vytvoří dok z přehledu činností a oblíbených aplikací" #: Settings.ui.h:75 msgid "Created by" @@ -399,7 +399,7 @@ #: Settings.ui.h:80 msgid "Show the dock by mouse hover on the screen edge." -msgstr "Zobrazit dock najetím myši ke kraji obrazovky" +msgstr "Zobrazit dok najetím myši ke kraji obrazovky" #: Settings.ui.h:81 msgid "Autohide" @@ -407,7 +407,7 @@ #: Settings.ui.h:82 msgid "Push to show: require pressure to show the dock" -msgstr "Zobrazit dock až po zatlačení na kraj obrazovky" +msgstr "Zobrazit dok až po zatlačení na kraj obrazovky" #: Settings.ui.h:83 msgid "Enable in fullscreen mode" @@ -415,7 +415,7 @@ #: Settings.ui.h:84 msgid "Show the dock when it doesn't obstruct application windows." -msgstr "Zobrazit dock pokud nepřekáží oknům aplikací" +msgstr "Zobrazit dok pokud nepřekáží oknům aplikací" #: Settings.ui.h:85 msgid "Dodge windows" @@ -449,19 +449,35 @@ msgid "Enable Unity7 like glossy backlit items" msgstr "Podsvícení ikon jako v Unity 7" +#: Settings.ui.h:93 +msgid "Default" +msgstr "Výchozí" + +#: Settings.ui.h:94 +msgid "Fixed" +msgstr "Neměnná" + +#: Settings.ui.h:95 +msgid "Adaptive" +msgstr "Adaptivní" + +#: Settings.ui.h:96 +msgid "Dynamic" +msgstr "Dynamická" + +#: Settings.ui.h:97 +msgid "Customize minimum and maximum opacity values" +msgstr "Nastavit minimální a maximální hodnoty průhlednosti" -#~ msgid "0.000" -#~ msgstr "0.000" - -#, fuzzy -#~ msgid "" -#~ "With fixed icon size, only the edge of the dock and the Show " -#~ "Applications icon are active." -#~ msgstr "" -#~ "Oblast po okrajích doku a tlačítko zobrazení všech aplikací jsou aktivní." +#: Settings.ui.h:98 +msgid "Customize opacity" +msgstr "Přizpůsobení průhlednosti" -#~ msgid "Switch workspace by scrolling on the dock" -#~ msgstr "Přepínat pracovní plochy kolečkem myši nad dokem." +#: Settings.ui.h:99 +msgid "Maximum opacity" +msgstr "Maximální průhlednost" + +#: Settings.ui.h:99 +msgid "Minimum opacity" +msgstr "Minimální průhlednost" -#~ msgid "Only consider windows of the focused application" -#~ msgstr "Brát v úvahu jen okna aktivní aplikace" diff -Nru gnome-shell-extension-dashtodock-62/prefs.js gnome-shell-extension-dashtodock-62/prefs.js --- gnome-shell-extension-dashtodock-62/prefs.js 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/prefs.js 2018-01-14 20:31:16.000000000 +0000 @@ -348,6 +348,14 @@ this._builder.get_object('show_favorite_switch'), 'active', Gio.SettingsBindFlags.DEFAULT); + this._settings.bind('show-trash', + this._builder.get_object('show_trash_switch'), + 'active', + Gio.SettingsBindFlags.DEFAULT); + this._settings.bind('show-mounts', + this._builder.get_object('show_mounts_switch'), + 'active', + Gio.SettingsBindFlags.DEFAULT); this._settings.bind('show-show-apps-button', this._builder.get_object('show_applications_button_switch'), 'active', diff -Nru gnome-shell-extension-dashtodock-62/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml gnome-shell-extension-dashtodock-62/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml --- gnome-shell-extension-dashtodock-62/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml 2018-01-14 20:31:16.000000000 +0000 @@ -214,6 +214,16 @@ Show favorites apps Show or hide favorite appplications icons in the dash + + true + Show trash can + Show or hide the trash can icon in the dash + + + true + Show mounted volumes and devices + Show or hide mounted volume and device icons in the dash + true Show applications button diff -Nru gnome-shell-extension-dashtodock-62/Settings.ui gnome-shell-extension-dashtodock-62/Settings.ui --- gnome-shell-extension-dashtodock-62/Settings.ui 2018-01-12 15:40:08.000000000 +0000 +++ gnome-shell-extension-dashtodock-62/Settings.ui 2018-01-14 20:31:16.000000000 +0000 @@ -1332,6 +1332,90 @@ + + + True + True + + + True + False + 12 + 12 + 12 + 12 + 32 + + + True + True + end + center + + + 1 + 0 + + + + + True + False + True + Show trash can + 0 + + + 0 + 0 + + + + + + + + + True + True + + + True + False + 12 + 12 + 12 + 12 + 32 + + + True + True + end + center + + + 1 + 0 + + + + + True + False + True + Show mounted volumes and devices + 0 + + + 0 + 0 + + + + + +