Organize windows in customizable snap zones like FancyZones on Windows.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-X-004 warning
extensions should avoid synchronous file IO in shell code
Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.
extension.js:1460
GLib.file_get_contents(filePath)
EGO-P-006 warning
unnecessary build and translation artifacts should not be shipped
Compiled GSettings schemas should not be shipped for 45+ packages.
Don't include unnecessary files
schemas/gschemas.compiled
schemas/gschemas.compiled
EGO-L-002 warning
objects created by extension should be destroyed in disable()
Objects assigned in `enable()` are missing matching `.destroy()` calls in `disable()` or its helper methods.
extension.js:606
this.widget = new St.BoxLayout({ style_class: styleClass })
extension.js:797
this.buttonWidget = new St.Button({ style_class: 'tab-button' })
extension.js:1032
this.widget = new St.Button({ style_class: 'size-button' })
extension.js:1109
this.stage = new Clutter.Actor({
name: 'gsnap-stage',
visible: false,
width: 1000,
height: 1000,
x: 0,
y: 0,
})
extension.js:2081
this.indicator = new PanelMenu.Button(0.0, this.metadata.name, false)
EGO-L-005 warning
owned object references should be released in disable()
Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.
extension.js:606
this.widget = new St.BoxLayout({ style_class: styleClass })
extension.js:797
this.buttonWidget = new St.Button({ style_class: 'tab-button' })
extension.js:1032
this.widget = new St.Button({ style_class: 'size-button' })
extension.js:1109
this.stage = new Clutter.Actor({
name: 'gsnap-stage',
visible: false,
width: 1000,
height: 1000,
x: 0,
y: 0,
})
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:799
this.buttonWidget.connect('button-press-event', () => {
Main.activateWindow(this.window);
})
extension.js:1036
this.widget.connect('button-press-event', () => {
let [x, y] = global.get_pointer();
this.startX = Math.floor(x);
this.startY = Math.floor(y);
this.isMoving = !this.isMoving;
})
extension.js:2219
item.actor.connect('enter-event', () => {
this.showLayoutPreview(monitorIndex, this.layouts.definitions[i]);
})
extension.js:1830
global.display.connect('grab-op-begin', (_display, win) => {
// only start isGrabbing if is a valid window to avoid conflict
// with dash-to-panel/appIcons.js:1021 where are emitting a grab-op-begin
// without never emitting a grab-op-end
if (
extension.js:1852
global.display.connect('grab-op-end', (_display, win) => {
const useModifier = getBoolSetting(USE_MODIFIER);
const preventSnapping = getBoolSetting(PREVENT_SNAPPING);
this.isGrabbing = false;
if (!validWindow(win)) {
return;
extension.js:1818
global.display.connect('in-fullscreen-changed', (_display) => {
activeMonitors().forEach(m => {
var _a;
if (global.display.get_monitor_in_fullscreen(m.index)) {
(_a = this.tabManager[m.index]) === null || _a === void 0 ? void 0
extension.js:2222
item.actor.connect('leave-event', () => {
this.hideLayoutPreview();
})
extension.js:1889
this.modifiersManager.connect("changed", () => {
if (!this.isGrabbing) {
return;
}
const spanMultipleZones = getBoolSetting(SPAN_MULTIPLE_ZONES);
if (spanMultipleZones) {
const allow_m
extension.js:1810
global.display.connect('window-created', (_display, win) => {
if (validWindow(win)) {
activeMonitors().forEach(m => {
var _a;
(_a = this.tabManager[m.index]) === null || _a === void 0 ? void 0 : _a.layoutWindows();
| Version | Status |
|---|---|
| 27 | Active |
| 26 | Active |
| 25 | Active |
| 24 | Active |
| 23 | Active |
| 22 | Active |
| 21 | Rejected |
| 20 | Rejected |
| 19 | Active |
| 18 | Rejected |
| 17 | Rejected |
| 16 | Active |
| 15 | Active |
| 14 | Active |
| 13 | Active |
| 12 | Active |
| 11 | Active |
| 10 | Rejected |
| 9 | Active |
| 8 | Rejected |
| 7 | Rejected |
| 6 | Active |
| 5 | Active |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Rejected |