Commit Graph
49 Commits
Author SHA1 Message Date
Jonas Ådahl 6583eae622 Remove usage of MetaScreen
As of the libmutter API version 3 MetaScreen does no longer exist.
Functionality that previously depended on MetaScreen has been moved
elsewhere (e.g. MetaDisplay or MetaWorkspaceManager etc).

https://bugzilla.gnome.org/show_bug.cgi?id=759538
2018-07-06 19:53:08 +02:00
Florian Müllner 3b5a1486de auto-move-windows: Track apps' windows instead of window creation
We currently track window creation to decide whether the new window
should be moved or not. In order for this to work, the window must
already have been matched to the correct application, which is only
the case when the properties used for app matching were supplied
during window creation.

This is usually the case on X11, but never on wayland. To avoid this
issue altogether, stop listening for raw window creations, and instead
track when a window is added to an application we are interested in.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/33
2018-01-18 13:26:15 +01:00
Florian Müllner 0721ed6504 auto-move-windows: Cache app configuration in map
While reading the configuration, processing it and iterating over the
configured apps to find a match isn't terribly expensive, but caching
the configuration in a map does save a bit of work, and makes for much
cleaner code in findAndMove().

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/33
2018-01-18 13:26:15 +01:00
Florian Müllner ec98cff9d9 auto-move-windows: Minor style cleanups
Use camelCase for variable names, call the first index variable 'i'
instead of 'j', and fix some whitespace errors.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/33
2018-01-18 13:26:15 +01:00
Florian Müllner 9ecd6bbb13 auto-move-windows: Remove unused imports
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/33
2018-01-18 13:26:15 +01:00
Florian Müllner 3b6cd04a59 auto-move-windows: Do not copy checkWorkspaces() method
When overriding an upstream method, copying the original method code
should always be a last resort, as the two code bases tend to get
out of sync and it often becomes hard to spot the modifications done
by the override. Both those issues can be avoided when figuring out
a way to split out the modifications and call the unmodified upstream
method - we are in luck with our checkWorkspaces() override, as we
can trick the upstream method into not removing workspaces we want
to keep instead of copying the method altogether.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/33
2018-01-18 13:26:15 +01:00
Florian Müllner ba27cc4a64 cleanup: Get rid of Lang.bind()
After replacing Lang.Class with ES6 classes and adopting arrow notation
for anonymous callbacks, we only use the Lang module to bind `this` to
named callbacks. However since ES5, this functionality is already provided
by Function.prototype.bind() - in fact, Lang.bind() itself uses it when
no extra arguments are specified.

So just use the built-in function directly instead of the wrapper.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:50:52 +01:00
Florian Müllner acb44de469 cleanup: Port GObject classes to ES6 classes
GJS added API for defining GObject classes with ES6 class syntax
last cycle, use it to port the remaining Lang.Class classes to
the new syntax.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:50:52 +01:00
Florian Müllner 48399d46c0 cleanup: Port non-GObject classes to ES6 classes
ES6 finally adds standard class syntax to the language, so we can
replace our custom Lang.Class framework with the new syntax. Any
classes that inherit from GObject will need special treatment,
so limit the port to regular javascript classes for now.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:50:46 +01:00
Florian Müllner 30e7ff5a8f cleanup: Use method syntax
Modern javascript has a short-hand for function properties, embrace
it for better readability and to prepare for porting to ES6 classes.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:50:28 +01:00
Florian Müllner 968ae427f1 cleanup: Use arrow-notation for anonymous functions
Arrow notation is great, but as we only started using it recently,
we currently have a wild mix of Lang.bind(), function() and () => {}.
To make the style consistent again, change all anonymous functions
to arrow notation.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:40:32 +01:00
Florian Müllner 4ee30a5445 cleanup: Replace tabs with spaces
Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/30
2017-12-01 20:38:38 +01:00
Florian Müllner ba38019049 build: Remove autotools support
Complete the switch to meson and drop autotools support ...

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/31
2017-12-01 17:43:21 +01:00
Florian Müllner 3ab01aebec build: Support the meson build system
Meson is on track to replace autotools as the build system of choice,
so support it in addition to autotools.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/31
2017-12-01 17:41:04 +01:00
Florian Müllner 2460ac9df8 auto-move: Remove unused imports 2017-10-26 20:03:12 +02:00
Florian Müllner db3e910b76 build: Say good-bye to intltool
intltool is unmaintained nowadays while upstream gettext gained
support for everything we used it for, so make the switch.

https://bugzilla.gnome.org/show_bug.cgi?id=769077
2016-08-19 22:17:07 +02:00
Florian Müllner d0110cf18a auto-move: Tweak prefs UI
- make tree view scrollable when list grows large
- add some borders
- use symbolic icons instead of (deprecated) stock items
- adjust spacing/alignment
- disable remove button when no item is selected

