separate always-on-top into separate mod

This commit is contained in:
dragonwocky 2020-09-02 21:46:17 +10:00
parent 6ff3a96d81
commit 63e4b574a9
4 changed files with 61 additions and 27 deletions

20
repo/alwaysontop/mod.js Normal file
View File

@ -0,0 +1,20 @@
/*
* always on top
* (c) 2020 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/)
* under the MIT license
*/
'use strict';
// this is actually just a pseudo mod to "separate" the button
// from the core module, but the core still handles actually
// making it work.
module.exports = {
id: '72886371-dada-49a7-9afc-9f275ecf29d3',
tags: ['extension'],
name: 'always on top',
desc:
"add an arrow/button to show the notion window on top of other windows even if it's not focused.",
version: '0.1.1',
author: 'dragonwocky',
};

View File

@ -15,7 +15,10 @@ module.exports = (store) => {
buttons = { buttons = {
element: helpers.createElement('<div class="window-buttons-area"></div>'), element: helpers.createElement('<div class="window-buttons-area"></div>'),
insert: [ insert: [
'alwaysontop', ...((store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {})
.enabled
? ['alwaysontop']
: []),
...(store().frameless && !store().tiling_mode && !is_mac ...(store().frameless && !store().tiling_mode && !is_mac
? ['minimize', 'maximize', 'close'] ? ['minimize', 'maximize', 'close']
: []), : []),

View File

@ -105,19 +105,18 @@ s {
#menu-titlebar { #menu-titlebar {
display: flex; display: flex;
padding: 0.4em;
-webkit-app-region: drag; -webkit-app-region: drag;
} }
#menu-titlebar button { #menu-titlebar button {
-webkit-app-region: no-drag; -webkit-app-region: no-drag;
} }
#menu-titlebar :first-child {
margin-left: auto;
}
#menu-titlebar { #menu-titlebar {
background: var(--theme--dragarea); background: var(--theme--dragarea);
} }
#menu-titlebar:empty { #menu-titlebar > .window-buttons-area {
margin: 0.4em 0.4em 0.4em auto;
}
#menu-titlebar > .window-buttons-area:empty {
display: none; display: none;
} }

View File

@ -15,15 +15,22 @@ const store = require('../../pkg/store.js'),
browser = electron.remote.getCurrentWindow(); browser = electron.remote.getCurrentWindow();
window['__start'] = async () => { window['__start'] = async () => {
if (!store(id).tiling_mode) { const buttons = require('./buttons.js')(() => ({
const buttons = require('./buttons.js')(() => ({ frameless: true })); '72886371-dada-49a7-9afc-9f275ecf29d3': {
enabled: (store('mods')['72886371-dada-49a7-9afc-9f275ecf29d3'] || {})
.enabled,
},
tiling_mode: store('0f0bf8b6-eae6-4273-b307-8fc43f2ee082').tiling_mode,
frameless: true,
}));
document.querySelector('#menu-titlebar').appendChild(buttons.element); document.querySelector('#menu-titlebar').appendChild(buttons.element);
}
document.defaultView.addEventListener('keyup', (event) => { document.defaultView.addEventListener('keyup', (event) => {
if (event.code === 'F5') location.reload(); if (event.code === 'F5') location.reload();
if (!(event.ctrlKey || event.metaKey) && !event.altKey && !event.shiftKey) { const meta =
!(event.ctrlKey || event.metaKey) && !event.altKey && !event.shiftKey;
if ( if (
meta &&
document.activeElement.parentElement.id === 'tags' && document.activeElement.parentElement.id === 'tags' &&
event.key === 'Enter' event.key === 'Enter'
) )
@ -38,9 +45,14 @@ window['__start'] = async () => {
event.key === 'Escape') event.key === 'Escape')
) )
document.activeElement.blur(); document.activeElement.blur();
} else if (event.key === '/') } else if (
(meta && event.key === '/') ||
((event.ctrlKey || event.metaKey) &&
event.key === 'f' &&
!event.altKey &&
!event.shiftKey)
)
document.querySelector('#search > input').focus(); document.querySelector('#search > input').focus();
}
}); });
electron.ipcRenderer.send('enhancer:get-theme-vars'); electron.ipcRenderer.send('enhancer:get-theme-vars');