Compare commits
63
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39410d2727 | ||
|
|
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
|
||||
|
||||
- name: Install project dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --ignore-scripts
|
||||
|
||||
- name: Run unit tests
|
||||
run: just test
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
25
|
||||
@@ -1 +1,30 @@
|
||||
# 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
|
||||
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
@@ -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"
|
||||
|
||||
+17
-34
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "aerospike",
|
||||
"version": "0.2.0",
|
||||
"description": "A TypeScript GNOME Extension for Pretty Borders",
|
||||
"version": "0.2.4",
|
||||
"description": "Simple, Opinionated Tiling Window Manager for Gnome written in Typescript",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"repository": {
|
||||
@@ -9,49 +9,32 @@
|
||||
"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"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@girs/gjs": "4.0.0-beta.38",
|
||||
"@girs/gnome-shell": "49.1.0",
|
||||
"@jest/globals": "^30.0.0",
|
||||
"@girs/gjs": "4.0.4",
|
||||
"@girs/gnome-shell": "50.0.0",
|
||||
"@jest/globals": "^30.4.1",
|
||||
"@types/jest": "^30.0.0",
|
||||
"eslint": "^10.0.0",
|
||||
"eslint-plugin-jsdoc": "^62.0.0",
|
||||
"jest": "^30.0.0",
|
||||
"ts-jest": "^29.1.2",
|
||||
"typescript": "^5.9.2"
|
||||
"eslint": "^10.5.0",
|
||||
"eslint-plugin-jsdoc": "^63.0.2",
|
||||
"jest": "^30.4.2",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^6.0.3"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"@girs/mtk-17": "17.0.0-4.0.4"
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
const mappings = value.split(',').map((x) => {
|
||||
const [, key, mods] = Gtk.accelerator_parse(x);
|
||||
if (mods === null) return false;
|
||||
return Gtk.accelerator_valid(key, mods) && Gtk.accelerator_name(key, mods);
|
||||
});
|
||||
// Filter out any false values to ensure we only have strings
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user