Compare commits

..

57 Commits

Author SHA1 Message Date
Renovate Bot 982ead1c10 chore(deps): update dependency typescript to v6
Build and Test / build (pull_request) Successful in 29s
Build and Test / release (pull_request) Has been skipped
2026-03-24 16:59:54 +00:00
Lucas Oskorep 75f2f107de fix: fullscreen/games should not be moved
Build and Test / build (push) Successful in 36s
Build and Test / release (push) Successful in 11s
2026-03-17 14:33:33 -04:00
Lucas Oskorep 42d680d00c feat: move to .node-version for use in fnm and update justfile commands to use pnpm run instead of pnpm exec for build, lint, and clean
Build and Test / build (push) Successful in 23s
Build and Test / release (push) Successful in 3s
2026-03-02 23:43:48 -05:00
Lucas Oskorep 7f9d040b82 chore: update package.json
Build and Test / build (push) Successful in 24s
Build and Test / release (push) Successful in 3s
2026-03-02 23:18:55 -05:00
Lucas Oskorep 525630009b feat: update version in package.json 2026-03-02 23:09:39 -05:00
Lucas Oskorep 0720ab6326 feat: initial README.md 2026-03-02 23:07:28 -05:00
Lucas Oskorep 6129c98624 feat: adding support for multi-monitor window moving 2026-03-02 23:06:47 -05:00
Lucas Oskorep 9a192afb9b feat: adding active window selection and refactoring keybindings 2026-03-02 18:46:26 -05:00
Lucas Oskorep 42c1e6731e fix: when new items enter the tabbed view they should be the active window 2026-03-02 11:26:28 -05:00
Lucas Oskorep 400ce3a77c feat: equal-sized tabs and constantly updated tab titles 2026-02-27 12:24:58 -05:00
Lucas Oskorep 2ab3822cb6 fix: tab bars showing when apps are fullscreen on same monitor 2026-02-26 22:06:30 -05:00
Lucas Oskorep c1e597579f feat: add tabbed container layout mode with tab bar UI
fix: tab bars no longer shown in overview.  Tab bars show name of app with pipe and then title of the app
2026-02-26 02:26:00 -05:00
Lucas Oskorep d7ee5ff5e6 fix: new bug from combining resize and move commands - if window has min-size set and resize goes smaller window would not move or resize causing vesktop and steam to frequently break when in arrays on a smaller monitors 2026-02-26 01:54:49 -05:00
Lucas Oskorep 52a9bc8c82 feat: adding support for changing the size of windows during window resize events to aerospike. Also cleaning up imports and simplifying some of the settings logic. 2026-02-25 11:33:12 -05:00
Renovate Bot 46ab8e24b0 chore(deps): update dependency eslint to v10 2026-02-06 23:13:10 +00:00
Lucas Oskorep e0be26c310 Update .gitea/workflows/build.yaml 2026-01-29 02:47:15 -05:00
Lucas Oskorep c824645c3f fix: renovate updating past v3 for upload when v4+ is unsupported in gitea 2026-01-29 02:45:04 -05:00
Lucas Oskorep 4c3160e9ca feat: update code to work with new libs 2026-01-29 02:41:59 -05:00
Renovate Bot 3ded68a8d5 chore(deps): update all-dependencies 2026-01-29 07:00:54 +00:00
Lucas Oskorep 7a160fb102 Update .gitea/workflows/build.yaml 2026-01-29 02:36:39 -05:00
Renovate Bot 855a8e4a2e chore(deps): update all-dependencies 2026-01-29 06:55:32 +00:00
Renovate Bot dda18f715f Add renovate.json 2026-01-29 06:45:35 +00:00
Lucas Oskorep 0c10fbce4b revert df9bc3e1eb
revert Merge pull request 'chore: Configure Renovate' (#1) from renovate/configure into main

Reviewed-on: #1
2026-01-29 01:36:37 -05:00
Renovate Bot d8bcf472b6 Add renovate.json 2026-01-29 05:44:36 +00:00
Lucas Oskorep 5b8556912f feat: gitea pipeline fix for upload 2025-10-17 02:50:21 -04:00
Lucas Oskorep 9455c4b4d1 feat: gitea pipeline fix for upload 2025-10-17 02:46:56 -04:00
Lucas Oskorep 4da03ed2dc feat: gitea pipeline 2025-10-17 02:42:12 -04:00
Lucas Oskorep 18beea21e7 feat: gitea pipeline 2025-10-17 02:38:04 -04:00
Lucas Oskorep e93ffe5da7 feat: adding basic unit tests and framework for them 2025-10-17 02:06:16 -04:00
Lucas Oskorep 979eaa552a bugfixes 2025-10-17 01:56:09 -04:00
Lucas Oskorep 6bca124d94 feat: cleanup 2025-10-17 01:26:57 -04:00
Lucas Oskorep b641561bca Finish adding debugging command and ability to swap the orientation of a container 2025-10-17 01:25:47 -04:00
Lucas Oskorep ce8807a7d9 adding debug command 2025-10-17 01:09:13 -04:00
Lucas Oskorep 39fdbe62b1 feat: removing prettyborders zip 2025-10-17 00:08:57 -04:00
Lucas Oskorep 1e3c67273d feat: update devkit command 2025-10-16 03:44:33 -04:00
Lucas Oskorep cba529f79e upgrade to gnome 49 2025-09-24 00:55:24 -04:00
Lucas Oskorep d33495a9ea feat: remove crap code 2025-05-20 18:37:15 -04:00
Lucas Oskorep 4e5f24c3d6 fix: allow windows to be moved in the overview 2025-05-20 01:59:08 -04:00
Lucas Oskorep 9e08221a2d fix: bug with window manager resizing a window during grab ops for 1 frame when the background had to be tiled 2025-05-20 01:48:34 -04:00
Lucas Oskorep 57e28ff77a feat: enable the window manager to be able to drag across monitors and support keybindings propperly in the extension settings 2025-05-20 01:20:48 -04:00
Lucas Oskorep ed29d0a0a9 feat: upgrade packages and set parent for windows on add 2025-05-19 21:43:09 -04:00
Lucas Oskorep 0da844ce97 feat: add ability to change ordering of monitors 2025-05-16 02:58:51 -04:00
Lucas Oskorep 06b2c5c4a3 feat: refactored to monitor -> workspace -> container -> window workflow 2025-05-16 02:01:11 -04:00
Lucas Oskorep 7eb26a9f9e feat: adding support for workspaces 2025-05-16 00:19:49 -04:00
Lucas Oskorep 012f575ad5 feat: refactoring 2025-05-04 17:17:33 -04:00
Lucas Oskorep 195ada30fb feat: fixed display signal handling on disable 2025-05-02 01:31:46 -04:00
Lucas Oskorep 7e21bf695c feat: adding fix for minimized windows still taking up space 2025-04-30 00:05:46 -04:00
Lucas Oskorep 2607c58a70 feat: attempting to fix windows lost on logout 2025-04-18 17:33:02 -04:00
Lucas Oskorep 305ef0d3e7 feat: set nvm version 2025-04-19 02:18:32 +00:00
Lucas Oskorep e5a7a0d96b feat: initial commit with multi-monitor support 2025-04-18 03:22:35 -04:00
Lucas Oskorep cbaafc6e08 fix 2025-04-18 01:57:45 -04:00
Lucas Oskorep 9bf199b1a6 feat: first draft of everything working single monitor with just mouse commands 2025-04-18 01:57:29 -04:00
Lucas Oskorep 92133701de feat: adding in demo settings page for gnome extensions 2025-04-05 23:55:46 -04:00
Lucas Oskorep 045649c746 feat: remove prefs 2025-04-03 02:28:54 -04:00
Lucas Oskorep 775b79c733 feat: update gschema 2025-04-03 02:27:55 -04:00
Lucas Oskorep 8b1ade3890 feat: adding initial source code 2025-04-03 02:24:40 -04:00
Lucas Oskorep 901b56cccf feat: readme 2025-04-03 02:23:46 -04:00
7 changed files with 64 additions and 17 deletions
+1
View File
@@ -0,0 +1 @@
25
-1
View File
@@ -1 +0,0 @@
24
+29
View File
@@ -1 +1,30 @@
# Aerospike Gnome (Tiling Window Manager) # Aerospike Gnome (Tiling Window Manager)
Aerospike is a simple and opinionated tiling window manager for gnome.
This project takes inspiration from previous gnome tiling window managers such
as [forge](https://github.com/forge-ext/forge)
and [cosmic-shell](https://github.com/pop-os/gnome-shell-extension-pop-cosmic) as well as
MacOS tiling WMs, mainly [Aerospace](https://github.com/nikitabobko/AeroSpace) (not affiliated).
## Current Features
- Auto-tiling
- Accordion layouts with variable sizes
- Tabbed layouts
- Tree-based (albeit set depth of 2 for now) container-window paired layout similar to Aerospace
- Diagram for this is pending
## Planned functionality
- Full Keyboard control w/window movement
- Sub-containers (more tree layers than the 1 supported for now)
- Gap size customization
## Not currently planned
- Active window borders
- See my other extension for a rainbow or static border - [PrettyBorders](https://github.com//pretty-borders)
- complicated window dragging features and uis
- Aerospace supports control + drag to combine windows while moving with the mouse, and normal window dragging.
+7 -1
View File
@@ -8,7 +8,7 @@ packages:
build: packages && build-schemas build: packages && build-schemas
rm -rf dist/* rm -rf dist/*
pnpm exec tsc pnpm run build
cp metadata.json dist/ cp metadata.json dist/
cp stylesheet.css dist/ cp stylesheet.css dist/
mkdir -p dist/schemas mkdir -p dist/schemas
@@ -47,6 +47,12 @@ test-coverage:
ci-local: ci-local:
act -W .gitea/workflows/build.yaml act -W .gitea/workflows/build.yaml
lint:
pnpm run lint
clean:
pnpm run clean
#pack: build #pack: build
# gnome-extensions pack dist \ # gnome-extensions pack dist \
# --force \ # --force \
+9 -6
View File
@@ -1,7 +1,7 @@
{ {
"name": "aerospike", "name": "aerospike",
"version": "0.2.0", "version": "0.2.2",
"description": "A TypeScript GNOME Extension for Pretty Borders", "description": "Simple, Opinionated Tiling Window Manager for Gnome written in Typescript",
"type": "module", "type": "module",
"private": true, "private": true,
"repository": { "repository": {
@@ -9,13 +9,16 @@
"url": "git+https://gitlab.com/lucasoskorep/aerospike" "url": "git+https://gitlab.com/lucasoskorep/aerospike"
}, },
"author": "Lucas Oskorep <lucas.oskorep@gmail.com>", "author": "Lucas Oskorep <lucas.oskorep@gmail.com>",
"license": "LGPL-3.0-or-later", "license": "GPL-3.0-only",
"bugs": { "bugs": {
"url": "https://github.com/example/my-extension/issues" "url": "https://github.com/lucasoskorep/aerospike-gnome/issues"
}, },
"homepage": "https://github.com/example/my-extension#readme", "homepage": "https://github.com/lucasoskorep/aerospike-gnome/#readme",
"sideEffects": false, "sideEffects": false,
"scripts": { "scripts": {
"build": "tsc",
"clean": "rm -rf dist/*",
"lint": "eslint .",
"test": "jest", "test": "jest",
"test:watch": "jest --watch", "test:watch": "jest --watch",
"test:coverage": "jest --coverage" "test:coverage": "jest --coverage"
@@ -29,7 +32,7 @@
"eslint-plugin-jsdoc": "^62.0.0", "eslint-plugin-jsdoc": "^62.0.0",
"jest": "^30.0.0", "jest": "^30.0.0",
"ts-jest": "^29.1.2", "ts-jest": "^29.1.2",
"typescript": "^5.9.2" "typescript": "^6.0.0"
}, },
"dependencies": { "dependencies": {
"@girs/mtk-17": "17.0.0-4.0.0-beta.38" "@girs/mtk-17": "17.0.0-4.0.0-beta.38"
+8 -8
View File
@@ -53,10 +53,10 @@ importers:
version: 30.2.0(@types/node@25.1.0) version: 30.2.0(@types/node@25.1.0)
ts-jest: ts-jest:
specifier: ^29.1.2 specifier: ^29.1.2
version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(jest-util@30.2.0)(jest@30.2.0(@types/node@25.1.0))(typescript@5.9.3) version: 29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(jest-util@30.2.0)(jest@30.2.0(@types/node@25.1.0))(typescript@6.0.2)
typescript: typescript:
specifier: ^5.9.2 specifier: ^6.0.0
version: 5.9.3 version: 6.0.2
packages: packages:
@@ -1710,8 +1710,8 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'} engines: {node: '>=16'}
typescript@5.9.3: typescript@6.0.2:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
hasBin: true hasBin: true
@@ -3959,7 +3959,7 @@ snapshots:
'@sindresorhus/base62': 1.0.0 '@sindresorhus/base62': 1.0.0
reserved-identifiers: 1.2.0 reserved-identifiers: 1.2.0
ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(jest-util@30.2.0)(jest@30.2.0(@types/node@25.1.0))(typescript@5.9.3): ts-jest@29.4.6(@babel/core@7.28.6)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.6))(jest-util@30.2.0)(jest@30.2.0(@types/node@25.1.0))(typescript@6.0.2):
dependencies: dependencies:
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
@@ -3970,7 +3970,7 @@ snapshots:
make-error: 1.3.6 make-error: 1.3.6
semver: 7.7.3 semver: 7.7.3
type-fest: 4.41.0 type-fest: 4.41.0
typescript: 5.9.3 typescript: 6.0.2
yargs-parser: 21.1.1 yargs-parser: 21.1.1
optionalDependencies: optionalDependencies:
'@babel/core': 7.28.6 '@babel/core': 7.28.6
@@ -3992,7 +3992,7 @@ snapshots:
type-fest@4.41.0: {} type-fest@4.41.0: {}
typescript@5.9.3: {} typescript@6.0.2: {}
uglify-js@3.19.3: uglify-js@3.19.3:
optional: true optional: true
+9
View File
@@ -47,6 +47,10 @@ export class WindowWrapper {
return this._window.get_frame_rect(); return this._window.get_frame_rect();
} }
isFullscreen(): boolean {
return this._window.is_fullscreen();
}
getTabLabel(): string { getTabLabel(): string {
const rawAppName = this._window.get_wm_class() ?? ''; const rawAppName = this._window.get_wm_class() ?? '';
// Strip reverse-domain prefix (e.g. "org.gnome.Nautilus" -> "Nautilus") // Strip reverse-domain prefix (e.g. "org.gnome.Nautilus" -> "Nautilus")
@@ -140,6 +144,11 @@ export class WindowWrapper {
return; return;
} }
if (this.isFullscreen()) {
Logger.info("STOPPED RESIZE BECAUSE WINDOW IS FULLSCREEN");
return;
}
const actor = this._window.get_compositor_private() as Clutter.Actor | null; const actor = this._window.get_compositor_private() as Clutter.Actor | null;
if (!actor) { if (!actor) {
Logger.log("No actor available, can't resize safely yet"); Logger.log("No actor available, can't resize safely yet");