Compare commits
39 Commits
citadel
...
shell-tool
Author | SHA1 | Date | |
---|---|---|---|
|
83f37da1c1 | ||
|
c2706add36 | ||
|
0a187b7222 | ||
|
3abe92d15d | ||
|
45b4d0384c | ||
|
083eed140c | ||
|
1283f0b160 | ||
|
3bbdc1e1e1 | ||
|
25f1246b6f | ||
|
a37c86636b | ||
|
4057cfaa17 | ||
|
76443e91cd | ||
|
d3c4c1f5ed | ||
|
040ddf077c | ||
|
f313d38458 | ||
|
304b48a15d | ||
|
d92b1d8da2 | ||
|
df3ac4b25e | ||
|
0ce05a04c8 | ||
|
c1c4adda02 | ||
|
595242c389 | ||
|
7e678ef0d2 | ||
|
ebbf304899 | ||
|
2077485827 | ||
|
0c0a0c66e2 | ||
|
2412a89445 | ||
|
789e268264 | ||
|
7507d10223 | ||
|
b18a8ebcae | ||
|
ed07413c20 | ||
|
f94eab803b | ||
|
0315a6e4a8 | ||
|
48085dd428 | ||
|
099b73a0c4 | ||
|
b8d46422d5 | ||
|
459bdfba78 | ||
|
66414ea3f6 | ||
|
d453067e24 | ||
|
ae320a26fc |
@ -1,8 +0,0 @@
|
|||||||
extends:
|
|
||||||
- ./lint/eslintrc-gjs.yml
|
|
||||||
- ./lint/eslintrc-shell.yml
|
|
||||||
overrides:
|
|
||||||
- files:
|
|
||||||
- js/ui/init.js
|
|
||||||
parserOptions:
|
|
||||||
sourceType: module
|
|
80
.gitignore
vendored
80
.gitignore
vendored
@ -3,82 +3,42 @@
|
|||||||
*.o
|
*.o
|
||||||
.deps
|
.deps
|
||||||
.libs
|
.libs
|
||||||
ABOUT-NLS
|
|
||||||
ChangeLog
|
ChangeLog
|
||||||
INSTALL
|
INSTALL
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
NEWS
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
autom4te.cache
|
autom4te.cache
|
||||||
data/.osk-layout-workbench
|
config.h
|
||||||
data/org.gnome.Shell.desktop
|
config.h.in
|
||||||
data/org.gnome.Shell.desktop.in
|
config.log
|
||||||
data/gnome-shell-extension-prefs.desktop
|
config.status
|
||||||
data/gnome-shell-extension-prefs.desktop.in
|
config
|
||||||
data/gnome-shell-theme.gresource
|
configure
|
||||||
data/gschemas.compiled
|
data/gnome-shell.desktop
|
||||||
data/perf-background.xml
|
data/gnome-shell.desktop.in
|
||||||
data/org.gnome.shell.gschema.xml
|
intltool-extract.in
|
||||||
data/org.gnome.shell.gschema.valid
|
intltool-merge.in
|
||||||
data/org.gnome.Shell.PortalHelper.desktop
|
intltool-update.in
|
||||||
data/org.gnome.Shell.PortalHelper.service
|
libtool
|
||||||
data/theme/.sass-cache
|
|
||||||
data/theme/gnome-shell*.css.map
|
|
||||||
data/theme/gnome-shell*.css
|
|
||||||
docs/reference/*/*.args
|
|
||||||
docs/reference/*/*.bak
|
|
||||||
docs/reference/*/*.hierarchy
|
|
||||||
docs/reference/*/*.interfaces
|
|
||||||
docs/reference/*/*.prerequisites
|
|
||||||
docs/reference/*/*.sgml
|
|
||||||
docs/reference/*/*.signals
|
|
||||||
docs/reference/*/*.stamp
|
|
||||||
docs/reference/*/*.txt
|
|
||||||
docs/reference/*/*.types
|
|
||||||
docs/reference/*/html/
|
|
||||||
docs/reference/*/xml/
|
|
||||||
docs/reference/shell/doc-gen-*
|
|
||||||
js/misc/config.js
|
|
||||||
js/js-resources.c
|
|
||||||
js/js-resources.h
|
|
||||||
man/gnome-shell.1
|
|
||||||
omf.make
|
omf.make
|
||||||
po/*.gmo
|
po/*.gmo
|
||||||
po/gnome-shell.pot
|
po/Makefile.in.in
|
||||||
po/*.header
|
|
||||||
po/*.sed
|
|
||||||
po/*.sin
|
|
||||||
po/.intltool-merge-cache
|
|
||||||
po/Makevars.template
|
|
||||||
po/POTFILES
|
po/POTFILES
|
||||||
po/Rules-quot
|
|
||||||
po/stamp-it
|
po/stamp-it
|
||||||
scripts/launcher.pyc
|
scripts/launcher.pyc
|
||||||
src/*.gir
|
src/*.gir
|
||||||
src/*.typelib
|
src/*.typelib
|
||||||
src/*-enum-types.[ch]
|
src/*-enum-types.[ch]
|
||||||
src/*-marshal.[ch]
|
src/*-marshal.[ch]
|
||||||
src/calendar-server/evolution-calendar.desktop
|
src/Makefile
|
||||||
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
src/Makefile.in
|
||||||
|
src/gnomeshell-taskpanel
|
||||||
src/gnome-shell
|
src/gnome-shell
|
||||||
src/gnome-shell-calendar-server
|
|
||||||
src/gnome-shell-extension-tool
|
|
||||||
src/gnome-shell-hotplug-sniffer
|
|
||||||
src/gnome-shell-perf-helper
|
|
||||||
src/gnome-shell-perf-tool
|
|
||||||
src/gnome-shell-portal-helper
|
|
||||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
|
||||||
src/org-gtk-application.[ch]
|
|
||||||
src/run-js-test
|
|
||||||
src/test-recorder
|
src/test-recorder
|
||||||
src/test-recorder.ogg
|
src/test-recorder.ogg
|
||||||
src/test-theme
|
src/test-theme
|
||||||
src/st.h
|
|
||||||
src/stamp-st.h
|
|
||||||
src/stamp-st.h.tmp
|
|
||||||
src/st-scroll-view-fade-generated.c
|
|
||||||
src/stamp-st-scroll-view-fade-generated.c
|
|
||||||
stamp-h1
|
stamp-h1
|
||||||
tests/run-test.sh
|
tests/run-test.sh
|
||||||
*~
|
xmldocs.make
|
||||||
*.patch
|
|
||||||
*.sw?
|
|
||||||
.vscode
|
|
||||||
|
288
.gitlab-ci.yml
288
.gitlab-ci.yml
@ -1,288 +0,0 @@
|
|||||||
include:
|
|
||||||
- remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/HEAD/flatpak/flatpak_ci_initiative.yml'
|
|
||||||
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml'
|
|
||||||
- remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/ci-fairy.yml'
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- pre_review
|
|
||||||
- prep
|
|
||||||
- review
|
|
||||||
- build
|
|
||||||
- test
|
|
||||||
- analyze
|
|
||||||
- deploy
|
|
||||||
|
|
||||||
default:
|
|
||||||
# Cancel jobs if newer commits are pushed to the branch
|
|
||||||
interruptible: true
|
|
||||||
# Auto-retry jobs in case of infra failures
|
|
||||||
retry:
|
|
||||||
max: 1
|
|
||||||
when:
|
|
||||||
- 'runner_system_failure'
|
|
||||||
- 'stuck_or_timeout_failure'
|
|
||||||
- 'scheduler_failure'
|
|
||||||
- 'api_failure'
|
|
||||||
|
|
||||||
variables:
|
|
||||||
FDO_UPSTREAM_REPO: GNOME/gnome-shell
|
|
||||||
BUNDLE: "extensions-git.flatpak"
|
|
||||||
JS_LOG: "js-report.txt"
|
|
||||||
LINT_LOG: "eslint-report.xml"
|
|
||||||
LINT_MR_LOG: "eslint-mr-report.xml"
|
|
||||||
|
|
||||||
image: registry.gitlab.gnome.org/gnome/mutter/fedora/34:x86_64-2021-09-04.1
|
|
||||||
|
|
||||||
workflow:
|
|
||||||
rules:
|
|
||||||
- if: '$CI_MERGE_REQUEST_IID'
|
|
||||||
- if: '$CI_COMMIT_TAG'
|
|
||||||
- if: '$CI_COMMIT_BRANCH'
|
|
||||||
|
|
||||||
.pipeline_guard: &pipeline_guard
|
|
||||||
rules:
|
|
||||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
||||||
- if: '$CI_COMMIT_TAG'
|
|
||||||
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
||||||
- if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/'
|
|
||||||
- when: 'manual'
|
|
||||||
|
|
||||||
.gnome-shell.fedora:34:
|
|
||||||
variables:
|
|
||||||
FDO_DISTRIBUTION_VERSION: 34
|
|
||||||
FDO_DISTRIBUTION_TAG: '2021-08-12.0'
|
|
||||||
FDO_DISTRIBUTION_PACKAGES: >
|
|
||||||
findutils mozjs78-devel nodejs npm meson
|
|
||||||
pkgconfig(gio-2.0) pkgconfig(gio-unix-2.0)
|
|
||||||
pkgconfig(gnome-autoar-0) pkgconfig(json-glib-1.0)
|
|
||||||
FDO_DISTRIBUTION_EXEC: |
|
|
||||||
# For static analysis with eslint
|
|
||||||
npm install -g eslint eslint-plugin-jsdoc &&
|
|
||||||
|
|
||||||
dnf group install -y 'Development Tools' \
|
|
||||||
'C Development Tools and Libraries' &&
|
|
||||||
|
|
||||||
./.gitlab-ci/install-meson-project.sh \
|
|
||||||
-Dman=false \
|
|
||||||
https://gitlab.gnome.org/GNOME/gnome-shell.git \
|
|
||||||
3.38.0 \
|
|
||||||
subprojects/extensions-tool/ \
|
|
||||||
./generate-translations.sh &&
|
|
||||||
|
|
||||||
dnf clean all
|
|
||||||
|
|
||||||
check_commit_log:
|
|
||||||
extends:
|
|
||||||
- .fdo.ci-fairy
|
|
||||||
stage: pre_review
|
|
||||||
variables:
|
|
||||||
GIT_DEPTH: "100"
|
|
||||||
script:
|
|
||||||
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
|
|
||||||
then
|
|
||||||
ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ;
|
|
||||||
else
|
|
||||||
echo "Not a merge request" ;
|
|
||||||
fi
|
|
||||||
<<: *pipeline_guard
|
|
||||||
artifacts:
|
|
||||||
expire_in: 1 week
|
|
||||||
paths:
|
|
||||||
- commit-message-junit-report.xml
|
|
||||||
reports:
|
|
||||||
junit: commit-message-junit-report.xml
|
|
||||||
|
|
||||||
check-merge-request:
|
|
||||||
extends:
|
|
||||||
- .fdo.ci-fairy
|
|
||||||
stage: pre_review
|
|
||||||
script:
|
|
||||||
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
|
|
||||||
then
|
|
||||||
ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ;
|
|
||||||
else
|
|
||||||
echo "Not a merge request" ;
|
|
||||||
fi
|
|
||||||
<<: *pipeline_guard
|
|
||||||
artifacts:
|
|
||||||
expire_in: 1 week
|
|
||||||
paths:
|
|
||||||
- check-merge-request-report.xml
|
|
||||||
reports:
|
|
||||||
junit: check-merge-request-report.xml
|
|
||||||
|
|
||||||
build-fedora-container:
|
|
||||||
extends:
|
|
||||||
- .fdo.container-build@fedora@x86_64
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: prep
|
|
||||||
|
|
||||||
js_check:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- find js -name '*.js' $(printf "! -wholename %s " $(cat .jscheckignore)) -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG
|
|
||||||
- (! grep -q . $JS_LOG)
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- ${JS_LOG}
|
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
eslint:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- export NODE_PATH=$(npm root -g)
|
|
||||||
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit: ${LINT_LOG}
|
|
||||||
when: always
|
|
||||||
|
|
||||||
eslint_mr:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- export NODE_PATH=$(npm root -g)
|
|
||||||
- ./.gitlab-ci/run-eslint --output-file ${LINT_MR_LOG} --format junit
|
|
||||||
--remote ${CI_MERGE_REQUEST_PROJECT_URL}.git
|
|
||||||
--branch ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
|
|
||||||
only:
|
|
||||||
- merge_requests
|
|
||||||
artifacts:
|
|
||||||
reports:
|
|
||||||
junit: ${LINT_MR_LOG}
|
|
||||||
when: always
|
|
||||||
|
|
||||||
potfile_c_check:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- ./.gitlab-ci/check-potfiles.sh
|
|
||||||
|
|
||||||
potfile_js_check:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- js78 -m .gitlab-ci/check-potfiles.js
|
|
||||||
|
|
||||||
no_template_check:
|
|
||||||
extends:
|
|
||||||
- .fdo.distribution-image@fedora
|
|
||||||
- .gnome-shell.fedora:34
|
|
||||||
stage: review
|
|
||||||
script:
|
|
||||||
- ./.gitlab-ci/check-template-strings.sh
|
|
||||||
|
|
||||||
build:
|
|
||||||
stage: build
|
|
||||||
needs: ["check_commit_log"]
|
|
||||||
before_script:
|
|
||||||
- .gitlab-ci/checkout-mutter.sh
|
|
||||||
- meson mutter mutter/build --prefix=/usr
|
|
||||||
- meson install -C mutter/build
|
|
||||||
script:
|
|
||||||
- meson . build -Dbuildtype=debugoptimized -Dman=false --werror
|
|
||||||
- meson compile -C build
|
|
||||||
- meson install -C build
|
|
||||||
artifacts:
|
|
||||||
expire_in: 1 day
|
|
||||||
paths:
|
|
||||||
- mutter
|
|
||||||
- build
|
|
||||||
|
|
||||||
test:
|
|
||||||
stage: test
|
|
||||||
needs: ["build"]
|
|
||||||
variables:
|
|
||||||
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
|
|
||||||
NO_AT_BRIDGE: "1"
|
|
||||||
before_script:
|
|
||||||
- meson install -C mutter/build
|
|
||||||
script:
|
|
||||||
- dbus-run-session -- xvfb-run meson test -C build --no-rebuild
|
|
||||||
artifacts:
|
|
||||||
expire_in: 1 day
|
|
||||||
paths:
|
|
||||||
- build/meson-logs/testlog.txt
|
|
||||||
reports:
|
|
||||||
junit: build/meson-logs/testlog.junit.xml
|
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
test-coverity:
|
|
||||||
rules:
|
|
||||||
- if: '$CI_PIPELINE_SOURCE == "schedule" && $GNOME_SHELL_SCHEDULED_JOB == "coverity"'
|
|
||||||
when: always
|
|
||||||
- when: manual
|
|
||||||
needs: ["build"]
|
|
||||||
stage: analyze
|
|
||||||
allow_failure: true
|
|
||||||
before_script:
|
|
||||||
- meson install -C mutter/build
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/download-coverity-tarball.sh
|
|
||||||
- CC=clang meson coverity-build -Dman=false
|
|
||||||
- ./coverity/cov-analysis-linux64-*/bin/cov-build --fs-capture-search js --dir cov-int meson compile -C coverity-build
|
|
||||||
- tar czf cov-int.tar.gz cov-int
|
|
||||||
- curl https://scan.coverity.com/builds?project=GNOME+Shell
|
|
||||||
--form token=$COVERITY_TOKEN --form email=carlosg@gnome.org
|
|
||||||
--form file=@cov-int.tar.gz --form version="`git describe --tags`"
|
|
||||||
--form description="GitLab CI build"
|
|
||||||
cache:
|
|
||||||
key: coverity-tarball
|
|
||||||
paths:
|
|
||||||
- coverity
|
|
||||||
|
|
||||||
flatpak:
|
|
||||||
stage: build
|
|
||||||
needs: ["check_commit_log"]
|
|
||||||
variables:
|
|
||||||
SUBPROJECT: "subprojects/extensions-app"
|
|
||||||
# Your manifest path
|
|
||||||
MANIFEST_PATH: "$SUBPROJECT/build-aux/flatpak/org.gnome.Extensions.json"
|
|
||||||
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
|
|
||||||
FLATPAK_MODULE: "gnome-extensions-app"
|
|
||||||
APP_ID: "org.gnome.Extensions.Devel"
|
|
||||||
extends: .flatpak
|
|
||||||
|
|
||||||
nightly:
|
|
||||||
extends: '.publish_nightly'
|
|
||||||
variables:
|
|
||||||
BUNDLES: '$BUNDLE'
|
|
||||||
|
|
||||||
dist:
|
|
||||||
variables:
|
|
||||||
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
|
|
||||||
NO_AT_BRIDGE: "1"
|
|
||||||
stage: deploy
|
|
||||||
needs: ["build"]
|
|
||||||
before_script:
|
|
||||||
- meson install -C mutter/build
|
|
||||||
- mkdir -m 700 $XDG_RUNTIME_DIR
|
|
||||||
script:
|
|
||||||
- dbus-run-session xvfb-run meson dist -C build
|
|
||||||
rules:
|
|
||||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
||||||
changes:
|
|
||||||
- "**/meson.build"
|
|
||||||
- meson/*
|
|
||||||
|
|
||||||
|
|
||||||
dist-tarball:
|
|
||||||
extends: dist
|
|
||||||
artifacts:
|
|
||||||
expose_as: 'Get tarball here'
|
|
||||||
paths:
|
|
||||||
- build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz
|
|
||||||
rules:
|
|
||||||
- if: '$CI_COMMIT_TAG'
|
|
@ -1,202 +0,0 @@
|
|||||||
const gettextFuncs = new Set([
|
|
||||||
'_',
|
|
||||||
'N_',
|
|
||||||
'C_',
|
|
||||||
'NC_',
|
|
||||||
'dcgettext',
|
|
||||||
'dgettext',
|
|
||||||
'dngettext',
|
|
||||||
'dpgettext',
|
|
||||||
'gettext',
|
|
||||||
'ngettext',
|
|
||||||
'pgettext',
|
|
||||||
]);
|
|
||||||
|
|
||||||
function dirname(file) {
|
|
||||||
const split = file.split('/');
|
|
||||||
split.pop();
|
|
||||||
return split.join('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
const scriptDir = dirname(import.meta.url);
|
|
||||||
const root = dirname(scriptDir);
|
|
||||||
|
|
||||||
const excludedFiles = new Set();
|
|
||||||
const foundFiles = new Set()
|
|
||||||
|
|
||||||
function addExcludes(filename) {
|
|
||||||
const contents = os.file.readFile(filename);
|
|
||||||
const lines = contents.split('\n')
|
|
||||||
.filter(l => l && !l.startsWith('#'));
|
|
||||||
lines.forEach(line => excludedFiles.add(line));
|
|
||||||
}
|
|
||||||
|
|
||||||
addExcludes(`${root}/po/POTFILES.in`);
|
|
||||||
addExcludes(`${root}/po/POTFILES.skip`);
|
|
||||||
|
|
||||||
function walkAst(node, func) {
|
|
||||||
func(node);
|
|
||||||
nodesToWalk(node).forEach(n => walkAst(n, func));
|
|
||||||
}
|
|
||||||
|
|
||||||
function findGettextCalls(node) {
|
|
||||||
switch(node.type) {
|
|
||||||
case 'CallExpression':
|
|
||||||
if (node.callee.type === 'Identifier' &&
|
|
||||||
gettextFuncs.has(node.callee.name))
|
|
||||||
throw new Error();
|
|
||||||
if (node.callee.type === 'MemberExpression' &&
|
|
||||||
node.callee.object.type === 'Identifier' &&
|
|
||||||
node.callee.object.name === 'Gettext' &&
|
|
||||||
node.callee.property.type === 'Identifier' &&
|
|
||||||
gettextFuncs.has(node.callee.property.name))
|
|
||||||
throw new Error();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function nodesToWalk(node) {
|
|
||||||
switch(node.type) {
|
|
||||||
case 'ArrayPattern':
|
|
||||||
case 'BreakStatement':
|
|
||||||
case 'CallSiteObject': // i.e. strings passed to template
|
|
||||||
case 'ContinueStatement':
|
|
||||||
case 'DebuggerStatement':
|
|
||||||
case 'EmptyStatement':
|
|
||||||
case 'Identifier':
|
|
||||||
case 'Literal':
|
|
||||||
case 'MetaProperty': // i.e. new.target
|
|
||||||
case 'Super':
|
|
||||||
case 'ThisExpression':
|
|
||||||
return [];
|
|
||||||
case 'ArrowFunctionExpression':
|
|
||||||
case 'FunctionDeclaration':
|
|
||||||
case 'FunctionExpression':
|
|
||||||
return [...node.defaults, node.body].filter(n => !!n);
|
|
||||||
case 'AssignmentExpression':
|
|
||||||
case 'BinaryExpression':
|
|
||||||
case 'ComprehensionBlock':
|
|
||||||
case 'LogicalExpression':
|
|
||||||
return [node.left, node.right];
|
|
||||||
case 'ArrayExpression':
|
|
||||||
case 'TemplateLiteral':
|
|
||||||
return node.elements.filter(n => !!n);
|
|
||||||
case 'BlockStatement':
|
|
||||||
case 'Program':
|
|
||||||
return node.body;
|
|
||||||
case 'CallExpression':
|
|
||||||
case 'NewExpression':
|
|
||||||
case 'TaggedTemplate':
|
|
||||||
return [node.callee, ...node.arguments];
|
|
||||||
case 'CatchClause':
|
|
||||||
return [node.body, node.guard].filter(n => !!n);
|
|
||||||
case 'ClassExpression':
|
|
||||||
case 'ClassStatement':
|
|
||||||
return [...node.body, node.superClass].filter(n => !!n);
|
|
||||||
case 'ClassMethod':
|
|
||||||
return [node.name, node.body];
|
|
||||||
case 'ComprehensionExpression':
|
|
||||||
case 'GeneratorExpression':
|
|
||||||
return [node.body, ...node.blocks, node.filter].filter(n => !!n);
|
|
||||||
case 'ComprehensionIf':
|
|
||||||
return [node.test];
|
|
||||||
case 'ComputedName':
|
|
||||||
return [node.name];
|
|
||||||
case 'ConditionalExpression':
|
|
||||||
case 'IfStatement':
|
|
||||||
return [node.test, node.consequent, node.alternate].filter(n => !!n);
|
|
||||||
case 'DoWhileStatement':
|
|
||||||
case 'WhileStatement':
|
|
||||||
return [node.body, node.test];
|
|
||||||
case 'ExportDeclaration':
|
|
||||||
return [node.declaration, node.source].filter(n => !!n);
|
|
||||||
case 'ImportDeclaration':
|
|
||||||
return [...node.specifiers, node.source];
|
|
||||||
case 'LetStatement':
|
|
||||||
return [...node.head, node.body];
|
|
||||||
case 'ExpressionStatement':
|
|
||||||
return [node.expression];
|
|
||||||
case 'ForInStatement':
|
|
||||||
case 'ForOfStatement':
|
|
||||||
return [node.body, node.left, node.right];
|
|
||||||
case 'ForStatement':
|
|
||||||
return [node.init, node.test, node.update, node.body].filter(n => !!n);
|
|
||||||
case 'LabeledStatement':
|
|
||||||
return [node.body];
|
|
||||||
case 'MemberExpression':
|
|
||||||
return [node.object, node.property];
|
|
||||||
case 'ObjectExpression':
|
|
||||||
case 'ObjectPattern':
|
|
||||||
return node.properties;
|
|
||||||
case 'OptionalExpression':
|
|
||||||
return [node.expression];
|
|
||||||
case 'OptionalMemberExpression':
|
|
||||||
return [node.object, node.property];
|
|
||||||
case 'Property':
|
|
||||||
case 'PrototypeMutation':
|
|
||||||
return [node.value];
|
|
||||||
case 'ReturnStatement':
|
|
||||||
case 'ThrowStatement':
|
|
||||||
case 'UnaryExpression':
|
|
||||||
case 'UpdateExpression':
|
|
||||||
case 'YieldExpression':
|
|
||||||
return node.argument ? [node.argument] : [];
|
|
||||||
case 'SequenceExpression':
|
|
||||||
return node.expressions;
|
|
||||||
case 'SpreadExpression':
|
|
||||||
return [node.expression];
|
|
||||||
case 'SwitchCase':
|
|
||||||
return [node.test, ...node.consequent].filter(n => !!n);
|
|
||||||
case 'SwitchStatement':
|
|
||||||
return [node.discriminant, ...node.cases];
|
|
||||||
case 'TryStatement':
|
|
||||||
return [node.block, node.handler, node.finalizer].filter(n => !!n);
|
|
||||||
case 'VariableDeclaration':
|
|
||||||
return node.declarations;
|
|
||||||
case 'VariableDeclarator':
|
|
||||||
return node.init ? [node.init] : [];
|
|
||||||
case 'WithStatement':
|
|
||||||
return [node.object, node.body];
|
|
||||||
default:
|
|
||||||
print(`Ignoring ${node.type}, you should probably fix this in the script`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function walkDir(dir) {
|
|
||||||
os.file.listDir(dir).forEach(child => {
|
|
||||||
if (child.startsWith('.'))
|
|
||||||
return;
|
|
||||||
|
|
||||||
const path = os.path.join(dir, child);
|
|
||||||
const relativePath = path.replace(`${root}/`, '');
|
|
||||||
if (excludedFiles.has(relativePath))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!child.endsWith('.js')) {
|
|
||||||
try {
|
|
||||||
walkDir(path);
|
|
||||||
} catch (e) {
|
|
||||||
// not a directory
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const script = os.file.readFile(path);
|
|
||||||
const ast = Reflect.parse(script);
|
|
||||||
walkAst(ast, findGettextCalls);
|
|
||||||
} catch (e) {
|
|
||||||
foundFiles.add(path);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
walkDir(root);
|
|
||||||
|
|
||||||
if (foundFiles.size === 0)
|
|
||||||
quit(0);
|
|
||||||
|
|
||||||
print('The following files are missing from po/POTFILES.in:')
|
|
||||||
foundFiles.forEach(f => print(` ${f}`));
|
|
||||||
quit(1);
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
srcdirs="src subprojects/extensions-tool"
|
|
||||||
|
|
||||||
# find source files that contain gettext keywords
|
|
||||||
files=$(grep -lR --include='*.c' '\(gettext\|[^I_)]_\)(' $srcdirs)
|
|
||||||
|
|
||||||
# filter out excluded files
|
|
||||||
if [ -f po/POTFILES.skip ]; then
|
|
||||||
files=$(for f in $files; do ! grep -q ^$f po/POTFILES.skip && echo $f; done)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# find those that aren't listed in POTFILES.in
|
|
||||||
missing=$(for f in $files; do ! grep -q ^$f po/POTFILES.in && echo $f; done)
|
|
||||||
|
|
||||||
if [ ${#missing} -eq 0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >&2 <<EOT
|
|
||||||
|
|
||||||
The following files are missing from po/POTFILES.po:
|
|
||||||
|
|
||||||
EOT
|
|
||||||
for f in $missing; do
|
|
||||||
echo " $f" >&2
|
|
||||||
done
|
|
||||||
echo >&2
|
|
||||||
|
|
||||||
exit 1
|
|
@ -1,23 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# find files from POTFILES.in that use js template strings
|
|
||||||
baddies=$(grep -l '${' $(grep ^js po/POTFILES.in))
|
|
||||||
|
|
||||||
if [ ${#baddies} -eq 0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >&2 <<EOT
|
|
||||||
|
|
||||||
xgettext cannot handle template strings properly, so we ban their use
|
|
||||||
in files with translatable strings.
|
|
||||||
|
|
||||||
The following files are listed in po/POTFILES.in and use template strings:
|
|
||||||
|
|
||||||
EOT
|
|
||||||
for f in $baddies; do
|
|
||||||
echo " $f" >&2
|
|
||||||
done
|
|
||||||
echo >&2
|
|
||||||
|
|
||||||
exit 1
|
|
@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
fetch() {
|
|
||||||
local remote=$1
|
|
||||||
local ref=$2
|
|
||||||
|
|
||||||
git fetch --quiet --depth=1 $remote $ref 2>/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
mutter_target=
|
|
||||||
|
|
||||||
echo -n Cloning into mutter ...
|
|
||||||
if git clone --quiet --depth=1 https://gitlab.gnome.org/GNOME/mutter.git; then
|
|
||||||
echo \ done
|
|
||||||
else
|
|
||||||
echo \ failed
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd mutter
|
|
||||||
|
|
||||||
if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
|
||||||
merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter}
|
|
||||||
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
|
||||||
|
|
||||||
echo -n Looking for $merge_request_branch on remote ...
|
|
||||||
if fetch $merge_request_remote $merge_request_branch; then
|
|
||||||
echo \ found
|
|
||||||
mutter_target=FETCH_HEAD
|
|
||||||
else
|
|
||||||
echo \ not found
|
|
||||||
|
|
||||||
echo -n Looking for $CI_MERGE_REQUEST_TARGET_BRANCH_NAME instead ...
|
|
||||||
if fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME; then
|
|
||||||
echo \ found
|
|
||||||
mutter_target=FETCH_HEAD
|
|
||||||
else
|
|
||||||
echo \ not found
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$mutter_target" ]; then
|
|
||||||
echo -n Looking for $CI_COMMIT_REF_NAME on remote ...
|
|
||||||
if fetch origin $CI_COMMIT_REF_NAME; then
|
|
||||||
echo \ found
|
|
||||||
mutter_target=FETCH_HEAD
|
|
||||||
else
|
|
||||||
echo \ not found
|
|
||||||
mutter_target=HEAD
|
|
||||||
echo Using $mutter_target instead
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
git checkout -q $mutter_target
|
|
@ -1,16 +0,0 @@
|
|||||||
patterns:
|
|
||||||
deny:
|
|
||||||
- regex: '^$CI_MERGE_REQUEST_PROJECT_URL/(-/)?merge_requests/$CI_MERGE_REQUEST_IID$'
|
|
||||||
message: Commit message must not contain a link to its own merge request
|
|
||||||
- regex: '^(st-|St)'
|
|
||||||
message: Commit message subject should not be prefixed with 'st-' or 'St', use 'st/' instead
|
|
||||||
where: subject
|
|
||||||
- regex: '^[^:]+: [a-z]'
|
|
||||||
message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'"
|
|
||||||
where: subject
|
|
||||||
- regex: '^\S*\.(js|c|h):'
|
|
||||||
message: Commit message subject prefix should not include .c, .h etc.
|
|
||||||
where: subject
|
|
||||||
- regex: '([^.]\.|[:,;])\s*$'
|
|
||||||
message: Commit message subject should not end with punctuation
|
|
||||||
where: subject
|
|
@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
|
|
||||||
# We need a coverity token to fetch the tarball
|
|
||||||
if [ -x $COVERITY_TOKEN ]
|
|
||||||
then
|
|
||||||
echo "No coverity token. Run this job from a protected branch."
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p coverity
|
|
||||||
|
|
||||||
# Download and check MD5 first
|
|
||||||
curl https://scan.coverity.com/download/linux64 \
|
|
||||||
--data "token=$COVERITY_TOKEN&project=GNOME+Shell&md5=1" \
|
|
||||||
--output /tmp/coverity_tool.md5
|
|
||||||
|
|
||||||
diff /tmp/coverity_tool.md5 coverity/coverity_tool.md5 >/dev/null 2>&1
|
|
||||||
|
|
||||||
if [ $? -eq 0 -a -d coverity/cov-analysis* ]
|
|
||||||
then
|
|
||||||
echo "Coverity tarball is up-to-date"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Download and extract coverity tarball
|
|
||||||
curl https://scan.coverity.com/download/linux64 \
|
|
||||||
--data "token=$COVERITY_TOKEN&project=GNOME+Shell" \
|
|
||||||
--output /tmp/coverity_tool.tgz
|
|
||||||
|
|
||||||
rm -rf ./coverity/cov-analysis*
|
|
||||||
|
|
||||||
tar zxf /tmp/coverity_tool.tgz -C coverity/
|
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
mv /tmp/coverity_tool.md5 coverity/
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm /tmp/coverity_tool.tgz
|
|
@ -1,34 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ $# -lt 4 ]]; then
|
|
||||||
echo Usage: $0 [options] [repo-url] [commit] [subdir]
|
|
||||||
echo Options:
|
|
||||||
echo -Dkey=val
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MESON_OPTIONS=()
|
|
||||||
|
|
||||||
while [[ $1 =~ ^-D ]]; do
|
|
||||||
MESON_OPTIONS+=( "$1" )
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
REPO_URL="$1"
|
|
||||||
COMMIT="$2"
|
|
||||||
SUBDIR="$3"
|
|
||||||
PREPARE="$4"
|
|
||||||
|
|
||||||
REPO_DIR="$(basename ${REPO_URL%.git})"
|
|
||||||
|
|
||||||
git clone --depth 1 "$REPO_URL" -b "$COMMIT"
|
|
||||||
pushd "$REPO_DIR"
|
|
||||||
pushd "$SUBDIR"
|
|
||||||
sh -c "$PREPARE"
|
|
||||||
meson --prefix=/usr _build "${MESON_OPTIONS[@]}"
|
|
||||||
meson install -C _build
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
rm -rf "$REPO_DIR"
|
|
@ -1,128 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
const { ESLint } = require('eslint');
|
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const { spawn } = require('child_process');
|
|
||||||
|
|
||||||
function createConfig(config) {
|
|
||||||
const options = {
|
|
||||||
cache: true,
|
|
||||||
cacheLocation: `.eslintcache-${config}`,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (config === 'legacy')
|
|
||||||
options.overrideConfigFile='lint/eslintrc-legacy.yml';
|
|
||||||
|
|
||||||
return new ESLint(options);
|
|
||||||
}
|
|
||||||
|
|
||||||
function git(...args) {
|
|
||||||
const git = spawn('git', args, { stdio: ['ignore', null, 'ignore'] });
|
|
||||||
git.stdout.setEncoding('utf8');
|
|
||||||
|
|
||||||
return new Promise(resolve => {
|
|
||||||
let out = '';
|
|
||||||
git.stdout.on('data', chunk => out += chunk);
|
|
||||||
git.stdout.on('end', () => resolve(out.trim()));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createCommon(report1, report2, ignoreColumn=false) {
|
|
||||||
return report1.map(result => {
|
|
||||||
const { filePath, messages } = result;
|
|
||||||
const match =
|
|
||||||
report2.find(r => r.filePath === filePath) || { messages: [] };
|
|
||||||
|
|
||||||
const filteredMessages = messages.filter(
|
|
||||||
msg => match.messages.some(
|
|
||||||
m => m.line === msg.line && (ignoreColumn || m.column === msg.column)));
|
|
||||||
|
|
||||||
const [errorCount, warningCount] = filteredMessages.reduce(
|
|
||||||
([e, w], msg) => {
|
|
||||||
return [
|
|
||||||
e + Number(msg.severity === 2),
|
|
||||||
w + Number(msg.severity === 1)];
|
|
||||||
}, [0, 0]);
|
|
||||||
|
|
||||||
return {
|
|
||||||
filePath,
|
|
||||||
messages: filteredMessages,
|
|
||||||
errorCount,
|
|
||||||
warningCount,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getMergeRequestChanges(remote, branch) {
|
|
||||||
await git('fetch', remote, branch);
|
|
||||||
const branchPoint = await git('merge-base', 'HEAD', 'FETCH_HEAD');
|
|
||||||
const diff = await git('diff', '-U0', `${branchPoint}...HEAD`);
|
|
||||||
|
|
||||||
const report = [];
|
|
||||||
let messages = null;
|
|
||||||
for (const line of diff.split('\n')) {
|
|
||||||
if (line.startsWith('+++ b/')) {
|
|
||||||
const filePath = path.resolve(line.substring(6));
|
|
||||||
messages = filePath.endsWith('.js') ? [] : null;
|
|
||||||
if (messages)
|
|
||||||
report.push({ filePath, messages });
|
|
||||||
} else if (messages && line.startsWith('@@ ')) {
|
|
||||||
[, , changes] = line.split(' ');
|
|
||||||
[start, count] = `${changes},1`.split(',').map(i => parseInt(i));
|
|
||||||
for (let i = start; i < start + count; i++)
|
|
||||||
messages.push({ line: i });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return report;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getOption(...names) {
|
|
||||||
const optIndex =
|
|
||||||
process.argv.findIndex(arg => names.includes(arg)) + 1;
|
|
||||||
|
|
||||||
if (optIndex === 0)
|
|
||||||
return undefined;
|
|
||||||
|
|
||||||
return process.argv[optIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
(async function main() {
|
|
||||||
const outputOption = getOption('--output-file', '-o');
|
|
||||||
const outputPath = outputOption ? path.resolve(outputOption) : null;
|
|
||||||
|
|
||||||
const sourceDir = path.dirname(process.argv[1]);
|
|
||||||
process.chdir(path.resolve(sourceDir, '..'));
|
|
||||||
|
|
||||||
const remote = getOption('--remote') || 'origin';
|
|
||||||
const branch = getOption('--branch', '-b');
|
|
||||||
|
|
||||||
const sources = ['js', 'subprojects/extensions-app/js'];
|
|
||||||
const regular = createConfig('regular');
|
|
||||||
|
|
||||||
const ops = [];
|
|
||||||
ops.push(regular.lintFiles(sources));
|
|
||||||
if (branch)
|
|
||||||
ops.push(getMergeRequestChanges(remote, branch));
|
|
||||||
else
|
|
||||||
ops.push(createConfig('legacy').lintFiles(sources));
|
|
||||||
|
|
||||||
const results = await Promise.all(ops);
|
|
||||||
const commonResults = createCommon(...results, branch !== undefined);
|
|
||||||
|
|
||||||
const formatter = await regular.loadFormatter(getOption('--format', '-f'));
|
|
||||||
const resultText = formatter.format(commonResults);
|
|
||||||
|
|
||||||
if (outputPath) {
|
|
||||||
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
||||||
fs.writeFileSync(outputPath, resultText);
|
|
||||||
} else {
|
|
||||||
console.log(resultText);
|
|
||||||
}
|
|
||||||
|
|
||||||
process.exitCode = commonResults.some(r => r.errorCount > 0) ? 1 : 0;
|
|
||||||
})().catch((error) => {
|
|
||||||
process.exitCode = 1;
|
|
||||||
console.error(error);
|
|
||||||
});
|
|
@ -1,55 +0,0 @@
|
|||||||
<!--
|
|
||||||
Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines
|
|
||||||
first to ensure that you create a clear and specific issue.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Affected version
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Provide at least the following information:
|
|
||||||
* Your OS and version
|
|
||||||
* Affected GNOME Shell version (see https://wiki.gnome.org/Schedule for currently supported versions)
|
|
||||||
* Does this issue appear in XOrg and/or Wayland
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Bug summary
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Provide a short summary of the bug you encountered.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Steps to reproduce
|
|
||||||
|
|
||||||
<!--
|
|
||||||
1. Step one
|
|
||||||
2. Step two
|
|
||||||
3. ...
|
|
||||||
-->
|
|
||||||
|
|
||||||
### What happened
|
|
||||||
|
|
||||||
<!--
|
|
||||||
What did GNOME Shell do that was unexpected?
|
|
||||||
-->
|
|
||||||
|
|
||||||
### What did you expect to happen
|
|
||||||
|
|
||||||
<!--
|
|
||||||
What did you expect GNOME Shell to do?
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Relevant logs, screenshots, screencasts etc.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If you have further information, such as technical documentation, logs,
|
|
||||||
screenshots or screencasts related, please provide them here.
|
|
||||||
|
|
||||||
If the bug is a crash, please obtain a stack trace with installed debug
|
|
||||||
symbols (at least for GNOME Shell and Mutter) and attach it to
|
|
||||||
this issue following the instructions on
|
|
||||||
https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces.
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Do not remove the following line. -->
|
|
||||||
/label ~"1. Bug"
|
|
@ -1,30 +0,0 @@
|
|||||||
<!--
|
|
||||||
Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines
|
|
||||||
first to ensure that you create a clear and specific issue.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Feature summary
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Describe what you would like to be able to do with GNOME Shell
|
|
||||||
that you currently cannot do.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### How would you like it to work
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If you can think of a way GNOME Shell might be able to do this,
|
|
||||||
let us know here.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Relevant links, screenshots, screencasts etc.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If you have further information, such as technical documentation,
|
|
||||||
code, mockups or a similar feature in another desktop environments,
|
|
||||||
please provide them here.
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Do not remove the following line. -->
|
|
||||||
/label ~"1. Feature"
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
|||||||
[submodule "subprojects/gvc"]
|
|
||||||
path = subprojects/gvc
|
|
||||||
url = https://gitlab.gnome.org/GNOME/libgnome-volume-control.git
|
|
@ -1 +0,0 @@
|
|||||||
js/ui/init.js
|
|
31
.project
Normal file
31
.project
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>gnome-shell</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.linuxtools.cdt.autotools.genmakebuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
<nature>org.eclipse.linuxtools.cdt.autotools.autotoolsNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
148
.settings/org.eclipse.cdt.core.prefs
Normal file
148
.settings/org.eclipse.cdt.core.prefs
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
#Fri Nov 28 14:33:30 EST 2008
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=next_line_shifted
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_block=next_line_shifted
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line_shifted
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line_shifted
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.compact_else_if=true
|
||||||
|
org.eclipse.cdt.core.formatter.continuation_indentation=2
|
||||||
|
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||||
|
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_empty_lines=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||||
|
org.eclipse.cdt.core.formatter.indentation.size=8
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.lineSplit=80
|
||||||
|
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||||
|
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
|
||||||
|
org.eclipse.cdt.core.formatter.tabulation.char=space
|
||||||
|
org.eclipse.cdt.core.formatter.tabulation.size=2
|
||||||
|
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
4
.settings/org.eclipse.cdt.ui.prefs
Normal file
4
.settings/org.eclipse.cdt.ui.prefs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#Fri Nov 28 14:33:30 EST 2008
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
formatter_profile=org.eclipse.cdt.ui.default.gnu_profile
|
||||||
|
formatter_settings_version=1
|
315
.settings/org.eclipse.wst.jsdt.core.prefs
Normal file
315
.settings/org.eclipse.wst.jsdt.core.prefs
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
#Fri Nov 28 14:43:43 EST 2008
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.argumentPrefixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.argumentSuffixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.fieldPrefixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.fieldSuffixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.localPrefixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.localSuffixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.staticFieldPrefixes=
|
||||||
|
org.eclipse.wst.jsdt.core.codeComplete.staticFieldSuffixes=
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.codegen.inlineJsrBytecode=disabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform=1.2
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.compliance=1.4
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.enumIdentifier=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
|
||||||
|
org.eclipse.wst.jsdt.core.compiler.source=1.3
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression=80
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_header=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_html=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.format_source_code=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.comment.line_length=80
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.compact_else_if=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.continuation_indentation=2
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_empty_lines=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.indentation.size=4
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.lineSplit=80
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line=true
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.tabulation.char=space
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.tabulation.size=4
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
||||||
|
org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator=true
|
10
.settings/org.eclipse.wst.jsdt.ui.prefs
Normal file
10
.settings/org.eclipse.wst.jsdt.ui.prefs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#Fri Nov 28 14:39:12 EST 2008
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
formatter_profile=_gjs
|
||||||
|
formatter_settings_version=11
|
||||||
|
org.eclipse.wst.jsdt.ui.exception.name=e
|
||||||
|
org.eclipse.wst.jsdt.ui.gettersetter.use.is=true
|
||||||
|
org.eclipse.wst.jsdt.ui.javadoc=false
|
||||||
|
org.eclipse.wst.jsdt.ui.keywordthis=false
|
||||||
|
org.eclipse.wst.jsdt.ui.overrideannotation=true
|
||||||
|
org.eclipse.wst.jsdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
|
1
.settings/org.eclipse.wst.jsdt.ui.superType.container
Normal file
1
.settings/org.eclipse.wst.jsdt.ui.superType.container
Normal file
@ -0,0 +1 @@
|
|||||||
|
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
|
1
.settings/org.eclipse.wst.jsdt.ui.superType.name
Normal file
1
.settings/org.eclipse.wst.jsdt.ui.superType.name
Normal file
@ -0,0 +1 @@
|
|||||||
|
Window
|
25
COPYING
25
COPYING
@ -1,8 +1,8 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
|||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Lesser General Public License instead.) You can apply it to
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
|||||||
License. (Exception: if the Program itself is interactive but
|
License. (Exception: if the Program itself is interactive but
|
||||||
does not normally print such an announcement, your work based on
|
does not normally print such an announcement, your work based on
|
||||||
the Program is not required to print an announcement.)
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
||||||
identifiable sections of that work are not derived from the Program,
|
identifiable sections of that work are not derived from the Program,
|
||||||
and can be reasonably considered independent and separate works in
|
and can be reasonably considered independent and separate works in
|
||||||
@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
|||||||
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
||||||
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
||||||
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
@ -225,7 +225,7 @@ impose that choice.
|
|||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
This section is intended to make thoroughly clear what is believed to
|
||||||
be a consequence of the rest of this License.
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
original copyright holder who places the Program under this License
|
original copyright holder who places the Program under this License
|
||||||
@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
||||||
@ -303,9 +303,10 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along
|
You should have received a copy of the GNU General Public License
|
||||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
along with this program; if not, write to the Free Software
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
@ -335,5 +336,5 @@ necessary. Here is a sample; alter the names:
|
|||||||
This General Public License does not permit incorporating your program into
|
This General Public License does not permit incorporating your program into
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
consider it more useful to permit linking proprietary applications with the
|
consider it more useful to permit linking proprietary applications with the
|
||||||
library. If this is what you want to do, use the GNU Lesser General
|
library. If this is what you want to do, use the GNU Library General
|
||||||
Public License instead of this License.
|
Public License instead of this License.
|
||||||
|
341
HACKING.md
341
HACKING.md
@ -1,341 +0,0 @@
|
|||||||
# Coding guide
|
|
||||||
|
|
||||||
Our goal is to have all JavaScript code in GNOME follow a consistent style. In
|
|
||||||
a dynamic language like JavaScript, it is essential to be rigorous about style
|
|
||||||
(and unit tests), or you rapidly end up with a spaghetti-code mess.
|
|
||||||
|
|
||||||
## A quick note
|
|
||||||
|
|
||||||
Life isn't fun if you can't break the rules. If a rule seems unnecessarily
|
|
||||||
restrictive while you're coding, ignore it, and let the patch reviewer decide
|
|
||||||
what to do.
|
|
||||||
|
|
||||||
## Indentation, braces and whitespace
|
|
||||||
|
|
||||||
* Use four-space indents.
|
|
||||||
* Braces are on the same line as their associated statements.
|
|
||||||
* You should only omit braces if *both* sides of the statement are on one line.
|
|
||||||
* One space after the `function` keyword.
|
|
||||||
* No space between the function name in a declaration or a call.
|
|
||||||
* One space before the parens in the `if` statements, or `while`, or `for` loops.
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
function foo(a, b) {
|
|
||||||
let bar;
|
|
||||||
|
|
||||||
if (a > b)
|
|
||||||
bar = do_thing(a);
|
|
||||||
else
|
|
||||||
bar = do_thing(b);
|
|
||||||
|
|
||||||
if (var == 5) {
|
|
||||||
for (let i = 0; i < 10; i++)
|
|
||||||
print(i);
|
|
||||||
} else {
|
|
||||||
print(20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Semicolons
|
|
||||||
|
|
||||||
JavaScript allows omitting semicolons at the end of lines, but don't. Always
|
|
||||||
end statements with a semicolon.
|
|
||||||
|
|
||||||
## js2-mode
|
|
||||||
|
|
||||||
If using Emacs, do not use js2-mode. It is outdated and hasn't worked for a
|
|
||||||
while. emacs now has a built-in JavaScript mode, js-mode, based on
|
|
||||||
espresso-mode. It is the de facto emacs mode for JavaScript.
|
|
||||||
|
|
||||||
## File naming and creation
|
|
||||||
|
|
||||||
For JavaScript files, use lowerCamelCase-style names, with a `.js` extension.
|
|
||||||
|
|
||||||
We only use C where gjs/gobject-introspection is not available for the task, or
|
|
||||||
where C would be cleaner. To work around limitations in
|
|
||||||
gjs/gobject-introspection itself, add a new method in `shell-util.[ch]`.
|
|
||||||
|
|
||||||
Like many other GNOME projects, we prefix our C source filenames with the
|
|
||||||
library name followed by a dash, e.g. `shell-app-system.c`. Create a
|
|
||||||
`-private.h` header when you want to share code internally in the
|
|
||||||
library. These headers are not installed, distributed or introspected.
|
|
||||||
|
|
||||||
## Imports
|
|
||||||
|
|
||||||
Use UpperCamelCase when importing modules to distinguish them from ordinary
|
|
||||||
variables, e.g.
|
|
||||||
```javascript
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
```
|
|
||||||
Imports should be categorized into one of two places. The top-most import block
|
|
||||||
should contain only "environment imports". These are either modules from
|
|
||||||
gobject-introspection or modules added by gjs itself.
|
|
||||||
|
|
||||||
The second block of imports should contain only "application imports". These
|
|
||||||
are the JS code that is in the gnome-shell codebase,
|
|
||||||
e.g. `imports.ui.popupMenu`.
|
|
||||||
|
|
||||||
Each import block should be sorted alphabetically. Don't import modules you
|
|
||||||
don't use.
|
|
||||||
```javascript
|
|
||||||
const { GLib, Gio, St } = imports.gi;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const Params = imports.misc.params;
|
|
||||||
const Util = imports.misc.util;
|
|
||||||
```
|
|
||||||
The alphabetical ordering should be done independently of the location of the
|
|
||||||
location. Never reference `imports` in actual code.
|
|
||||||
|
|
||||||
## Constants
|
|
||||||
|
|
||||||
We use CONSTANTS_CASE to define constants. All constants should be directly
|
|
||||||
under the imports:
|
|
||||||
```javascript
|
|
||||||
const MY_DBUS_INTERFACE = 'org.my.Interface';
|
|
||||||
```
|
|
||||||
|
|
||||||
## Variable declaration
|
|
||||||
|
|
||||||
Always use either `const` or `let` when defining a variable.
|
|
||||||
```javascript
|
|
||||||
// Iterating over an array
|
|
||||||
for (let i = 0; i < arr.length; ++i)
|
|
||||||
let item = arr[i];
|
|
||||||
|
|
||||||
// Iterating over an object's properties
|
|
||||||
for (let prop in someobj) {
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
If you use "var" then the variable is added to function scope, not block scope.
|
|
||||||
See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_%28Merge_into_let_Statement%29)
|
|
||||||
|
|
||||||
## Classes
|
|
||||||
|
|
||||||
There are many approaches to classes in JavaScript. We use standard ES6 classes
|
|
||||||
whenever possible, that is when not inheriting from GObjects.
|
|
||||||
```javascript
|
|
||||||
var IconLabelMenuItem = class extends PopupMenu.PopupMenuBaseItem {
|
|
||||||
constructor(icon, label) {
|
|
||||||
super({ reactive: false });
|
|
||||||
this.actor.add_child(icon);
|
|
||||||
this.actor.add_child(label);
|
|
||||||
}
|
|
||||||
|
|
||||||
open() {
|
|
||||||
log("menu opened!");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
For GObject inheritance, we use the GObject.registerClass() function provided
|
|
||||||
by gjs.
|
|
||||||
```javascript
|
|
||||||
var MyActor = GObject.registerClass(
|
|
||||||
class MyActor extends Clutter.Actor {
|
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
|
|
||||||
this.name = 'MyCustomActor';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## GObject Introspection
|
|
||||||
|
|
||||||
GObject Introspection is a powerful feature that allows us to have native
|
|
||||||
bindings for almost any library built around GObject. If a library requires
|
|
||||||
you to inherit from a type to use it, you can do so:
|
|
||||||
```javascript
|
|
||||||
var MyClutterActor = GObject.registerClass(
|
|
||||||
class MyClutterActor extends Clutter.Actor {
|
|
||||||
|
|
||||||
vfunc_get_preferred_width(forHeight) {
|
|
||||||
return [100, 100];
|
|
||||||
}
|
|
||||||
|
|
||||||
vfunc_get_preferred_height(forWidth) {
|
|
||||||
return [100, 100];
|
|
||||||
}
|
|
||||||
|
|
||||||
vfunc_paint(paintContext) {
|
|
||||||
let framebuffer = paintContext.get_framebuffer();
|
|
||||||
let coglContext = framebuffer.get_context();
|
|
||||||
let alloc = this.get_allocation_box();
|
|
||||||
|
|
||||||
let pipeline = new Cogl.Pipeline(coglContext);
|
|
||||||
pipeline.set_color4ub(255, 0, 0, 255);
|
|
||||||
|
|
||||||
framebuffer.draw_rectangle(pipeline,
|
|
||||||
alloc.x1, alloc.y1,
|
|
||||||
alloc.x2, alloc.y2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## Translatable strings, `environment.js`
|
|
||||||
|
|
||||||
We use gettext to translate the GNOME Shell into all the languages that GNOME
|
|
||||||
supports. The `gettext` function is aliased globally as `_`, you do not need to
|
|
||||||
explicitly import it. This is done through some magic in the
|
|
||||||
[environment.js](http://git.gnome.org/browse/gnome-shell/tree/js/ui/environment.js)
|
|
||||||
file. If you can't find a method that's used, it's probably either in gjs itself
|
|
||||||
or installed on the global object from the Environment.
|
|
||||||
|
|
||||||
Use 'single quotes' for programming strings that should not be translated
|
|
||||||
and "double quotes" for strings that the user may see. This allows us to
|
|
||||||
quickly find untranslated or mistranslated strings by grepping through the
|
|
||||||
sources for double quotes without a gettext call around them.
|
|
||||||
|
|
||||||
## `actor` (deprecated) and `_delegate`
|
|
||||||
|
|
||||||
gjs allows us to set so-called "expando properties" on introspected objects,
|
|
||||||
allowing us to treat them like any other. Because the Shell was built before
|
|
||||||
you could inherit from GTypes natively in JS, in some cases we have a wrapper
|
|
||||||
class that has a property called `actor` (now deprecated). We call this
|
|
||||||
wrapper class the "delegate".
|
|
||||||
|
|
||||||
We sometimes use expando properties to set a property called `_delegate` on
|
|
||||||
the actor itself:
|
|
||||||
```javascript
|
|
||||||
var MyActor = GObject.registerClass(
|
|
||||||
class MyActor extends Clutter.Actor {
|
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
this._delegate = this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Or using the deprecated `actor`:
|
|
||||||
```javascript
|
|
||||||
var MyClass = class {
|
|
||||||
constructor() {
|
|
||||||
this.actor = new St.Button({ text: "This is a button" });
|
|
||||||
this.actor._delegate = this;
|
|
||||||
|
|
||||||
this.actor.connect('clicked', this._onClicked.bind(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
_onClicked(actor) {
|
|
||||||
actor.set_label("You clicked the button!");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
The 'delegate' property is important for anything which trying to get the
|
|
||||||
delegate object from an associated actor. For instance, the drag and drop
|
|
||||||
system calls the `handleDragOver` function on the delegate of a "drop target"
|
|
||||||
when the user drags an item over it. If you do not set the `_delegate`
|
|
||||||
property, your actor will not be able to be dropped onto.
|
|
||||||
In case the class is an actor itself, the `_delegate` can be just set to `this`.
|
|
||||||
|
|
||||||
## Functional style
|
|
||||||
|
|
||||||
JavaScript Array objects offer a lot of common functional programming
|
|
||||||
capabilities such as forEach, map, filter and so on. You can use these when
|
|
||||||
they make sense, but please don't have a spaghetti mess of function programming
|
|
||||||
messed in a procedural style. Use your best judgment.
|
|
||||||
|
|
||||||
## Closures
|
|
||||||
|
|
||||||
`this` will not be captured in a closure, it is relative to how the closure is
|
|
||||||
invoked, not to the value of this where the closure is created, because "this"
|
|
||||||
is a keyword with a value passed in at function invocation time, it is not a
|
|
||||||
variable that can be captured in closures.
|
|
||||||
|
|
||||||
All closures should be wrapped with Function.prototype.bind or use arrow
|
|
||||||
notation.
|
|
||||||
```javascript
|
|
||||||
let closure1 = () => this._fnorbate();
|
|
||||||
let closure2 = this._fnorbate.bind(this);
|
|
||||||
```
|
|
||||||
|
|
||||||
A more realistic example would be connecting to a signal on a method of a
|
|
||||||
prototype:
|
|
||||||
```javascript
|
|
||||||
const FnorbLib = imports.fborbLib;
|
|
||||||
|
|
||||||
var MyClass = class {
|
|
||||||
_init() {
|
|
||||||
let fnorb = new FnorbLib.Fnorb();
|
|
||||||
fnorb.connect('frobate', this._onFnorbFrobate.bind(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
_onFnorbFrobate(fnorb) {
|
|
||||||
this._updateFnorb();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Object literal syntax
|
|
||||||
|
|
||||||
In JavaScript, these are equivalent:
|
|
||||||
```javascript
|
|
||||||
foo = { 'bar': 42 };
|
|
||||||
foo = { bar: 42 };
|
|
||||||
```
|
|
||||||
|
|
||||||
and so are these:
|
|
||||||
```javascript
|
|
||||||
var b = foo['bar'];
|
|
||||||
var b = foo.bar;
|
|
||||||
```
|
|
||||||
|
|
||||||
If your usage of an object is like an object, then you're defining "member
|
|
||||||
variables." For member variables, use the no-quotes no-brackets syntax: `{ bar:
|
|
||||||
42 }` `foo.bar`.
|
|
||||||
|
|
||||||
If your usage of an object is like a hash table (and thus conceptually the keys
|
|
||||||
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
|
|
||||||
}`, `foo['bar']`.
|
|
||||||
|
|
||||||
## Animations
|
|
||||||
|
|
||||||
Most objects that are animated are actors, and most properties used in animations
|
|
||||||
are animatable, which means they can use implicit animations:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
moveActor(actor, x, y) {
|
|
||||||
actor.ease({
|
|
||||||
x,
|
|
||||||
y,
|
|
||||||
duration: 500, // ms
|
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD
|
|
||||||
});
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The above is a convenience wrapper around the actual Clutter API, and should generally
|
|
||||||
be preferred over the more verbose:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
moveActor(actor, x, y) {
|
|
||||||
actor.save_easing_state();
|
|
||||||
|
|
||||||
actor.set_easing_duration(500);
|
|
||||||
actor.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD);
|
|
||||||
actor.set({
|
|
||||||
x,
|
|
||||||
y
|
|
||||||
});
|
|
||||||
|
|
||||||
actor.restore_easing_state();
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
There is a similar convenience API around Clutter.PropertyTransition to animate
|
|
||||||
actor (or actor meta) properties that cannot use implicit animations:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
desaturateActor(actor, desaturate) {
|
|
||||||
let factor = desaturate ? 1.0 : 0.0;
|
|
||||||
actor.ease_property('@effects.desaturate.factor', factor, {
|
|
||||||
duration: 500, // ms
|
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD
|
|
||||||
});
|
|
||||||
}
|
|
||||||
```
|
|
7
MAINTAINERS
Normal file
7
MAINTAINERS
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Owen Taylor
|
||||||
|
E-mail: otaylor@redhat.com
|
||||||
|
Userid: otaylor
|
||||||
|
|
||||||
|
Colin Walters
|
||||||
|
E-mail: walters@redhat.com
|
||||||
|
Userid: walters
|
27
Makefile.am
Normal file
27
Makefile.am
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
SUBDIRS = data js src tests po
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
.project \
|
||||||
|
.settings \
|
||||||
|
autogen.sh
|
||||||
|
|
||||||
|
# These are files checked into Git that we don't want to distribute
|
||||||
|
DIST_EXCLUDE = \
|
||||||
|
.gitignore \
|
||||||
|
gnome-shell.doap \
|
||||||
|
MAINTAINERS \
|
||||||
|
tools/build/*
|
||||||
|
|
||||||
|
distcheck-hook:
|
||||||
|
@echo "Checking disted files against files in git"
|
||||||
|
@failed=false; \
|
||||||
|
exclude=`(for p in $(DIST_EXCLUDE) ; do echo --exclude=$$p ; done)`; \
|
||||||
|
for f in `cd $(srcdir) && git ls-files $$exclude` ; do \
|
||||||
|
if ! test -e $(distdir)/$$f ; then \
|
||||||
|
echo File missing from distribution: $$f ; \
|
||||||
|
failed=true ; \
|
||||||
|
fi \
|
||||||
|
done ; \
|
||||||
|
if $$failed ; then \
|
||||||
|
exit 1 ; \
|
||||||
|
fi
|
20
README
Normal file
20
README
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
GNOME Shell provides core user interface functions for the GNOME 3 desktop,
|
||||||
|
like switching to windows and launching applications. GNOME Shell takes
|
||||||
|
advantage of the capabilities of modern graphics hardware and introduces
|
||||||
|
innovative user interface concepts to provide a visually attractive and
|
||||||
|
easy to use experience.
|
||||||
|
|
||||||
|
For more information about GNOME Shell, including instructions on how
|
||||||
|
to build GNOME Shell from source and how to get involved with the project,
|
||||||
|
see:
|
||||||
|
|
||||||
|
http://live.gnome.org/GnomeShell
|
||||||
|
|
||||||
|
Bugs should be reported at http://bugzilla.gnome.org against the 'gnome-shell'
|
||||||
|
product.
|
||||||
|
|
||||||
|
License
|
||||||
|
=======
|
||||||
|
GNOME Shell is distributed under the terms of the GNU General Public License,
|
||||||
|
version 2 or later. See the COPYING file for details.
|
||||||
|
|
43
README.md
43
README.md
@ -1,43 +0,0 @@
|
|||||||
# GNOME Shell
|
|
||||||
GNOME Shell provides core user interface functions for the GNOME desktop,
|
|
||||||
like switching to windows and launching applications. GNOME Shell takes
|
|
||||||
advantage of the capabilities of modern graphics hardware and introduces
|
|
||||||
innovative user interface concepts to provide a visually attractive and
|
|
||||||
easy to use experience.
|
|
||||||
|
|
||||||
For more information about GNOME Shell, including instructions on how
|
|
||||||
to build GNOME Shell from source and how to get involved with the project,
|
|
||||||
see the [project wiki][project-wiki].
|
|
||||||
|
|
||||||
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
|
|
||||||
Please refer to the [*Schedule* wiki page][schedule] to see the supported versions.
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.
|
|
||||||
|
|
||||||
Commit messages should follow the [GNOME commit message
|
|
||||||
guidelines](https://wiki.gnome.org/Git/CommitMessages). We require an URL
|
|
||||||
to either an issue or a merge request in each commit.
|
|
||||||
|
|
||||||
## Default branch
|
|
||||||
|
|
||||||
The default development branch is `main`. If you still have a local
|
|
||||||
checkout under the old name, use:
|
|
||||||
```sh
|
|
||||||
git checkout master
|
|
||||||
git branch -m master main
|
|
||||||
git fetch
|
|
||||||
git branch --unset-upstream
|
|
||||||
git branch -u origin/main
|
|
||||||
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
|
||||||
GNOME Shell is distributed under the terms of the GNU General Public License,
|
|
||||||
version 2 or later. See the [COPYING][license] file for details.
|
|
||||||
|
|
||||||
[project-wiki]: https://wiki.gnome.org/Projects/GnomeShell
|
|
||||||
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues
|
|
||||||
[schedule]: https://wiki.gnome.org/Schedule
|
|
||||||
[license]: COPYING
|
|
22
autogen.sh
Executable file
22
autogen.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Run this to generate all the initial makefiles, etc.
|
||||||
|
|
||||||
|
srcdir=`dirname $0`
|
||||||
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
|
PKG_NAME="gnome-shell"
|
||||||
|
REQUIRED_AUTOMAKE_VERSION=1.10
|
||||||
|
|
||||||
|
(test -f $srcdir/configure.ac \
|
||||||
|
&& test -d $srcdir/src) || {
|
||||||
|
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||||
|
echo " top-level gnome-shell directory"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
which gnome-autogen.sh || {
|
||||||
|
echo "You need to install gnome-common from GNOME Subversion (or from"
|
||||||
|
echo "your OS vendor's package manager)."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
|
@ -1,35 +0,0 @@
|
|||||||
/* The prefix for our gettext translation domains. */
|
|
||||||
#mesondefine GETTEXT_PACKAGE
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#mesondefine VERSION
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#mesondefine PACKAGE_VERSION
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `fdwalk' function. */
|
|
||||||
#mesondefine HAVE_FDWALK
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `mallinfo' function. */
|
|
||||||
#mesondefine HAVE_MALLINFO
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `mallinfo2' function. */
|
|
||||||
#mesondefine HAVE_MALLINFO2
|
|
||||||
|
|
||||||
/* Define to 1 fi you have the <sys/resource.h> header file. */
|
|
||||||
#mesondefine HAVE_SYS_RESOURCE_H
|
|
||||||
|
|
||||||
/* Define if we have NetworkManager */
|
|
||||||
#mesondefine HAVE_NETWORKMANAGER
|
|
||||||
|
|
||||||
/* Define if we have systemd */
|
|
||||||
#mesondefine HAVE_SYSTEMD
|
|
||||||
|
|
||||||
/* Define if _NL_TIME_FIRST_WEEKDATE is available */
|
|
||||||
#mesondefine HAVE__NL_TIME_FIRST_WEEKDAY
|
|
||||||
|
|
||||||
/* Define if you have the `g_desktop_app_info_launch_uris_as_manager_with_fds` function */
|
|
||||||
#mesondefine HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS
|
|
||||||
|
|
||||||
/* Define if fdwalk is available in libc */
|
|
||||||
#mesondefine HAVE_FDWALK
|
|
134
configure.ac
Normal file
134
configure.ac
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
AC_INIT(gnome-shell, 2.27.3)
|
||||||
|
|
||||||
|
AC_CONFIG_AUX_DIR(config)
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip foreign])
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
|
||||||
|
|
||||||
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
|
||||||
|
AC_DISABLE_STATIC
|
||||||
|
AC_PROG_CC
|
||||||
|
# Needed for per-target cflags, like in gnomeshell-taskpanel
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
|
GETTEXT_PACKAGE=gnome-shell
|
||||||
|
AC_SUBST(GETTEXT_PACKAGE)
|
||||||
|
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||||
|
[The prefix for our gettext translation domains.])
|
||||||
|
|
||||||
|
PKG_PROG_PKG_CONFIG(0.16)
|
||||||
|
|
||||||
|
IT_PROG_INTLTOOL(0.26)
|
||||||
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
|
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||||
|
AM_GCONF_SOURCE_2
|
||||||
|
|
||||||
|
# Get a value to substitute into gnome-shell.in
|
||||||
|
AM_PATH_PYTHON([2.5])
|
||||||
|
AC_SUBST(PYTHON)
|
||||||
|
|
||||||
|
# We need at least this, since gst_plugin_register_static() was added
|
||||||
|
# in 0.10.16, but nothing older than 0.10.21 has been tested.
|
||||||
|
GSTREAMER_MIN_VERSION=0.10.16
|
||||||
|
|
||||||
|
recorder_modules=
|
||||||
|
build_recorder=false
|
||||||
|
AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
|
||||||
|
if $PKG_CONFIG --exists gstreamer-0.10 '>=' $GSTREAMER_MIN_VERSION ; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
build_recorder=true
|
||||||
|
recorder_modules="gstreamer-0.10 gstreamer-base-0.10 xfixes"
|
||||||
|
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||||
|
|
||||||
|
# Collect more than 20 libraries for a prize!
|
||||||
|
PKG_CHECK_MODULES(MUTTER_PLUGIN, gio-unix-2.0 gtk+-2.0 dbus-glib-1 mutter-plugins
|
||||||
|
gjs-gi-1.0 libgnome-menu $recorder_modules gconf-2.0
|
||||||
|
gdk-x11-2.0 clutter-x11-1.0 clutter-glx-1.0
|
||||||
|
gnome-desktop-2.0 >= 2.26 libstartup-notification-1.0
|
||||||
|
gobject-introspection-1.0 >= 0.6.5)
|
||||||
|
PKG_CHECK_MODULES(TIDY, clutter-1.0)
|
||||||
|
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-2.0 clutter-imcontext-0.1 libcroco-0.6)
|
||||||
|
PKG_CHECK_MODULES(BIG, clutter-1.0 gtk+-2.0 librsvg-2.0)
|
||||||
|
PKG_CHECK_MODULES(GDMUSER, dbus-glib-1 gtk+-2.0)
|
||||||
|
PKG_CHECK_MODULES(TRAY, gtk+-2.0)
|
||||||
|
|
||||||
|
MUTTER_BIN_DIR=`$PKG_CONFIG --variable=exec_prefix mutter-plugins`/bin
|
||||||
|
# FIXME: metacity-plugins.pc should point directly to its .gir file
|
||||||
|
MUTTER_LIB_DIR=`$PKG_CONFIG --variable=libdir mutter-plugins`
|
||||||
|
MUTTER_PLUGIN_DIR=`$PKG_CONFIG --variable=plugindir mutter-plugins`
|
||||||
|
AC_SUBST(MUTTER_BIN_DIR)
|
||||||
|
AC_SUBST(MUTTER_LIB_DIR)
|
||||||
|
AC_SUBST(MUTTER_PLUGIN_DIR)
|
||||||
|
|
||||||
|
GJS_JS_DIR=`$PKG_CONFIG --variable=jsdir gjs-1.0`
|
||||||
|
GJS_JS_NATIVE_DIR=`$PKG_CONFIG --variable=jsnativedir gjs-1.0`
|
||||||
|
AC_SUBST(GJS_JS_DIR)
|
||||||
|
AC_SUBST(GJS_JS_NATIVE_DIR)
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS(fdwalk)
|
||||||
|
AC_CHECK_HEADERS([sys/resource.h])
|
||||||
|
|
||||||
|
# Sets GLIB_GENMARSHAL and GLIB_MKENUMS
|
||||||
|
AM_PATH_GLIB_2_0()
|
||||||
|
G_IR_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||||
|
AC_SUBST(G_IR_SCANNER)
|
||||||
|
G_IR_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||||
|
AC_SUBST(G_IR_COMPILER)
|
||||||
|
G_IR_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||||
|
AC_SUBST(G_IR_GENERATE)
|
||||||
|
GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
|
||||||
|
AC_SUBST(GIRDIR)
|
||||||
|
TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
|
||||||
|
AC_SUBST(TYPELIBDIR)
|
||||||
|
|
||||||
|
# Stay command-line compatible with the gnome-common configure option. Here
|
||||||
|
# minimum/yes/maximum are the same, however.
|
||||||
|
AC_ARG_ENABLE(compile_warnings,
|
||||||
|
AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
|
||||||
|
[Turn on compiler warnings]),,
|
||||||
|
enable_compile_warnings=error)
|
||||||
|
|
||||||
|
changequote(,)dnl
|
||||||
|
if test "$enable_compile_warnings" != no ; then
|
||||||
|
if test "x$GCC" = "xyes"; then
|
||||||
|
case " $CFLAGS " in
|
||||||
|
*[\ \ ]-Wall[\ \ ]*) ;;
|
||||||
|
*) CFLAGS="$CFLAGS -Wall" ;;
|
||||||
|
esac
|
||||||
|
case " $CFLAGS " in
|
||||||
|
*[\ \ ]-Wmissing-prototypes[\ \ ]*) ;;
|
||||||
|
*) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
|
||||||
|
esac
|
||||||
|
if test "$enable_compile_warnings" = error ; then
|
||||||
|
case " $CFLAGS " in
|
||||||
|
*[\ \ ]-Werror[\ \ ]*) ;;
|
||||||
|
*) CFLAGS="$CFLAGS -Werror" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
changequote([,])dnl
|
||||||
|
|
||||||
|
AC_PATH_PROG(mutter, [mutter])
|
||||||
|
AC_SUBST(mutter)
|
||||||
|
|
||||||
|
AC_OUTPUT([
|
||||||
|
Makefile
|
||||||
|
data/Makefile
|
||||||
|
js/Makefile
|
||||||
|
js/misc/Makefile
|
||||||
|
js/ui/Makefile
|
||||||
|
src/Makefile
|
||||||
|
tests/Makefile
|
||||||
|
po/Makefile.in
|
||||||
|
])
|
@ -1,6 +0,0 @@
|
|||||||
[org.gnome.mutter:GNOME]
|
|
||||||
attach-modal-dialogs=true
|
|
||||||
edge-tiling=true
|
|
||||||
dynamic-workspaces=true
|
|
||||||
workspaces-only-on-primary=true
|
|
||||||
focus-change-on-pointer-rest=true
|
|
@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<KeyListEntries schema="org.gnome.shell.keybindings"
|
|
||||||
group="system"
|
|
||||||
name="Launchers"
|
|
||||||
wm_name="GNOME Shell"
|
|
||||||
package="gnome-shell">
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-1"
|
|
||||||
description="Activate favorite application 1"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-2"
|
|
||||||
description="Activate favorite application 2"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-3"
|
|
||||||
description="Activate favorite application 3"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-4"
|
|
||||||
description="Activate favorite application 4"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-5"
|
|
||||||
description="Activate favorite application 5"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-6"
|
|
||||||
description="Activate favorite application 6"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-7"
|
|
||||||
description="Activate favorite application 7"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-8"
|
|
||||||
description="Activate favorite application 8"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="switch-to-application-9"
|
|
||||||
description="Activate favorite application 9"
|
|
||||||
hidden="true"/>
|
|
||||||
|
|
||||||
</KeyListEntries>
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<KeyListEntries schema="org.gnome.shell.keybindings"
|
|
||||||
group="system"
|
|
||||||
name="System"
|
|
||||||
wm_name="GNOME Shell"
|
|
||||||
package="gnome-shell">
|
|
||||||
|
|
||||||
<KeyListEntry name="toggle-message-tray"
|
|
||||||
description="Show the notification list"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="focus-active-notification"
|
|
||||||
description="Focus the active notification"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="toggle-overview"
|
|
||||||
description="Show the overview"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="toggle-application-view"
|
|
||||||
description="Show all applications"/>
|
|
||||||
|
|
||||||
<KeyListEntry name="open-application-menu"
|
|
||||||
description="Open the application menu"/>
|
|
||||||
|
|
||||||
</KeyListEntries>
|
|
||||||
|
|
48
data/Makefile.am
Normal file
48
data/Makefile.am
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
desktopdir=$(datadir)/applications
|
||||||
|
desktop_DATA = gnome-shell.desktop
|
||||||
|
|
||||||
|
# We substitute in bindir so it works as an autostart
|
||||||
|
# file when built in a non-system prefix
|
||||||
|
gnome-shell.desktop.in: gnome-shell.desktop.in.in
|
||||||
|
$(AM_V_GEN) sed -e "s|@bindir[@]|$(bindir)|" \
|
||||||
|
-e "s|@VERSION[@]|$(VERSION)|" \
|
||||||
|
$< > $@ || rm $@
|
||||||
|
|
||||||
|
# Placeholder until we add intltool
|
||||||
|
gnome-shell.desktop: gnome-shell.desktop.in
|
||||||
|
$(AM_V_GEN) sed s/^_// < $< > $@ || rm $@
|
||||||
|
|
||||||
|
imagesdir = $(pkgdatadir)/images
|
||||||
|
dist_images_DATA = \
|
||||||
|
add-workspace.svg \
|
||||||
|
app-well-glow.png \
|
||||||
|
back.svg \
|
||||||
|
close.svg \
|
||||||
|
close-black.svg \
|
||||||
|
info.svg \
|
||||||
|
magnifier.svg \
|
||||||
|
remove-workspace.svg
|
||||||
|
|
||||||
|
themedir = $(pkgdatadir)/theme
|
||||||
|
dist_theme_DATA = \
|
||||||
|
theme/gnome-shell.css \
|
||||||
|
theme/scroll-button-down.png \
|
||||||
|
theme/scroll-button-down-hover.png \
|
||||||
|
theme/scroll-button-up.png \
|
||||||
|
theme/scroll-button-up-hover.png \
|
||||||
|
theme/scroll-vhandle.png
|
||||||
|
|
||||||
|
schemadir = @GCONF_SCHEMA_FILE_DIR@
|
||||||
|
schema_DATA = gnome-shell.schemas
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
gnome-shell.desktop.in.in \
|
||||||
|
$(schema_DATA)
|
||||||
|
|
||||||
|
CLEANFILES = \
|
||||||
|
gnome-shell.desktop.in \
|
||||||
|
$(desktop_DATA)
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
Gnome-shell OSK layouts are extracted from CLDR layout definitions:
|
|
||||||
https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html
|
|
||||||
|
|
||||||
Updating these involves several steps:
|
|
||||||
|
|
||||||
1) Downloading and unzipping the tarball found at:
|
|
||||||
http://www.unicode.org/Public/cldr/latest/keyboards.zip
|
|
||||||
|
|
||||||
This file contains XML files describing the keyboard layouts.
|
|
||||||
|
|
||||||
2) Cloning the cldr2json script at:
|
|
||||||
git://repo.or.cz/cldr2json.git
|
|
||||||
|
|
||||||
It will be used to convert the XML files into JSON that can be
|
|
||||||
directly consumed by gnome-shell.
|
|
||||||
|
|
||||||
3) Running the script to produce the files:
|
|
||||||
./cldr2json <input-directory> <output-directory>
|
|
||||||
|
|
||||||
We shall usually use the "android" folder, since that's most
|
|
||||||
complete, and similar to our UI and target sizes. And the target
|
|
||||||
directory must be data/osk-layouts in this repository.
|
|
||||||
|
|
||||||
4) Modify gnome-shell-osk-layouts.gresource.xml to include the files
|
|
||||||
|
|
||||||
5) Do git add on the updated/new files, and git commit.
|
|
||||||
|
|
||||||
|
|
||||||
Or alternatively:
|
|
||||||
|
|
||||||
1) Run update-osk-layouts.sh
|
|
||||||
|
|
||||||
2) Do git add and git commit
|
|
70
data/add-workspace.svg
Normal file
70
data/add-workspace.svg
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="59.995201"
|
||||||
|
height="59.995102"
|
||||||
|
id="svg3113"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.46"
|
||||||
|
version="1.0"
|
||||||
|
sodipodi:docname="add-workspace.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||||
|
<defs
|
||||||
|
id="defs3115">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective3121" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.35"
|
||||||
|
inkscape:cx="375"
|
||||||
|
inkscape:cy="520"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="641"
|
||||||
|
inkscape:window-height="683"
|
||||||
|
inkscape:window-x="4"
|
||||||
|
inkscape:window-y="54" />
|
||||||
|
<metadata
|
||||||
|
id="metadata3118">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-498.57383,-439.50749)">
|
||||||
|
<path
|
||||||
|
id="path3269"
|
||||||
|
d="M 528.57143,439.91129 C 512.23433,439.91129 498.97763,453.16795 498.97763,469.50504 C 498.97763,485.84214 512.23433,499.09881 528.57143,499.09879 C 544.90853,499.09879 558.16513,485.84215 558.16523,469.50504 C 558.16523,453.16794 544.90853,439.9113 528.57143,439.91129 z M 525.29023,451.16129 L 531.88393,451.16129 C 533.75363,451.16129 535.25893,452.66659 535.25893,454.53629 L 535.25893,462.84879 L 543.54023,462.84879 C 545.40973,462.84879 546.91523,464.35409 546.91523,466.22379 L 546.91523,472.81754 C 546.91523,474.68728 545.40993,476.19255 543.54023,476.19254 L 535.25893,476.19254 L 535.25893,484.47379 C 535.25893,486.34353 533.75363,487.8488 531.88393,487.84879 L 525.29023,487.84879 C 523.42053,487.84881 521.91523,486.34351 521.91523,484.47379 L 521.91523,476.19254 L 513.60263,476.19254 C 511.73313,476.19257 510.22773,474.68726 510.22763,472.81754 L 510.22763,466.22379 C 510.22763,464.35407 511.73303,462.8488 513.60263,462.84879 L 521.91523,462.84879 L 521.91523,454.53629 C 521.91523,452.66657 523.42043,451.1613 525.29023,451.16129 z"
|
||||||
|
style="opacity:0.30701785;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.807603px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
BIN
data/app-well-glow.png
Normal file
BIN
data/app-well-glow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
7
data/back.svg
Normal file
7
data/back.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||||
|
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" id="Foreground" x="0px" y="0px" width="12" height="16" viewBox="0 0 12 16" enable-background="new 0 0 29 18" xml:space="preserve" sodipodi:version="0.32" inkscape:version="0.46+devel" sodipodi:docname="back.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata id="metadata16"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs id="defs14"><inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 9 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="29 : 9 : 1" inkscape:persp3d-origin="14.5 : 6 : 1" id="perspective18"/></defs><sodipodi:namedview inkscape:window-height="728" inkscape:window-width="1103" inkscape:pageshadow="2" inkscape:pageopacity="1" guidetolerance="10.0" gridtolerance="10.0" objecttolerance="10.0" borderopacity="1.0" bordercolor="#666666" pagecolor="#000000" id="base" showgrid="true" inkscape:zoom="27.260185" inkscape:cx="12.592456" inkscape:cy="8.2696842" inkscape:window-x="145" inkscape:window-y="38" inkscape:current-layer="Foreground" inkscape:snap-global="true" showguides="false"><inkscape:grid type="xygrid" id="grid2391" empspacing="5" visible="true" enabled="true" snapvisiblegridlinesonly="true"/></sodipodi:namedview>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<path style="fill: rgb(255, 255, 255); fill-opacity: 1; stroke: none;" d="M 10,2 10,14 2,8 10,2 z" id="path43"/></svg>
|
After Width: | Height: | Size: 1.9 KiB |
@ -1,40 +0,0 @@
|
|||||||
cldr2json
|
|
||||||
=========
|
|
||||||
|
|
||||||
This script converts Unicode CLDR android keyboard layouts to JSON usable by
|
|
||||||
GNOME Shell.
|
|
||||||
|
|
||||||
CLDR keyboard layouts can be found at
|
|
||||||
<http://www.unicode.org/Public/cldr/latest/keyboards.zip>
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
./cldr2json <input file or directory> <output directory>
|
|
||||||
|
|
||||||
example:
|
|
||||||
|
|
||||||
./cldr2json cldr/keyboards/android/ json_layouts/
|
|
||||||
|
|
||||||
|
|
||||||
Keyboard layout mapping
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Unicode CLDR layout identifiers are language codes, while XKB layout
|
|
||||||
identifiers are... something else. The mapping between the two currently uses
|
|
||||||
heuristic based on the layout descriptions, in this order:
|
|
||||||
|
|
||||||
- if the CLDR layout description matches an XKB layout description, chose its
|
|
||||||
XKB identifier
|
|
||||||
- if one word of the CLDR layout description matches an XKB layout
|
|
||||||
description, chose its XKB identifier
|
|
||||||
- if the CLDR layout description matches one word of an XKB layout description,
|
|
||||||
chose its XKB identifier
|
|
||||||
|
|
||||||
That doesn't always work. For instance it fails for "en" language, that should
|
|
||||||
match "us" XKB identifier. For such cases, there is a mapping in
|
|
||||||
LOCALE_TO_XKB_OVERRIDES at the top of the script. If you discover a weird
|
|
||||||
mapping of if you get a "failed to find XKB mapping for <locale>" warning then
|
|
||||||
please consider adding an override there.
|
|
||||||
|
|
@ -1,212 +0,0 @@
|
|||||||
#!/usr/bin/python3
|
|
||||||
#
|
|
||||||
# Copyright 2015 Daiki Ueno <dueno@src.gnome.org>
|
|
||||||
# 2016 Parag Nemade <pnemade@redhat.com>
|
|
||||||
# 2017 Alan <alan@boum.org>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Lesser General Public License as
|
|
||||||
# published by the Free Software Foundation; either version 2 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but
|
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this program; if not, see
|
|
||||||
# <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import glob
|
|
||||||
import json
|
|
||||||
import locale
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
import xml.etree.ElementTree
|
|
||||||
|
|
||||||
import gi
|
|
||||||
gi.require_version('GnomeDesktop', '3.0') # NOQA: E402
|
|
||||||
from gi.repository import GnomeDesktop
|
|
||||||
|
|
||||||
ESCAPE_PATTERN = re.compile(r'\\u\{([0-9A-Fa-f]+?)\}')
|
|
||||||
ISO_PATTERN = re.compile(r'[A-E]([0-9]+)')
|
|
||||||
|
|
||||||
LOCALE_TO_XKB_OVERRIDES = {
|
|
||||||
'af': 'za',
|
|
||||||
'en': 'us',
|
|
||||||
'en-GB': 'uk',
|
|
||||||
'es-US': 'latam',
|
|
||||||
'fr-CA': 'ca',
|
|
||||||
'hi': 'in+bolnagri',
|
|
||||||
'ky': 'kg',
|
|
||||||
'nl-BE': 'be',
|
|
||||||
'zu': None
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def parse_single_key(value):
|
|
||||||
def unescape(m):
|
|
||||||
return chr(int(m.group(1), 16))
|
|
||||||
value = ESCAPE_PATTERN.sub(unescape, value)
|
|
||||||
return value
|
|
||||||
|
|
||||||
|
|
||||||
def parse_rows(keymap):
|
|
||||||
unsorted_rows = {}
|
|
||||||
for _map in keymap.iter('map'):
|
|
||||||
value = _map.get('to')
|
|
||||||
key = [parse_single_key(value)]
|
|
||||||
iso = _map.get('iso')
|
|
||||||
if not ISO_PATTERN.match(iso):
|
|
||||||
sys.stderr.write('invalid ISO key name: %s\n' % iso)
|
|
||||||
continue
|
|
||||||
if not iso[0] in unsorted_rows:
|
|
||||||
unsorted_rows[iso[0]] = []
|
|
||||||
unsorted_rows[iso[0]].append((int(iso[1:]), key))
|
|
||||||
# add subkeys
|
|
||||||
longPress = _map.get('longPress')
|
|
||||||
if longPress:
|
|
||||||
for value in longPress.split(' '):
|
|
||||||
subkey = parse_single_key(value)
|
|
||||||
key.append(subkey)
|
|
||||||
|
|
||||||
rows = []
|
|
||||||
for k, v in sorted(list(unsorted_rows.items()),
|
|
||||||
key=lambda x: x[0],
|
|
||||||
reverse=True):
|
|
||||||
row = []
|
|
||||||
for key in sorted(v, key=lambda x: x):
|
|
||||||
row.append(key[1])
|
|
||||||
rows.append(row)
|
|
||||||
|
|
||||||
return rows
|
|
||||||
|
|
||||||
|
|
||||||
def convert_xml(tree):
|
|
||||||
root = {}
|
|
||||||
for xml_keyboard in tree.iter("keyboard"):
|
|
||||||
locale_full = xml_keyboard.get("locale")
|
|
||||||
locale, sep, end = locale_full.partition("-t-")
|
|
||||||
root["locale"] = locale
|
|
||||||
for xml_name in tree.iter("name"):
|
|
||||||
name = xml_name.get("value")
|
|
||||||
root["name"] = name
|
|
||||||
root["levels"] = []
|
|
||||||
# parse levels
|
|
||||||
for index, keymap in enumerate(tree.iter('keyMap')):
|
|
||||||
# FIXME: heuristics here
|
|
||||||
modifiers = keymap.get('modifiers')
|
|
||||||
if not modifiers:
|
|
||||||
mode = 'default'
|
|
||||||
modifiers = ''
|
|
||||||
elif 'shift' in modifiers.split(' '):
|
|
||||||
mode = 'latched'
|
|
||||||
modifiers = 'shift'
|
|
||||||
else:
|
|
||||||
mode = 'locked'
|
|
||||||
level = {}
|
|
||||||
level["level"] = modifiers
|
|
||||||
level["mode"] = mode
|
|
||||||
level["rows"] = parse_rows(keymap)
|
|
||||||
root["levels"].append(level)
|
|
||||||
return root
|
|
||||||
|
|
||||||
|
|
||||||
def locale_to_xkb(locale, name):
|
|
||||||
if locale in sorted(LOCALE_TO_XKB_OVERRIDES.keys()):
|
|
||||||
xkb = LOCALE_TO_XKB_OVERRIDES[locale]
|
|
||||||
logging.debug("override for %s → %s",
|
|
||||||
locale, xkb)
|
|
||||||
if xkb:
|
|
||||||
return xkb
|
|
||||||
else:
|
|
||||||
raise KeyError("layout %s explicitly disabled in overrides"
|
|
||||||
% locale)
|
|
||||||
xkb_names = sorted(name_to_xkb.keys())
|
|
||||||
if name in xkb_names:
|
|
||||||
return name_to_xkb[name]
|
|
||||||
else:
|
|
||||||
logging.debug("name %s failed" % name)
|
|
||||||
for sub_name in name.split(' '):
|
|
||||||
if sub_name in xkb_names:
|
|
||||||
xkb = name_to_xkb[sub_name]
|
|
||||||
logging.debug("dumb mapping failed but match with locale word: "
|
|
||||||
"%s (%s) → %s (%s)",
|
|
||||||
locale, name, xkb, sub_name)
|
|
||||||
return xkb
|
|
||||||
else:
|
|
||||||
logging.debug("sub_name failed")
|
|
||||||
for xkb_name in xkb_names:
|
|
||||||
for xkb_sub_name in xkb_name.split(' '):
|
|
||||||
if xkb_sub_name.strip('()') == name:
|
|
||||||
xkb = name_to_xkb[xkb_name]
|
|
||||||
logging.debug("dumb mapping failed but match with xkb word: "
|
|
||||||
"%s (%s) → %s (%s)",
|
|
||||||
locale, name, xkb, xkb_name)
|
|
||||||
return xkb
|
|
||||||
raise KeyError("failed to find XKB mapping for %s" % locale)
|
|
||||||
|
|
||||||
|
|
||||||
def convert_file(source_file, destination_path):
|
|
||||||
logging.info("Parsing %s", source_file)
|
|
||||||
|
|
||||||
itree = xml.etree.ElementTree.ElementTree()
|
|
||||||
itree.parse(source_file)
|
|
||||||
|
|
||||||
root = convert_xml(itree)
|
|
||||||
|
|
||||||
try:
|
|
||||||
xkb_name = locale_to_xkb(root["locale"], root["name"])
|
|
||||||
except KeyError as e:
|
|
||||||
logging.warning(e)
|
|
||||||
return False
|
|
||||||
destination_file = os.path.join(destination_path, xkb_name + ".json")
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open(destination_file, 'x', encoding="utf-8") as dest_fd:
|
|
||||||
json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True)
|
|
||||||
except FileExistsError as e:
|
|
||||||
logging.info("File %s exists, not updating", destination_file)
|
|
||||||
return False
|
|
||||||
|
|
||||||
logging.debug("written %s", destination_file)
|
|
||||||
|
|
||||||
|
|
||||||
def load_xkb_mappings():
|
|
||||||
xkb = GnomeDesktop.XkbInfo()
|
|
||||||
layouts = xkb.get_all_layouts()
|
|
||||||
name_to_xkb = {}
|
|
||||||
|
|
||||||
for layout in layouts:
|
|
||||||
name = xkb.get_layout_info(layout).display_name
|
|
||||||
name_to_xkb[name] = layout
|
|
||||||
|
|
||||||
return name_to_xkb
|
|
||||||
|
|
||||||
|
|
||||||
locale.setlocale(locale.LC_ALL, "C")
|
|
||||||
name_to_xkb = load_xkb_mappings()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
if "DEBUG" in os.environ:
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
|
||||||
|
|
||||||
if len(sys.argv) < 2:
|
|
||||||
print("supply a CLDR keyboard file")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if len(sys.argv) < 3:
|
|
||||||
print("supply an output directory")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
source = sys.argv[1]
|
|
||||||
destination = sys.argv[2]
|
|
||||||
if os.path.isfile(source):
|
|
||||||
convert_file(source, destination)
|
|
||||||
elif os.path.isdir(source):
|
|
||||||
for path in glob.glob(source + "/*-t-k0-android.xml"):
|
|
||||||
convert_file(path, destination)
|
|
@ -1,138 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE keyboard SYSTEM "../dtd/ldmlKeyboard.dtd">
|
|
||||||
<keyboard locale="fr-t-k0-android">
|
|
||||||
<version platform="4.4" number="$Revision: 11914 $"/>
|
|
||||||
<names>
|
|
||||||
<name value="French"/>
|
|
||||||
</names>
|
|
||||||
<keyMap>
|
|
||||||
<map iso="D01" to="a" longPress="à â % æ á ä ã å ā ª"/> <!-- Q -->
|
|
||||||
<map iso="D02" to="z"/> <!-- W -->
|
|
||||||
<map iso="D03" to="e" longPress="é è ê ë % ę ė ē"/>
|
|
||||||
<map iso="D04" to="r"/>
|
|
||||||
<map iso="D05" to="t"/>
|
|
||||||
<map iso="D06" to="y" longPress="% ÿ"/>
|
|
||||||
<map iso="D07" to="u" longPress="ù û % ü ú ū"/>
|
|
||||||
<map iso="D08" to="i" longPress="î % ï ì í į ī"/>
|
|
||||||
<map iso="D09" to="o" longPress="ô œ % ö ò ó õ ø ō º"/>
|
|
||||||
<map iso="D10" to="p"/>
|
|
||||||
<map iso="C01" to="q"/> <!-- A -->
|
|
||||||
<map iso="C02" to="s"/>
|
|
||||||
<map iso="C03" to="d"/>
|
|
||||||
<map iso="C04" to="f"/>
|
|
||||||
<map iso="C05" to="g"/>
|
|
||||||
<map iso="C06" to="h"/>
|
|
||||||
<map iso="C07" to="j"/>
|
|
||||||
<map iso="C08" to="k"/>
|
|
||||||
<map iso="C09" to="l"/>
|
|
||||||
<map iso="C10" to="m"/> <!-- ; -->
|
|
||||||
<map iso="B01" to="w"/> <!-- Z -->
|
|
||||||
<map iso="B02" to="x"/>
|
|
||||||
<map iso="B03" to="c" longPress="ç ć č"/>
|
|
||||||
<map iso="B04" to="v"/>
|
|
||||||
<map iso="B05" to="b"/>
|
|
||||||
<map iso="B06" to="n"/>
|
|
||||||
<map iso="B07" to="'" longPress="‘ ’ ‹ ›"/> <!-- M -->
|
|
||||||
<map iso="A02" to=","/> <!-- (key to left of space) -->
|
|
||||||
<map iso="A03" to=" "/> <!-- space -->
|
|
||||||
<map iso="A04" to="." longPress="# ! , ? - : ' @"/> <!-- (key to right of space) -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="shift caps">
|
|
||||||
<map iso="D01" to="A" longPress="À Â % Æ Á Ä Ã Å Ā ª"/> <!-- Q -->
|
|
||||||
<map iso="D02" to="Z"/> <!-- W -->
|
|
||||||
<map iso="D03" to="E" longPress="É È Ê Ë % Ę Ė Ē"/>
|
|
||||||
<map iso="D04" to="R"/>
|
|
||||||
<map iso="D05" to="T"/>
|
|
||||||
<map iso="D06" to="Y" longPress="% Ÿ"/>
|
|
||||||
<map iso="D07" to="U" longPress="Ù Û % Ü Ú Ū"/>
|
|
||||||
<map iso="D08" to="I" longPress="Î % Ï Ì Í Į Ī"/>
|
|
||||||
<map iso="D09" to="O" longPress="Ô Œ % Ö Ò Ó Õ Ø Ō º"/>
|
|
||||||
<map iso="D10" to="P"/>
|
|
||||||
<map iso="C01" to="Q"/> <!-- A -->
|
|
||||||
<map iso="C02" to="S"/>
|
|
||||||
<map iso="C03" to="D"/>
|
|
||||||
<map iso="C04" to="F"/>
|
|
||||||
<map iso="C05" to="G"/>
|
|
||||||
<map iso="C06" to="H"/>
|
|
||||||
<map iso="C07" to="J"/>
|
|
||||||
<map iso="C08" to="K"/>
|
|
||||||
<map iso="C09" to="L"/>
|
|
||||||
<map iso="C10" to="M"/> <!-- ; -->
|
|
||||||
<map iso="B01" to="W"/> <!-- Z -->
|
|
||||||
<map iso="B02" to="X"/>
|
|
||||||
<map iso="B03" to="C" longPress="Ç Ć Č"/>
|
|
||||||
<map iso="B04" to="V"/>
|
|
||||||
<map iso="B05" to="B"/>
|
|
||||||
<map iso="B06" to="N"/>
|
|
||||||
<map iso="B07" to="'" longPress="‘ ’ ‹ ›"/> <!-- M -->
|
|
||||||
<map iso="A02" to=","/> <!-- (key to left of space) -->
|
|
||||||
<map iso="A03" to=" "/> <!-- space -->
|
|
||||||
<map iso="A04" to="." longPress="# ! , ? - : ' @"/> <!-- (key to right of space) -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="opt">
|
|
||||||
<map iso="D01" to="1" longPress="¹ ½ ⅓ ¼ ⅛"/> <!-- Q base=a -->
|
|
||||||
<map iso="D02" to="2" longPress="² ⅔"/> <!-- W base=z -->
|
|
||||||
<map iso="D03" to="3" longPress="³ ¾ ⅜"/> <!-- E -->
|
|
||||||
<map iso="D04" to="4" longPress="⁴"/> <!-- R -->
|
|
||||||
<map iso="D05" to="5" longPress="⅝"/> <!-- T -->
|
|
||||||
<map iso="D06" to="6"/> <!-- Y -->
|
|
||||||
<map iso="D07" to="7" longPress="⅞"/> <!-- U -->
|
|
||||||
<map iso="D08" to="8"/> <!-- I -->
|
|
||||||
<map iso="D09" to="9"/> <!-- O -->
|
|
||||||
<map iso="D10" to="0" longPress="ⁿ ∅"/> <!-- P -->
|
|
||||||
<map iso="C01" to="@"/> <!-- A base=q -->
|
|
||||||
<map iso="C02" to="#"/> <!-- S -->
|
|
||||||
<map iso="C03" to="€" longPress="¢ £ $ ¥ ₱"/> <!-- D -->
|
|
||||||
<map iso="C04" to="%" longPress="‰"/> <!-- F -->
|
|
||||||
<map iso="C05" to="&"/> <!-- G -->
|
|
||||||
<map iso="C06" to="-" longPress="_ – — ·"/> <!-- H -->
|
|
||||||
<map iso="C07" to="+" longPress="±"/> <!-- J -->
|
|
||||||
<map iso="C08" to="(" longPress="< { ["/> <!-- K -->
|
|
||||||
<map iso="C09" to=")" longPress="> } ]"/> <!-- L -->
|
|
||||||
<map iso="B01" to="*" longPress="† ‡ ★"/> <!-- Z base=w -->
|
|
||||||
<map iso="B02" to="\u{22}" longPress="“ ” « »"/> <!-- X to= " -->
|
|
||||||
<map iso="B03" to="'" longPress="‘ ’ ‹ ›"/> <!-- C -->
|
|
||||||
<map iso="B04" to=":"/> <!-- V -->
|
|
||||||
<map iso="B05" to=";"/> <!-- B -->
|
|
||||||
<map iso="B06" to="!" longPress="¡"/> <!-- N -->
|
|
||||||
<map iso="B07" to="?" longPress="¿"/> <!-- M base=' -->
|
|
||||||
<map iso="A00" to="_"/> <!-- (3 keys to left of space) -->
|
|
||||||
<map iso="A01" to="/"/> <!-- (2 keys to left of space) -->
|
|
||||||
<map iso="A02" to=" "/> <!-- (key to left of space) base=, -->
|
|
||||||
<map iso="A03" to=","/> <!-- space -->
|
|
||||||
<map iso="A04" to="." longPress="…"/> <!-- (key to right of space) -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="opt+shift">
|
|
||||||
<map iso="D01" to="~"/> <!-- Q base=a -->
|
|
||||||
<map iso="D02" to="`"/> <!-- W base=z -->
|
|
||||||
<map iso="D03" to="|"/> <!-- E -->
|
|
||||||
<map iso="D04" to="•" longPress="♪ ♥ ♠ ♦ ♣"/> <!-- R -->
|
|
||||||
<map iso="D05" to="√"/> <!-- T -->
|
|
||||||
<map iso="D06" to="Π" longPress="π"/> <!-- Y -->
|
|
||||||
<map iso="D07" to="÷"/> <!-- U -->
|
|
||||||
<map iso="D08" to="×"/> <!-- I -->
|
|
||||||
<map iso="D09" to="¶" longPress="§"/> <!-- O -->
|
|
||||||
<map iso="D10" to="∆"/> <!-- P -->
|
|
||||||
<map iso="C01" to="£"/> <!-- A base=q -->
|
|
||||||
<map iso="C02" to="¥"/> <!-- S -->
|
|
||||||
<map iso="C03" to="$" longPress="¢"/> <!-- D -->
|
|
||||||
<map iso="C04" to="¢"/> <!-- F -->
|
|
||||||
<map iso="C05" to="^" longPress="↑ ↓ ← →"/> <!-- G -->
|
|
||||||
<map iso="C06" to="°" longPress="′ ″"/> <!-- H -->
|
|
||||||
<map iso="C07" to="=" longPress="≠ ≈ ∞"/> <!-- J -->
|
|
||||||
<map iso="C08" to="{"/> <!-- K -->
|
|
||||||
<map iso="C09" to="}"/> <!-- L -->
|
|
||||||
<map iso="B01" to="\"/> <!-- Z base=w -->
|
|
||||||
<map iso="B02" to="©"/> <!-- X -->
|
|
||||||
<map iso="B03" to="®"/> <!-- C -->
|
|
||||||
<map iso="B04" to="™"/> <!-- V -->
|
|
||||||
<map iso="B05" to="℅"/> <!-- B -->
|
|
||||||
<map iso="B06" to="["/> <!-- N -->
|
|
||||||
<map iso="B07" to="]"/> <!-- M base=' -->
|
|
||||||
<map iso="A00" to="<" longPress="‹ ≤ «"/> <!-- (3 keys to left of space) -->
|
|
||||||
<map iso="A01" to=">" longPress="› ≥ »"/> <!-- (2 keys to left of space) -->
|
|
||||||
<map iso="A02" to=" "/> <!-- (key to left of space) base=, -->
|
|
||||||
<map iso="A03" to=","/> <!-- space -->
|
|
||||||
<map iso="A04" to="." longPress="…"/> <!-- (key to right of space) -->
|
|
||||||
</keyMap>
|
|
||||||
</keyboard>
|
|
@ -1,614 +0,0 @@
|
|||||||
{
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"level": "",
|
|
||||||
"mode": "default",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"a",
|
|
||||||
"à",
|
|
||||||
"â",
|
|
||||||
"%",
|
|
||||||
"æ",
|
|
||||||
"á",
|
|
||||||
"ä",
|
|
||||||
"ã",
|
|
||||||
"å",
|
|
||||||
"ā",
|
|
||||||
"ª"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"e",
|
|
||||||
"é",
|
|
||||||
"è",
|
|
||||||
"ê",
|
|
||||||
"ë",
|
|
||||||
"%",
|
|
||||||
"ę",
|
|
||||||
"ė",
|
|
||||||
"ē"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"r"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"t"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"y",
|
|
||||||
"%",
|
|
||||||
"ÿ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"u",
|
|
||||||
"ù",
|
|
||||||
"û",
|
|
||||||
"%",
|
|
||||||
"ü",
|
|
||||||
"ú",
|
|
||||||
"ū"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"i",
|
|
||||||
"î",
|
|
||||||
"%",
|
|
||||||
"ï",
|
|
||||||
"ì",
|
|
||||||
"í",
|
|
||||||
"į",
|
|
||||||
"ī"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"o",
|
|
||||||
"ô",
|
|
||||||
"œ",
|
|
||||||
"%",
|
|
||||||
"ö",
|
|
||||||
"ò",
|
|
||||||
"ó",
|
|
||||||
"õ",
|
|
||||||
"ø",
|
|
||||||
"ō",
|
|
||||||
"º"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"p"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"q"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"s"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"d"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"f"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"g"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"h"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"k"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"l"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"m"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"w"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"x"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"c",
|
|
||||||
"ç",
|
|
||||||
"ć",
|
|
||||||
"č"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"v"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"b"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"n"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"'",
|
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"#",
|
|
||||||
"!",
|
|
||||||
",",
|
|
||||||
"?",
|
|
||||||
"-",
|
|
||||||
":",
|
|
||||||
"'",
|
|
||||||
"@"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "shift",
|
|
||||||
"mode": "latched",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"A",
|
|
||||||
"À",
|
|
||||||
"Â",
|
|
||||||
"%",
|
|
||||||
"Æ",
|
|
||||||
"Á",
|
|
||||||
"Ä",
|
|
||||||
"Ã",
|
|
||||||
"Å",
|
|
||||||
"Ā",
|
|
||||||
"ª"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Z"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"E",
|
|
||||||
"É",
|
|
||||||
"È",
|
|
||||||
"Ê",
|
|
||||||
"Ë",
|
|
||||||
"%",
|
|
||||||
"Ę",
|
|
||||||
"Ė",
|
|
||||||
"Ē"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"R"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"T"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Y",
|
|
||||||
"%",
|
|
||||||
"Ÿ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"U",
|
|
||||||
"Ù",
|
|
||||||
"Û",
|
|
||||||
"%",
|
|
||||||
"Ü",
|
|
||||||
"Ú",
|
|
||||||
"Ū"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"I",
|
|
||||||
"Î",
|
|
||||||
"%",
|
|
||||||
"Ï",
|
|
||||||
"Ì",
|
|
||||||
"Í",
|
|
||||||
"Į",
|
|
||||||
"Ī"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"O",
|
|
||||||
"Ô",
|
|
||||||
"Œ",
|
|
||||||
"%",
|
|
||||||
"Ö",
|
|
||||||
"Ò",
|
|
||||||
"Ó",
|
|
||||||
"Õ",
|
|
||||||
"Ø",
|
|
||||||
"Ō",
|
|
||||||
"º"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"P"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"Q"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"S"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"D"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"F"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"G"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"H"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"J"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"K"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"L"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"M"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"W"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"X"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"C",
|
|
||||||
"Ç",
|
|
||||||
"Ć",
|
|
||||||
"Č"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"V"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"B"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"N"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"'",
|
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"#",
|
|
||||||
"!",
|
|
||||||
",",
|
|
||||||
"?",
|
|
||||||
"-",
|
|
||||||
":",
|
|
||||||
"'",
|
|
||||||
"@"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"1",
|
|
||||||
"¹",
|
|
||||||
"½",
|
|
||||||
"⅓",
|
|
||||||
"¼",
|
|
||||||
"⅛"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2",
|
|
||||||
"²",
|
|
||||||
"⅔"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"3",
|
|
||||||
"³",
|
|
||||||
"¾",
|
|
||||||
"⅜"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"4",
|
|
||||||
"⁴"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"5",
|
|
||||||
"⅝"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"7",
|
|
||||||
"⅞"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"9"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"0",
|
|
||||||
"ⁿ",
|
|
||||||
"∅"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"@"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"#"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"€",
|
|
||||||
"¢",
|
|
||||||
"£",
|
|
||||||
"$",
|
|
||||||
"¥",
|
|
||||||
"₱"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"%",
|
|
||||||
"‰"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"&"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"-",
|
|
||||||
"_",
|
|
||||||
"–",
|
|
||||||
"—",
|
|
||||||
"·"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"+",
|
|
||||||
"±"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"(",
|
|
||||||
"<",
|
|
||||||
"{",
|
|
||||||
"["
|
|
||||||
],
|
|
||||||
[
|
|
||||||
")",
|
|
||||||
">",
|
|
||||||
"}",
|
|
||||||
"]"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"*",
|
|
||||||
"†",
|
|
||||||
"‡",
|
|
||||||
"★"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"\"",
|
|
||||||
"“",
|
|
||||||
"”",
|
|
||||||
"«",
|
|
||||||
"»"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"'",
|
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
":"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
";"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"!",
|
|
||||||
"¡"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"?",
|
|
||||||
"¿"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"_"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"/"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"…"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt+shift",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"~"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"`"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"|"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"•",
|
|
||||||
"♪",
|
|
||||||
"♥",
|
|
||||||
"♠",
|
|
||||||
"♦",
|
|
||||||
"♣"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"√"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Π",
|
|
||||||
"π"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"÷"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"×"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¶",
|
|
||||||
"§"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"∆"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"£"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¥"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"$",
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"^",
|
|
||||||
"↑",
|
|
||||||
"↓",
|
|
||||||
"←",
|
|
||||||
"→"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"°",
|
|
||||||
"′",
|
|
||||||
"″"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"=",
|
|
||||||
"≠",
|
|
||||||
"≈",
|
|
||||||
"∞"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"{"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"}"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"\\"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"©"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"®"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"™"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"℅"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"["
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"]"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"<",
|
|
||||||
"‹",
|
|
||||||
"≤",
|
|
||||||
"«"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
">",
|
|
||||||
"›",
|
|
||||||
"≥",
|
|
||||||
"»"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"…"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"locale": "fr",
|
|
||||||
"name": "French"
|
|
||||||
}
|
|
@ -1,212 +0,0 @@
|
|||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import json
|
|
||||||
import tempfile
|
|
||||||
import unittest
|
|
||||||
import xml.etree.ElementTree
|
|
||||||
|
|
||||||
import cldr2json
|
|
||||||
|
|
||||||
|
|
||||||
class TestParseSingleKey(unittest.TestCase):
|
|
||||||
def test_ascii(self):
|
|
||||||
self.assertEqual(cldr2json.parse_single_key("a"), "a")
|
|
||||||
|
|
||||||
def test_nonascii(self):
|
|
||||||
self.assertEqual(cldr2json.parse_single_key("Æ"), "Æ")
|
|
||||||
|
|
||||||
def test_twochars(self):
|
|
||||||
self.assertEqual(cldr2json.parse_single_key("ԵՒ"), "ԵՒ")
|
|
||||||
|
|
||||||
def test_decode(self):
|
|
||||||
self.assertEqual(cldr2json.parse_single_key("\\u{200D}"), "\u200d")
|
|
||||||
|
|
||||||
def test_decode_threechars(self):
|
|
||||||
self.assertEqual(cldr2json.parse_single_key("ज\\u{94D}ञ"), "ज\u094Dञ")
|
|
||||||
|
|
||||||
|
|
||||||
class TestParseRow(unittest.TestCase):
|
|
||||||
def test_parse_row(self):
|
|
||||||
xml_string = """
|
|
||||||
<keyMap>
|
|
||||||
<map iso="D01" to="a" longPress="à â % æ á ä ã å ā ª"/> <!-- Q -->
|
|
||||||
<map iso="D02" to="z"/> <!-- W -->
|
|
||||||
<map iso="D03" to="e" longPress="é è ê ë % ę ė ē"/>
|
|
||||||
<map iso="D04" to="r"/>
|
|
||||||
<map iso="D05" to="t"/>
|
|
||||||
<map iso="D06" to="y" longPress="% ÿ"/>
|
|
||||||
<map iso="D07" to="u" longPress="ù û % ü ú ū"/>
|
|
||||||
<map iso="D08" to="i" longPress="î % ï ì í į ī"/>
|
|
||||||
<map iso="D09" to="o" longPress="ô œ % ö ò ó õ ø ō º"/>
|
|
||||||
<map iso="D10" to="p"/>
|
|
||||||
<map iso="C01" to="q"/> <!-- A -->
|
|
||||||
<map iso="C02" to="s"/>
|
|
||||||
<map iso="C03" to="d"/>
|
|
||||||
<map iso="C04" to="f"/>
|
|
||||||
<map iso="C05" to="g"/>
|
|
||||||
<map iso="C06" to="h"/>
|
|
||||||
<map iso="C07" to="j"/>
|
|
||||||
<map iso="C08" to="k"/>
|
|
||||||
<map iso="C09" to="l"/>
|
|
||||||
<map iso="C10" to="m"/> <!-- ; -->
|
|
||||||
<map iso="B01" to="w"/> <!-- Z -->
|
|
||||||
<map iso="B02" to="x"/>
|
|
||||||
<map iso="B03" to="c" longPress="ç ć č"/>
|
|
||||||
<map iso="B04" to="v"/>
|
|
||||||
<map iso="B05" to="b"/>
|
|
||||||
<map iso="B06" to="n"/>
|
|
||||||
<map iso="B07" to="'" longPress="‘ ’ ‹ ›"/> <!-- M -->
|
|
||||||
<map iso="A02" to=","/> <!-- (key to left of space) -->
|
|
||||||
<map iso="A03" to=" "/> <!-- space -->
|
|
||||||
<map iso="A04" to="." longPress="# ! , ? - : ' @"/> <!-- (key to right of space) -->
|
|
||||||
</keyMap>
|
|
||||||
"""
|
|
||||||
xml_tree = xml.etree.ElementTree.XML(xml_string)
|
|
||||||
json = [[
|
|
||||||
['a', 'à', 'â', '%', 'æ', 'á', 'ä', 'ã', 'å', 'ā', 'ª'],
|
|
||||||
['z'],
|
|
||||||
['e', 'é', 'è', 'ê', 'ë', '%', 'ę', 'ė', 'ē'],
|
|
||||||
['r'],
|
|
||||||
['t'],
|
|
||||||
['y', '%', 'ÿ'],
|
|
||||||
['u', 'ù', 'û', '%', 'ü', 'ú', 'ū'],
|
|
||||||
['i', 'î', '%', 'ï', 'ì', 'í', 'į', 'ī'],
|
|
||||||
['o', 'ô', 'œ', '%', 'ö', 'ò', 'ó', 'õ', 'ø', 'ō', 'º'],
|
|
||||||
['p']
|
|
||||||
], [
|
|
||||||
['q'],
|
|
||||||
['s'],
|
|
||||||
['d'],
|
|
||||||
['f'],
|
|
||||||
['g'],
|
|
||||||
['h'],
|
|
||||||
['j'],
|
|
||||||
['k'],
|
|
||||||
['l'],
|
|
||||||
['m']
|
|
||||||
], [
|
|
||||||
['w'],
|
|
||||||
['x'],
|
|
||||||
['c', 'ç', 'ć', 'č'],
|
|
||||||
['v'],
|
|
||||||
['b'],
|
|
||||||
['n'],
|
|
||||||
["'", '‘', '’', '‹', '›']
|
|
||||||
], [
|
|
||||||
[','],
|
|
||||||
[' '],
|
|
||||||
['.', '#', '!', ',', '?', '-', ':', "'", '@']
|
|
||||||
]]
|
|
||||||
self.assertEqual(cldr2json.parse_rows(xml_tree), json)
|
|
||||||
|
|
||||||
|
|
||||||
class TestConvertXml(unittest.TestCase):
|
|
||||||
def test_convert_xml(self):
|
|
||||||
xml_string = """<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE keyboard SYSTEM "../dtd/ldmlKeyboard.dtd">
|
|
||||||
<keyboard locale="fr-t-k0-android">
|
|
||||||
<version platform="4.4" number="$Revision: 11914 $"/>
|
|
||||||
<names>
|
|
||||||
<name value="French"/>
|
|
||||||
</names>
|
|
||||||
<keyMap>
|
|
||||||
<map iso="D01" to="a" longPress="à â % æ á ä ã å ā ª"/> <!-- Q -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="shift caps">
|
|
||||||
<map iso="D01" to="A" longPress="À Â % Æ Á Ä Ã Å Ā ª"/> <!-- Q -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="opt">
|
|
||||||
<map iso="D01" to="1" longPress="¹ ½ ⅓ ¼ ⅛"/> <!-- Q base=a -->
|
|
||||||
</keyMap>
|
|
||||||
<keyMap modifiers="opt+shift">
|
|
||||||
<map iso="D01" to="~"/> <!-- Q base=a -->
|
|
||||||
</keyMap>
|
|
||||||
</keyboard>
|
|
||||||
"""
|
|
||||||
xml_tree = xml.etree.ElementTree.XML(xml_string)
|
|
||||||
json = {
|
|
||||||
"locale": "fr",
|
|
||||||
"name": "French",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"level": "",
|
|
||||||
"mode": "default",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
['a', 'à', 'â', '%', 'æ', 'á', 'ä', 'ã', 'å', 'ā', 'ª'],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "shift",
|
|
||||||
"mode": "latched",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
['A', 'À', 'Â', '%', 'Æ', 'Á', 'Ä', 'Ã', 'Å', 'Ā', 'ª'],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
["1", "¹", "½", "⅓", "¼", "⅛"],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt+shift",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
["~"],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
self.assertEqual(cldr2json.convert_xml(xml_tree), json)
|
|
||||||
|
|
||||||
|
|
||||||
class TestConvertFile(unittest.TestCase):
|
|
||||||
def test_fr(self):
|
|
||||||
outdir = tempfile.mkdtemp()
|
|
||||||
cldr2json.convert_file("test/data/fr-t-k0-android.xml", outdir)
|
|
||||||
with open("test/data/fr.json", encoding="utf-8") as expected_json_fd:
|
|
||||||
expected_json = json.load(expected_json_fd)
|
|
||||||
with open(outdir + "/fr.json", encoding="utf-8") as actual_json_fd:
|
|
||||||
actual_json = json.load(actual_json_fd)
|
|
||||||
self.assertEqual(expected_json, actual_json)
|
|
||||||
|
|
||||||
|
|
||||||
class TestLocaleToXKB(unittest.TestCase):
|
|
||||||
def test_simple(self):
|
|
||||||
self.assertEqual(cldr2json.locale_to_xkb("fr", "French"),
|
|
||||||
"fr")
|
|
||||||
|
|
||||||
def test_fallback(self):
|
|
||||||
self.assertEqual(cldr2json.locale_to_xkb("nb", "Norwegian Bokmål"),
|
|
||||||
"no")
|
|
||||||
|
|
||||||
def test_fallback2(self):
|
|
||||||
self.assertEqual(cldr2json.locale_to_xkb("km", "Khmer"),
|
|
||||||
"kh")
|
|
||||||
|
|
||||||
def test_override(self):
|
|
||||||
self.assertEqual(cldr2json.locale_to_xkb("en-GB",
|
|
||||||
"English Great Britain"),
|
|
||||||
"uk")
|
|
||||||
|
|
||||||
|
|
||||||
class LoadXKBMapplings(unittest.TestCase):
|
|
||||||
def test_dictionnary(self):
|
|
||||||
self.assertIsInstance(cldr2json.load_xkb_mappings(), dict)
|
|
||||||
|
|
||||||
def test_mapping(self):
|
|
||||||
mapping = cldr2json.load_xkb_mappings()
|
|
||||||
self.assertEqual(mapping["French"], "fr")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
66
data/close-black.svg
Normal file
66
data/close-black.svg
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="Foreground"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="16px"
|
||||||
|
height="16px"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
enable-background="new 0 0 16 16"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.46+devel"
|
||||||
|
sodipodi:docname="close-black.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||||
|
id="metadata2399"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs2397"><linearGradient
|
||||||
|
id="linearGradient3173"><stop
|
||||||
|
style="stop-color:#c4c4c4;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3175" /><stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3177" /></linearGradient><inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 8 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="16 : 8 : 1"
|
||||||
|
inkscape:persp3d-origin="8 : 5.3333333 : 1"
|
||||||
|
id="perspective2401" /></defs><sodipodi:namedview
|
||||||
|
inkscape:window-height="811"
|
||||||
|
inkscape:window-width="1272"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
guidetolerance="10.0"
|
||||||
|
gridtolerance="10.0"
|
||||||
|
objecttolerance="10.0"
|
||||||
|
borderopacity="1.0"
|
||||||
|
bordercolor="#666666"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
id="base"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="32.125"
|
||||||
|
inkscape:cx="8"
|
||||||
|
inkscape:cy="10.440056"
|
||||||
|
inkscape:window-x="40"
|
||||||
|
inkscape:window-y="40"
|
||||||
|
inkscape:current-layer="Foreground" />
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M10.5,3.5l2,2L10,8l2.5,2.5l-2,2L8,10l-2.5,2.5l-2-2L6,8L3.5,5.5l2-2L8,6L10.5,3.5 z M0,8c0-4.418,3.582-8,8-8s8,3.582,8,8s-3.582,8-8,8S0,12.418,0,8z"
|
||||||
|
id="path2394"
|
||||||
|
style="fill-opacity:1;fill:#000000" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
74
data/close.svg
Normal file
74
data/close.svg
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="Foreground"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="16px"
|
||||||
|
height="16px"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
enable-background="new 0 0 16 16"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.46"
|
||||||
|
sodipodi:docname="x_circle_16.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||||
|
id="metadata2399"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs2397"><linearGradient
|
||||||
|
id="linearGradient3173"><stop
|
||||||
|
style="stop-color:#c4c4c4;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3175" /><stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3177" /></linearGradient><inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 8 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="16 : 8 : 1"
|
||||||
|
inkscape:persp3d-origin="8 : 5.3333333 : 1"
|
||||||
|
id="perspective2401" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3173"
|
||||||
|
id="linearGradient3179"
|
||||||
|
x1="7.844358"
|
||||||
|
y1="16"
|
||||||
|
x2="7.7198443"
|
||||||
|
y2="-0.062256809"
|
||||||
|
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
|
||||||
|
inkscape:window-height="713"
|
||||||
|
inkscape:window-width="1197"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
guidetolerance="10.0"
|
||||||
|
gridtolerance="10.0"
|
||||||
|
objecttolerance="10.0"
|
||||||
|
borderopacity="1.0"
|
||||||
|
bordercolor="#666666"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
id="base"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="32.125"
|
||||||
|
inkscape:cx="8"
|
||||||
|
inkscape:cy="8"
|
||||||
|
inkscape:window-x="40"
|
||||||
|
inkscape:window-y="40"
|
||||||
|
inkscape:current-layer="Foreground" />
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M10.5,3.5l2,2L10,8l2.5,2.5l-2,2L8,10l-2.5,2.5l-2-2L6,8L3.5,5.5l2-2L8,6L10.5,3.5 z M0,8c0-4.418,3.582-8,8-8s8,3.582,8,8s-3.582,8-8,8S0,12.418,0,8z"
|
||||||
|
id="path2394"
|
||||||
|
style="fill-opacity:1;fill:url(#linearGradient3179)" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
@ -1,10 +0,0 @@
|
|||||||
dbus_interfaces = [
|
|
||||||
'org.gnome.Shell.Extensions.xml',
|
|
||||||
'org.gnome.Shell.Introspect.xml',
|
|
||||||
'org.gnome.Shell.PadOsd.xml',
|
|
||||||
'org.gnome.Shell.Screencast.xml',
|
|
||||||
'org.gnome.Shell.Screenshot.xml',
|
|
||||||
'org.gnome.ShellSearchProvider.xml',
|
|
||||||
'org.gnome.ShellSearchProvider2.xml'
|
|
||||||
]
|
|
||||||
install_data(dbus_interfaces, install_dir: ifacedir)
|
|
@ -1,76 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
|
||||||
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
net.hadess.PowerProfiles:
|
|
||||||
@short_description: Power Profiles daemon
|
|
||||||
|
|
||||||
The power-profiles-daemon API is meant to be used by parts of the OS or
|
|
||||||
desktop environment to switch system power profiles based on user choice,
|
|
||||||
or user intent.
|
|
||||||
|
|
||||||
OS components would typically use the "Profiles" property to construct
|
|
||||||
their UI (2 or 3 profiles available), and monitor the "ActiveProfile"
|
|
||||||
and the "PerformanceInhibited" properties to update that UI. The UI
|
|
||||||
would try to set the "ActiveProfile" property if the user selected
|
|
||||||
a different one.
|
|
||||||
|
|
||||||
Note that the reason why the project exists and how it is different from
|
|
||||||
existing projects is explained <ulink href=" https://gitlab.freedesktop.org/hadess/power-profiles-daemon/-/blob/master/README.md">
|
|
||||||
in the project's README file</ulink>.
|
|
||||||
|
|
||||||
The object path will be "/net/hadess/PowerProfiles".
|
|
||||||
-->
|
|
||||||
<interface name="net.hadess.PowerProfiles">
|
|
||||||
<!--
|
|
||||||
ActiveProfile:
|
|
||||||
|
|
||||||
The type of the currently active profile. It might change automatically
|
|
||||||
if the "performance" profile was selected but it got inhibited, in which
|
|
||||||
case the "PerformanceInhibited" property will reflect the reason.
|
|
||||||
-->
|
|
||||||
<property name="ActiveProfile" type="s" access="readwrite"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
PerformanceInhibited:
|
|
||||||
|
|
||||||
This will be set if the performance power profile is unavailable, with
|
|
||||||
the value being used to identify the reason for unavailability. As new
|
|
||||||
reasons can be added, it is recommended that front-ends show a generic
|
|
||||||
reason if they do not recognise the value. Possible values are:
|
|
||||||
- "lap-detected" (the computer is sitting on the user's lap)
|
|
||||||
- "high-operating-temperature" (the computer is close to overheating)
|
|
||||||
- "" (the empty string, if not inhibited)
|
|
||||||
-->
|
|
||||||
<property name="PerformanceInhibited" type="s" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Profiles:
|
|
||||||
|
|
||||||
An array of key-pair values representing each profile. The key named
|
|
||||||
"Driver" (s) identifies the power-profiles-daemon backend code used to
|
|
||||||
implement the profile.
|
|
||||||
|
|
||||||
The key named "Profile" (s) will be one of:
|
|
||||||
- "power-saver" (battery saving profile)
|
|
||||||
- "balanced" (the default profile)
|
|
||||||
- "performance" (a profile that does not care about noise or battery consumption)
|
|
||||||
|
|
||||||
Only one of each type of profile will be listed, with the daemon choosing the
|
|
||||||
more appropriate "driver" for each profile type.
|
|
||||||
-->
|
|
||||||
<property name="Profiles" type="aa{sv}" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Actions:
|
|
||||||
|
|
||||||
An array of strings listing each one of the "actions" implemented in
|
|
||||||
the running daemon. This is used by API users to figure out whether
|
|
||||||
particular functionality is available in a version of the daemon.
|
|
||||||
-->
|
|
||||||
<property name="Actions" type="as" access="read"/>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="net.hadess.SensorProxy">
|
|
||||||
<property name="HasAccelerometer" type="b" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,46 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
|
||||||
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
net.hadess.SwitcherooControl:
|
|
||||||
@short_description: D-Bus proxy to access dual-GPU controls.
|
|
||||||
|
|
||||||
After checking the availability of two switchable GPUs in the machine,
|
|
||||||
check the value of net.hadess.SwitcherooControl.HasDualGpu to see
|
|
||||||
if running applications on the discrete GPU should be offered.
|
|
||||||
|
|
||||||
The object path will be "/net/hadess/SwitcherooControl".
|
|
||||||
-->
|
|
||||||
<interface name="net.hadess.SwitcherooControl">
|
|
||||||
<!--
|
|
||||||
HasDualGpu:
|
|
||||||
|
|
||||||
Whether two switchable GPUs are present on the system. This property
|
|
||||||
has been obsoleted in favour of the "NumGPUs" property.
|
|
||||||
-->
|
|
||||||
<property name="HasDualGpu" type="b" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
NumGPUs:
|
|
||||||
|
|
||||||
The number of GPUs available on the system. Note that while having no
|
|
||||||
GPUs is unlikely, consumers of this API should probably not throw errors
|
|
||||||
if that were the case.
|
|
||||||
-->
|
|
||||||
<property name="NumGPUs" type="u" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
GPUs:
|
|
||||||
|
|
||||||
An array of key-pair values representing each GPU. The key named "Name" (s)
|
|
||||||
will contain a user-facing name for the GPU, the "Environment" (as) key will
|
|
||||||
contain an array of even number of strings, each being an environment
|
|
||||||
variable to set to use the GPU, followed by its value, the "Default" (b) key
|
|
||||||
will tag the default (usually integrated) GPU.
|
|
||||||
-->
|
|
||||||
<property name="GPUs" type="aa{sv}" access="read"/>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,78 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
|
||||||
|
|
||||||
<node>
|
|
||||||
<interface name="net.reactivated.Fprint.Device">
|
|
||||||
<method name="ListEnrolledFingers">
|
|
||||||
<arg type="s" name="username" direction="in">
|
|
||||||
</arg>
|
|
||||||
<arg type="as" name="enrolled_fingers" direction="out">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="DeleteEnrolledFingers">
|
|
||||||
<arg type="s" name="username" direction="in">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="DeleteEnrolledFingers2">
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="Claim">
|
|
||||||
<arg type="s" name="username" direction="in">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="Release">
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="VerifyStart">
|
|
||||||
<arg type="s" name="finger_name" direction="in">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="VerifyStop">
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<signal name="VerifyFingerSelected">
|
|
||||||
<arg type="s" name="finger_name">
|
|
||||||
</arg>
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<signal name="VerifyStatus">
|
|
||||||
<arg type="s" name="result">
|
|
||||||
</arg>
|
|
||||||
|
|
||||||
<arg type="b" name="done">
|
|
||||||
</arg>
|
|
||||||
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<method name="EnrollStart">
|
|
||||||
<arg type="s" name="finger_name" direction="in">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="EnrollStop">
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<signal name="EnrollStatus">
|
|
||||||
<arg type="s" name="result">
|
|
||||||
</arg>
|
|
||||||
|
|
||||||
<arg type="b" name="done">
|
|
||||||
</arg>
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<property name="name" type="s" access="read">
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<property name="num-enroll-stages" type="i" access="read">
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<property name="scan-type" type="s" access="read">
|
|
||||||
</property>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,18 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
|
||||||
<node>
|
|
||||||
<interface name="net.reactivated.Fprint.Manager">
|
|
||||||
|
|
||||||
<method name="GetDevices">
|
|
||||||
<arg type="ao" name="devices" direction="out">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<method name="GetDefaultDevice">
|
|
||||||
<arg type="o" name="device" direction="out">
|
|
||||||
</arg>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,32 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.Gtk.MountOperationHandler">
|
|
||||||
<method name="AskPassword">
|
|
||||||
<arg type="s" direction="in" name="object_id"/>
|
|
||||||
<arg type="s" direction="in" name="message"/>
|
|
||||||
<arg type="s" direction="in" name="icon_name"/>
|
|
||||||
<arg type="s" direction="in" name="default_user"/>
|
|
||||||
<arg type="s" direction="in" name="default_domain"/>
|
|
||||||
<arg type="u" direction="in" name="flags"/>
|
|
||||||
<arg type="u" direction="out" name="response"/>
|
|
||||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
|
||||||
</method>
|
|
||||||
<method name="AskQuestion">
|
|
||||||
<arg type="s" direction="in" name="object_id"/>
|
|
||||||
<arg type="s" direction="in" name="message"/>
|
|
||||||
<arg type="s" direction="in" name="icon_name"/>
|
|
||||||
<arg type="as" direction="in" name="choices"/>
|
|
||||||
<arg type="u" direction="out" name="response"/>
|
|
||||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
|
||||||
</method>
|
|
||||||
<method name="ShowProcesses">
|
|
||||||
<arg type="s" direction="in" name="object_id"/>
|
|
||||||
<arg type="s" direction="in" name="message"/>
|
|
||||||
<arg type="s" direction="in" name="icon_name"/>
|
|
||||||
<arg type="ai" direction="in" name="application_pids"/>
|
|
||||||
<arg type="as" direction="in" name="choices"/>
|
|
||||||
<arg type="u" direction="out" name="response"/>
|
|
||||||
<arg type="a{sv}" direction="out" name="response_details"/>
|
|
||||||
</method>
|
|
||||||
<method name="Close"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,12 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.Application">
|
|
||||||
<method name="ActivateAction">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="av" direction="in"/>
|
|
||||||
<arg type="a{sv}" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Activate">
|
|
||||||
<arg type="a{sv}" direction="in"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,16 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.DBus">
|
|
||||||
<method name="ListNames">
|
|
||||||
<arg type="as" direction="out" name="names"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetConnectionUnixProcessID">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<signal name="NameOwnerChanged">
|
|
||||||
<arg type="s" direction="out" name="name"/>
|
|
||||||
<arg type="s" direction="out" name="oldOwner"/>
|
|
||||||
<arg type="s" direction="out" name="newOwner"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,11 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.GeoClue2.Agent">
|
|
||||||
<property name="MaxAccuracyLevel" type="u" access="read"/>
|
|
||||||
<method name="AuthorizeApp">
|
|
||||||
<arg name="desktop_id" type="s" direction="in"/>
|
|
||||||
<arg name="req_accuracy_level" type="u" direction="in"/>
|
|
||||||
<arg name="authorized" type="b" direction="out"/>
|
|
||||||
<arg name="allowed_accuracy_level" type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,9 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.GeoClue2.Manager">
|
|
||||||
<property name="InUse" type="b" access="read"/>
|
|
||||||
<property name="AvailableAccuracyLevel" type="u" access="read"/>
|
|
||||||
<method name="AddAgent">
|
|
||||||
<arg name="id" type="s" direction="in"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.ModemManager.Modem.Cdma">
|
|
||||||
<method name="GetSignalQuality">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetServingSystem">
|
|
||||||
<arg type="(usu)" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<signal name="SignalQuality">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,19 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
|
|
||||||
<method name="GetRegistrationInfo">
|
|
||||||
<arg type="(uss)" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetSignalQuality">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<property name="AccessTechnology" type="u" access="read"/>
|
|
||||||
<signal name="SignalQuality">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="RegistrationInfo">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,6 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
|
|
||||||
<property name="OperatorCode" type="s" access="read"/>
|
|
||||||
<property name="OperatorName" type="s" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
|
|
||||||
<property name="Sid" type="u" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.ModemManager1.Modem">
|
|
||||||
<property name="SignalQuality" type="(ub)" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,35 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.Notifications">
|
|
||||||
<method name="Notify">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="as" direction="in"/>
|
|
||||||
<arg type="a{sv}" direction="in"/>
|
|
||||||
<arg type="i" direction="in"/>
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="CloseNotification">
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetCapabilities">
|
|
||||||
<arg type="as" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetServerInformation">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<signal name="NotificationClosed">
|
|
||||||
<arg type="u"/>
|
|
||||||
<arg type="u"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="ActionInvoked">
|
|
||||||
<arg type="u"/>
|
|
||||||
<arg type="s"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.PackageKit.Offline">
|
|
||||||
<property name="UpdatePrepared" type="b" access="read"/>
|
|
||||||
<property name="UpdateTriggered" type="b" access="read"/>
|
|
||||||
<property name="UpgradePrepared" type="b" access="read"/>
|
|
||||||
<property name="UpgradeTriggered" type="b" access="read"/>
|
|
||||||
<property name="PreparedUpgrade" type="a{sv}" access="read"/>
|
|
||||||
<method name="Trigger">
|
|
||||||
<arg type="s" name="action" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Cancel"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,11 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.UPower.Device">
|
|
||||||
<property name="Type" type="u" access="read"/>
|
|
||||||
<property name="State" type="u" access="read"/>
|
|
||||||
<property name="Percentage" type="d" access="read"/>
|
|
||||||
<property name="TimeToEmpty" type="x" access="read"/>
|
|
||||||
<property name="TimeToFull" type="x" access="read"/>
|
|
||||||
<property name="IsPresent" type="b" access="read"/>
|
|
||||||
<property name="IconName" type="s" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.UPower">
|
|
||||||
<property name="OnBattery" type="b" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,18 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.bolt1.Device">
|
|
||||||
<property name="Uid" type="s" access="read"></property>
|
|
||||||
<property name="Name" type="s" access="read"></property>
|
|
||||||
<property name="Vendor" type="s" access="read"></property>
|
|
||||||
<property name="Type" type="s" access="read"></property>
|
|
||||||
<property name="Status" type="s" access="read"></property>
|
|
||||||
<property name="Parent" type="s" access="read"></property>
|
|
||||||
<property name="SysfsPath" type="s" access="read"></property>
|
|
||||||
<property name="Stored" type="b" access="read"></property>
|
|
||||||
<property name="Policy" type="s" access="read"></property>
|
|
||||||
<property name="Key" type="s" access="read"></property>
|
|
||||||
<property name="Label" type="s" access="read"></property>
|
|
||||||
<property name="ConnectTime" type="t" access="read"></property>
|
|
||||||
<property name="AuthorizeTime" type="t" access="read"></property>
|
|
||||||
<property name="StoreTime" type="t" access="read"></property>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,15 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.bolt1.Manager">
|
|
||||||
<property name="Probing" type="b" access="read"></property>
|
|
||||||
<property name="AuthMode" type="s" access="readwrite"></property>
|
|
||||||
<method name="EnrollDevice">
|
|
||||||
<arg type="s" name="uid" direction="in"/>
|
|
||||||
<arg type="s" name="policy" direction="in"/>
|
|
||||||
<arg type="s" name="flags" direction="in"/>
|
|
||||||
<arg name="device" direction="out" type="o"/>
|
|
||||||
</method>
|
|
||||||
<signal name="DeviceAdded">
|
|
||||||
<arg name="device" type="o"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,15 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.impl.portal.Access">
|
|
||||||
<method name="AccessDialog">
|
|
||||||
<arg type="o" name="handle" direction="in"/>
|
|
||||||
<arg type="s" name="app_id" direction="in"/>
|
|
||||||
<arg type="s" name="parent_window" direction="in"/>
|
|
||||||
<arg type="s" name="title" direction="in"/>
|
|
||||||
<arg type="s" name="subtitle" direction="in"/>
|
|
||||||
<arg type="s" name="body" direction="in"/>
|
|
||||||
<arg type="a{sv}" name="options" direction="in"/>
|
|
||||||
<arg type="u" name="response" direction="out"/>
|
|
||||||
<arg type="a{sv}" name="results" direction="out"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,24 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.impl.portal.PermissionStore">
|
|
||||||
<method name="Lookup">
|
|
||||||
<arg name="table" type="s" direction="in"/>
|
|
||||||
<arg name="id" type="s" direction="in"/>
|
|
||||||
<arg name="permissions" type="a{sas}" direction="out"/>
|
|
||||||
<arg name="data" type="v" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="Set">
|
|
||||||
<arg name="table" type="s" direction="in"/>
|
|
||||||
<arg name="create" type="b" direction="in"/>
|
|
||||||
<arg name="id" type="s" direction="in"/>
|
|
||||||
<arg name="app_permissions" type="a{sas}" direction="in"/>
|
|
||||||
<arg name="data" type="v" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="Changed">
|
|
||||||
<arg name="table" type="s" direction="out"/>
|
|
||||||
<arg name="id" type="s" direction="out"/>
|
|
||||||
<arg name="deleted" type="b" direction="out"/>
|
|
||||||
<arg name="data" type="v" direction="out"/>
|
|
||||||
<arg name="permissions" type="a{sas}" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.impl.portal.Request">
|
|
||||||
<method name="Close"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,33 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.login1.Manager">
|
|
||||||
<method name="Suspend">
|
|
||||||
<arg type="b" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="CanSuspend">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="Inhibit">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="h" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetSession">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="o" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="ListSessions">
|
|
||||||
<arg name="sessions" type="a(susso)" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="CanRebootToBootLoaderMenu">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="SetRebootToBootLoaderMenu">
|
|
||||||
<arg type="t" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="PrepareForSleep">
|
|
||||||
<arg type="b" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,15 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.login1.Session">
|
|
||||||
<signal name="Lock"/>
|
|
||||||
<signal name="Unlock"/>
|
|
||||||
<property name="Active" type="b" access="read"/>
|
|
||||||
<property name="Class" type="s" access="read"/>
|
|
||||||
<property name="Id" type="s" access="read"/>
|
|
||||||
<property name="Remote" type="b" access="read"/>
|
|
||||||
<property name="Type" type="s" access="read"/>
|
|
||||||
<property name="State" type="s" access="read"/>
|
|
||||||
<method name="SetLockedHint">
|
|
||||||
<arg type="b" direction="in"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,6 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.login1.User">
|
|
||||||
<property name="Display" type="(so)" access="read"/>
|
|
||||||
<property name="Sessions" type="a(so)" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.realmd.Provider">
|
|
||||||
<property name="Name" type="s" access="read"/>
|
|
||||||
<property name="Version" type="s" access="read"/>
|
|
||||||
<property name="Realms" type="ao" access="read"/>
|
|
||||||
<method name="Discover">
|
|
||||||
<arg name="string" type="s" direction="in"/>
|
|
||||||
<arg name="options" type="a{sv}" direction="in"/>
|
|
||||||
<arg name="relevance" type="i" direction="out"/>
|
|
||||||
<arg name="realm" type="ao" direction="out"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,20 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.realmd.Realm">
|
|
||||||
<property name="Name" type="s" access="read"/>
|
|
||||||
<property name="Configured" type="s" access="read"/>
|
|
||||||
<property name="Details" type="a(ss)" access="read"/>
|
|
||||||
<property name="LoginFormats" type="as" access="read"/>
|
|
||||||
<property name="LoginPolicy" type="s" access="read"/>
|
|
||||||
<property name="PermittedLogins" type="as" access="read"/>
|
|
||||||
<property name="SupportedInterfaces" type="as" access="read"/>
|
|
||||||
<method name="ChangeLoginPolicy">
|
|
||||||
<arg name="login_policy" type="s" direction="in"/>
|
|
||||||
<arg name="permitted_add" type="as" direction="in"/>
|
|
||||||
<arg name="permitted_remove" type="as" direction="in"/>
|
|
||||||
<arg name="options" type="a{sv}" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Deconfigure">
|
|
||||||
<arg name="options" type="a{sv}" direction="in"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,15 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.freedesktop.realmd.Service">
|
|
||||||
<method name="Cancel">
|
|
||||||
<arg name="operation" type="s" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Release"/>
|
|
||||||
<method name="SetLocale">
|
|
||||||
<arg name="locale" type="s" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="Diagnostics">
|
|
||||||
<arg name="data" type="s"/>
|
|
||||||
<arg name="operation" type="s"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,191 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
||||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Mutter.ScreenCast:
|
|
||||||
@short_description: Screen cast interface
|
|
||||||
|
|
||||||
This API is private and not intended to be used outside of the integrated
|
|
||||||
system that uses libmutter. No compatibility between versions are
|
|
||||||
promised.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Mutter.ScreenCast">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CreateSession:
|
|
||||||
@properties: Properties
|
|
||||||
@session_path: Path to the new session object
|
|
||||||
|
|
||||||
* "remote-desktop-session-id" (s): The ID of a remote desktop session.
|
|
||||||
Remote desktop driven screen casts
|
|
||||||
are started and stopped by the remote
|
|
||||||
desktop session.
|
|
||||||
* "disable-animations" (b): Set to "true" if the screen cast application
|
|
||||||
would prefer animations to be globally
|
|
||||||
disabled, while the session is running. Default
|
|
||||||
is "false". Available since version 3.
|
|
||||||
-->
|
|
||||||
<method name="CreateSession">
|
|
||||||
<arg name="properties" type="a{sv}" direction="in" />
|
|
||||||
<arg name="session_path" type="o" direction="out" />
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Version:
|
|
||||||
@short_description: API version
|
|
||||||
-->
|
|
||||||
<property name="Version" type="i" access="read" />
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Mutter.ScreenCast.Session:
|
|
||||||
@short_description: Screen cast session
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Mutter.ScreenCast.Session">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Start:
|
|
||||||
|
|
||||||
Start the screen cast session
|
|
||||||
-->
|
|
||||||
<method name="Start" />
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Stop:
|
|
||||||
|
|
||||||
Stop the screen cast session
|
|
||||||
-->
|
|
||||||
<method name="Stop" />
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Closed:
|
|
||||||
|
|
||||||
The session has closed.
|
|
||||||
-->
|
|
||||||
<signal name="Closed" />
|
|
||||||
|
|
||||||
<!--
|
|
||||||
RecordMonitor:
|
|
||||||
@connector: Connector of the monitor to record
|
|
||||||
@properties: Properties
|
|
||||||
@stream_path: Path to the new stream object
|
|
||||||
|
|
||||||
Record a single monitor.
|
|
||||||
|
|
||||||
Available @properties include:
|
|
||||||
|
|
||||||
* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see below)
|
|
||||||
Available since API version 2.
|
|
||||||
* "is-recording" (b): Whether this is a screen recording. May be
|
|
||||||
be used for choosing panel icon.
|
|
||||||
Default: false. Available since API version 4.
|
|
||||||
|
|
||||||
Available cursor mode values:
|
|
||||||
|
|
||||||
0: hidden - cursor is not included in the stream
|
|
||||||
1: embedded - cursor is included in the framebuffer
|
|
||||||
2: metadata - cursor is included as metadata in the PipeWire stream
|
|
||||||
-->
|
|
||||||
<method name="RecordMonitor">
|
|
||||||
<arg name="connector" type="s" direction="in" />
|
|
||||||
<arg name="properties" type="a{sv}" direction="in" />
|
|
||||||
<arg name="stream_path" type="o" direction="out" />
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
RecordWindow:
|
|
||||||
@properties: Properties used determining what window to select
|
|
||||||
@stream_path: Path to the new stream object
|
|
||||||
|
|
||||||
Supported since API version 2.
|
|
||||||
|
|
||||||
Record a single window. The cursor will not be included.
|
|
||||||
|
|
||||||
Available @properties include:
|
|
||||||
|
|
||||||
* "window-id" (t): Id of the window to record.
|
|
||||||
* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see RecordMonitor).
|
|
||||||
* "is-recording" (b): Whether this is a screen recording. May be
|
|
||||||
be used for choosing panel icon.
|
|
||||||
Default: false. Available since API version 4.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<method name="RecordWindow">
|
|
||||||
<arg name="properties" type="a{sv}" direction="in" />
|
|
||||||
<arg name="stream_path" type="o" direction="out" />
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
RecordArea:
|
|
||||||
@x: X position of the recorded area
|
|
||||||
@y: Y position of the recorded area
|
|
||||||
@width: width of the recorded area
|
|
||||||
@height: height of the recorded area
|
|
||||||
@properties: Properties
|
|
||||||
@stream_path: Path to the new stream object
|
|
||||||
|
|
||||||
Record an area of the stage. The coordinates are in stage coordinates.
|
|
||||||
The size of the stream does not necessarily match the size of the
|
|
||||||
recorded area, and will depend on DPI scale of the affected monitors.
|
|
||||||
|
|
||||||
Available @properties include:
|
|
||||||
|
|
||||||
* "cursor-mode" (u): Cursor mode. Default: 'hidden' (see below)
|
|
||||||
Available since API version 2.
|
|
||||||
* "is-recording" (b): Whether this is a screen recording. May be
|
|
||||||
be used for choosing panel icon.
|
|
||||||
Default: false. Available since API version 4.
|
|
||||||
|
|
||||||
Available cursor mode values:
|
|
||||||
|
|
||||||
0: hidden - cursor is not included in the stream
|
|
||||||
1: embedded - cursor is included in the framebuffer
|
|
||||||
2: metadata - cursor is included as metadata in the PipeWire stream
|
|
||||||
-->
|
|
||||||
<method name="RecordArea">
|
|
||||||
<arg name="x" type="i" direction="in" />
|
|
||||||
<arg name="y" type="i" direction="in" />
|
|
||||||
<arg name="width" type="i" direction="in" />
|
|
||||||
<arg name="height" type="i" direction="in" />
|
|
||||||
<arg name="properties" type="a{sv}" direction="in" />
|
|
||||||
<arg name="stream_path" type="o" direction="out" />
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Mutter.ScreenCast.Stream:
|
|
||||||
@short_description: Screen cast stream
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Mutter.ScreenCast.Stream">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
PipeWireStreamAdded:
|
|
||||||
@short_description: Pipewire stream added
|
|
||||||
|
|
||||||
A signal emitted when PipeWire stream for the screen cast stream has
|
|
||||||
been created. The @node_id corresponds to the PipeWire stream node.
|
|
||||||
-->
|
|
||||||
<signal name="PipeWireStreamAdded">
|
|
||||||
<annotation name="org.gtk.GDBus.C.Name" value="pipewire-stream-added"/>
|
|
||||||
<arg name="node_id" type="u" direction="out" />
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Parameters:
|
|
||||||
@short_description: Optional stream parameters
|
|
||||||
|
|
||||||
Available parameters include:
|
|
||||||
|
|
||||||
* "position" (ii): Position of the source of the stream in the
|
|
||||||
compositor coordinate space.
|
|
||||||
* "size" (ii): Size of the source of the stream in the compositor
|
|
||||||
coordinate space.
|
|
||||||
-->
|
|
||||||
<property name="Parameters" type="a{sv}" access="read" />
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
|
|
||||||
</node>
|
|
@ -1,18 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.ScreenSaver">
|
|
||||||
<method name="Lock"/>
|
|
||||||
<method name="GetActive">
|
|
||||||
<arg type="b" direction="out" name="active"/>
|
|
||||||
</method>
|
|
||||||
<method name="SetActive">
|
|
||||||
<arg type="b" direction="in" name="value"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetActiveTime">
|
|
||||||
<arg type="u" direction="out" name="value"/>
|
|
||||||
</method>
|
|
||||||
<signal name="ActiveChanged">
|
|
||||||
<arg name="new_value" type="b"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="WakeUpScreen"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,16 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SessionManager.EndSessionDialog">
|
|
||||||
<method name="Open">
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
<arg type="ao" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Close"/>
|
|
||||||
<signal name="ConfirmedLogout"/>
|
|
||||||
<signal name="ConfirmedReboot"/>
|
|
||||||
<signal name="ConfirmedShutdown"/>
|
|
||||||
<signal name="Canceled"/>
|
|
||||||
<signal name="Closed"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SessionManager.Inhibitor">
|
|
||||||
<method name="GetAppId">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetFlags">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetReason">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,11 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SessionManager.Presence">
|
|
||||||
<method name="SetStatus">
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<property name="status" type="u" access="readwrite"/>
|
|
||||||
<signal name="StatusChanged">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,23 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SessionManager">
|
|
||||||
<method name="Logout">
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Shutdown"/>
|
|
||||||
<method name="Reboot"/>
|
|
||||||
<method name="CanShutdown">
|
|
||||||
<arg type="b" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="IsInhibited">
|
|
||||||
<arg type="u" direction="in"/>
|
|
||||||
<arg type="b" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<property name="SessionIsActive" type="b" access="read"/>
|
|
||||||
<signal name="InhibitorAdded">
|
|
||||||
<arg type="o" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="InhibitorRemoved">
|
|
||||||
<arg type="o" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,6 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SettingsDaemon.Color">
|
|
||||||
<property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
|
|
||||||
<property name="NightLightActive" type="b" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,5 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SettingsDaemon.Power.Screen">
|
|
||||||
<property name="Brightness" type="i" access="readwrite"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,10 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SettingsDaemon.Rfkill">
|
|
||||||
<property name="AirplaneMode" type="b" access="readwrite"/>
|
|
||||||
<property name="HardwareAirplaneMode" type="b" access="read"/>
|
|
||||||
<property name="BluetoothAirplaneMode" type="b" access="readwrite"/>
|
|
||||||
<property name="BluetoothHasAirplaneMode" type="b" access="read"/>
|
|
||||||
<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite"/>
|
|
||||||
<property name="ShouldShowAirplaneMode" type="b" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.SettingsDaemon.Wacom">
|
|
||||||
<method name="SetGroupModeLED">
|
|
||||||
<arg name="device_path" direction="in" type="s"/>
|
|
||||||
<arg name="group" direction="in" type="u"/>
|
|
||||||
<arg name="mode" direction="in" type="u"/>
|
|
||||||
</method>
|
|
||||||
<method name="SetOLEDLabels">
|
|
||||||
<arg name="device_path" direction="in" type="s"/>
|
|
||||||
<arg name="labels" direction="in" type="as"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,12 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.Shell.AudioDeviceSelection">
|
|
||||||
<method name="Open">
|
|
||||||
<arg name="devices" direction="in" type="as"/>
|
|
||||||
</method>
|
|
||||||
<method name="Close">
|
|
||||||
</method>
|
|
||||||
<signal name="DeviceSelected">
|
|
||||||
<arg name="device" type="s"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,19 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.Shell.CalendarServer">
|
|
||||||
<method name="SetTimeRange">
|
|
||||||
<arg type="x" name="since" direction="in"/>
|
|
||||||
<arg type="x" name="until" direction="in"/>
|
|
||||||
<arg type="b" name="force_reload" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="EventsAddedOrUpdated">
|
|
||||||
<arg type="a(ssbxxa{sv})" name="events" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="EventsRemoved">
|
|
||||||
<arg type="as" name="ids" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
<signal name="ClientDisappeared">
|
|
||||||
<arg type="s" name="source_uid" direction="out"/>
|
|
||||||
</signal>
|
|
||||||
<property name="HasCalendars" type="b" access="read" />
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,15 +0,0 @@
|
|||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.ClocksIntegration:
|
|
||||||
@short_description: Clocks integration interface
|
|
||||||
|
|
||||||
The interface used for exporting location settings to GNOME Shell's
|
|
||||||
world clocks integration.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Shell.ClocksIntegration">
|
|
||||||
|
|
||||||
<property name="Locations" type="av" access="read"/>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,267 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
||||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.Extensions:
|
|
||||||
@short_description: Extensions interface
|
|
||||||
|
|
||||||
The interface used to query and manage extensions.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Shell.Extensions">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ListExtensions:
|
|
||||||
@extensions: A dictionary of extension infos
|
|
||||||
|
|
||||||
Get a list of installed extensions. The returned @extensions
|
|
||||||
dictionary maps extension UUIDs to info vardicts. See
|
|
||||||
GetExtensionInfo() for documentation on possible keys.
|
|
||||||
-->
|
|
||||||
<method name="ListExtensions">
|
|
||||||
<arg type="a{sa{sv}}" direction="out" name="extensions"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
GetExtensionInfo:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@info: The returned extension info
|
|
||||||
|
|
||||||
The information returned in the @info vardict depends on the
|
|
||||||
metadata the extension provides, however it is guaranteed to
|
|
||||||
contain the following keys:
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>uuid s</term>
|
|
||||||
<listitem><para>The UUID of the extension</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>name s</term>
|
|
||||||
<listitem><para>The name of the extension</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>description s</term>
|
|
||||||
<listitem><para>
|
|
||||||
A short summary that describes what the extension does
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>shell-version as</term>
|
|
||||||
<listitem><para>An array of support shell versions</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>type d</term>
|
|
||||||
<listitem><para>
|
|
||||||
The type of extension:
|
|
||||||
<simplelist>
|
|
||||||
<member>1: SYSTEM</member>
|
|
||||||
<member>2: PER_USER</member>
|
|
||||||
</simplelist>
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>state d</term>
|
|
||||||
<listitem><para>
|
|
||||||
The state the extension is in:
|
|
||||||
<simplelist>
|
|
||||||
<member>1: ENABLED</member>
|
|
||||||
<member>2: DISABLED</member>
|
|
||||||
<member>3: ERROR</member>
|
|
||||||
<member>4: OUT_OF_DATE</member>
|
|
||||||
<member>5: DOWNLOADING</member>
|
|
||||||
<member>6: INITIALIZED</member>
|
|
||||||
<member>99: UNINSTALLED</member>
|
|
||||||
</simplelist>
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>path s</term>
|
|
||||||
<listitem><para>The extension directory</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>error s</term>
|
|
||||||
<listitem><para>The most recent error caught in init(), enable() or disable()</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>hasPrefs b</term>
|
|
||||||
<listitem><para>Whether the extension includes preference UI</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
|
|
||||||
By convention, many extensions will also include the following keys:
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>version d</term>
|
|
||||||
<listitem><para>The extension version</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>url s</term>
|
|
||||||
<listitem><para>The URL to the extension homepage or repository</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>settings-schema s</term>
|
|
||||||
<listitem><para>The ID of a bundled GSettings schema</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term>gettext-domain s</term>
|
|
||||||
<listitem><para>The domain used for translations</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
-->
|
|
||||||
<method name="GetExtensionInfo">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="a{sv}" direction="out" name="info"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
GetExtensionErrors:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@errors: The returned errors
|
|
||||||
|
|
||||||
Get the list of errors that caused the extension
|
|
||||||
to be in ERROR state.
|
|
||||||
-->
|
|
||||||
<method name="GetExtensionErrors">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="as" direction="out" name="errors"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
InstallRemoteExtension:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@result: The result of the operation
|
|
||||||
|
|
||||||
Download and install an extension.
|
|
||||||
-->
|
|
||||||
<method name="InstallRemoteExtension">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="s" direction="out" name="result"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
UninstallExtension:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@success: Whether the operation was successful
|
|
||||||
|
|
||||||
Uninstall an extension.
|
|
||||||
-->
|
|
||||||
<method name="UninstallExtension">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ReloadExtension:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
|
|
||||||
Reload an extension.
|
|
||||||
-->
|
|
||||||
<method name="ReloadExtension">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
EnableExtension:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@success: Whether the operation was successful
|
|
||||||
|
|
||||||
Enable an extension.
|
|
||||||
-->
|
|
||||||
<method name="EnableExtension">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
DisableExtension:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@success: Whether the operation was successful
|
|
||||||
|
|
||||||
Disable an extension.
|
|
||||||
-->
|
|
||||||
<method name="DisableExtension">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
LaunchExtensionPrefs:
|
|
||||||
Deprecated for OpenExtensionPrefs
|
|
||||||
-->
|
|
||||||
<method name="LaunchExtensionPrefs">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
OpenExtensionPrefs:
|
|
||||||
@uuid: The UUID of the extension
|
|
||||||
@parent_window: Identifier for the application window
|
|
||||||
@options: Vardict with further options
|
|
||||||
|
|
||||||
Opens the prefs dialog of extension @uuid.
|
|
||||||
|
|
||||||
The following @options are recognized:
|
|
||||||
|
|
||||||
<variablelist>
|
|
||||||
<varlistentry>
|
|
||||||
<term>modal b</term>
|
|
||||||
<listitem>
|
|
||||||
<para>Whether the prefs window should be modal, default: false</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
-->
|
|
||||||
<method name="OpenExtensionPrefs">
|
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
|
||||||
<arg type="s" direction="in" name="parent_window"/>
|
|
||||||
<arg type="a{sv}" direction="in" name="options"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
CheckForUpdates:
|
|
||||||
Update all extensions for which updates are available
|
|
||||||
-->
|
|
||||||
<method name="CheckForUpdates"/>
|
|
||||||
|
|
||||||
<signal name="ExtensionStateChanged">
|
|
||||||
<arg type="s" name="uuid"/>
|
|
||||||
<arg type="a{sv}" name="state"/>
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ExtensionStatusChanged:
|
|
||||||
Deprecated for ExtensionStateChanged
|
|
||||||
-->
|
|
||||||
<signal name="ExtensionStatusChanged">
|
|
||||||
<arg type="s" name="uuid"/>
|
|
||||||
<arg type="i" name="state"/>
|
|
||||||
<arg type="s" name="error"/>
|
|
||||||
</signal>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ShellVersion:
|
|
||||||
The GNOME Shell version
|
|
||||||
-->
|
|
||||||
<property name="ShellVersion" type="s" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
UserExtensionsEnabled:
|
|
||||||
Whether user extensions are enabled
|
|
||||||
-->
|
|
||||||
<property name="UserExtensionsEnabled" type="b" access="readwrite"/>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,8 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.Shell.HotplugSniffer">
|
|
||||||
<method name="SniffURI">
|
|
||||||
<arg type="s" direction="in"/>
|
|
||||||
<arg type="as" direction="out"/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,83 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
||||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.Introspect:
|
|
||||||
@short_description: Introspection interface
|
|
||||||
|
|
||||||
The interface used to introspect the state of Shell, such as running
|
|
||||||
applications, currently active application, etc.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Shell.Introspect">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
RunningApplicationsChanged:
|
|
||||||
@short_description: Notifies when the running applications changes
|
|
||||||
-->
|
|
||||||
<signal name="RunningApplicationsChanged" />
|
|
||||||
|
|
||||||
<!--
|
|
||||||
GetRunningApplications:
|
|
||||||
@short_description: Retrieves the description of all running applications
|
|
||||||
|
|
||||||
Each application is associated by an application ID. The details of
|
|
||||||
each application consists of a varlist of keys and values. Available
|
|
||||||
keys are listed below.
|
|
||||||
|
|
||||||
'active-on-seats' - (as) list of seats the application is active on
|
|
||||||
(a seat only has at most one active
|
|
||||||
application)
|
|
||||||
-->
|
|
||||||
<method name="GetRunningApplications">
|
|
||||||
<arg name="apps" direction="out" type="a{sa{sv}}" />
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
GetWindows:
|
|
||||||
@short_description: Retrieves the current list of windows and their properties
|
|
||||||
|
|
||||||
A window is exposed as:
|
|
||||||
* t ID: unique ID of the window
|
|
||||||
* a{sv} properties: high-level properties
|
|
||||||
|
|
||||||
Known properties:
|
|
||||||
|
|
||||||
- "title" (s): (readonly) title of the window
|
|
||||||
- "app-id" (s): (readonly) application ID of the window
|
|
||||||
- "wm-class" (s): (readonly) class of the window
|
|
||||||
- "client-type" (u): (readonly) 0 for Wayland, 1 for X11
|
|
||||||
- "is-hidden" (b): (readonly) if the window is currently hidden
|
|
||||||
- "has-focus" (b): (readonly) if the window currently have
|
|
||||||
keyboard focus
|
|
||||||
- "width" (u): (readonly) width of the window
|
|
||||||
- "height" (u): (readonly) height of the window
|
|
||||||
-->
|
|
||||||
<method name="GetWindows">
|
|
||||||
<arg name="windows" direction="out" type="a{ta{sv}}" />
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
AnimationsEnabled:
|
|
||||||
@short_description: Whether the shell animations are enabled
|
|
||||||
|
|
||||||
By default determined by the org.gnome.desktop.interface enable-animations
|
|
||||||
gsetting, but may be overridden, e.g. if there is an active screen cast or
|
|
||||||
remote desktop session that asked for animations to be disabled.
|
|
||||||
|
|
||||||
Since: 2
|
|
||||||
-->
|
|
||||||
<property name="AnimationsEnabled" type="b" access="read"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ScreenSize:
|
|
||||||
@short_description: The size of the screen
|
|
||||||
|
|
||||||
Since: 3
|
|
||||||
-->
|
|
||||||
<property name="ScreenSize" type="(ii)" access="read"/>
|
|
||||||
|
|
||||||
<property name="version" type="u" access="read"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,28 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
||||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.PadOSD:
|
|
||||||
@short_description: Pad OSD interface
|
|
||||||
|
|
||||||
The interface used to show button map OSD on pad devices.
|
|
||||||
-->
|
|
||||||
<interface name='org.gnome.Shell.Wacom.PadOsd'>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Show:
|
|
||||||
@device_node: device node file, usually in /dev/input/...
|
|
||||||
@edition_mode: whether toggling edition mode on when showing
|
|
||||||
|
|
||||||
Shows the pad button map OSD for the requested device, the OSD
|
|
||||||
will be shown according the current device settings (output
|
|
||||||
mapping, left handed mode, ...)
|
|
||||||
-->
|
|
||||||
<method name='Show'>
|
|
||||||
<arg name='device_node' direction='in' type='o'/>
|
|
||||||
<arg name='edition_mode' direction='in' type='b'/>
|
|
||||||
</method>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,13 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.Shell.PerfHelper">
|
|
||||||
<method name="CreateWindow">
|
|
||||||
<arg type="i" direction="in"/>
|
|
||||||
<arg type="i" direction="in"/>
|
|
||||||
<arg type="b" direction="in"/>
|
|
||||||
<arg type="b" direction="in"/>
|
|
||||||
<arg type="b" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="WaitWindows"/>
|
|
||||||
<method name="DestroyWindows"/>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,19 +0,0 @@
|
|||||||
<node>
|
|
||||||
<interface name="org.gnome.Shell.PortalHelper">
|
|
||||||
<method name="Authenticate">
|
|
||||||
<arg name="connection" type="o" direction="in"/>
|
|
||||||
<arg name="url" type="s" direction="in"/>
|
|
||||||
<arg name="timestamp" type="u" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Close">
|
|
||||||
<arg name="connection" type="o" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<method name="Refresh">
|
|
||||||
<arg name="connection" type="o" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="Done">
|
|
||||||
<arg type="o" name="connection"/>
|
|
||||||
<arg type="u" name="result"/>
|
|
||||||
</signal>
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -1,95 +0,0 @@
|
|||||||
<!DOCTYPE node PUBLIC
|
|
||||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
|
|
||||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
|
|
||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.Screencast:
|
|
||||||
@short_description: Screencast interface
|
|
||||||
|
|
||||||
The interface used to record screen contents.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Shell.Screencast">
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Screencast:
|
|
||||||
@file_template: the template for the filename to use
|
|
||||||
@options: a dictionary of optional parameters
|
|
||||||
@success: whether the screencast was started successfully
|
|
||||||
@filename_used: the file where the screencast is being saved
|
|
||||||
|
|
||||||
Records a screencast of the whole screen and saves it
|
|
||||||
(by default) as webm video under a filename derived from
|
|
||||||
@file_template. The template is either a relative or absolute
|
|
||||||
filename which may contain some escape sequences - %d and %t
|
|
||||||
will be replaced by the start date and time of the recording.
|
|
||||||
If a relative name is used, the screencast will be saved in the
|
|
||||||
$XDG_VIDEOS_DIR if it exists, or the home directory otherwise.
|
|
||||||
The actual filename of the saved video is returned in @filename_used.
|
|
||||||
The set of optional parameters in @options currently consists of:
|
|
||||||
'draw-cursor'(b): whether the cursor should be included in the
|
|
||||||
recording (true)
|
|
||||||
'framerate'(i): the number of frames per second that should be
|
|
||||||
recorded if possible (30)
|
|
||||||
'pipeline'(s): the GStreamer pipeline used to encode recordings
|
|
||||||
in gst-launch format; if not specified, the
|
|
||||||
recorder will produce vp8 (webm) video (unset)
|
|
||||||
-->
|
|
||||||
<method name="Screencast">
|
|
||||||
<arg type="s" direction="in" name="file_template"/>
|
|
||||||
<arg type="a{sv}" direction="in" name="options"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
<arg type="s" direction="out" name="filename_used"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
ScreencastArea:
|
|
||||||
@x: the X coordinate of the area to capture
|
|
||||||
@y: the Y coordinate of the area to capture
|
|
||||||
@width: the width of the area to capture
|
|
||||||
@height: the height of the area to capture
|
|
||||||
@file_template: the template for the filename to use
|
|
||||||
@options: a dictionary of optional parameters
|
|
||||||
@success: whether the screencast was started successfully
|
|
||||||
@filename_used: the file where the screencast is being saved
|
|
||||||
|
|
||||||
Records a screencast of the passed in area and saves it
|
|
||||||
(by default) as webm video under a filename derived from
|
|
||||||
@file_template. The template is either a relative or absolute
|
|
||||||
filename which may contain some escape sequences - %d and %t
|
|
||||||
will be replaced by the start date and time of the recording.
|
|
||||||
If a relative name is used, the screencast will be saved in the
|
|
||||||
$XDG_VIDEOS_DIR if it exists, or the home directory otherwise.
|
|
||||||
The actual filename of the saved video is returned in @filename_used.
|
|
||||||
The set of optional parameters in @options currently consists of:
|
|
||||||
'draw-cursor'(b): whether the cursor should be included in the
|
|
||||||
recording (true)
|
|
||||||
'framerate'(i): the number of frames per second that should be
|
|
||||||
recorded if possible (30)
|
|
||||||
'pipeline'(s): the GStreamer pipeline used to encode recordings
|
|
||||||
in gst-launch format; if not specified, the
|
|
||||||
recorder will produce vp8 (webm) video (unset)
|
|
||||||
-->
|
|
||||||
<method name="ScreencastArea">
|
|
||||||
<arg type="i" direction="in" name="x"/>
|
|
||||||
<arg type="i" direction="in" name="y"/>
|
|
||||||
<arg type="i" direction="in" name="width"/>
|
|
||||||
<arg type="i" direction="in" name="height"/>
|
|
||||||
<arg type="s" direction="in" name="file_template"/>
|
|
||||||
<arg type="a{sv}" direction="in" name="options"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
<arg type="s" direction="out" name="filename_used"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
StopScreencast:
|
|
||||||
@success: whether stopping the recording was successful
|
|
||||||
|
|
||||||
Stop the recording started by either Screencast or ScreencastArea.
|
|
||||||
-->
|
|
||||||
<method name="StopScreencast">
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
</method>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user