Skip to content

Commit 4cf9e14

Browse files
authored
feat: Move window shortcuts (not set by default)
1 parent 8275681 commit 4cf9e14

File tree

4 files changed

+44
-12
lines changed

4 files changed

+44
-12
lines changed

keybindings/10-pop-shell-move.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<KeyListEntry name="tile-move-left" description="Move window left"/>
77
<KeyListEntry name="tile-move-right" description="Move window right"/>
88
<KeyListEntry name="tile-move-up" description="Move window up"/>
9+
<KeyListEntry name="tile-move-down-global" description="Move window down outside management mode"/>
10+
<KeyListEntry name="tile-move-left-global" description="Move window left outside management mode"/>
11+
<KeyListEntry name="tile-move-right-global" description="Move window right outside management mode"/>
12+
<KeyListEntry name="tile-move-up-global" description="Move window up outside management mode"/>
913
<KeyListEntry name="pop-workspace-down" description="Move window to lower workspace"/>
1014
<KeyListEntry name="pop-workspace-up" description="Move window to upper workspace"/>
1115
<KeyListEntry name="pop-monitor-down" description="Move window to lower monitor"/>

schemas/org.gnome.shell.extensions.pop-shell.gschema.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,26 @@
153153
<summary>Move window right</summary>
154154
</key>
155155

156+
<key type="as" name="tile-move-left-global">
157+
<default><![CDATA[[]]]></default>
158+
<summary>Move window left</summary>
159+
</key>
160+
161+
<key type="as" name="tile-move-down-global">
162+
<default><![CDATA[[]]]></default>
163+
<summary>Move window down</summary>
164+
</key>
165+
166+
<key type="as" name="tile-move-up-global">
167+
<default><![CDATA[[]]]></default>
168+
<summary>Move window up</summary>
169+
</key>
170+
171+
<key type="as" name="tile-move-right-global">
172+
<default><![CDATA[[]]]></default>
173+
<summary>Move window right</summary>
174+
</key>
175+
156176
<key type="as" name="tile-orientation">
157177
<default><![CDATA[['<Super>o']]]></default>
158178
<summary>Toggle tiling orientation</summary>

src/keybindings.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ export class Keybindings {
4242

4343
"toggle-stacking-global": () => ext.auto_tiler?.toggle_stacking(ext),
4444

45+
"tile-move-left-global": () => ext.tiler.move_left(ext, ext.focus_window()?.entity),
46+
47+
"tile-move-down-global": () => ext.tiler.move_down(ext, ext.focus_window()?.entity),
48+
49+
"tile-move-up-global": () => ext.tiler.move_up(ext, ext.focus_window()?.entity),
50+
51+
"tile-move-right-global": () => ext.tiler.move_right(ext, ext.focus_window()?.entity),
52+
4553
"pop-monitor-left": () => ext.move_monitor(Meta.DisplayDirection.LEFT),
4654

4755
"pop-monitor-right": () => ext.move_monitor(Meta.DisplayDirection.RIGHT),

src/tiling.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,9 @@ export class Tiler {
187187
return new_fork[1];
188188
}
189189

190-
move(ext: Ext, x: number, y: number, w: number, h: number, direction: Direction, focus: () => window.ShellWindow | number | null) {
191-
if (!this.window) return;
192-
const win = ext.windows.get(this.window)
190+
move(ext: Ext, window: Entity | null, x: number, y: number, w: number, h: number, direction: Direction, focus: () => window.ShellWindow | number | null) {
191+
if (!window) return
192+
const win = ext.windows.get(window);
193193
if (!win) return
194194

195195
const place_pointer = () => {
@@ -575,32 +575,32 @@ export class Tiler {
575575
}
576576
}
577577

578-
move_left(ext: Ext) {
579-
this.move(ext, -1, 0, 0, 0, Direction.Left, move_window_or_monitor(
578+
move_left(ext: Ext, window?: Entity) {
579+
this.move(ext, window ?? this.window, -1, 0, 0, 0, Direction.Left, move_window_or_monitor(
580580
ext,
581581
ext.focus_selector.left,
582582
Meta.DisplayDirection.LEFT
583583
));
584584
}
585585

586-
move_down(ext: Ext) {
587-
this.move(ext, 0, 1, 0, 0, Direction.Down, move_window_or_monitor(
586+
move_down(ext: Ext, window?: Entity) {
587+
this.move(ext, window ?? this.window, 0, 1, 0, 0, Direction.Down, move_window_or_monitor(
588588
ext,
589589
ext.focus_selector.down,
590590
Meta.DisplayDirection.DOWN
591591
));
592592
}
593-
594-
move_up(ext: Ext) {
595-
this.move(ext, 0, -1, 0, 0, Direction.Up, move_window_or_monitor(
593+
594+
move_up(ext: Ext, window?: Entity) {
595+
this.move(ext, window ?? this.window, 0, -1, 0, 0, Direction.Up, move_window_or_monitor(
596596
ext,
597597
ext.focus_selector.up,
598598
Meta.DisplayDirection.UP
599599
));
600600
}
601601

602-
move_right(ext: Ext) {
603-
this.move(ext, 1, 0, 0, 0, Direction.Right, move_window_or_monitor(
602+
move_right(ext: Ext, window?: Entity) {
603+
this.move(ext, window ?? this.window, 1, 0, 0, 0, Direction.Right, move_window_or_monitor(
604604
ext,
605605
ext.focus_selector.right,
606606
Meta.DisplayDirection.RIGHT

0 commit comments

Comments
 (0)