Enhance startup behaviors, fix bugs

This commit is contained in:
2023-05-12 01:51:36 +09:00
parent dc3d46bd55
commit 74f45e2c03
4 changed files with 38 additions and 26 deletions
@@ -57,11 +57,11 @@
</key>
<key type="as" name="incrmfact">
<default><![CDATA[['<Super>h']]]></default>
<default><![CDATA[['<Super>l']]]></default>
<summary>Increase the master area</summary>
</key>
<key type="as" name="decmfact">
<default><![CDATA[['<Super>l']]]></default>
<default><![CDATA[['<Super>h']]]></default>
<summary>Decrease the master area</summary>
</key>
@@ -79,15 +79,6 @@
<summary>Swap the current window with the master</summary>
</key>
<key type="as" name="kill">
<default><![CDATA[['<Super>c']]]></default>
<summary>Kill the current app</summary>
</key>
<key type="as" name="force-kill">
<default><![CDATA[['<Shift><Super>c']]]></default>
<summary>Force kill the current app</summary>
</key>
<!-- TODO: Add fullscreen, swapnext/swapprev, monitors and tags key -->
</schema>
</schemalist>
+1 -1
View File
@@ -56,7 +56,7 @@ var KeyboardManager = GObject.registerClass(
this._addBinding("incrnmaster", () => {
const mon = global.display.get_current_monitor();
this._state.monitors[mon].mfact += 1;
this._state.monitors[mon].nmaster += 1;
this._renderer.render(mon);
});
this._addBinding("decnmaster", () => {
+34 -14
View File
@@ -12,8 +12,8 @@ var Renderer = GObject.registerClass(
class Renderer extends GObject.Object {
_init(state) {
super._init();
this._state = state
log("fairy init");
this._state = state;
log("fairy init!");
}
disable() {
@@ -22,8 +22,21 @@ var Renderer = GObject.registerClass(
enable() {
this._bindSignals();
for (const window of global.display.list_all_windows())
this.trackWindow(window);
const workspace = global.display
.get_workspace_manager()
.get_active_workspace_index();
const tags = 0b1 << workspace;
if (Meta.prefs_get_workspaces_only_on_primary()) {
this._state.monitors[global.display.get_primary_monitor()].tags = tags;
} else {
for (let i = 0; i < this._state.monitors.length; i++)
this._state.monitors[i].tags = tags;
}
this.renderAll();
}
@@ -56,7 +69,7 @@ var Renderer = GObject.registerClass(
// Wait until window actor is available
let waitForWindowId = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
// Stop if the window doesn't exist anymore or the parent is gone
if (!window.get_workspace() || !Main.overview.visible)
if (!window.get_workspace())
return GLib.SOURCE_REMOVE;
// Continue if there's no actor available yet
@@ -87,8 +100,8 @@ var Renderer = GObject.registerClass(
}
this._displaySignals = undefined;
for (const signal of this._wmSignals) {
global.window_manager.disconnect(signal);
for (const signal of this._workspaceSignals) {
global.workspace_manager.disconnect(signal);
}
this._wmSignals = undefined;
@@ -117,18 +130,26 @@ var Renderer = GObject.registerClass(
//
// }),
];
this._wmSignals = [
global.window_manager.connect("switch-workspace", (_wm, _from, to, _direction) => {
this._workspaceSignals = [
global.workspace_manager.connect("active-workspace-changed", () => {
// Convert gnome workspaces to fairy's tags
to = 0b1 << to;
const workspace = global.display
.get_workspace_manager()
.get_active_workspace_index();
const tags = 0b1 << workspace;
log("Switch to tags", tags);
if (Meta.prefs_get_workspaces_only_on_primary()) {
this._state.monitors[global.display.get_primary_monitor()].tags = to;
const primaryMon = global.display.get_primary_monitor();
this._state.monitors[primaryMon].tags = tags;
this.render(primaryMon, tags);
} else {
for (let i = 0; i < this._state.monitors.length; i++)
this._state.monitors[i].tags = to;
for (let i = 0; i < this._state.monitors.length; i++) {
this._state.monitors[i].tags = tags;
this.render(i, tags);
}
}
}),
]
];
}
/**
@@ -178,7 +199,6 @@ var Renderer = GObject.registerClass(
* @param {number?} tags
*/
render(mon, tags) {
console.log("monitors", this._state.monitors)
if (!tags) tags = this._state.monitors[mon].tags;
// We don't care which workspace it is, we just want the geometry
@@ -197,7 +217,7 @@ var Renderer = GObject.registerClass(
}
if (
window.handle["maximized-vertically"] !=
window.handle["maximized-horizontally"] ||
window.handle["maximized-horizontally"] ||
window.handle["maximized-vertically"] != window.maximized
) {
if (window.maximized) window.handle.maximize(Meta.MaximizeFlags.BOTH);
+1
View File
@@ -47,6 +47,7 @@ var StateManager = GObject.registerClass(
*/
newWindow(handle) {
this.windows.push(this._windowFromHandle(handle));
log("New window on tag", this.windows[this.windows.length - 1].tags);
}
/**