Skip to content

Commit 6fb12b3

Browse files
committed
add app button, saved window filter, adwaita
1 parent 6eb9774 commit 6fb12b3

File tree

14 files changed

+494
-1159
lines changed

14 files changed

+494
-1159
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
smart-auto-move@khimaros.com.shell-extension.zip
22
smart-auto-move.dconf
3-
**/*.ui~
3+
*.ui~
4+
/.aider*

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# CHANGELOG
22

3+
## version 32
4+
5+
- prepare for internationalization
6+
- add search/filter for saved windows
7+
- add "Ignore Monitor" preference
8+
- "Add Application" implemented
9+
- cleanup old GTK3 UI files
10+
311
## version 14
412

513
- skip tooltips non-tasklist windows

Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ pack: smart-auto-move@khimaros.com.shell-extension.zip
22
.PHONY: pack
33

44
clean:
5-
rm ./smart-auto-move@khimaros.com.shell-extension.zip ./smart-auto-move@khimaros.com/ui/*-gtk4.ui ./smart-auto-move@khimaros.com/schemas/gschemas.compiled
5+
rm -f ./smart-auto-move@khimaros.com.shell-extension.zip ./smart-auto-move@khimaros.com/schemas/gschemas.compiled
66
.PHONY: clean
77

8-
smart-auto-move@khimaros.com/ui/%-gtk4.ui: smart-auto-move@khimaros.com/ui.in/%-gtk3.ui
9-
gtk4-builder-tool simplify --3to4 $< > $@
10-
118
smart-auto-move@khimaros.com.shell-extension.zip: schemas ui ./smart-auto-move@khimaros.com/*
129
gnome-extensions pack --force --extra-source=./lib/ --extra-source=./ui/ ./smart-auto-move@khimaros.com/
1310

ROADMAP.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# ROADMAP
2+
3+
```
4+
[ ] support testing in a virtual machine or container
5+
eg. https://schneegans.github.io/tutorials/2022/03/02/gnome-shell-extensions-ci-03
6+
[ ] incorporate useful features and fixes from popular fork
7+
https://github.com/ChrisLauinger77/gnome-shell-extension-SmartAutoMoveNG
8+
```

smart-auto-move@khimaros.com/extension.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ let freezeSaves;
1717
let activateWorkspace;
1818
let ignorePosition;
1919
let ignoreWorkspace;
20+
let ignoreMonitor;
2021
let overrides;
2122
let savedWindows;
2223

@@ -37,6 +38,7 @@ let changedFreezeSavesSignal;
3738
let changedActivateWorkspaceSignal;
3839
let changedIgnorePositionSignal;
3940
let changedIgnoreWorkspaceSignal;
41+
let changedIgnoreMonitorSignal;
4042
let changedOverridesSignal;
4143
let changedSavedWindowsSignal;
4244

@@ -92,6 +94,7 @@ function initializeSettings(extension) {
9294
activateWorkspace = Common.DEFAULT_ACTIVATE_WORKSPACE;
9395
ignorePosition = Common.DEFAULT_IGNORE_POSITION;
9496
ignoreWorkspace = Common.DEFAULT_IGNORE_WORKSPACE;
97+
ignoreMonitor = Common.DEFAULT_IGNORE_MONITOR;
9598
overrides = new Object();
9699
savedWindows = new Object();
97100

@@ -110,6 +113,7 @@ function cleanupSettings() {
110113
activateWorkspace = null;
111114
ignorePosition = null;
112115
ignoreWorkspace = null;
116+
ignoreMonitor = null;
113117
overrides = null;
114118
savedWindows = null;
115119
}
@@ -126,6 +130,7 @@ function restoreSettings() {
126130
handleChangedActivateWorkspace();
127131
handleChangedIgnorePosition();
128132
handleChangedIgnoreWorkspace();
133+
handleChangedIgnoreMonitor();
129134
handleChangedOverrides();
130135
handleChangedSavedWindows();
131136
dumpSavedWindows();
@@ -142,6 +147,7 @@ function saveSettings() {
142147
settings.set_boolean(Common.SETTINGS_KEY_ACTIVATE_WORKSPACE, activateWorkspace);
143148
settings.set_boolean(Common.SETTINGS_KEY_IGNORE_POSITION, ignorePosition);
144149
settings.set_boolean(Common.SETTINGS_KEY_IGNORE_WORKSPACE, ignoreWorkspace);
150+
settings.set_boolean(Common.SETTINGS_KEY_IGNORE_MONITOR, ignoreMonitor);
145151

146152
let newOverrides = JSON.stringify(overrides);
147153
settings.set_string(Common.SETTINGS_KEY_OVERRIDES, newOverrides);
@@ -273,7 +279,9 @@ function findOverrideAction(win, threshold) {
273279
function moveWindow(win, sw) {
274280
//debug('moveWindow(): ' + JSON.stringify(sw));
275281

276-
win.move_to_monitor(sw.monitor);
282+
if (!ignoreMonitor) {
283+
win.move_to_monitor(sw.monitor);
284+
}
277285

278286
let ws = global.workspaceManager.get_workspace_by_index(sw.workspace);
279287
if (!ignoreWorkspace) {
@@ -455,6 +463,11 @@ function handleChangedIgnoreWorkspace() {
455463
debug('[smart-auto-move] handleChangedIgnoreWorkspace(): ' + ignoreWorkspace);
456464
}
457465

466+
function handleChangedIgnoreMonitor() {
467+
ignoreMonitor = settings.get_boolean(Common.SETTINGS_KEY_IGNORE_MONITOR);
468+
debug('[smart-auto-move] handleChangedIgnoreMonitor(): ' + ignoreMonitor);
469+
}
470+
458471
function handleChangedOverrides() {
459472
overrides = JSON.parse(settings.get_string(Common.SETTINGS_KEY_OVERRIDES));
460473
debug('handleChangedOverrides(): ' + JSON.stringify(overrides));
@@ -502,6 +515,7 @@ function connectSettingChangedSignals() {
502515
changedActivateWorkspaceSignal = settings.connect('changed::' + Common.SETTINGS_KEY_ACTIVATE_WORKSPACE, handleChangedActivateWorkspace);
503516
changedIgnorePositionSignal = settings.connect('changed::' + Common.SETTINGS_KEY_IGNORE_POSITION, handleChangedIgnorePosition);
504517
changedIgnoreWorkspaceSignal = settings.connect('changed::' + Common.SETTINGS_KEY_IGNORE_WORKSPACE, handleChangedIgnoreWorkspace);
518+
changedIgnoreMonitorSignal = settings.connect('changed::' + Common.SETTINGS_KEY_IGNORE_MONITOR, handleChangedIgnoreMonitor);
505519
changedOverridesSignal = settings.connect('changed::' + Common.SETTINGS_KEY_OVERRIDES, handleChangedOverrides);
506520
changedSavedWindowsSignal = settings.connect('changed::' + Common.SETTINGS_KEY_SAVED_WINDOWS, handleChangedSavedWindows);
507521
}

smart-auto-move@khimaros.com/lib/common.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const SETTINGS_KEY_FREEZE_SAVES = 'freeze-saves';
1313
export const SETTINGS_KEY_ACTIVATE_WORKSPACE = 'activate-workspace';
1414
export const SETTINGS_KEY_IGNORE_POSITION = "ignore-position";
1515
export const SETTINGS_KEY_IGNORE_WORKSPACE = "ignore-workspace";
16+
export const SETTINGS_KEY_IGNORE_MONITOR = "ignore-monitor";
1617
export const SETTINGS_KEY_OVERRIDES = 'overrides';
1718

1819
// sync mode enum values
@@ -30,6 +31,7 @@ export const DEFAULT_FREEZE_SAVES = false;
3031
export const DEFAULT_ACTIVATE_WORKSPACE = true;
3132
export const DEFAULT_IGNORE_POSITION = false;
3233
export const DEFAULT_IGNORE_WORKSPACE = false;
34+
export const DEFAULT_IGNORE_MONITOR = false;
3335

3436
export function levensteinDistance(a, b) {
3537
var m = [], i, j, min = Math.min;

smart-auto-move@khimaros.com/metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
"description": "Smart Auto Move learns the position, size, and workspace of your application windows and restores them on subsequent launches. Supports Wayland.\n\nNOTE: Optimized for use with static workspaces. For more control, set the default behavior to IGNORE and then selectively RESTORE only desired apps.\n\nKNOWN ISSUES: Multi-monitor is not yet well supported. You may need to manually delete Saved Windows in preferences after adding or removing a display.",
66
"settings-schema": "org.gnome.shell.extensions.smart-auto-move",
77
"original-author": "khimaros",
8-
"version": "31",
9-
"shell-version": ["45", "46", "47", "48"]
8+
"version": "33",
9+
"shell-version": ["48"]
1010
}

0 commit comments

Comments
 (0)