Compare commits

..

59 Commits

Author SHA1 Message Date
Lucas Oskorep bf7fe98b05 fix: ci
Build and Test / build (push) Successful in 25s
Build and Test / release (push) Successful in 13s
2026-06-15 15:22:36 -04:00
Lucas Oskorep 4a2067811c fix: ci
Build and Test / build (push) Failing after 17s
Build and Test / release (push) Has been skipped
2026-06-15 11:53:49 -04:00
Lucas Oskorep e49b923667 removing unused wingroup file and then updating for gnome 50 support
Build and Test / build (push) Failing after 20s
Build and Test / release (push) Has been skipped
2026-06-01 14:15:02 -04: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
11 changed files with 75 additions and 56 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
apt-get install -y libglib2.0-dev glib-networking zip
- name: Install project dependencies
run: pnpm install
run: pnpm install --ignore-scripts
- name: Run unit tests
run: just test
+1
View File
@@ -0,0 +1 @@
25
+17
View File
@@ -0,0 +1,17 @@
overrides[@girs/cairo-1.0]="1.0.0-4.0.0-beta.38"
overrides[@girs/freetype2-2.0]="2.0.0-4.0.0-beta.38"
overrides[@girs/gdk-4.0]="4.0.0-4.0.0-beta.38"
overrides[@girs/gdkpixbuf-2.0]="2.0.0-4.0.0-beta.38"
overrides[@girs/gio-2.0]="2.86.0-4.0.0-beta.38"
overrides[@girs/gjs]="4.0.0-beta.38"
overrides[@girs/glib-2.0]="2.86.0-4.0.0-beta.38"
overrides[@girs/gmodule-2.0]="2.0.0-4.0.0-beta.38"
overrides[@girs/gobject-2.0]="2.86.0-4.0.0-beta.38"
overrides[@girs/graphene-1.0]="1.0.0-4.0.0-beta.38"
overrides[@girs/gsk-4.0]="4.0.0-4.0.0-beta.38"
overrides[@girs/gtk-4.0]="4.20.1-4.0.0-beta.38"
overrides[@girs/harfbuzz-0.0]="11.5.0-4.0.0-beta.38"
overrides[@girs/mtk-17]="17.0.0-4.0.0-beta.38"
overrides[@girs/pango-1.0]="1.57.0-4.0.0-beta.38"
overrides[@girs/pangocairo-1.0]="1.0.0-4.0.0-beta.38"
enable-pre-post-scripts=false
-1
View File
@@ -1 +0,0 @@
24
+30 -1
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
rm -rf dist/*
pnpm exec tsc
pnpm run build
cp metadata.json dist/
cp stylesheet.css dist/
mkdir -p dist/schemas
@@ -47,6 +47,12 @@ test-coverage:
ci-local:
act -W .gitea/workflows/build.yaml
lint:
pnpm run lint
clean:
pnpm run clean
#pack: build
# gnome-extensions pack dist \
# --force \
+2 -1
View File
@@ -5,7 +5,8 @@
"settings-schema": "org.gnome.shell.extensions.aerospike",
"shell-version": [
"48",
"49"
"49",
"50"
],
"gettext-domain": "aerospike@lucaso.io",
"url": "https://gitea.chaosdev.gay/lucasoskorep/aerospike@lucaso.io"
+8 -25
View File
@@ -1,7 +1,7 @@
{
"name": "aerospike",
"version": "0.2.0",
"description": "A TypeScript GNOME Extension for Pretty Borders",
"version": "0.2.3",
"description": "Simple, Opinionated Tiling Window Manager for Gnome written in Typescript",
"type": "module",
"private": true,
"repository": {
@@ -9,13 +9,16 @@
"url": "git+https://gitlab.com/lucasoskorep/aerospike"
},
"author": "Lucas Oskorep <lucas.oskorep@gmail.com>",
"license": "LGPL-3.0-or-later",
"license": "GPL-3.0-only",
"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,
"scripts": {
"build": "tsc",
"clean": "rm -rf dist/*",
"lint": "eslint .",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
@@ -33,25 +36,5 @@
},
"dependencies": {
"@girs/mtk-17": "17.0.0-4.0.0-beta.38"
},
"pnpm": {
"overrides": {
"@girs/cairo-1.0": "1.0.0-4.0.0-beta.38",
"@girs/freetype2-2.0": "2.0.0-4.0.0-beta.38",
"@girs/gdk-4.0": "4.0.0-4.0.0-beta.38",
"@girs/gdkpixbuf-2.0": "2.0.0-4.0.0-beta.38",
"@girs/gio-2.0": "2.86.0-4.0.0-beta.38",
"@girs/gjs": "4.0.0-beta.38",
"@girs/glib-2.0": "2.86.0-4.0.0-beta.38",
"@girs/gmodule-2.0": "2.0.0-4.0.0-beta.38",
"@girs/gobject-2.0": "2.86.0-4.0.0-beta.38",
"@girs/graphene-1.0": "1.0.0-4.0.0-beta.38",
"@girs/gsk-4.0": "4.0.0-4.0.0-beta.38",
"@girs/gtk-4.0": "4.20.1-4.0.0-beta.38",
"@girs/harfbuzz-0.0": "11.5.0-4.0.0-beta.38",
"@girs/mtk-17": "17.0.0-4.0.0-beta.38",
"@girs/pango-1.0": "1.57.0-4.0.0-beta.38",
"@girs/pangocairo-1.0": "1.0.0-4.0.0-beta.38"
}
}
}
-26
View File
@@ -4,24 +4,6 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
overrides:
'@girs/cairo-1.0': 1.0.0-4.0.0-beta.38
'@girs/freetype2-2.0': 2.0.0-4.0.0-beta.38
'@girs/gdk-4.0': 4.0.0-4.0.0-beta.38
'@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-beta.38
'@girs/gio-2.0': 2.86.0-4.0.0-beta.38
'@girs/gjs': 4.0.0-beta.38
'@girs/glib-2.0': 2.86.0-4.0.0-beta.38
'@girs/gmodule-2.0': 2.0.0-4.0.0-beta.38
'@girs/gobject-2.0': 2.86.0-4.0.0-beta.38
'@girs/graphene-1.0': 1.0.0-4.0.0-beta.38
'@girs/gsk-4.0': 4.0.0-4.0.0-beta.38
'@girs/gtk-4.0': 4.20.1-4.0.0-beta.38
'@girs/harfbuzz-0.0': 11.5.0-4.0.0-beta.38
'@girs/mtk-17': 17.0.0-4.0.0-beta.38
'@girs/pango-1.0': 1.57.0-4.0.0-beta.38
'@girs/pangocairo-1.0': 1.0.0-4.0.0-beta.38
importers:
.:
@@ -653,49 +635,41 @@ packages:
resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
cpu: [x64]
os: [linux]
libc: [musl]
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
+9
View File
@@ -47,6 +47,10 @@ export class WindowWrapper {
return this._window.get_frame_rect();
}
isFullscreen(): boolean {
return this._window.is_fullscreen();
}
getTabLabel(): string {
const rawAppName = this._window.get_wm_class() ?? '';
// Strip reverse-domain prefix (e.g. "org.gnome.Nautilus" -> "Nautilus")
@@ -140,6 +144,11 @@ export class WindowWrapper {
return;
}
if (this.isFullscreen()) {
Logger.info("STOPPED RESIZE BECAUSE WINDOW IS FULLSCREEN");
return;
}
const actor = this._window.get_compositor_private() as Clutter.Actor | null;
if (!actor) {
Logger.log("No actor available, can't resize safely yet");
View File