Skip to content

Releases: carlo9890/gnome-window-control

GNOME Window Control v19

Choose a tag to compare

@hk9890 hk9890 released this 28 Oct 20:28
6a10e08

What's new

  • No change in behaviour for wctl or the extension. When the extension is disabled, it now removes its pending timers in one place that a reviewer can check. This release goes to the extensions.gnome.org review.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v19.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v19/install-wctl.sh | bash

GNOME Window Control v18

Choose a tag to compare

@hk9890 hk9890 released this 26 Oct 08:35
f1b5738

What's new

  • A D-Bus method that hits a bug now fails with org.gnome.gjs.JSError.<name> instead of answering false or an empty list.
  • WaitForWindow and WaitForGeometry no longer answer org.freedesktop.DBus.Error.Failed for a bug; on GNOME 45-49 such a call can end in a D-Bus timeout.
  • The InvalidArgs messages of Resize and MoveResize are reworded.
  • An extension copied by hand without its compiled schema no longer enables. Install with ./scripts/build.sh install or from extensions.gnome.org.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v18.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v18/install-wctl.sh | bash

GNOME Window Control v17

Choose a tag to compare

@hk9890 hk9890 released this 24 Oct 08:54
c6dcb20

What's new

  • Breaking: an empty -s "" now fails with Substring must not be empty; before, it matched every window.
  • Breaking: wctl exits 5 (was 1) when it cannot reach the session bus, and names DBUS_SESSION_BUS_ADDRESS in the hint.
  • Breaking: wctl rules test exits 0 (was 2) when the matched rule names a missing monitor; --json reports "skipped": "no such monitor".
  • wctl rules add --class-prefix <TEXT> tile left (or "class_prefix" in rules.json) matches the start of the WM class. It needs the v17 extension.
  • wctl list --json has has_been_shown, false for a window that mutter has not mapped and placed yet.
  • WCTL_VERSION=v17 ./install-wctl.sh pins the release to install (v17 or later) and verifies its checksum.

Fixed

  • Installing with curl ... | bash failed at once with an unbound-variable error.
  • Control characters in a window title or WM class could corrupt the output of wctl info, focused, list and rules test; they now show as ?.
  • wctl rules add and wctl rules remove replaced a symlinked rules.json with a regular file.
  • wctl wait could return a window that was created minimized and never shown.
  • Tab completion of a window id in bash and zsh could freeze the prompt.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v17.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v17/install-wctl.sh | bash

GNOME Window Control v16

Choose a tag to compare

@hk9890 hk9890 released this 14 Oct 20:33
ea025ce

Changed

  • Enabling and disabling the extension no longer writes "Enabling extension...", "Extension enabled", "Disabling extension..." and "Extension disabled" to the journal.

Fixed

  • The extension now removes its pending unmaximize timer whenever a shortcut or a rule gives up the wait, and on disable, in a form the extensions.gnome.org review accepts. v15 was not published there for this reason.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v16.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v16/install-wctl.sh | bash

GNOME Window Control v15

Choose a tag to compare

@hk9890 hk9890 released this 10 Oct 18:35
652d80e

What's new

  • A rule can match the start or the end of a title: "title_prefix" and "title_suffix" in rules.json, or wctl rules add --title-prefix Report tile left. Extension and wctl must both be v15.
  • wctl rules add -c Slack --workspace 2 writes a rule that only moves the window to a workspace or a monitor.

Changed

  • A selector that matches no window (-c, -t, -s, -p, focused) exits 2, not 1. wctl rules remove with an index past the end exits 1, not 2.
  • wctl minimize on a window the shell does not let minimize exits 3 with "cannot be minimized"; it printed "Window minimized".

Fixed

  • An unreadable rules.json left the old rules active; it now turns them off, as an invalid file does.
  • wctl rules add and remove reset the file mode of rules.json.
  • When one keyboard shortcut could not be registered, some shortcuts stayed active and keybindings was still reported.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v15.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v15/install-wctl.sh | bash

GNOME Window Control v14

Choose a tag to compare

@hk9890 hk9890 released this 09 Oct 07:46
84a4fc2

Fixed

  • The extension no longer blocks GNOME Shell while it reads rules.json.
  • rules.json: an array given for tile or for a place token is now refused by the extension, as wctl rules check already did.
  • Bash completion offers the wctl rules subcommand options after --timeout.
  • The extension description now names the keyboard shortcuts and the window rules.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v14.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v14/install-wctl.sh | bash

GNOME Window Control v13

Choose a tag to compare

@hk9890 hk9890 released this 04 Oct 17:25
e3f826f

