├── .gitignore ├── README.md ├── debian ├── changelog ├── compat ├── control ├── copyright ├── install ├── postinst ├── postrm ├── rules └── source │ └── format ├── etc └── xdg │ └── autostart │ └── indicator-workspaces.desktop ├── indicator-workspaces ├── indicator-workspaces-preferences.glade └── usr └── share ├── applications └── indicator-workspaces.desktop ├── glib-2.0 └── schemas │ └── apps.indicator-workspaces.gschema.xml └── icons └── hicolor ├── 128x128 └── apps │ └── indicator-workspaces.svg ├── 16x16 └── status │ ├── indicator-workspaces-1.svg │ ├── indicator-workspaces-10.svg │ ├── indicator-workspaces-11.svg │ ├── indicator-workspaces-12.svg │ ├── indicator-workspaces-13.svg │ ├── indicator-workspaces-14.svg │ ├── indicator-workspaces-15.svg │ ├── indicator-workspaces-16.svg │ ├── indicator-workspaces-17.svg │ ├── indicator-workspaces-18.svg │ ├── indicator-workspaces-19.svg │ ├── indicator-workspaces-2.svg │ ├── indicator-workspaces-20.svg │ ├── indicator-workspaces-21.svg │ ├── indicator-workspaces-22.svg │ ├── indicator-workspaces-23.svg │ ├── indicator-workspaces-24.svg │ ├── indicator-workspaces-25.svg │ ├── indicator-workspaces-26.svg │ ├── indicator-workspaces-27.svg │ ├── indicator-workspaces-28.svg │ ├── indicator-workspaces-29.svg │ ├── indicator-workspaces-3.svg │ ├── indicator-workspaces-30.svg │ ├── indicator-workspaces-31.svg │ ├── indicator-workspaces-32.svg │ ├── indicator-workspaces-33.svg │ ├── indicator-workspaces-34.svg │ ├── indicator-workspaces-35.svg │ ├── indicator-workspaces-36.svg │ ├── indicator-workspaces-4.svg │ ├── indicator-workspaces-5.svg │ ├── indicator-workspaces-6.svg │ ├── indicator-workspaces-7.svg │ ├── indicator-workspaces-8.svg │ └── indicator-workspaces-9.svg ├── 32x32 └── apps │ └── indicator-workspaces.svg ├── 48x48 └── apps │ └── indicator-workspaces.svg └── 64x64 └── apps └── indicator-workspaces.svg /.gitignore: -------------------------------------------------------------------------------- 1 | debian/files 2 | debian/indicator-workspaces.debhelper.log 3 | debian/indicator-workspaces.substvars 4 | debian/indicator-workspaces/ 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Indicator Workspaces: Elementary OS Workspace Indicator 2 | 3 | Configure workspaces and interact with them in the panel. 4 | 5 | ---- 6 | 7 | If you are just wanting to install and use Indicator Workspaces, go to the [website](http://dysonsimmons.com/indicator-workspaces/) and download the latest version. 8 | 9 | #### Developing 10 | 11 | It is recommended that you first install the latest version before development as the icons need to be installed for them to load. You can then modify the indicator-workspaces file directly and run it directly from the command line during development. If you want to build and install your changes, they need to be commited in the git repository. Create your own branch, commit your changes and then build from your branch. 12 | 13 | ##### Requirements to Build/Run 14 | 15 | ```bash 16 | $ sudo apt-get install devscripts debhelper python3 17 | ``` 18 | 19 | ##### Building 20 | 21 | ```bash 22 | $ debuild -us -uc 23 | ``` 24 | 25 | ##### Installing 26 | 27 | ```bash 28 | $ sudo debpkg -i indicator-workspaces_0.3_all.deb 29 | ``` 30 | 31 | #### License 32 | 33 | The MIT License (MIT) 34 | 35 | Copyright 2014 Dyson Simmons 36 | 37 | Permission is hereby granted, free of charge, to any person obtaining 38 | a copy of this software and associated documentation files (the 39 | "Software"), to deal in the Software without restriction, including 40 | without limitation the rights to use, copy, modify, merge, publish, 41 | distribute, sublicense, and/or sell copies of the Software, and to 42 | permit persons to whom the Software is furnished to do so, subject to 43 | the following conditions: 44 | 45 | The above copyright notice and this permission notice shall be 46 | included in all copies or substantial portions of the Software. 47 | 48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 49 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 50 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 51 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 52 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 53 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 54 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 55 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | indicator-workspaces (0.5) unstable; urgency=low 2 | 3 | * Fixed double move to workspace bug 4 | * Minor preference window glade tweaks 5 | 6 | -- Dyson Simmons Mon, 19 Jan 2015 13:27:19 +1000 7 | 8 | indicator-workspaces (0.4) unstable; urgency=low 9 | 10 | * Added preference for showing/hiding label 11 | * Fixed visually updating the label of the current workspace as it is changed 12 | 13 | -- Dyson Simmons Sat, 15 Nov 2014 22:28:04 +1000 14 | 15 | indicator-workspaces (0.3) unstable; urgency=low 16 | 17 | * Added application icon and desktop file 18 | * Added icons for workspaces 10 - 36 19 | * Catches SIGINT for easier development 20 | * Preferences window is now a dialog window and conforms better to the HIG 21 | 22 | -- Dyson Simmons Wed, 24 Sep 2014 12:40:13 +1000 23 | 24 | indicator-workspaces (0.2) unstable; urgency=low 25 | 26 | * Added support for 36 workspaces 27 | * Added infinite status icon for workspaces > 9 28 | * Fixed naming of workspaces when no names are in dconf 29 | * Fixed sizing of close button in prefernces 30 | 31 | -- Dyson Simmons Thu, 11 Sep 2014 09:14:10 +1000 32 | 33 | indicator-workspaces (0.1) unstable; urgency=low 34 | 35 | * Initial release 36 | 37 | -- Dyson Simmons Mon, 01 Sep 2014 10:44:40 +1000 38 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: indicator-workspaces 2 | Section: utils 3 | Priority: optional 4 | Maintainer: Dyson Simmons 5 | Build-Depends: debhelper (>= 9), python3 6 | Standards-Version: 3.9.5 7 | X-Python3-Version: >= 3.2 8 | Homepage: https://github.com/dyson/indicator-workspaces 9 | Vcs-Git: https://github.com/dyson/indicator-workspaces.git 10 | Vcs-Browser: https://github.com/dyson/indicator-workspaces 11 | 12 | Package: indicator-workspaces 13 | Architecture: all 14 | Depends: python3, python-wnck, ${misc:Depends} 15 | Description: Elementary OS Workspace Indicator 16 | Configure workspaces and interact with them in the panel. 17 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: indicator-workspaces 3 | Source: https://github.com/dyson/indicator-workspaces 4 | 5 | Files: * 6 | Copyright: 2014 Dyson Simmons 7 | License: MIT 8 | The MIT License (MIT) 9 | . 10 | Copyright (c) 11 | . 12 | Permission is hereby granted, free of charge, to any person obtaining a copy 13 | of this software and associated documentation files (the "Software"), to deal 14 | in the Software without restriction, including without limitation the rights 15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 | copies of the Software, and to permit persons to whom the Software is 17 | furnished to do so, subject to the following conditions: 18 | . 19 | The above copyright notice and this permission notice shall be included in 20 | all copies or substantial portions of the Software. 21 | . 22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 | THE SOFTWARE. 29 | 30 | Files: debian/* 31 | Copyright: 2014 Dyson Simmons 32 | License: GPL-2+ 33 | This package is free software; you can redistribute it and/or modify 34 | it under the terms of the GNU General Public License as published by 35 | the Free Software Foundation; either version 2 of the License, or 36 | (at your option) any later version. 37 | . 38 | This package is distributed in the hope that it will be useful, 39 | but WITHOUT ANY WARRANTY; without even the implied warranty of 40 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 41 | GNU General Public License for more details. 42 | . 43 | You should have received a copy of the GNU General Public License 44 | along with this program. If not, see 45 | . 46 | On Debian systems, the complete text of the GNU General 47 | Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". 48 | -------------------------------------------------------------------------------- /debian/install: -------------------------------------------------------------------------------- 1 | indicator-workspaces usr/share/indicator-workspaces/ 2 | indicator-workspaces-preferences.glade usr/share/indicator-workspaces/ 3 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-1.svg 4 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-2.svg 5 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-3.svg 6 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-4.svg 7 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-5.svg 8 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-6.svg 9 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-7.svg 10 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-8.svg 11 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-9.svg 12 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-10.svg 13 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-11.svg 14 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-12.svg 15 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-13.svg 16 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-14.svg 17 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-15.svg 18 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-16.svg 19 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-17.svg 20 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-18.svg 21 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-19.svg 22 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-20.svg 23 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-21.svg 24 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-22.svg 25 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-23.svg 26 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-24.svg 27 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-25.svg 28 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-26.svg 29 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-27.svg 30 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-28.svg 31 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-29.svg 32 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-30.svg 33 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-31.svg 34 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-32.svg 35 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-33.svg 36 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-34.svg 37 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-35.svg 38 | usr/share/icons/hicolor/16x16/status/indicator-workspaces-36.svg 39 | usr/share/icons/hicolor/32x32/apps/indicator-workspaces.svg 40 | usr/share/icons/hicolor/48x48/apps/indicator-workspaces.svg 41 | usr/share/icons/hicolor/64x64/apps/indicator-workspaces.svg 42 | usr/share/icons/hicolor/128x128/apps/indicator-workspaces.svg 43 | usr/share/applications/indicator-workspaces.desktop 44 | usr/share/glib-2.0/schemas/apps.indicator-workspaces.gschema.xml 45 | etc/xdg/autostart/indicator-workspaces.desktop 46 | -------------------------------------------------------------------------------- /debian/postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # postinst script for indicator-workspaces 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | # summary of how this script can be called: 9 | # * `configure' 10 | # * `abort-upgrade' 11 | # * `abort-remove' `in-favour' 12 | # 13 | # * `abort-remove' 14 | # * `abort-deconfigure' `in-favour' 15 | # `removing' 16 | # 17 | # for details, see http://www.debian.org/doc/debian-policy/ or 18 | # the debian-policy package 19 | 20 | 21 | case "$1" in 22 | configure) 23 | gtk-update-icon-cache /usr/share/icons/hicolor/ 24 | ;; 25 | 26 | abort-upgrade|abort-remove|abort-deconfigure) 27 | ;; 28 | 29 | *) 30 | echo "postinst called with unknown argument \`$1'" >&2 31 | exit 1 32 | ;; 33 | esac 34 | 35 | # dh_installdeb will replace this with shell code automatically 36 | # generated by other debhelper scripts. 37 | 38 | #DEBHELPER# 39 | 40 | exit 0 41 | -------------------------------------------------------------------------------- /debian/postrm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # postrm script for indicator-workspaces 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | # summary of how this script can be called: 9 | # * `remove' 10 | # * `purge' 11 | # * `upgrade' 12 | # * `failed-upgrade' 13 | # * `abort-install' 14 | # * `abort-install' 15 | # * `abort-upgrade' 16 | # * `disappear' 17 | # 18 | # for details, see http://www.debian.org/doc/debian-policy/ or 19 | # the debian-policy package 20 | 21 | 22 | case "$1" in 23 | purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) 24 | gtk-update-icon-cache /usr/share/icons/hicolor/ 25 | ;; 26 | 27 | *) 28 | echo "postrm called with unknown argument \`$1'" >&2 29 | exit 1 30 | ;; 31 | esac 32 | 33 | # dh_installdeb will replace this with shell code automatically 34 | # generated by other debhelper scripts. 35 | 36 | #DEBHELPER# 37 | 38 | exit 0 39 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | 4 | # Uncomment this to turn on verbose mode. 5 | #export DH_VERBOSE=1 6 | 7 | %: 8 | dh $@ --with=python3 9 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (git) 2 | -------------------------------------------------------------------------------- /etc/xdg/autostart/indicator-workspaces.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Indicator Workspaces 4 | Comment=Configure workspaces and interact with them in the panel. 5 | Exec=/usr/share/indicator-workspaces/indicator-workspaces 6 | OnlyShowIn=Unity;GNOME;Pantheon; 7 | NoDisplay=true 8 | StartupNotify=false 9 | Terminal=false 10 | AutostartCondition=GNOME3 unless-session gnome 11 | X-Ubuntu-Gettext-Domain=indicator-workspaces 12 | -------------------------------------------------------------------------------- /indicator-workspaces: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import gi 4 | gi.require_version('Gtk', '3.0') 5 | from gi.repository import Gtk, AppIndicator3, Wnck 6 | from gi.repository.Gio import Settings, SettingsBindFlags 7 | from gi.repository.GLib import Variant 8 | 9 | import fcntl 10 | import os 11 | import signal 12 | import sys 13 | import tempfile 14 | import time 15 | import warnings 16 | 17 | # TODO: Use Gtk.get_current_event_time() instead of time ? 18 | 19 | class IndicatorWorkspaces: 20 | 21 | def __new__(cls, *args, **kwargs): 22 | IndicatorWorkspaces._check_running() 23 | return super(IndicatorWorkspaces, cls).__new__(cls) 24 | 25 | def __init__(self): 26 | # Create Indicator 27 | self.indicator = AppIndicator3.Indicator.new("indicator-workspaces", "", AppIndicator3.IndicatorCategory.APPLICATION_STATUS) 28 | self.indicator.set_status (AppIndicator3.IndicatorStatus.ACTIVE) 29 | 30 | # Create Screen 31 | self.screen = Wnck.Screen.get_default() 32 | self.screen.force_update() 33 | 34 | # Get workspace settings 35 | self.settings = WorkspacesSettings(self) 36 | 37 | # Create Icon 38 | self.icon = WorkspacesIcon() 39 | 40 | # Create Menu 41 | self.create_menu() 42 | 43 | # Connect screen to active workspace changed 44 | self.screen.connect('active-workspace-changed', self.set_active_workspace) 45 | self.screen.connect('workspace-created', self.create_menu) 46 | self.screen.connect('workspace-destroyed', self.create_menu) 47 | 48 | # Set active workspace 49 | self.set_active_workspace() 50 | 51 | def _check_running(): 52 | lockfile_path = os.path.normpath(tempfile.gettempdir() + '/' + os.path.basename(__file__) + '.lock') 53 | lockfile_pointer = os.open(lockfile_path, os.O_CREAT | os.O_TRUNC | os.O_WRONLY) 54 | try: 55 | fcntl.lockf(lockfile_pointer, fcntl.LOCK_EX | fcntl.LOCK_NB) 56 | except IOError: 57 | print("\nAnother instance is already running, quitting.") 58 | sys.exit(-1) 59 | 60 | def create_menu(self, *args): 61 | self.menu = WorkspacesMenu(self) 62 | self.menu.show_all() 63 | self.indicator.set_menu(self.menu) 64 | 65 | def create_workspace_preferences(self, *args): 66 | try: 67 | self.workspaces_preferences 68 | except: 69 | self.workspaces_preferences = WorkspacesPreferences(self) 70 | 71 | def set_active_workspace(self, *args): 72 | workspace_active_number = self.screen.get_active_workspace().get_number() 73 | self.menu.workspaces_list[workspace_active_number].set_active(True) 74 | self.icon.set(self.indicator, workspace_active_number) 75 | if self.settings.get_show_label() == True: 76 | self.indicator.set_label(self.menu.workspaces_list[workspace_active_number].get_label(), "") 77 | else: 78 | self.indicator.set_label("", "") 79 | 80 | class WorkspacesSettings(): 81 | def __init__(self, indicator): 82 | self.settings = Settings.new("apps.indicator-workspaces") 83 | self.settings.connect("changed::show-label", self.update_show_label) 84 | 85 | self.indicator = indicator 86 | self.set_show_label() 87 | 88 | def set_show_label(self): 89 | self.show_label = self.settings.get_boolean("show-label") 90 | 91 | def update_show_label(self, settings, key): 92 | self.set_show_label() 93 | self.indicator.set_active_workspace() 94 | 95 | def get_show_label(self): 96 | return self.show_label 97 | 98 | class WorkspacesIcon(): 99 | def set(self, indicator, workspace_number = None): 100 | ic = "indicator-workspaces-%d" % (workspace_number+1) 101 | indicator.set_icon(ic) 102 | 103 | class WorkspacesMenu(Gtk.Menu): 104 | 105 | def __init__(self, indicator): 106 | Gtk.Menu.__init__(self) 107 | 108 | self.indicator = indicator 109 | 110 | # Get workspace names 111 | setting = Settings.new("org.gnome.desktop.wm.preferences") 112 | workspace_names = setting.get_value("workspace-names").unpack() 113 | 114 | # Generate workspace names if none exist 115 | workspace_count = self.indicator.screen.get_workspace_count() 116 | workspace_names_count = len(workspace_names) 117 | 118 | # Fill in any missing workspace names 119 | if workspace_names_count < workspace_count: 120 | workspace_names += [''] * (workspace_count - workspace_names_count) 121 | 122 | for index, workspace_name in enumerate(workspace_names): 123 | if workspace_name == '': 124 | workspace_names[index] = "Workspace %d" % (index + 1) 125 | 126 | # Create items for the menu from the workspace names 127 | self.workspaces_list = [] 128 | for number,workspace_name in enumerate(workspace_names): 129 | if number < workspace_count: 130 | if number == 0: 131 | self.workspaces_list.append(Gtk.RadioMenuItem(group=None, label=workspace_name)) 132 | else: 133 | self.workspaces_list.append(Gtk.RadioMenuItem(group=self.workspaces_list[number-1], label=workspace_name)) 134 | self.workspaces_list[number].connect("activate", self.switch_to_desktop, number) 135 | self.append(self.workspaces_list[number]) 136 | 137 | # Add separator 138 | separator = Gtk.SeparatorMenuItem() 139 | self.append(separator) 140 | 141 | # Add preferences button 142 | preferences = Gtk.MenuItem("Preferences") 143 | preferences.connect("activate",self.indicator.create_workspace_preferences) 144 | self.append(preferences) 145 | 146 | def switch_to_desktop(self, workspace, number): 147 | active_workspace = self.indicator.screen.get_active_workspace().get_number() 148 | if (self.workspaces_list[number].get_active() and number != active_workspace): 149 | timestamp = int(time.time()) 150 | self.indicator.screen.get_workspace(number).activate(timestamp) 151 | 152 | class WorkspacesPreferences(): 153 | def __init__(self, indicator): 154 | self.indicator = indicator 155 | 156 | builder = Gtk.Builder() 157 | builder.add_from_file(os.path.abspath(os.path.dirname(__file__)) + "/" + "indicator-workspaces-preferences.glade") 158 | 159 | # Dynamic workspaces 160 | setting = Settings.new("org.pantheon.desktop.gala.behavior") 161 | self.switch_dyanamic_workspaces = builder.get_object("switch-dynamic-workspaces") 162 | setting.bind("dynamic-workspaces", self.switch_dyanamic_workspaces, 'active', SettingsBindFlags.DEFAULT) 163 | 164 | # Number of workspaces 165 | setting = Settings.new("org.gnome.desktop.wm.preferences") 166 | self.spin_button_number_of_workspaces = builder.get_object("spin-button-number-of-workspaces") 167 | self.label_number_of_workspaces = builder.get_object("label-number-of-workspaces") 168 | self.label_number_of_workspaces.set_sensitive(not self.switch_dyanamic_workspaces.get_active()) 169 | self.spin_button_number_of_workspaces.set_sensitive(not self.switch_dyanamic_workspaces.get_active()) 170 | setting.bind("num-workspaces", self.spin_button_number_of_workspaces, 'value', SettingsBindFlags.DEFAULT) 171 | 172 | # Show Label 173 | setting = Settings.new("apps.indicator-workspaces") 174 | self.switch_show_label = builder.get_object("switch-show-label") 175 | setting.bind("show-label", self.switch_show_label, 'active', SettingsBindFlags.DEFAULT) 176 | 177 | # Workspace names 178 | setting = Settings.new("org.gnome.desktop.wm.preferences") 179 | workspace_names = setting.get_value("workspace-names").unpack() 180 | self.entry_workspaces = [] 181 | # Get workspaces 182 | for i in range(1, 10): 183 | self.entry_workspaces.append(builder.get_object("entry-workspace-%d" % i)) 184 | # Populate workspace names 185 | for index, workspace_name in enumerate(workspace_names): 186 | self.entry_workspaces[index].set_text(workspace_name) 187 | 188 | self.dialog = builder.get_object("dialog") 189 | self.dialog.show_all() 190 | 191 | builder.connect_signals(self) 192 | 193 | def on_switch_dynamic_workspaces_active(self, switch, *args): 194 | self.label_number_of_workspaces.set_sensitive(not switch.get_active()) 195 | self.spin_button_number_of_workspaces.set_sensitive(not switch.get_active()) 196 | 197 | def on_entry_workspace_text(self, entry, *args): 198 | workspace_names = [] 199 | for workspace in self.entry_workspaces: 200 | workspace_names.append(workspace.get_text()) 201 | setting = Settings.new("org.gnome.desktop.wm.preferences") 202 | setting.set_value("workspace-names", Variant("as", workspace_names)) 203 | self.indicator.create_menu() 204 | self.indicator.set_active_workspace() 205 | 206 | def on_close_clicked(self, *args): 207 | self.dialog.destroy() 208 | 209 | # Delete preferences object on destroy 210 | def on_dialog_destroy(self, *args): 211 | del self.indicator.workspaces_preferences 212 | 213 | if __name__ == "__main__": 214 | signal.signal(signal.SIGINT, signal.SIG_DFL) 215 | indicator = IndicatorWorkspaces() 216 | Gtk.main() 217 | -------------------------------------------------------------------------------- /indicator-workspaces-preferences.glade: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 1 7 | 36 8 | 1 9 | 1 10 | 11 | 12 | 13 | False 14 | False 15 | center 16 | normal 17 | True 18 | True 19 | center 20 | False 21 | 22 | 23 | 24 | False 25 | 5 26 | 5 27 | 5 28 | vertical 29 | 30 | 31 | False 32 | end 33 | 34 | 35 | 36 | 37 | 38 | gtk-close 39 | True 40 | True 41 | True 42 | 19 43 | True 44 | 0.56000000238418579 45 | 46 | 47 | 48 | True 49 | True 50 | end 51 | 1 52 | 53 | 54 | 55 | 56 | False 57 | True 58 | end 59 | 0 60 | 61 | 62 | 63 | 64 | True 65 | False 66 | 5 67 | 5 68 | vertical 69 | 6 70 | 71 | 72 | 100 73 | 80 74 | True 75 | False 76 | 6 77 | 12 78 | True 79 | 80 | 81 | True 82 | True 83 | start 84 | start 85 | 1 86 | adjustment-spin-button-number-of-workspaces 87 | True 88 | 89 | 90 | 1 91 | 1 92 | 93 | 94 | 95 | 96 | True 97 | True 98 | True 99 | start 100 | start 101 | 102 | 103 | 104 | 1 105 | 0 106 | 107 | 108 | 109 | 110 | True 111 | False 112 | 1 113 | Dynamic Workspaces 114 | right 115 | 116 | 117 | 0 118 | 0 119 | 120 | 121 | 122 | 123 | True 124 | False 125 | 13 126 | 127 | 128 | 1 129 | 3 130 | 131 | 132 | 133 | 134 | True 135 | False 136 | 137 | 138 | True 139 | False 140 | baseline 141 | 12 142 | 13 143 | 144 | 145 | True 146 | True 147 | 0 148 | 149 | 150 | 151 | 152 | True 153 | False 154 | end 155 | 18 156 | 6 157 | 0 158 | Workspace Names 159 | end 160 | 161 | 162 | False 163 | True 164 | 1 165 | 166 | 167 | 168 | 169 | 0 170 | 3 171 | 172 | 173 | 174 | 175 | True 176 | False 177 | 1 178 | Number of Workspaces 179 | right 180 | 181 | 182 | 0 183 | 1 184 | 185 | 186 | 187 | 188 | True 189 | False 190 | 1 191 | Show Label 192 | right 193 | 194 | 195 | 0 196 | 2 197 | 198 | 199 | 200 | 201 | True 202 | True 203 | start 204 | start 205 | 206 | 207 | 1 208 | 2 209 | 210 | 211 | 212 | 213 | False 214 | True 215 | 0 216 | 217 | 218 | 219 | 220 | True 221 | True 222 | Workspace 1 223 | 224 | 225 | 226 | False 227 | True 228 | 1 229 | 230 | 231 | 232 | 233 | True 234 | True 235 | Workspace 2 236 | 237 | 238 | 239 | False 240 | True 241 | 2 242 | 243 | 244 | 245 | 246 | True 247 | True 248 | Workspace 3 249 | 250 | 251 | 252 | False 253 | True 254 | 3 255 | 256 | 257 | 258 | 259 | True 260 | True 261 | Workspace 4 262 | 263 | 264 | 265 | False 266 | True 267 | 4 268 | 269 | 270 | 271 | 272 | True 273 | True 274 | Workspace 5 275 | 276 | 277 | 278 | False 279 | True 280 | 5 281 | 282 | 283 | 284 | 285 | True 286 | True 287 | Workspace 6 288 | 289 | 290 | 291 | False 292 | True 293 | 6 294 | 295 | 296 | 297 | 298 | True 299 | True 300 | Workspace 7 301 | 302 | 303 | 304 | False 305 | True 306 | 7 307 | 308 | 309 | 310 | 311 | True 312 | True 313 | Workspace 8 314 | 315 | 316 | 317 | False 318 | True 319 | 8 320 | 321 | 322 | 323 | 324 | True 325 | True 326 | Workspace 9 327 | 328 | 329 | 330 | False 331 | True 332 | 9 333 | 334 | 335 | 336 | 337 | False 338 | True 339 | 1 340 | 341 | 342 | 343 | 344 | 345 | 346 | -------------------------------------------------------------------------------- /usr/share/applications/indicator-workspaces.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Indicator Workspaces 4 | Comment=Configure workspaces and interact with them in the panel. 5 | Icon=indicator-workspaces 6 | Exec=/usr/share/indicator-workspaces/indicator-workspaces 7 | OnlyShowIn=Unity;GNOME;Pantheon; 8 | NoDisplay=true 9 | StartupNotify=false 10 | Terminal=false 11 | X-Ubuntu-Gettext-Domain=indicator-workspaces 12 | -------------------------------------------------------------------------------- /usr/share/glib-2.0/schemas/apps.indicator-workspaces.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | true 6 | Show Label 7 | Shows the text label next to the indicator icon if true. 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/128x128/apps/indicator-workspaces.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 17 | 19 | 23 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 50 | 54 | 55 | 57 | 61 | 65 | 66 | 76 | 78 | 82 | 86 | 87 | 97 | 99 | 103 | 107 | 108 | 116 | 118 | 122 | 126 | 130 | 131 | 133 | 140 | 141 | 143 | 152 | 153 | 162 | 172 | 181 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | 193 | 194 | 198 | 202 | 209 | 217 | 224 | 225 | 226 | 235 | 244 | 249 | 252 | 261 | 270 | 279 | 288 | 297 | 306 | 307 | 308 | 309 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 1 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-10.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 10 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-11.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 11 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-12.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 12 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-13.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 13 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-14.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 14 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-15.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 15 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 16 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-17.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 17 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-18.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 18 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-19.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 19 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 2 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-20.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 20 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-21.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 21 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-22.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 22 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-23.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 23 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-24.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 24 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 25 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-26.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 26 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-27.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 27 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-28.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 28 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-29.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 29 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 3 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-30.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 30 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-31.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 31 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-32.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 32 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-33.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 33 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-34.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 34 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-35.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 35 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-36.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 30 | 32 | 39 | 36 44 | 45 | 46 | 47 | 56 | 57 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 4 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 5 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 6 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 7 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-8.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 8 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/16x16/status/indicator-workspaces-9.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 52 | 54 | 56 | 63 | 9 68 | 69 | 70 | 71 | 73 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/32x32/apps/indicator-workspaces.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 17 | 19 | 23 | 27 | 28 | 30 | 34 | 38 | 39 | 48 | 50 | 54 | 58 | 62 | 66 | 67 | 77 | 79 | 83 | 87 | 91 | 95 | 96 | 106 | 108 | 112 | 116 | 117 | 127 | 129 | 133 | 137 | 138 | 140 | 144 | 148 | 152 | 153 | 161 | 170 | 172 | 181 | 182 | 191 | 193 | 197 | 201 | 202 | 211 | 213 | 217 | 221 | 222 | 224 | 231 | 232 | 241 | 250 | 259 | 269 | 279 | 289 | 297 | 307 | 309 | 313 | 317 | 318 | 328 | 330 | 334 | 338 | 339 | 347 | 349 | 353 | 357 | 361 | 362 | 372 | 374 | 378 | 382 | 386 | 390 | 391 | 400 | 402 | 406 | 410 | 411 | 420 | 422 | 426 | 430 | 434 | 438 | 439 | 448 | 450 | 454 | 458 | 459 | 467 | 469 | 473 | 477 | 478 | 486 | 488 | 492 | 496 | 497 | 507 | 517 | 525 | 535 | 544 | 553 | 555 | 562 | 563 | 565 | 574 | 575 | 585 | 595 | 603 | 613 | 622 | 631 | 640 | 650 | 659 | 660 | 662 | 663 | 665 | image/svg+xml 666 | 668 | 669 | 670 | 671 | 672 | 675 | 679 | 683 | 690 | 698 | 705 | 706 | 707 | 716 | 725 | 729 | 734 | 738 | 747 | 756 | 765 | 774 | 783 | 792 | 793 | 794 | 795 | 796 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/48x48/apps/indicator-workspaces.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 17 | 19 | 23 | 27 | 28 | 30 | 34 | 38 | 42 | 46 | 47 | 49 | 53 | 57 | 61 | 65 | 66 | 76 | 78 | 82 | 86 | 87 | 97 | 99 | 103 | 107 | 108 | 110 | 114 | 118 | 122 | 123 | 131 | 133 | 137 | 141 | 142 | 144 | 148 | 152 | 153 | 155 | 159 | 163 | 164 | 173 | 182 | 191 | 200 | 209 | 219 | 221 | 228 | 229 | 231 | 240 | 241 | 242 | 244 | 245 | 247 | image/svg+xml 248 | 250 | 251 | 252 | 253 | 254 | 258 | 265 | 273 | 280 | 281 | 290 | 299 | 308 | 313 | 317 | 326 | 335 | 344 | 353 | 362 | 371 | 372 | 373 | 374 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/64x64/apps/indicator-workspaces.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 17 | 26 | 28 | 32 | 36 | 40 | 44 | 45 | 55 | 57 | 61 | 65 | 69 | 73 | 74 | 83 | 85 | 89 | 93 | 94 | 104 | 106 | 110 | 114 | 115 | 125 | 127 | 131 | 135 | 136 | 144 | 146 | 150 | 154 | 158 | 159 | 161 | 168 | 169 | 171 | 180 | 181 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | 193 | 194 | 196 | 200 | 204 | 211 | 219 | 226 | 227 | 228 | 237 | 246 | 247 | 252 | 255 | 264 | 273 | 282 | 291 | 300 | 309 | 310 | 311 | 312 | --------------------------------------------------------------------------------