https://bugzilla.gnome.org/show_bug.cgi?id=730843
2014-05-28 01:14:42 +02:00
Florian Müllner 80f49c2ed7 auto-move-windows: Never remove the active workspace
Follow core shell in never removing the active workspace.

https://bugzilla.gnome.org/show_bug.cgi?id=728865
2014-04-24 19:15:43 +02:00
Florian Müllner d9b543c6e0 auto-move-windows: Never show the overview after removing workspace
This follows the core shell behavior, where we stopped doing this
a while ago.

https://bugzilla.gnome.org/show_bug.cgi?id=728865
2014-04-24 19:15:43 +02:00
Florian Müllner c005393398 auto-move-windows: Take workspaces in startup sequences into account
See https://bugzilla.gnome.org/show_bug.cgi?id=664202 for the
corresponding patch in core shell.

https://bugzilla.gnome.org/show_bug.cgi?id=728865
2014-04-24 19:15:42 +02:00
Florian Müllner 7f008aa3ff auto-move-windows: Respect keep-alive flag in checkWorkspaces
https://bugzilla.gnome.org/show_bug.cgi?id=728865
2014-04-24 19:15:42 +02:00
Florian Müllner c8b67cb84d auto-move-windows: Move check for dynamic workspaces
Move the check into checkWorkspaces rather than replacing the function
conditionally, to handle changes to the setting.

https://bugzilla.gnome.org/show_bug.cgi?id=728865
2014-04-24 19:15:40 +02:00
Florian Müllner fee5495692 auto-move-windows: Fix fallout from API change
MetaWindowActor.get_workspace() was removed, however the now used
MetaWindow.get_workspace() returns a MetaWorkspace rather than an
index, so can't be used directly.

https://bugzilla.gnome.org/show_bug.cgi?id=728820
2014-04-24 13:09:11 +02:00
Florian Müllner ec49693c6f auto-move-windows: Remove unused parameters
meta_window_change_workspace_by_index() lost its timestamp parameter
a while ago.
2014-04-24 11:57:10 +02:00
Giovanni Campagna 4a5521a9ba auto-move-windows: update for gnome-shell changes
meta_window_actor_get_workspace() was removed.
2014-02-20 01:10:15 +01:00
Florian Müllner 0bcb1571da auto-move-windows: Adjust to API changes
https://bugzilla.gnome.org/show_bug.cgi?id=724119
2014-02-11 17:17:22 +01:00
Giovanni Campagna 63653406a3 Update all extensions for gnome-shell 3.9.90
addActor() gone from PopupBaseMenuItem, arrows in menus,
SystemStatusButton gone.
The auto-move-windows cleanup is probably older, weird noone
noticed before.

Anyway, I need a pitch fork.
2013-08-18 22:01:35 +02:00
Giovanni Campagna 274a6f040c Update descriptions of extensions
Mark classic mode extensions as such, so bug reports don't go
lost in my inbox.
2013-05-20 19:06:59 +02:00
Giovanni Campagna cd7d9aa2a4 Auto-move-windows: don't manage workspaces if they're not dynamic
The workspace management done by auto-move-windows is semi-dynamic,
in that it collects empty workspaces at the end, and ensures there
is always one free.
This is undesirable when the user explicitly choose static
workspaces in the tweak tool or in dconf-editor.
2012-09-05 00:50:35 +02:00
Giovanni Campagna f77bf60bcb auto-move-windows/prefs: filter out apps that don't exist
Recognize if the desktop file no longer exists and remove its
entry in GSettings, instead of crashing because of a null GAppInfo.
2012-04-29 21:11:00 +02:00
Giovanni Campagna 468ed6cfe6 auto-move-windows: introduce configuration dialog
Using the new configuration framework from gnome-shell, add
a simple tree view to configure the automatic moving rules.
2012-02-13 18:55:15 +01:00
Giovanni Campagna 9b6374881d all: port to the new class framework
A long due update, since this was merged in gjs and core shell.
We no longer need to mess with __proto__ and prototype, and can
use decent syntax for true object oriented programming.
(This affects all except xrandr-indicator, since I want to port
that to GDBus too, using the new bindings right from the start)
2012-02-10 15:16:46 +01:00
Giovanni Campagna 3630228cac all: port to the new convienence module
Retrieve Convenience from the extension helper object (Me), and
pass no arguments to initTranslations and getSettings (since the
metadata has all that is required)
2012-02-09 18:43:28 +01:00
Giovanni Campagna 9ebfd1f495 build system: factor out setting schema generation
Introduce a common settings.mk file, which is included in extensions
that need GSettings, to ensure that conventions are respected, and
necessary fixes can be applied from one place.
2012-02-08 18:01:00 +01:00
Giovanni Campagna dfca68062c build system: add additional automatic metadata
Add "gettext-domain", "extension-id" (containing the base part of the
UUID) and "gschemabase" (which, combined with "extension-id", gives
the GSettings schema) to metadata.json, autogenerated by the build
system.
2012-02-08 18:00:56 +01:00
Giovanni Campagna 7a6777f703 Remove all references to localedir from metadata.json
It is not used anymore, now that translations are bundled with
the extension. Also, in the zip files it ended up with my home
folder, which is not nice.
2011-11-20 00:40:20 +01:00
Giovanni Campagna c5d79240fd Introduce a convenience module for initialization
Common code for retrieving translations and GSettings schemas has
been factored out into lib/convenience.js, which is part of
every extension installation.
Since that code relies on renames done at zip file creation time,
extensions can no longer be installed with "make install". Instead,
one should create the zip file and install it with the tweak-tool.
There is also a bash script, local-install.sh, that will install
everything in zip-files.
Also, since the GSettingsSchemaSource code is not yet in a stable
GLib release, extensions using GSettings have seen their stable
shell version removed.
2011-11-19 16:54:20 +01:00
Giovanni Campagna 9e4156a706 Add capability to build extension zip-files
Now, typing "make zip-file" will create a standard zip-file for each
extension, with everything necessary, including translations and GSettings schemas.
These files can then be installed with the tweak-tool or uploaded
at extensions.gnome.org