What's new

  • wctl minimize <WINDOW> --no-animation and wctl unminimize <WINDOW> --no-animation hide and show a window without the shell's minimize animation, for a window a script toggles, such as a popup.
  • wctl activate <ID> --no-animation restores and focuses a minimized window in one step, without the animation. The flag takes a window ID only.
  • On GNOME 49 and later, a place or tile rule in rules.json takes effect before a Wayland window is drawn, so the window opens in place instead of jumping there.
  • Three D-Bus methods serve the flags: MinimizeNoAnimation, UnminimizeNoAnimation and ActivateNoAnimation.
  • wctl version --json reports the capabilities no-animation and activate-no-animation when the loaded extension supports them.
  • Leave a frame between a --no-animation minimize and the unminimize that reverses it; within the same frame the skip falls on the window's next animation instead.

Fixed

  • A rules.json saved at the moment a window opened could apply the wrong rule to that window.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v13.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v13/install-wctl.sh | bash

GNOME Window Control v12

Choose a tag to compare

@hk9890 hk9890 released this 02 Oct 15:34
5b68dc1

What's new

  • Windows place themselves when they open: rules in
    ~/.config/gnome-window-control/rules.json tile, place or center a new window
    by class, title or app id, and can send it to a workspace or monitor.
  • wctl rules add -c kitty tile left writes a rule; wctl rules list,
    wctl rules remove 0, wctl rules check and wctl rules test -c kitty
    manage, validate and explain the file.
  • Keyboard shortcuts: Super+Ctrl plus a numpad key tiles the focused window to
    the matching grid cell, and Super+Ctrl+KP_Add toggles wide-right and
    wide-left. Every shortcut is a GSettings key you can rebind or unbind.
  • Two new tile positions, wide-left and wide-right: wctl tile focused wide-right.
  • wctl version --json lists the extension's capabilities, so a script can
    ask for rules or keybindings by name.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v12.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v12/install-wctl.sh | bash

GNOME Window Control v11

Choose a tag to compare

@hk9890 hk9890 released this 05 Sep 20:35
5af1988

Breaking

  • wctl workspace N now exits 2 when the workspace does not exist and 3 when the
    shell refused the switch. It used to report both the same way.
  • A usage error is now reported as a usage error. Commands using focused or
    -c/-t/-s/-p called the bus first, so wctl tile -c kitty nowhere said the
    extension was not running instead of naming the bad position.

Fixed

  • wctl -t --json and friends: --json and --settled are no longer taken out
    of the value slot of -t/-s/-c, so a window whose title is --json can be
    addressed.
  • wctl place and wctl center no longer echo back a rectangle the shell never
    used, and out-of-range coordinates are refused instead of wrapping.
  • wctl sticky <WINDOW> off reports failure when the window stays on all
    workspaces. With workspaces-only-on-primary, a window on a secondary monitor
    does, and the command used to claim success.
  • Activating by PID 0 no longer picks an arbitrary window, and an empty -s
    substring no longer matches every open window in wctl activate and
    wctl wait.
  • The state commands reject stray trailing arguments, and wctl wait -p refuses
    a PID that is not a positive number.
  • Window PIDs are no longer written to the journal.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v11.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v11/install-wctl.sh | bash

GNOME Window Control v10

Choose a tag to compare

@hk9890 hk9890 released this 03 Sep 12:35
f9dafa2

What's new

  • wctl workarea [<MONITOR>] [--json] reports a monitor's usable area — the rectangle minus panels and docks, which wctl monitors never gave you. Defaults to the primary monitor.
  • wctl resolve-place [--monitor <N>] <X> <Y> <W> <H> --json reports the rectangle a placement resolves to, with no window and nothing moved. Use it to size a window before it exists.
  • --json on place, tile and center reports the workarea used and the rectangle wctl resolved, so a script can verify a placement by comparing against it instead of recomputing the percentages.
  • --settled on place, tile and center returns only once the frame has stopped changing, and reports where it stopped.
  • wctl version --json reports the extension version GNOME Shell has actually loaded and whether it matches this wctl — so an install the shell has not picked up yet shows as a mismatch instead of looking fine.
  • wctl --timeout <SECONDS>, or $WCTL_TIMEOUT, bounds how long any call waits for GNOME Shell to reply. The default is still 25 s, which is far too long for a command bound to a key.

You must act on

  • Upgrade the extension and wctl together. Move, Resize and MoveResize no longer return a success flag; they raise a named D-Bus error instead, so an older wctl cannot read the new reply. On Wayland the extension needs a logout to take effect — wctl version --json tells you which side of that you are on.
  • Exit codes now say why a command failed: 2 not found, 3 refused (the frame is pinned by fullscreen, maximize or tiling), 4 timed out, 5 extension unusable. 1 remains the catch-all for usage errors, so a script that only tests for a non-zero status is unaffected.

Fixed

  • A geometry command refused because the window was tiled now says so. It used to report "not found", because a bare success flag could not say which failure had happened and the guess could not see tiling at all.

Install

Extension:

gnome-extensions install window-control@carlo9890.github.io_v10.zip

Log out and back in (Wayland), or press Alt+F2, type r, Enter (X11), then:

gnome-extensions enable window-control@carlo9890.github.io

wctl:

curl -fsSL https://github.com/carlo9890/gnome-window-control/releases/download/v10/install-wctl.sh | bash