-
Notifications
You must be signed in to change notification settings - Fork 55
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #124 from Fmstrat/develop
Merge Develop into master for v11
- Loading branch information
Showing
12 changed files
with
1,604 additions
and
1,144 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,270 @@ | ||
--- | ||
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later | ||
# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com> | ||
env: | ||
es2021: true | ||
extends: 'eslint:recommended' | ||
plugins: | ||
- jsdoc | ||
rules: | ||
array-bracket-newline: | ||
- error | ||
- consistent | ||
array-bracket-spacing: | ||
- error | ||
- never | ||
array-callback-return: error | ||
arrow-parens: | ||
- error | ||
- as-needed | ||
arrow-spacing: error | ||
block-scoped-var: error | ||
block-spacing: error | ||
brace-style: error | ||
# Waiting for this to have matured a bit in eslint | ||
# camelcase: | ||
# - error | ||
# - properties: never | ||
# allow: [^vfunc_, ^on_, _instance_init] | ||
comma-dangle: | ||
- error | ||
- arrays: always-multiline | ||
objects: always-multiline | ||
functions: never | ||
comma-spacing: | ||
- error | ||
- before: false | ||
after: true | ||
comma-style: | ||
- error | ||
- last | ||
computed-property-spacing: error | ||
curly: | ||
- error | ||
- multi-or-nest | ||
- consistent | ||
dot-location: | ||
- error | ||
- property | ||
eol-last: error | ||
eqeqeq: error | ||
func-call-spacing: error | ||
func-name-matching: error | ||
func-style: | ||
- error | ||
- declaration | ||
- allowArrowFunctions: true | ||
indent: | ||
- error | ||
- 4 | ||
- ignoredNodes: | ||
# Allow not indenting the body of GObject.registerClass, since in the | ||
# future it's intended to be a decorator | ||
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' | ||
# Allow dedenting chained member expressions | ||
MemberExpression: 'off' | ||
jsdoc/check-alignment: error | ||
jsdoc/check-param-names: error | ||
jsdoc/check-tag-names: error | ||
jsdoc/check-types: error | ||
jsdoc/implements-on-classes: error | ||
jsdoc/newline-after-description: "off" | ||
jsdoc/require-jsdoc: error | ||
jsdoc/require-param: error | ||
jsdoc/require-param-description: error | ||
jsdoc/require-param-name: error | ||
jsdoc/require-param-type: error | ||
key-spacing: | ||
- error | ||
- beforeColon: false | ||
afterColon: true | ||
keyword-spacing: | ||
- error | ||
- before: true | ||
after: true | ||
linebreak-style: | ||
- error | ||
- unix | ||
lines-between-class-members: | ||
- error | ||
- always | ||
- exceptAfterSingleLine: true | ||
max-nested-callbacks: error | ||
max-statements-per-line: error | ||
new-parens: error | ||
no-array-constructor: error | ||
no-await-in-loop: error | ||
no-caller: error | ||
no-constant-condition: | ||
- error | ||
- checkLoops: false | ||
no-div-regex: error | ||
no-empty: | ||
- error | ||
- allowEmptyCatch: true | ||
no-extra-bind: error | ||
no-extra-parens: | ||
- error | ||
- all | ||
- conditionalAssign: false | ||
nestedBinaryExpressions: false | ||
returnAssign: false | ||
no-implicit-coercion: | ||
- error | ||
- allow: | ||
- '!!' | ||
no-invalid-this: error | ||
no-iterator: error | ||
no-label-var: error | ||
no-lonely-if: error | ||
no-loop-func: error | ||
no-nested-ternary: error | ||
no-new-object: error | ||
no-new-wrappers: error | ||
no-octal-escape: error | ||
no-proto: error | ||
no-prototype-builtins: 'off' | ||
no-restricted-globals: [error, window] | ||
no-restricted-properties: | ||
- error | ||
- object: imports | ||
property: format | ||
message: Use template strings | ||
- object: pkg | ||
property: initFormat | ||
message: Use template strings | ||
- object: Lang | ||
property: copyProperties | ||
message: Use Object.assign() | ||
- object: Lang | ||
property: bind | ||
message: Use arrow notation or Function.prototype.bind() | ||
- object: Lang | ||
property: Class | ||
message: Use ES6 classes | ||
no-restricted-syntax: | ||
- error | ||
- selector: >- | ||
MethodDefinition[key.name="_init"] > | ||
FunctionExpression[params.length=1] > | ||
BlockStatement[body.length=1] | ||
CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] > | ||
Identifier:first-child | ||
message: _init() that only calls super._init() is unnecessary | ||
- selector: >- | ||
MethodDefinition[key.name="_init"] > | ||
FunctionExpression[params.length=0] > | ||
BlockStatement[body.length=1] | ||
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] | ||
message: _init() that only calls super._init() is unnecessary | ||
- selector: BinaryExpression[operator="instanceof"][right.name="Array"] | ||
message: Use Array.isArray() | ||
no-return-assign: error | ||
no-return-await: error | ||
no-self-compare: error | ||
no-shadow: error | ||
no-shadow-restricted-names: error | ||
no-spaced-func: error | ||
no-tabs: error | ||
no-template-curly-in-string: error | ||
no-throw-literal: error | ||
no-trailing-spaces: error | ||
no-undef-init: error | ||
no-unneeded-ternary: error | ||
no-unused-expressions: error | ||
no-unused-vars: | ||
- error | ||
# Vars use a suffix _ instead of a prefix because of file-scope private vars | ||
- varsIgnorePattern: (^unused|Manager|buildPrefsWidget|enable|disable|init|_$) | ||
argsIgnorePattern: ^(unused|_) | ||
no-useless-call: error | ||
no-useless-computed-key: error | ||
no-useless-concat: error | ||
no-useless-constructor: error | ||
no-useless-rename: error | ||
no-useless-return: error | ||
no-whitespace-before-property: error | ||
no-with: error | ||
nonblock-statement-body-position: | ||
- error | ||
- below | ||
object-curly-newline: | ||
- error | ||
- consistent: true | ||
multiline: true | ||
object-curly-spacing: error | ||
object-shorthand: error | ||
operator-assignment: error | ||
operator-linebreak: error | ||
padded-blocks: | ||
- error | ||
- never | ||
# These may be a bit controversial, we can try them out and enable them later | ||
# prefer-const: error | ||
# prefer-destructuring: error | ||
prefer-numeric-literals: error | ||
prefer-promise-reject-errors: error | ||
prefer-rest-params: error | ||
prefer-spread: error | ||
prefer-template: error | ||
quotes: | ||
- error | ||
- single | ||
- avoidEscape: true | ||
require-await: error | ||
rest-spread-spacing: error | ||
semi: | ||
- error | ||
- always | ||
semi-spacing: | ||
- error | ||
- before: false | ||
after: true | ||
semi-style: error | ||
space-before-blocks: error | ||
space-before-function-paren: | ||
- error | ||
- named: never | ||
# for `function ()` and `async () =>`, preserve space around keywords | ||
anonymous: always | ||
asyncArrow: always | ||
space-in-parens: error | ||
space-infix-ops: | ||
- error | ||
- int32Hint: false | ||
space-unary-ops: error | ||
spaced-comment: error | ||
switch-colon-spacing: error | ||
symbol-description: error | ||
template-curly-spacing: error | ||
template-tag-spacing: error | ||
unicode-bom: error | ||
wrap-iife: | ||
- error | ||
- inside | ||
yield-star-spacing: error | ||
yoda: error | ||
settings: | ||
jsdoc: | ||
mode: typescript | ||
globals: | ||
ARGV: readonly | ||
Debugger: readonly | ||
GIRepositoryGType: readonly | ||
globalThis: readonly | ||
imports: readonly | ||
Intl: readonly | ||
log: readonly | ||
logError: readonly | ||
print: readonly | ||
printerr: readonly | ||
window: readonly | ||
TextEncoder: readonly | ||
TextDecoder: readonly | ||
console: readonly | ||
setTimeout: readonly | ||
setInterval: readonly | ||
clearTimeout: readonly | ||
clearInterval: readonly | ||
parserOptions: | ||
ecmaVersion: 2022 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: lint | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
- develop | ||
push: | ||
branches: | ||
- master | ||
- develop | ||
|
||
jobs: | ||
Linting: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install eslint | ||
run: npm install --save-dev eslint | ||
- name: Run ESLint | ||
run: npx eslint . --ext .js --ignore-pattern node_modules/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
wintile@nowsci.com.zip | ||
node_modules/ | ||
package-lock.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,70 @@ | ||
WinTile: Windows 10 window tiling for GNOME | ||
=========================================== | ||
WinTile is a hotkey driven window tiling system for GNOME that imitates the standard `Win-Arrow` keys of Windows 10, allowing you to maximize, maximize to sides, or 1/4 sized to corner a window using just `<Super>`+`<Arrows>`. | ||
# WinTile: Windows 10 window tiling for GNOME | ||
WinTile is a hotkey driven window tiling system for GNOME that imitates the | ||
standard `Win-Arrow` keys of Windows 10, allowing you to maximize, maximize | ||
to sides, or 1/4 sized to corner a window using just `<Super>`+`<Arrows>`. | ||
|
||
WinTile also supports: | ||
- 2, 3, or 4 columns for standard or ultrawide monitors | ||
- Mouse preview and snapping for placing windows | ||
- Toggling of "maximize" mode, which adds/removes GNOME animations | ||
- Mouse preview and snapping for placing tiles | ||
- "Maximize" mode, which adds/removes GNOME animations | ||
- Ultrawide-only mode limits 16:9 screens to a 2x2 grid | ||
|
||
WinTile can be found on the GNOME Extension site: | ||
<img src='demo.gif'> | ||
|
||
https://extensions.gnome.org/extension/1723/wintile-windows-10-window-tiling-for-gnome/ | ||
# Usage: | ||
### Moving with arrow key: | ||
Pressing `<Super>`+`<Arrows>` will move tile around the screen. | ||
- `<Super>`+`<Up>` will maximize your tile with a few different levels | ||
- Maximized vertically in the current column | ||
- Maximized horizontally in the top row | ||
- If you're using 4 col mode, it will maximize in the center at double-width first | ||
|
||
<img src='demo.gif'> | ||
- `<Super>`+`<Left>` or `<Super>`+`<Right>` | ||
- Move a tile in that direction. If it's at the edge of a screen, it will go full-height | ||
- If a tile is more than 1 column wide and on the edge in that direction | ||
it will shrink by 1 column | ||
|
||
- `<Super>`+`<Down>` will maximize your tile with a few different levels | ||
- If you're already maximized in 4 col mode, it will downsize in the center at double-width | ||
- If maximized vertically, it will shrink to the bottom row | ||
- If minimizing is enabled, the tile will disappear to the task bar | ||
|
||
### Moving with the mouse: | ||
Dragging a window around the edge of the screen will create a preview of | ||
where that tile will snap. | ||
|
||
There are a few zones to be aware of | ||
- Top Center maximizes a window | ||
- Bottom Center maximizes horizontally in the bottom row | ||
- In the center of any column on the bottom row will maximize vertically in that column | ||
- Right or left center will maximize vertically in a column | ||
- If using 4 columns and double-width is enabled, it will maximize on that half of the screen | ||
|
||
- Any other zone along the edge will create a 1x1 tile | ||
|
||
# Configuration | ||
### Browser | ||
1. Visit https://extensions.gnome.org/local/ | ||
1. Click on the "Configure this extension" button. | ||
1. Alternatively, open the `Extension` settings in [Gnome Tweaks](https://gitlab.gnome.org/GNOME/gnome-tweaks), locate `Wintile` and click on the cogwheel button to bring up the configuration dialog. | ||
|
||
### Gnome-tweaks | ||
1. Open `Extension` settings in [Gnome Tweaks](https://gitlab.gnome.org/GNOME/gnome-tweaks) | ||
1. locate `Wintile` and click on the cogwheel button to bring up the configuration dialog. | ||
|
||
|
||
# Installation | ||
### GNOME Extension site: | ||
https://extensions.gnome.org/extension/1723/wintile-windows-10-window-tiling-for-gnome/ | ||
|
||
### Building from source | ||
1. Download source code from the [Master](https://github.com/Fmstrat/wintile/archive/refs/heads/master.zip) or [develop](https://github.com/Fmstrat/wintile/archive/refs/heads/develop.zip) branches. | ||
1. unzip the file | ||
1. cd into the directory it creates | ||
1. run `./build.sh` | ||
1. run `unzip wintile@nowsci.com.zip` | ||
1. run `cp -r wintile@nowsci.com ~/.local/share/gnome-shell/extensions/` | ||
1. restart your session | ||
|
||
Wayland users need to reboot to enable the extension. | ||
|
||
Gnome users can press `<Alt>`+`<F2>` and run `r` from the prompt. **(IT WILL NOT WORK from a terminal)** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
#!/bin/bash | ||
|
||
rm wintile@nowsci.com.zip | ||
glib-compile-schemas schemas/ | ||
zip -r -xdemo.gif -xREADME.md -xbuild.sh wintile@nowsci.com.zip * | ||
zip -r9 wintile@nowsci.com.zip . -x '.git*' build.sh demo.gif .eslintrc.yml 'node_modules/*' package.json README.md |
Oops, something went wrong.