Based on an earlier patch by Jasper St. Pierre.
2011-11-19 15:42:27 +01:00
Giovanni Campagna 00bb650c6c Add 3.2 tags to supported version
This is the stable release, so we support all of GNOME Shell
stable cycle without updates.
(As said earlier, dock and alternate-tab have issues, so they're
not marked 3.2 but just 3.2.0)
2011-10-03 17:33:28 +01:00
Giovanni Campagna 5f299e109b auto-move-windows: port to new extension API
main() has been replaced by init(), enable() and disable()
I'm not sure it actually disables, it should unless you have more
extensions messing with the same methods.
2011-08-18 16:20:49 +02:00
Alessandro CrismaniandGiovanni Campagna 9a8704203b AutoMoveWindows: show overview when the last window workspace is closed
Using the auto move window the overview is not shown when the last
window on the last workspace is closed, instead the workspace before is
activated. This differs from the core gnome-shell's behaviour. Fix the
extension to show the ovreview instead of changing workspace when the
last window is closed on the last workspace. The fix is basically merged
from gnome-shell master.

Summarizing, the behaviour is now:
- The last window is closed on any workspace but the last: do nothing
- The last window is closed on the last workspace: show the overview
  instead of switching to the "upper" workspace

https://bugzilla.gnome.org/show_bug.cgi?id=651586
2011-07-09 15:59:45 +02:00
Alessandro CrismaniandGiovanni Campagna 68629ea7a6 Auto Move Windows: open overview when last window is closed
Using the auto move window the overview is not shown when the last
window on a workspace is closed, instead the workspace before is
activated. Fix the extension to show the ovreview instead of changing
workspace when the last window is closed. The fix is basically merged
from gnome-shell master.

https://bugzilla.gnome.org/show_bug.cgi?id=651586
2011-07-09 15:56:58 +02:00
Giovanni Campagna fbbe5ba764 Add url property in the metadata
GNOME Shell emits a warning when "url" is absent in metadata.json,
adding it costs nothing. Links to the GIT repository because I
found no better page to reference.
2011-02-26 16:41:52 +01:00
Giovanni Campagna 4e12738df2 AutoMoveWindows: override Main._checkWorkspace
Modify workspace management to only remove empty workspaces at end,
which is more consistent with a fixed workspace layout.
Also, some whitespace cleanup.

Patch provided by Thomas Bouffon <thomas.bouffon@gmail.com>
2011-02-23 19:00:39 +01:00
Giovanni Campagna e7c2d2c277 auto-move-windows: fix off-by-one error
The internal workspace index starts from 0, but the one in the
settings starts from 1.
2011-02-20 18:41:47 +01:00
Giovanni Campagna f92addbbf6 Minor fixes
Fix the translation of xrandr-indicator, make the dock translatable
and correct the original author of auto-move-windows.
2011-02-20 17:50:40 +01:00
Giovanni Campagna 53384f9eaf AutoMoveWindows: try harder to get an application for a window
First of all, remove windows that are not interesting (like popup
menus and tooltips). Then, queue once an idle if the app is null,
in the hope that ShellWindowTracker picks up the window.
2011-02-19 20:33:51 +01:00
Giovanni Campagna 7a4e22feec Build system: fix, and make quieter
Fix for make distcheck.
At the same time, use silent rules when expanding metadata.json.
2011-02-19 18:54:57 +01:00
Giovanni Campagna ecd7c1754d AutoMoveWindows: new extension
Introduce a new extensions that allows to manage your workspaces
more easily, assigning a specific workspace to each application,
as soon as it creates a windows, in manner configurable with a
GSettings key.
2011-02-19 18:39:38 +01:00