mirror of
https://github.com/gosticks/PaperWM.git
synced 2026-10-04 19:46:53 +00:00
WIP
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'];
|
||||
var Utils = Extension.imports.utils;
|
||||
var Me = Extension.imports.examples.modifierTrackerExperiments;
|
||||
var ModifierTracker = Extension.imports.modifierTracker;
|
||||
|
||||
var Tiling = Extension.imports.tiling;
|
||||
var Mainloop = imports.mainloop;
|
||||
var Tweener = imports.ui.tweener;
|
||||
|
||||
var source = null;
|
||||
var scale = 1;
|
||||
|
||||
function startZoom() {
|
||||
source = Mainloop.timeout_add(350, () => {
|
||||
log("Zoom!")
|
||||
let space = Tiling.spaces.spaceOfWindow(global.display.focus_window)
|
||||
const zoomed = space.actor;
|
||||
space.visible.forEach(w => {
|
||||
w.get_compositor_private().hide();
|
||||
w.clone.show();
|
||||
})
|
||||
zoomed.show()
|
||||
zoomed.set_pivot_point(0.5,0.5)
|
||||
// scale *= 0.99;
|
||||
scale = 0.8
|
||||
Tweener.addTween(zoomed, {
|
||||
transition: 'easeInOutQuad',
|
||||
scale_x: scale,
|
||||
scale_y: scale,
|
||||
time: 0.500
|
||||
})
|
||||
// zoomed.set_scale(scale, scale);
|
||||
// zoomed.set_pivot_point(space.selectedWindow.clone.x/zoomed.width, 0.5)
|
||||
// startZoom();
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
function resetZoom() {
|
||||
let space = Tiling.spaces.spaceOfWindow(global.display.focus_window)
|
||||
Mainloop.source_remove(source)
|
||||
const zoomed = space.actor;
|
||||
Tweener.removeTweens(zoomed)
|
||||
Tweener.addTween(zoomed, {
|
||||
transition: 'easeInOutQuad',
|
||||
scale_x: 1,
|
||||
scale_y: 1,
|
||||
time: 0.250,
|
||||
onComplete: () => {
|
||||
space.visible.forEach(w => {
|
||||
w.get_compositor_private().show();
|
||||
w.clone.hide();
|
||||
})
|
||||
Tiling.ensureViewport(space.selectedWindow, space, true)
|
||||
}
|
||||
})
|
||||
// zoomed.set_scale(1,1)
|
||||
scale = 1.0;
|
||||
}
|
||||
|
||||
var signals = new Utils.Signals();
|
||||
|
||||
// for fun and giggles
|
||||
function enable() {
|
||||
signals.connect(ModifierTracker, 'modifier-down', Utils.dynamic_function_ref("startZoom", Me))
|
||||
signals.connect(ModifierTracker, 'modifier-up', Utils.dynamic_function_ref("resetZoom", Me))
|
||||
}
|
||||
|
||||
function disable() {
|
||||
signals.destroy();
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'];
|
||||
var Utils = Extension.imports.utils;
|
||||
var Me = Extension.imports.modifierTracker;
|
||||
var Gdk = imports.gi.Gdk;
|
||||
var Signals = imports.signals;
|
||||
var Meta = imports.gi.Meta;
|
||||
|
||||
|
||||
var trackedModifiers = [
|
||||
["Super", Gdk.ModifierType.MOD4_MASK]
|
||||
];
|
||||
|
||||
var keymap;
|
||||
var prevState = 0;
|
||||
|
||||
function stateChangedHandler() {
|
||||
let curState = keymap.get_modifier_state()
|
||||
/// A maze of different kind of mask, can't find the right conversion.. :(
|
||||
// Meta.VirtualModifier
|
||||
// Gdk.ModifierType
|
||||
// const mask = keymap.get_modifier_mask(Gdk.ModifierIntent.DEFAULT_MOD_MASK)
|
||||
// let [suc, rawMask] = keymap.map_virtual_modifiers(curState)
|
||||
// curState = rawMask;
|
||||
// const withVirtual = keymap.add_virtual_modifiers(mask)
|
||||
// curState = withVirtual;
|
||||
const removed = prevState & ~curState
|
||||
const added = curState & ~prevState
|
||||
// log("Added/removed", added, removed)
|
||||
trackedModifiers.forEach(([name, mask]) => {
|
||||
if (removed & mask) {
|
||||
// log(`Me.emit('modifier-up', ${name});`)
|
||||
Me.emit('modifier-up', mask, name, added);
|
||||
}
|
||||
if (added & mask) {
|
||||
// log(`Me.emit('modifier-down', ${name});`)
|
||||
Me.emit('modifier-down', mask, name, removed);
|
||||
}
|
||||
});
|
||||
prevState = curState;
|
||||
}
|
||||
|
||||
var stateChangedId;
|
||||
|
||||
function enable() {
|
||||
Signals.addSignalMethods(Me)
|
||||
keymap = Gdk.Keymap.get_default();
|
||||
stateChangedId = keymap.connect(
|
||||
'state-changed',
|
||||
Utils.dynamic_function_ref(stateChangedHandler.name, Me)
|
||||
)
|
||||
|
||||
// Me.connect('modifier-down', log.bind(log, "modifier-down"))
|
||||
// Me.connect('modifier-up', log.bind(log, "modifier-up"))
|
||||
}
|
||||
|
||||
function disable() {
|
||||
keymap.disconnect(stateChangedId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user