Skip to content
This repository has been archived by the owner on Nov 2, 2020. It is now read-only.

Commit

Permalink
refactor(extension): complete rewrite (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
kiyui authored Oct 11, 2020
1 parent f16aaf2 commit 6c2d200
Show file tree
Hide file tree
Showing 13 changed files with 1,704 additions and 262 deletions.
233 changes: 233 additions & 0 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
env:
es6: true
extends: 'eslint:recommended'
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
- always-multiline
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'
key-spacing:
- error
- beforeColon: false
afterColon: true
keyword-spacing:
- error
- before: true
after: true
linebreak-style:
- error
- unix
lines-between-class-members: error
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-properties:
- error
- object: Lang
property: bind
message: Use arrow notation or Function.prototype.bind()
- object: Lang
property: Class
message: Use ES6 classes
- object: imports
property: mainloop
message: Use GLib main loops and timeouts
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
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|_$)
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
object-curly-spacing: error
object-shorthand: error
operator-assignment: error
operator-linebreak: error
# 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
valid-jsdoc:
- error
- requireReturn: false
wrap-iife:
- error
- inside
yield-star-spacing: error
yoda: error
globals:
ARGV: readonly
Debugger: readonly
GIRepositoryGType: readonly
globalThis: readonly
imports: readonly
Intl: readonly
log: readonly
logError: readonly
print: readonly
printerr: readonly
global: readonly
_: readonly
C_: readonly
N_: readonly
ngettext: readonly
parserOptions:
ecmaVersion: 2019
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
node_modules/
[email protected]
*.compiled
*.gresource
24 changes: 9 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
# gnome screenshot locations extension
Override GNOME's screenshot functionality to use a custom path as the current gsetting value
does not reflect on the `gnome-screenshot` utility as it used to.
# gnome-screenshot-locations-extension

## download
You can enable the extension [here](https://extensions.gnome.org/extension/1179/screenshot-locations/).
Override GNOME's screenshot functionality to use a user-defined path, in the order of:

## what it does
Upon enabling the extension, it disables all default screenshot keys defined in
`org.gnome.settings-daemon.plugins.media-keys` and overrides the default screenshot
behavior to respect the save directory path.
1. User defined path (added behaviour)
2. Pictures directory (default behaviour)
3. Home directory (default behaviour)

The save directory path and extension are defined under `org.gnome.gnome-screenshot`
with the keys `auto-save-directory` and `default-file-type`. You can customize the
save directory with the extension preference tool. A valid example would be
`/home/timur/Pictures/Screenshots` for instance.
![extension preferences](./images/preferences.png)

## acknowledgement
This extension makes use of the excellent [gnome-shell-keybinder](https://github.com/rliang/gnome-shell-keybinder) library.
## installation

Available from GNOME extensions website [here](https://extensions.gnome.org/extension/1179/screenshot-locations/).
Binary file added images/preferences.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"name": "gnome-shell-screenshotlocations-extension",
"description": "Change the default GNOME screenshot directory",
"scripts": {
"build:resources": "glib-compile-resources --sourcedir [email protected]/ [email protected]/org.gnome.shell.extensions.screenshotlocations.data.gresource.xml",
"build:schema": "glib-compile-schemas [email protected]/schemas/",
"build:link": "ln -s $(pwd)/[email protected]/ ~/.local/share/gnome-shell/extensions/",
"build:zip": "cd [email protected]/ && zip -r ../[email protected] ./*",
"build": "npm run build:resources && npm run build:schema && npm run build:zip"
},
"repository": {
"type": "git",
"url": "git+https://github.com/kiyui/gnome-shell-screenshotlocations-extension.git"
},
"keywords": [
"gnome",
"gjs",
"screenshot",
"extension"
],
"author": "Dafne Kiyui",
"license": "GPL-2.0",
"bugs": {
"url": "https://github.com/kiyui/gnome-shell-screenshotlocations-extension/issues"
},
"homepage": "https://github.com/kiyui/gnome-shell-screenshotlocations-extension#readme",
"devDependencies": {
"eslint": "^7.8.1",
"husky": ">=4",
"lint-staged": ">=10"
},
"dependencies": {},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.js": "eslint --fix"
}
}
Loading

0 comments on commit 6c2d200

Please sign in to comment.