Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2fa02eac85 | |||
| 6dfb107ad9 | |||
| e2fc4e7127 | |||
| bf7fe98b05 | |||
| 4a2067811c | |||
| e49b923667 | |||
| 75f2f107de | |||
| 42d680d00c | |||
| 7f9d040b82 | |||
| 525630009b | |||
| 0720ab6326 | |||
| 6129c98624 | |||
| 9a192afb9b | |||
| 42c1e6731e | |||
| 400ce3a77c | |||
| 2ab3822cb6 | |||
| c1e597579f | |||
| d7ee5ff5e6 | |||
| 52a9bc8c82 | |||
| 46ab8e24b0 | |||
| e0be26c310 | |||
| c824645c3f | |||
| 4c3160e9ca | |||
| 3ded68a8d5 | |||
| 7a160fb102 | |||
| 855a8e4a2e | |||
| dda18f715f | |||
| 0c10fbce4b | |||
| d8bcf472b6 | |||
| 5b8556912f | |||
| 9455c4b4d1 | |||
| 4da03ed2dc | |||
| 18beea21e7 | |||
| e93ffe5da7 | |||
| 979eaa552a | |||
| 6bca124d94 | |||
| b641561bca | |||
| ce8807a7d9 | |||
| 39fdbe62b1 | |||
| 1e3c67273d | |||
| cba529f79e | |||
| d33495a9ea | |||
| 4e5f24c3d6 | |||
| 9e08221a2d | |||
| 57e28ff77a | |||
| ed29d0a0a9 | |||
| 0da844ce97 | |||
| 06b2c5c4a3 | |||
| 7eb26a9f9e | |||
| 012f575ad5 | |||
| 195ada30fb | |||
| 7e21bf695c | |||
| 2607c58a70 | |||
| 305ef0d3e7 | |||
| e5a7a0d96b | |||
| cbaafc6e08 | |||
| 9bf199b1a6 | |||
| 92133701de | |||
| 045649c746 | |||
| 775b79c733 | |||
| 8b1ade3890 | |||
| 901b56cccf |
@@ -31,7 +31,7 @@ jobs:
|
|||||||
apt-get install -y libglib2.0-dev glib-networking zip
|
apt-get install -y libglib2.0-dev glib-networking zip
|
||||||
|
|
||||||
- name: Install project dependencies
|
- name: Install project dependencies
|
||||||
run: pnpm install
|
run: pnpm install --ignore-scripts
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: just test
|
run: just test
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
25
|
||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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 \
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,8 @@
|
|||||||
"settings-schema": "org.gnome.shell.extensions.aerospike",
|
"settings-schema": "org.gnome.shell.extensions.aerospike",
|
||||||
"shell-version": [
|
"shell-version": [
|
||||||
"48",
|
"48",
|
||||||
"49"
|
"49",
|
||||||
|
"50"
|
||||||
],
|
],
|
||||||
"gettext-domain": "aerospike@lucaso.io",
|
"gettext-domain": "aerospike@lucaso.io",
|
||||||
"url": "https://gitea.chaosdev.gay/lucasoskorep/aerospike@lucaso.io"
|
"url": "https://gitea.chaosdev.gay/lucasoskorep/aerospike@lucaso.io"
|
||||||
|
|||||||
+17
-34
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "aerospike",
|
"name": "aerospike",
|
||||||
"version": "0.2.0",
|
"version": "0.2.4",
|
||||||
"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,49 +9,32 @@
|
|||||||
"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"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@girs/gjs": "4.0.0-beta.38",
|
"@girs/gjs": "4.0.4",
|
||||||
"@girs/gnome-shell": "49.1.0",
|
"@girs/gnome-shell": "50.0.0",
|
||||||
"@jest/globals": "^30.0.0",
|
"@jest/globals": "^30.4.1",
|
||||||
"@types/jest": "^30.0.0",
|
"@types/jest": "^30.0.0",
|
||||||
"eslint": "^10.0.0",
|
"eslint": "^10.5.0",
|
||||||
"eslint-plugin-jsdoc": "^62.0.0",
|
"eslint-plugin-jsdoc": "^63.0.2",
|
||||||
"jest": "^30.0.0",
|
"jest": "^30.4.2",
|
||||||
"ts-jest": "^29.1.2",
|
"ts-jest": "^29.4.11",
|
||||||
"typescript": "^5.9.2"
|
"typescript": "^6.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@girs/mtk-17": "17.0.0-4.0.0-beta.38"
|
"@girs/mtk-17": "17.0.0-4.0.4"
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1458
-1392
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
|||||||
|
allowBuilds:
|
||||||
|
unrs-resolver: true
|
||||||
@@ -173,6 +173,7 @@ export default class AerospikeExtensions extends ExtensionPreferences {
|
|||||||
if (!!value) {
|
if (!!value) {
|
||||||
const mappings = value.split(',').map((x) => {
|
const mappings = value.split(',').map((x) => {
|
||||||
const [, key, mods] = Gtk.accelerator_parse(x);
|
const [, key, mods] = Gtk.accelerator_parse(x);
|
||||||
|
if (mods === null) return false;
|
||||||
return Gtk.accelerator_valid(key, mods) && Gtk.accelerator_name(key, mods);
|
return Gtk.accelerator_valid(key, mods) && Gtk.accelerator_name(key, mods);
|
||||||
});
|
});
|
||||||
// Filter out any false values to ensure we only have strings
|
// Filter out any false values to ensure we only have strings
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user