Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ef098d8986 | |||
| 18d698cf7e | |||
| 0aa80fda6a | |||
| 7e51b5ff62 | |||
| fe41ea8312 | |||
| 5020250699 | |||
| 16688d6996 | |||
| 6b8ac746aa | |||
| bcc5044cf8 | |||
| e2df9fb038 | |||
| 5e23390911 | |||
| 7ba8dd1b0f | |||
| 849e2dc177 | |||
| 982ca71642 | |||
| a62c2307f9 | |||
| b1c4924276 | |||
| 73874fbd4b | |||
| e4af31cb90 | |||
| b400189b4f | |||
| 568ceb7823 | |||
| 138701a33d | |||
| bbe09af89b | |||
| 3331c84f31 | |||
| 6591690c69 | |||
| 40bea7a937 | |||
| 4ea80d27bf | |||
| 55dd6ca691 | |||
| 573ddc2702 | |||
| a4ce7f2613 | |||
| f2971f2c1c | |||
| 72fee16254 | |||
| d127480261 | |||
| 24f5dba546 |
@@ -12,7 +12,7 @@
|
||||
###############################################################################
|
||||
|
||||
UUID := simple-tiling@domoel
|
||||
VERSION := 7
|
||||
VERSION := 7.2
|
||||
EXTDIR := $(HOME)/.local/share/gnome-shell/extensions
|
||||
|
||||
COMMON_FILES := prefs.js schemas exceptions.txt locale *.css README.md LICENSE
|
||||
|
||||
@@ -16,7 +16,7 @@ A lightweight, opinionated, and automatic tiling window manager for GNOME Shell
|
||||
|
||||
Simple Tiling is a GNOME Shell extension created for users who want a clean, predictable, and automatic tiling layout without the complexity of larger, more feature-heavy tiling extensions. It is designed to be simple to configure and intuitive to use, focusing on a core set of essential tiling features.
|
||||
|
||||
This extension was built from the ground up to be stable and performant on **GNOME Shell 3.38**. However it is now also supporting modern gnome shells up to **version 48**.
|
||||
This extension was built from the ground up to be stable and performant on **GNOME Shell 3.38**. However it is now also supporting modern gnome shells up to **version 49**.
|
||||
|
||||
## Features
|
||||
|
||||
@@ -37,7 +37,7 @@ This extension was built from the ground up to be stable and performant on **GNO
|
||||
|
||||
Please note that this extension has been developed for a very specific environment. However, with the latest updates, I have ensured that modern Gnome Shells and Wayland are also supported.
|
||||
|
||||
* **GNOME Shell Version:** **3.38 - 48**
|
||||
* **GNOME Shell Version:** **3.38 - 49**
|
||||
* **Session Type:** **X11** (Wayland is still in beta but should be fine!).
|
||||
* **Monitor Setup:** **Single monitor only.** Multi-monitor support is not yet implemented.
|
||||
|
||||
@@ -49,7 +49,7 @@ Use the [GNOME Shell Extensions website](https://extensions.gnome.org/extension/
|
||||
|
||||
#### Manual Installation
|
||||
|
||||
The repository includes a Makefile that produces ready‑to‑install ZIP packages for the two supported GNOME‑Shell lines (a legacy build Gnome-Shell 3.38 - 44 and a modern build for Gnome-Shell 45+).
|
||||
The repository includes a Makefile that produces ready‑to‑install ZIP packages for the three supported Gnome‑Shell lines (a legacy build for Gnome-Shell 3.38, an interim build for Gnome-Shell 40 - 44 and a modern build for Gnome-Shell 45+).
|
||||
|
||||
1. **Clone the Source**
|
||||
```bash
|
||||
@@ -62,10 +62,10 @@ The repository includes a Makefile that produces ready‑to‑install ZIP packag
|
||||
Open the Terminal within the Simple-Tiling directory and run
|
||||
```bash
|
||||
make install-legacy # Installs Legacy Extension (Gnome-Shell 3.38)
|
||||
make install-interim # Installs Modern Extension (Gnome-Shell 40 - 44)
|
||||
make install-interim # Installs Interim Extension (Gnome-Shell 40 - 44)
|
||||
make install-modern # Installs Modern Extension (Gnome-Shell 45+)
|
||||
```
|
||||
**Note:** This command will directly install the extension in the choosen variant (legacy or modern). If you want to manually create and upload the extension to your gnome extensions directory `(~/.local/share/gnome-shell/extensions)` you can just run `make build` to create both versions as .zip or `make build-legacy` or `make build-modern` to create them seperately as .zip. To enable them you need to unzip these archives and put them into your extensions directory.
|
||||
**Note:** This command will directly install the extension in the choosen variant (legacy, interim or modern). If you want to manually create and upload the extension to your gnome extensions directory `(~/.local/share/gnome-shell/extensions)` you can just run `make build` to create all versions as .zip or `make build-legacy`, `make build-interim` or `make build-modern` to create them seperately as .zip. To enable them you need to unzip these archives and put them into your extensions directory.
|
||||
|
||||
4. **Reload the shell**
|
||||
```bash
|
||||
@@ -122,4 +122,3 @@ This extension was built to solve a specific need. However, future enhancements
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the `LICENSE` file for details.
|
||||
|
||||
|
||||
+8
-6
@@ -5,12 +5,13 @@
|
||||
|
||||
|
||||
// ── GLOBAL IMPORTS ────────────────────────────────────────
|
||||
import { Extension } from "resource:///org/gnome/shell/extensions/js/extensions/extension.js";
|
||||
import * as Main from "resource:///org/gnome/shell/ui/main.js";
|
||||
import Meta from "gi://Meta";
|
||||
import Shell from "gi://Shell";
|
||||
import Gio from "gi://Gio";
|
||||
import GLib from "gi://GLib";
|
||||
import Meta from 'gi://Meta';
|
||||
import Shell from 'gi://Shell';
|
||||
import Gio from 'gi://Gio';
|
||||
import GLib from 'gi://GLib';
|
||||
import Clutter from 'gi://Clutter';
|
||||
import { Extension } from 'resource:///org/gnome/shell/extensions/js/extensions/extension.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
|
||||
// ── CONST ────────────────────────────────────────────
|
||||
const WM_SCHEMA = 'org.gnome.desktop.wm.keybindings';
|
||||
@@ -104,6 +105,7 @@ class InteractionHandler {
|
||||
key,
|
||||
this._settings,
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Shell.ActionMode.NORMAL,
|
||||
(..._args) => handler(this)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
"45",
|
||||
"46",
|
||||
"47",
|
||||
"48"
|
||||
"48",
|
||||
"49"
|
||||
],
|
||||
"settings-schema": "org.gnome.shell.extensions.simple-tiling.domoel",
|
||||
"preferences_ui": "prefs.js",
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Simple‑Tiling – MODERN (GNOME Shell 45+) //
|
||||
// Simple‑Tiling – MODERN (GNOME Shell 45+) //
|
||||
// © 2025 domoel – MIT //
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// ── GLOBAL IMPORTS ────────────────────────────────────────
|
||||
import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import Meta from 'gi://Meta';
|
||||
import Shell from 'gi://Shell';
|
||||
import Gio from 'gi://Gio';
|
||||
import GLib from 'gi://GLib';
|
||||
import Clutter from 'gi://Clutter';
|
||||
import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||
import * as Config from 'resource:///org/gnome/shell/misc/config.js';
|
||||
|
||||
// ── CONST ────────────────────────────────────────────
|
||||
const WM_SCHEMA = 'org.gnome.desktop.wm.keybindings';
|
||||
@@ -31,6 +32,17 @@ const KEYBINDINGS = {
|
||||
'focus-down': (self) => self._focusInDirection('down'),
|
||||
};
|
||||
|
||||
// ── VERSION CHECK ────────────────────────────────────────────
|
||||
let shellVersion;
|
||||
if (Shell.get_session) {
|
||||
shellVersion = Shell.get_session().get_shell_version();
|
||||
} else if (Config.PACKAGE_VERSION) {
|
||||
shellVersion = Config.PACKAGE_VERSION;
|
||||
} else {
|
||||
shellVersion = global.shell_version;
|
||||
}
|
||||
const SHELL_MAJOR = parseInt(shellVersion.split('.')[0]);
|
||||
|
||||
// ── HELPER‑FUNCTION ────────────────────────────────────────
|
||||
function getPointerXY() {
|
||||
if (global.get_pointer) {
|
||||
@@ -347,8 +359,15 @@ class Tiler {
|
||||
if (index > -1) this._centerTimeoutIds.splice(index, 1);
|
||||
|
||||
if (!win || !win.get_display()) return GLib.SOURCE_REMOVE;
|
||||
if (win.get_maximized())
|
||||
win.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||
if (SHELL_MAJOR < 49) {
|
||||
if (win.get_maximized()) {
|
||||
win.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||
}
|
||||
} else {
|
||||
if (win.is_maximized()) {
|
||||
win.unmaximize();
|
||||
}
|
||||
}
|
||||
|
||||
const monitorIndex = win.get_monitor();
|
||||
const workspace = this._workspaceManager.get_active_workspace();
|
||||
@@ -558,7 +577,15 @@ class Tiler {
|
||||
height: workArea.height - 2 * this._outerGapVertical,
|
||||
};
|
||||
windowsToTile.forEach((win) => {
|
||||
if (win.get_maximized()) win.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||
if (SHELL_MAJOR < 49) {
|
||||
if (win.get_maximized()) {
|
||||
win.unmaximize(Meta.MaximizeFlags.BOTH);
|
||||
}
|
||||
} else {
|
||||
if (win.is_maximized()) {
|
||||
win.unmaximize();
|
||||
}
|
||||
}
|
||||
});
|
||||
if (windowsToTile.length === 1) {
|
||||
windowsToTile[0].move_resize_frame(
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import { ExtensionPreferences } from 'resource:///org/gnome/shell/extensions/js/extensions/prefs.js';
|
||||
import Adw from 'gi://Adw';
|
||||
import Gio from 'gi://Gio';
|
||||
import Gtk from 'gi://Gtk';
|
||||
import GLib from 'gi://GLib';
|
||||
import { ExtensionPreferences, gettext as _ } from 'resource:///org/gnome/shell/extensions/js/extensions/prefs.js';
|
||||
|
||||
export default class SimpleTilingPrefs extends ExtensionPreferences {
|
||||
fillPreferencesWindow(window) {
|
||||
+1
-1
@@ -4,11 +4,11 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
// ── GLOBAL IMPORTS ────────────────────────────────────────
|
||||
import { ExtensionPreferences } from 'resource:///org/gnome/shell/extensions/prefs.js';
|
||||
import Adw from 'gi://Adw';
|
||||
import Gio from 'gi://Gio';
|
||||
import Gtk from 'gi://Gtk';
|
||||
import GLib from 'gi://GLib';
|
||||
import { ExtensionPreferences, gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||
|
||||
export default class SimpleTilingPrefs extends ExtensionPreferences {
|
||||
fillPreferencesWindow(window) {
|
||||
|
||||
Reference in New Issue
Block a user