Skip to content

Commit e6b2ad7

Browse files
committed
version 14.1: support different layouts between workspaces, improved window borders, tiling system deactivation key
1 parent a594cd2 commit e6b2ad7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1237
-711
lines changed

Diff for: README.md

+14-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Have issues, you want to suggest a new feature or contribute? Please open a new
3232
| [⬇️](#tiling-system) Tiling System | [⬇️](#snap-assistant) Snap Assistant | [⬇️](#select-a-layout) Select a layout | [⬇️](#select-multiple-tiles) Select multiple tiles |
3333
|:---|:---|:---|:---|
3434
| [⬇️](#layout-editor) **Layout editor** | [⬇️](#smart-resize) **Smart resize** | [⬇️](#tile-with-keyboard) **Tile with Keyboard** | [⬇️](#edge-tiling) **Edge Tiling** |
35-
| [⬇️](#tiling-buttons) **Tiling Buttons** |
35+
| [⬇️](#tiling-buttons) **Tiling Buttons** | [⬇️](#per-workspace-layout) **Per-workspace layout**
3636

3737
### Tiling System ###
3838
When grabbing and moving a window, press <kbd>CTRL</kbd> key to show the tiling layout (you can choose another key from the preferences). When moving on a tile, it will highlight. Ungrab the window to place that window on the highlighted tile.
@@ -115,6 +115,14 @@ Right-click on a window to use the auto-tile buttons and the snap assistant from
115115

116116
<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>
117117

118+
### Per-workspace layout ###
119+
120+
You can select your favorite layout for each workspace of each monitor.
121+
122+
[per-workspace](https://github.com/user-attachments/assets/41226602-5950-47d1-bbf6-3d7ff3e265fb)
123+
124+
<p align="right"><b>Go to Usage</b> <a href="#usage">⬆️</a></p>
125+
118126
## Installation
119127

120128
This extension is published on [extensions.gnome.org](https://extensions.gnome.org/extension/7065/tiling-shell/)! You can install from there or install manually. By installing from [extensions.gnome.org](https://extensions.gnome.org/extension/7065/tiling-shell/) you will always have the latest update.
@@ -149,6 +157,11 @@ To read the logs you can run
149157
journalctl --follow /usr/bin/gnome-shell
150158
```
151159

160+
To read the logs of the preferences you can run
161+
162+
```bash
163+
journalctl -f -o cat /usr/bin/gjs
164+
```
152165
### Uninstall Tiling Shell
153166

154167
To uninstall, first disable the extension and then remove it. To disable via the command line you can run

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tilingshell",
3-
"version": "14",
3+
"version": "14.1",
44
"author": "Domenico Ferraro <[email protected]>",
55
"private": true,
66
"license": "GPL v2.0",

Diff for: resources/locale/it/LC_MESSAGES/tilingshell.mo

1.11 KB
Binary file not shown.

Diff for: resources/metadata.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"47"
1212
],
1313
"version": 99,
14-
"version-name": "14",
14+
"version-name": "14.1",
1515
"url": "https://github.com/domferr/tilingshell",
1616
"settings-schema": "org.gnome.shell.extensions.tilingshell",
1717
"gettext-domain": "tilingshell",

Diff for: resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml

+11-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<summary>Tiling system activation key</summary>
1818
<description>Which key to hold while moving a window to activate the tiling system.</description>
1919
</key>
20+
<key name="tiling-system-deactivation-key" type="as">
21+
<default>[]</default>
22+
<summary>Tiling system deactivation key</summary>
23+
<description>Which key to hold while moving a window to deactivate the tiling system.</description>
24+
</key>
2025
<key name="enable-snap-assist" type="b">
2126
<default>true</default>
2227
<summary>Enable snap assist</summary>
@@ -52,7 +57,7 @@
5257
<summary>Layouts</summary>
5358
<description>The layouts available to the tiling managers and the snap assist.</description>
5459
</key>
55-
<key name="selected-layouts" type="as">
60+
<key name="selected-layouts" type="aas">
5661
<default>[]</default>
5762
<summary>Selected layouts</summary>
5863
<description>Each monitor's active layout used by the monitor tiling manager.</description>
@@ -82,6 +87,11 @@
8287
<summary>Enable keybindings</summary>
8388
<description>Move focused window through tiles by using keybindings.</description>
8489
</key>
90+
<key name="enable-autotiling" type="b">
91+
<default>false</default>
92+
<summary>Enable auto tiling</summary>
93+
<description>Automatically tile a new window to the best tile according to the current layout.</description>
94+
</key>
8595
<key name="overridden-settings" type="s">
8696
<default>'{}'</default>
8797
<summary>Overridden settings</summary>

Diff for: src/components/editor/editableTilePreview.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import TilePreview from '../tilepreview/tilePreview';
2-
import St from 'gi://St';
3-
import Clutter from 'gi://Clutter';
4-
import Mtk from 'gi://Mtk';
2+
import { GObject, St, Clutter, Mtk } from '@gi';
53
import Tile from '../layout/Tile';
64
import Slider from './slider';
75
import TileUtils from '../layout/TileUtils';
8-
import GObject from 'gi://GObject';
96
import { registerGObjectClass } from '@utils/gjs';
107

118
@registerGObjectClass

Diff for: src/components/editor/editorDialog.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import Settings from '@settings/settings';
22
import { registerGObjectClass } from '@/utils/gjs';
3-
import Clutter from 'gi://Clutter';
4-
import St from 'gi://St';
5-
import Gio from 'gi://Gio';
3+
import { St, Clutter, Gio } from '@gi';
64
import LayoutButton from '../../indicator/layoutButton';
75
import GlobalState from '@utils/globalState';
86
import Layout from '@/components/layout/Layout';

Diff for: src/components/editor/hoverLine.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import { registerGObjectClass } from '@/utils/gjs';
2-
import St from 'gi://St';
3-
import GLib from 'gi://GLib';
4-
import Shell from 'gi://Shell';
5-
import Clutter from 'gi://Clutter';
2+
import { GLib, St, Clutter, Shell } from '@gi';
63
import EditableTilePreview from './editableTilePreview';
74
import { getScalingFactorOf } from '@utils/ui';
85

Diff for: src/components/editor/layoutEditor.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import { registerGObjectClass } from '@/utils/gjs';
2-
import Clutter from 'gi://Clutter';
3-
import St from 'gi://St';
4-
import Meta from 'gi://Meta';
5-
import Mtk from 'gi://Mtk';
2+
import { GObject, St, Clutter, Mtk, Meta, Shell } from '@gi';
63
import Settings from '@settings/settings';
7-
import Shell from 'gi://Shell';
8-
import GObject from 'gi://GObject';
94
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
105
import {
116
buildMargin,

Diff for: src/components/editor/slider.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
import { registerGObjectClass } from '@/utils/gjs';
2-
import Clutter from 'gi://Clutter';
3-
import St from 'gi://St';
2+
import { GObject, St, Clutter, Mtk, Meta } from '@gi';
43
import EditableTilePreview from './editableTilePreview';
5-
import Meta from 'gi://Meta';
6-
import Mtk from 'gi://Mtk';
7-
import GObject from 'gi://GObject';
84
import { getEventCoords, getScalingFactorOf } from '@utils/ui';
95

106
@registerGObjectClass

Diff for: src/components/layout/LayoutWidget.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import St from 'gi://St';
1+
import { St, Clutter, Mtk } from '@gi';
22
import TilePreview from '../tilepreview/tilePreview';
3-
import Clutter from 'gi://Clutter';
4-
import Mtk from 'gi://Mtk';
53
import {
64
buildRectangle,
75
buildTileGaps,
86
enableScalingFactorSupport,
97
} from '@/utils/ui';
10-
import { logger } from '@/utils/shell';
8+
import { logger } from '@utils/logger';
119
import Layout from './Layout';
1210
import Tile from './Tile';
1311
import TileUtils from './TileUtils';

Diff for: src/components/layout/Tile.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import GObject from 'gi://GObject';
1+
import { GObject } from '@prefs.gi'; // prefs.gi because for transitivity this is also declared in prefs.js
22

33
export default class Tile {
44
// @ts-expect-error "GObject has TYPE_JSOBJECT"

Diff for: src/components/layout/TileUtils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Mtk from 'gi://Mtk';
1+
import { Mtk } from '@gi';
22
import Tile from './Tile';
33
import { buildRectangle } from '@utils/ui';
44

Diff for: src/components/snapassist/snapAssist.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import { registerGObjectClass } from '@/utils/gjs';
2-
import Clutter from 'gi://Clutter';
3-
import Meta from 'gi://Meta';
4-
import Mtk from 'gi://Mtk';
5-
import St from 'gi://St';
6-
import Gio from 'gi://Gio';
7-
import GObject from 'gi://GObject';
2+
import { GObject, St, Clutter, Mtk, Meta, Gio } from '@gi';
83
import SnapAssistTile from './snapAssistTile';
94
import SnapAssistLayout from './snapAssistLayout';
105
import Layout from '../layout/Layout';

Diff for: src/components/snapassist/snapAssistLayout.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { registerGObjectClass } from '@/utils/gjs';
22
import { buildRectangle, getScalingFactorOf } from '@/utils/ui';
3-
import Clutter from 'gi://Clutter';
4-
import Mtk from 'gi://Mtk';
3+
import { Clutter, Mtk } from '@gi';
54
import LayoutWidget from '../layout/LayoutWidget';
65
import Layout from '../layout/Layout';
76
import Tile from '../layout/Tile';

Diff for: src/components/snapassist/snapAssistTile.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { registerGObjectClass } from '@/utils/gjs';
22
import TilePreview from '../tilepreview/tilePreview';
33
import Tile from '../layout/Tile';
4-
import Clutter from 'gi://Clutter';
5-
import Mtk from 'gi://Mtk';
6-
import St from 'gi://St';
4+
import { St, Clutter, Mtk } from '@gi';
75
import { getScalingFactorOf } from '@utils/ui';
86

97
@registerGObjectClass

Diff for: src/components/snapassist/snapAssistTileButton.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import Tile from '@components/layout/Tile';
22
import { registerGObjectClass } from '@utils/gjs';
3-
import St from 'gi://St';
4-
import Clutter from 'gi://Clutter';
5-
import Mtk from 'gi://Mtk';
3+
import { St, Clutter, Mtk } from '@gi';
64
import SnapAssistTile from '@components/snapassist/snapAssistTile';
75

86
@registerGObjectClass

Diff for: src/components/tilepreview/blurTilePreview.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable @typescript-eslint/ban-ts-comment */
22
import { registerGObjectClass } from '@/utils/gjs';
3-
import Shell from 'gi://Shell';
3+
import { Shell } from '@gi';
44
import TilePreview from './tilePreview';
55

66
@registerGObjectClass

Diff for: src/components/tilepreview/selectionTilePreview.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { registerGObjectClass } from '@/utils/gjs';
2-
import Clutter from 'gi://Clutter';
3-
import St from 'gi://St';
4-
import Gio from 'gi://Gio';
2+
import { GObject, St, Clutter, Gio } from '@gi';
53
import TilePreview from './tilePreview';
64
import Settings from '@settings/settings';
7-
import GObject from 'gi://GObject';
85
import { buildBlurEffect } from '@utils/ui';
96

107
@registerGObjectClass

Diff for: src/components/tilepreview/tilePreview.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import St from 'gi://St';
2-
import Meta from 'gi://Meta';
3-
import Mtk from 'gi://Mtk';
1+
import { St, Clutter, Mtk, Meta } from '@gi';
42
import { registerGObjectClass } from '@/utils/gjs';
5-
import Clutter from 'gi://Clutter';
63
import { buildRectangle, getScalingFactorOf } from '@utils/ui';
74
import GlobalState from '@utils/globalState';
85

Diff for: src/components/tilingsystem/edgeTilingManager.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import {
33
isPointInsideRect,
44
clampPointInsideRect,
55
} from '@utils/ui';
6-
import Mtk from 'gi://Mtk';
7-
import GObject from 'gi://GObject';
6+
import { GObject, Mtk } from '@gi';
87
import Settings from '@settings/settings';
98
import { registerGObjectClass } from '@utils/gjs';
109

Diff for: src/components/tilingsystem/extendedWindow.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import Tile from '@components/layout/Tile';
2-
import Meta from 'gi://Meta';
3-
import Mtk from 'gi://Mtk';
2+
import { Mtk, Meta } from '@gi';
43

54
interface ExtendedWindow extends Meta.Window {
65
originalSize: Mtk.Rectangle | undefined;

Diff for: src/components/tilingsystem/resizeManager.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import Meta from 'gi://Meta';
2-
import Mtk from 'gi://Mtk';
3-
import St from 'gi://St';
1+
import { St, Mtk, Meta } from '@gi';
42
import SignalHandling from '@utils/signalHandling';
53
import Settings from '@settings/settings';
64
import ExtendedWindow from './extendedWindow';

Diff for: src/components/tilingsystem/tilingLayout.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
1-
import Meta from 'gi://Meta';
21
import { registerGObjectClass } from '@/utils/gjs';
3-
import Mtk from 'gi://Mtk';
4-
import Clutter from 'gi://Clutter';
5-
import St from 'gi://St';
2+
import { Clutter, Mtk, Meta } from '@gi';
63
import TilePreview, {
74
TilePreviewConstructorProperties,
85
} from '../tilepreview/tilePreview';
96
import LayoutWidget from '../layout/LayoutWidget';
107
import Layout from '../layout/Layout';
118
import Tile from '../layout/Tile';
12-
import {
13-
buildRectangle,
14-
buildTileGaps,
15-
isPointInsideRect,
16-
squaredEuclideanDistance,
17-
} from '@utils/ui';
9+
import { buildRectangle, buildTileGaps, isPointInsideRect } from '@utils/ui';
1810
import TileUtils from '@components/layout/TileUtils';
19-
import { logger } from '@utils/shell';
11+
import { logger } from '@utils/logger';
2012
import GlobalState from '@utils/globalState';
2113
import { KeyBindingsDirection } from '@keybindings';
2214

0 commit comments

Comments
 (0)