Compare commits
1 Commits
citadel
...
wip/rstrod
Author | SHA1 | Date | |
---|---|---|---|
|
a80e16d09e |
@ -1,8 +0,0 @@
|
|||||||
extends:
|
|
||||||
- ./lint/eslintrc-gjs.yml
|
|
||||||
- ./lint/eslintrc-shell.yml
|
|
||||||
overrides:
|
|
||||||
- files:
|
|
||||||
- js/ui/init.js
|
|
||||||
parserOptions:
|
|
||||||
sourceType: module
|
|
4
.gitignore
vendored
@ -21,8 +21,6 @@ data/org.gnome.shell.gschema.valid
|
|||||||
data/org.gnome.Shell.PortalHelper.desktop
|
data/org.gnome.Shell.PortalHelper.desktop
|
||||||
data/org.gnome.Shell.PortalHelper.service
|
data/org.gnome.Shell.PortalHelper.service
|
||||||
data/theme/.sass-cache
|
data/theme/.sass-cache
|
||||||
data/theme/gnome-shell*.css.map
|
|
||||||
data/theme/gnome-shell*.css
|
|
||||||
docs/reference/*/*.args
|
docs/reference/*/*.args
|
||||||
docs/reference/*/*.bak
|
docs/reference/*/*.bak
|
||||||
docs/reference/*/*.hierarchy
|
docs/reference/*/*.hierarchy
|
||||||
@ -60,6 +58,7 @@ src/calendar-server/evolution-calendar.desktop
|
|||||||
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
src/calendar-server/org.gnome.Shell.CalendarServer.service
|
||||||
src/gnome-shell
|
src/gnome-shell
|
||||||
src/gnome-shell-calendar-server
|
src/gnome-shell-calendar-server
|
||||||
|
src/gnome-shell-extension-prefs
|
||||||
src/gnome-shell-extension-tool
|
src/gnome-shell-extension-tool
|
||||||
src/gnome-shell-hotplug-sniffer
|
src/gnome-shell-hotplug-sniffer
|
||||||
src/gnome-shell-perf-helper
|
src/gnome-shell-perf-helper
|
||||||
@ -81,4 +80,3 @@ tests/run-test.sh
|
|||||||
*~
|
*~
|
||||||
*.patch
|
*.patch
|
||||||
*.sw?
|
*.sw?
|
||||||
.vscode
|
|
||||||
|
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"
|
|
@ -1 +0,0 @@
|
|||||||
js/ui/init.js
|
|
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
@ -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
@ -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
@ -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
@ -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
@ -0,0 +1 @@
|
|||||||
|
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
|
1
.settings/org.eclipse.wst.jsdt.ui.superType.name
Normal file
@ -0,0 +1 @@
|
|||||||
|
Window
|
194
HACKING.md
@ -29,8 +29,9 @@ what to do.
|
|||||||
bar = do_thing(b);
|
bar = do_thing(b);
|
||||||
|
|
||||||
if (var == 5) {
|
if (var == 5) {
|
||||||
for (let i = 0; i < 10; i++)
|
for (let i = 0; i < 10; i++) {
|
||||||
print(i);
|
print(i);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print(20);
|
print(20);
|
||||||
}
|
}
|
||||||
@ -79,10 +80,14 @@ e.g. `imports.ui.popupMenu`.
|
|||||||
Each import block should be sorted alphabetically. Don't import modules you
|
Each import block should be sorted alphabetically. Don't import modules you
|
||||||
don't use.
|
don't use.
|
||||||
```javascript
|
```javascript
|
||||||
const { GLib, Gio, St } = imports.gi;
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
```
|
```
|
||||||
The alphabetical ordering should be done independently of the location of the
|
The alphabetical ordering should be done independently of the location of the
|
||||||
@ -101,8 +106,9 @@ under the imports:
|
|||||||
Always use either `const` or `let` when defining a variable.
|
Always use either `const` or `let` when defining a variable.
|
||||||
```javascript
|
```javascript
|
||||||
// Iterating over an array
|
// Iterating over an array
|
||||||
for (let i = 0; i < arr.length; ++i)
|
for (let i = 0; i < arr.length; ++i) {
|
||||||
let item = arr[i];
|
let item = arr[i];
|
||||||
|
}
|
||||||
|
|
||||||
// Iterating over an object's properties
|
// Iterating over an object's properties
|
||||||
for (let prop in someobj) {
|
for (let prop in someobj) {
|
||||||
@ -115,63 +121,64 @@ See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/N
|
|||||||
|
|
||||||
## Classes
|
## Classes
|
||||||
|
|
||||||
There are many approaches to classes in JavaScript. We use standard ES6 classes
|
There are many approaches to classes in JavaScript. We use our own class framework
|
||||||
whenever possible, that is when not inheriting from GObjects.
|
(sigh), which is built in gjs. The advantage is that it supports inheriting from
|
||||||
|
GObjects, although this feature isn't used very often in the Shell itself.
|
||||||
```javascript
|
```javascript
|
||||||
var IconLabelMenuItem = class extends PopupMenu.PopupMenuBaseItem {
|
var IconLabelMenuItem = new Lang.Class({
|
||||||
constructor(icon, label) {
|
Name: 'IconLabelMenuItem',
|
||||||
super({ reactive: false });
|
Extends: PopupMenu.PopupMenuBaseItem,
|
||||||
|
|
||||||
|
_init(icon, label) {
|
||||||
|
this.parent({ reactive: false });
|
||||||
this.actor.add_child(icon);
|
this.actor.add_child(icon);
|
||||||
this.actor.add_child(label);
|
this.actor.add_child(label);
|
||||||
}
|
},
|
||||||
|
|
||||||
open() {
|
open() {
|
||||||
log("menu opened!");
|
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';
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 'Name' is required. 'Extends' is optional. If you leave it out, you will
|
||||||
|
automatically inherit from Object.
|
||||||
|
|
||||||
|
* Leave a blank line between the "class header" (Name, Extends, and other
|
||||||
|
things) and the "class body" (methods). Leave a blank line between each
|
||||||
|
method.
|
||||||
|
|
||||||
|
* No space before the colon, one space after.
|
||||||
|
|
||||||
|
* No trailing comma after the last item.
|
||||||
|
|
||||||
|
* Make sure to use a semicolon after the closing paren to the class. It's
|
||||||
|
still a giant function call, even though it may resemble a more
|
||||||
|
conventional syntax.
|
||||||
|
|
||||||
## GObject Introspection
|
## GObject Introspection
|
||||||
|
|
||||||
GObject Introspection is a powerful feature that allows us to have native
|
GObject Introspection is a powerful feature that allows us to have native
|
||||||
bindings for almost any library built around GObject. If a library requires
|
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:
|
you to inherit from a type to use it, you can do so:
|
||||||
```javascript
|
```javascript
|
||||||
var MyClutterActor = GObject.registerClass(
|
var MyClutterActor = new Lang.Class({
|
||||||
class MyClutterActor extends Clutter.Actor {
|
Name: 'MyClutterActor',
|
||||||
|
Extends: Clutter.Actor,
|
||||||
|
|
||||||
vfunc_get_preferred_width(forHeight) {
|
vfunc_get_preferred_width(actor, forHeight) {
|
||||||
return [100, 100];
|
return [100, 100];
|
||||||
}
|
},
|
||||||
|
|
||||||
vfunc_get_preferred_height(forWidth) {
|
vfunc_get_preferred_height(actor, forWidth) {
|
||||||
return [100, 100];
|
return [100, 100];
|
||||||
}
|
},
|
||||||
|
|
||||||
vfunc_paint(paintContext) {
|
vfunc_paint(actor) {
|
||||||
let framebuffer = paintContext.get_framebuffer();
|
|
||||||
let coglContext = framebuffer.get_context();
|
|
||||||
let alloc = this.get_allocation_box();
|
let alloc = this.get_allocation_box();
|
||||||
|
Cogl.set_source_color4ub(255, 0, 0, 255);
|
||||||
let pipeline = new Cogl.Pipeline(coglContext);
|
Cogl.rectangle(alloc.x1, alloc.y1,
|
||||||
pipeline.set_color4ub(255, 0, 0, 255);
|
alloc.x2, alloc.y2);
|
||||||
|
|
||||||
framebuffer.draw_rectangle(pipeline,
|
|
||||||
alloc.x1, alloc.y1,
|
|
||||||
alloc.x2, alloc.y2);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
@ -190,40 +197,30 @@ and "double quotes" for strings that the user may see. This allows us to
|
|||||||
quickly find untranslated or mistranslated strings by grepping through the
|
quickly find untranslated or mistranslated strings by grepping through the
|
||||||
sources for double quotes without a gettext call around them.
|
sources for double quotes without a gettext call around them.
|
||||||
|
|
||||||
## `actor` (deprecated) and `_delegate`
|
## `actor` and `_delegate`
|
||||||
|
|
||||||
gjs allows us to set so-called "expando properties" on introspected objects,
|
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
|
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
|
you could inherit from GTypes natively in JS, we usually have a wrapper class
|
||||||
class that has a property called `actor` (now deprecated). We call this
|
that has a property called `actor`. We call this wrapper class the "delegate".
|
||||||
wrapper class the "delegate".
|
|
||||||
|
|
||||||
We sometimes use expando properties to set a property called `_delegate` on
|
We sometimes use expando properties to set a property called `_delegate` on
|
||||||
the actor itself:
|
the actor itself:
|
||||||
```javascript
|
```javascript
|
||||||
var MyActor = GObject.registerClass(
|
var MyClass = new Lang.Class({
|
||||||
class MyActor extends Clutter.Actor {
|
Name: 'MyClass',
|
||||||
_init(params) {
|
|
||||||
super._init(params);
|
|
||||||
this._delegate = this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Or using the deprecated `actor`:
|
_init() {
|
||||||
```javascript
|
|
||||||
var MyClass = class {
|
|
||||||
constructor() {
|
|
||||||
this.actor = new St.Button({ text: "This is a button" });
|
this.actor = new St.Button({ text: "This is a button" });
|
||||||
this.actor._delegate = this;
|
this.actor._delegate = this;
|
||||||
|
|
||||||
this.actor.connect('clicked', this._onClicked.bind(this));
|
this.actor.connect('clicked', this._onClicked.bind(this));
|
||||||
}
|
},
|
||||||
|
|
||||||
_onClicked(actor) {
|
_onClicked(actor) {
|
||||||
actor.set_label("You clicked the button!");
|
actor.set_label("You clicked the button!");
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
The 'delegate' property is important for anything which trying to get the
|
The 'delegate' property is important for anything which trying to get the
|
||||||
@ -231,7 +228,6 @@ delegate object from an associated actor. For instance, the drag and drop
|
|||||||
system calls the `handleDragOver` function on the delegate of a "drop target"
|
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`
|
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.
|
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
|
## Functional style
|
||||||
|
|
||||||
@ -250,25 +246,28 @@ variable that can be captured in closures.
|
|||||||
All closures should be wrapped with Function.prototype.bind or use arrow
|
All closures should be wrapped with Function.prototype.bind or use arrow
|
||||||
notation.
|
notation.
|
||||||
```javascript
|
```javascript
|
||||||
let closure1 = () => this._fnorbate();
|
const Lang = imports.lang;
|
||||||
|
|
||||||
|
let closure1 = () => { this._fnorbate(); };
|
||||||
let closure2 = this._fnorbate.bind(this);
|
let closure2 = this._fnorbate.bind(this);
|
||||||
```
|
```
|
||||||
|
|
||||||
A more realistic example would be connecting to a signal on a method of a
|
A more realistic example would be connecting to a signal on a method of a
|
||||||
prototype:
|
prototype:
|
||||||
```javascript
|
```javascript
|
||||||
|
const Lang = imports.lang;
|
||||||
const FnorbLib = imports.fborbLib;
|
const FnorbLib = imports.fborbLib;
|
||||||
|
|
||||||
var MyClass = class {
|
var MyClass = new Lang.Class({
|
||||||
_init() {
|
_init() {
|
||||||
let fnorb = new FnorbLib.Fnorb();
|
let fnorb = new FnorbLib.Fnorb();
|
||||||
fnorb.connect('frobate', this._onFnorbFrobate.bind(this));
|
fnorb.connect('frobate', this._onFnorbFrobate.bind(this));
|
||||||
}
|
},
|
||||||
|
|
||||||
_onFnorbFrobate(fnorb) {
|
_onFnorbFrobate(fnorb) {
|
||||||
this._updateFnorb();
|
this._updateFnorb();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## Object literal syntax
|
## Object literal syntax
|
||||||
@ -293,49 +292,36 @@ 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
|
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
|
||||||
}`, `foo['bar']`.
|
}`, `foo['bar']`.
|
||||||
|
|
||||||
## Animations
|
## Getters, setters, and Tweener
|
||||||
|
|
||||||
Most objects that are animated are actors, and most properties used in animations
|
|
||||||
are animatable, which means they can use implicit animations:
|
|
||||||
|
|
||||||
|
Getters and setters should be used when you are dealing with an API that is
|
||||||
|
designed around setting properties, like Tweener. If you want to animate an
|
||||||
|
arbitrary property, create a getter and setter, and use Tweener to animate the
|
||||||
|
property.
|
||||||
```javascript
|
```javascript
|
||||||
moveActor(actor, x, y) {
|
var ANIMATION_TIME = 2000;
|
||||||
actor.ease({
|
|
||||||
x,
|
var MyClass = new Lang.Class({
|
||||||
y,
|
Name: 'MyClass',
|
||||||
duration: 500, // ms
|
|
||||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD
|
_init() {
|
||||||
});
|
this.actor = new St.BoxLayout();
|
||||||
}
|
this._position = 0;
|
||||||
```
|
},
|
||||||
|
|
||||||
The above is a convenience wrapper around the actual Clutter API, and should generally
|
get position() {
|
||||||
be preferred over the more verbose:
|
return this._position;
|
||||||
|
},
|
||||||
```javascript
|
|
||||||
moveActor(actor, x, y) {
|
set position(value) {
|
||||||
actor.save_easing_state();
|
this._position = value;
|
||||||
|
this.actor.set_position(value, value);
|
||||||
actor.set_easing_duration(500);
|
}
|
||||||
actor.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD);
|
});
|
||||||
actor.set({
|
|
||||||
x,
|
let myThing = new MyClass();
|
||||||
y
|
Tweener.addTween(myThing,
|
||||||
});
|
{ position: 100,
|
||||||
|
time: ANIMATION_TIME,
|
||||||
actor.restore_easing_state();
|
transition: 'easeOutQuad' });
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
|
||||||
});
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
25
README.md
@ -1,5 +1,5 @@
|
|||||||
# GNOME Shell
|
# GNOME Shell
|
||||||
GNOME Shell provides core user interface functions for the GNOME desktop,
|
GNOME Shell provides core user interface functions for the GNOME 3 desktop,
|
||||||
like switching to windows and launching applications. GNOME Shell takes
|
like switching to windows and launching applications. GNOME Shell takes
|
||||||
advantage of the capabilities of modern graphics hardware and introduces
|
advantage of the capabilities of modern graphics hardware and introduces
|
||||||
innovative user interface concepts to provide a visually attractive and
|
innovative user interface concepts to provide a visually attractive and
|
||||||
@ -10,28 +10,6 @@ to build GNOME Shell from source and how to get involved with the project,
|
|||||||
see the [project wiki][project-wiki].
|
see the [project wiki][project-wiki].
|
||||||
|
|
||||||
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
|
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
|
## License
|
||||||
GNOME Shell is distributed under the terms of the GNU General Public License,
|
GNOME Shell is distributed under the terms of the GNU General Public License,
|
||||||
@ -39,5 +17,4 @@ version 2 or later. See the [COPYING][license] file for details.
|
|||||||
|
|
||||||
[project-wiki]: https://wiki.gnome.org/Projects/GnomeShell
|
[project-wiki]: https://wiki.gnome.org/Projects/GnomeShell
|
||||||
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues
|
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues
|
||||||
[schedule]: https://wiki.gnome.org/Schedule
|
|
||||||
[license]: COPYING
|
[license]: COPYING
|
||||||
|
17
browser-plugin/README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
The GNOME Shell Browser Plugin provides integration with gnome-shell and the
|
||||||
|
corresponding extensions repository, codenamed "SweetTooth". The plugin allows
|
||||||
|
the extensions repository to provide good integration, letting the website
|
||||||
|
know which extensions are enabled and disabled, and allowing the website to
|
||||||
|
enable, disable and install them.
|
||||||
|
|
||||||
|
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
|
||||||
|
|
||||||
|
## License
|
||||||
|
The GNOME Shell Browser Plugin, like GNOME Shell itself is distributed under
|
||||||
|
the GNU General Public License, version 2 or later. The plugin also contains
|
||||||
|
header files from the "NPAPI SDK" project, tri-licensed under MPL 1.1, GPL 2.0
|
||||||
|
and LGPL 2.1. These headers are third-party sources and can be retrieved from:
|
||||||
|
|
||||||
|
http://code.google.com/p/npapi-sdk/
|
||||||
|
|
||||||
|
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues
|
1058
browser-plugin/browser-plugin.c
Normal file
19
browser-plugin/meson.build
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
plugin_sources = [
|
||||||
|
'browser-plugin.c',
|
||||||
|
'npapi/npapi.h',
|
||||||
|
'npapi/npfunctions.h',
|
||||||
|
'npapi/npruntime.h',
|
||||||
|
'npapi/nptypes.h'
|
||||||
|
]
|
||||||
|
|
||||||
|
shared_module('gnome-shell-browser-plugin', plugin_sources,
|
||||||
|
dependencies: [gio_dep, json_glib_dep],
|
||||||
|
c_args: ['-DG_LOG_DOMAIN="GnomeShellBrowserPlugin"'],
|
||||||
|
# Browsers can unload and reload the module while browsing, which is not
|
||||||
|
# supported by GObject.
|
||||||
|
# We pass -Wl,-z,nodelete to the linker to ensure the module is never
|
||||||
|
# unloaded. See https://bugzilla.gnome.org/show_bug.cgi?id=737932.
|
||||||
|
link_args: ['-Wl,-z,nodelete'],
|
||||||
|
install: true,
|
||||||
|
install_dir: plugindir
|
||||||
|
)
|
893
browser-plugin/npapi/npapi.h
Normal file
@ -0,0 +1,893 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is mozilla.org code.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Netscape Communications Corporation.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
#ifndef npapi_h_
|
||||||
|
#define npapi_h_
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
#pragma pack(1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "nptypes.h"
|
||||||
|
|
||||||
|
#if defined(__OS2__) || defined(OS2)
|
||||||
|
#ifndef XP_OS2
|
||||||
|
#define XP_OS2 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(__SYMBIAN32__)
|
||||||
|
#include <windef.h>
|
||||||
|
#ifndef XP_WIN
|
||||||
|
#define XP_WIN 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__SYMBIAN32__)
|
||||||
|
#ifndef XP_SYMBIAN
|
||||||
|
#define XP_SYMBIAN 1
|
||||||
|
#undef XP_WIN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__APPLE_CC__) && !defined(XP_UNIX)
|
||||||
|
#ifndef XP_MACOSX
|
||||||
|
#define XP_MACOSX 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX) && defined(__LP64__)
|
||||||
|
#define NP_NO_QUICKDRAW
|
||||||
|
#define NP_NO_CARBON
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
#include <ApplicationServices/ApplicationServices.h>
|
||||||
|
#include <OpenGL/OpenGL.h>
|
||||||
|
#ifndef NP_NO_CARBON
|
||||||
|
#include <Carbon/Carbon.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_UNIX)
|
||||||
|
#include <stdio.h>
|
||||||
|
#if defined(MOZ_X11)
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_SYMBIAN)
|
||||||
|
#include <QEvent>
|
||||||
|
#include <QRegion>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* Plugin Version Constants */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define NP_VERSION_MAJOR 0
|
||||||
|
#define NP_VERSION_MINOR 27
|
||||||
|
|
||||||
|
|
||||||
|
/* The OS/2 version of Netscape uses RC_DATA to define the
|
||||||
|
mime types, file extensions, etc that are required.
|
||||||
|
Use a vertical bar to separate types, end types with \0.
|
||||||
|
FileVersion and ProductVersion are 32bit ints, all other
|
||||||
|
entries are strings that MUST be terminated with a \0.
|
||||||
|
|
||||||
|
AN EXAMPLE:
|
||||||
|
|
||||||
|
RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
|
||||||
|
|
||||||
|
RCDATA NP_INFO_MIMEType { "video/x-video|",
|
||||||
|
"video/x-flick\0" }
|
||||||
|
RCDATA NP_INFO_FileExtents { "avi|",
|
||||||
|
"flc\0" }
|
||||||
|
RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
|
||||||
|
"MMOS2 Flc/Fli player(*.flc)\0" }
|
||||||
|
|
||||||
|
RCDATA NP_INFO_FileVersion { 1,0,0,1 }
|
||||||
|
RCDATA NP_INFO_CompanyName { "Netscape Communications\0" }
|
||||||
|
RCDATA NP_INFO_FileDescription { "NPAVI32 Extension DLL\0"
|
||||||
|
RCDATA NP_INFO_InternalName { "NPAVI32\0" )
|
||||||
|
RCDATA NP_INFO_LegalCopyright { "Copyright Netscape Communications \251 1996\0"
|
||||||
|
RCDATA NP_INFO_OriginalFilename { "NVAPI32.DLL" }
|
||||||
|
RCDATA NP_INFO_ProductName { "NPAVI32 Dynamic Link Library\0" }
|
||||||
|
*/
|
||||||
|
/* RC_DATA types for version info - required */
|
||||||
|
#define NP_INFO_ProductVersion 1
|
||||||
|
#define NP_INFO_MIMEType 2
|
||||||
|
#define NP_INFO_FileOpenName 3
|
||||||
|
#define NP_INFO_FileExtents 4
|
||||||
|
/* RC_DATA types for version info - used if found */
|
||||||
|
#define NP_INFO_FileDescription 5
|
||||||
|
#define NP_INFO_ProductName 6
|
||||||
|
/* RC_DATA types for version info - optional */
|
||||||
|
#define NP_INFO_CompanyName 7
|
||||||
|
#define NP_INFO_FileVersion 8
|
||||||
|
#define NP_INFO_InternalName 9
|
||||||
|
#define NP_INFO_LegalCopyright 10
|
||||||
|
#define NP_INFO_OriginalFilename 11
|
||||||
|
|
||||||
|
#ifndef RC_INVOKED
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* Definition of Basic Types */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
typedef unsigned char NPBool;
|
||||||
|
typedef int16_t NPError;
|
||||||
|
typedef int16_t NPReason;
|
||||||
|
typedef char* NPMIMEType;
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* Structures and definitions */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if !defined(__LP64__)
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
#pragma options align=mac68k
|
||||||
|
#endif
|
||||||
|
#endif /* __LP64__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NPP is a plug-in's opaque instance handle
|
||||||
|
*/
|
||||||
|
typedef struct _NPP
|
||||||
|
{
|
||||||
|
void* pdata; /* plug-in private data */
|
||||||
|
void* ndata; /* netscape private data */
|
||||||
|
} NPP_t;
|
||||||
|
|
||||||
|
typedef NPP_t* NPP;
|
||||||
|
|
||||||
|
typedef struct _NPStream
|
||||||
|
{
|
||||||
|
void* pdata; /* plug-in private data */
|
||||||
|
void* ndata; /* netscape private data */
|
||||||
|
const char* url;
|
||||||
|
uint32_t end;
|
||||||
|
uint32_t lastmodified;
|
||||||
|
void* notifyData;
|
||||||
|
const char* headers; /* Response headers from host.
|
||||||
|
* Exists only for >= NPVERS_HAS_RESPONSE_HEADERS.
|
||||||
|
* Used for HTTP only; NULL for non-HTTP.
|
||||||
|
* Available from NPP_NewStream onwards.
|
||||||
|
* Plugin should copy this data before storing it.
|
||||||
|
* Includes HTTP status line and all headers,
|
||||||
|
* preferably verbatim as received from server,
|
||||||
|
* headers formatted as in HTTP ("Header: Value"),
|
||||||
|
* and newlines (\n, NOT \r\n) separating lines.
|
||||||
|
* Terminated by \n\0 (NOT \n\n\0). */
|
||||||
|
} NPStream;
|
||||||
|
|
||||||
|
typedef struct _NPByteRange
|
||||||
|
{
|
||||||
|
int32_t offset; /* negative offset means from the end */
|
||||||
|
uint32_t length;
|
||||||
|
struct _NPByteRange* next;
|
||||||
|
} NPByteRange;
|
||||||
|
|
||||||
|
typedef struct _NPSavedData
|
||||||
|
{
|
||||||
|
int32_t len;
|
||||||
|
void* buf;
|
||||||
|
} NPSavedData;
|
||||||
|
|
||||||
|
typedef struct _NPRect
|
||||||
|
{
|
||||||
|
uint16_t top;
|
||||||
|
uint16_t left;
|
||||||
|
uint16_t bottom;
|
||||||
|
uint16_t right;
|
||||||
|
} NPRect;
|
||||||
|
|
||||||
|
typedef struct _NPSize
|
||||||
|
{
|
||||||
|
int32_t width;
|
||||||
|
int32_t height;
|
||||||
|
} NPSize;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NPFocusNext = 0,
|
||||||
|
NPFocusPrevious = 1
|
||||||
|
} NPFocusDirection;
|
||||||
|
|
||||||
|
/* Return values for NPP_HandleEvent */
|
||||||
|
#define kNPEventNotHandled 0
|
||||||
|
#define kNPEventHandled 1
|
||||||
|
/* Exact meaning must be spec'd in event model. */
|
||||||
|
#define kNPEventStartIME 2
|
||||||
|
|
||||||
|
#if defined(XP_UNIX)
|
||||||
|
/*
|
||||||
|
* Unix specific structures and definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callback Structures.
|
||||||
|
*
|
||||||
|
* These are used to pass additional platform specific information.
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
NP_SETWINDOW = 1,
|
||||||
|
NP_PRINT
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int32_t type;
|
||||||
|
} NPAnyCallbackStruct;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int32_t type;
|
||||||
|
#if defined(MOZ_X11)
|
||||||
|
Display* display;
|
||||||
|
Visual* visual;
|
||||||
|
Colormap colormap;
|
||||||
|
unsigned int depth;
|
||||||
|
#endif
|
||||||
|
} NPSetWindowCallbackStruct;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int32_t type;
|
||||||
|
FILE* fp;
|
||||||
|
} NPPrintCallbackStruct;
|
||||||
|
|
||||||
|
#endif /* XP_UNIX */
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
typedef enum {
|
||||||
|
#ifndef NP_NO_QUICKDRAW
|
||||||
|
NPDrawingModelQuickDraw = 0,
|
||||||
|
#endif
|
||||||
|
NPDrawingModelCoreGraphics = 1,
|
||||||
|
NPDrawingModelOpenGL = 2,
|
||||||
|
NPDrawingModelCoreAnimation = 3,
|
||||||
|
NPDrawingModelInvalidatingCoreAnimation = 4
|
||||||
|
} NPDrawingModel;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
#ifndef NP_NO_CARBON
|
||||||
|
NPEventModelCarbon = 0,
|
||||||
|
#endif
|
||||||
|
NPEventModelCocoa = 1
|
||||||
|
} NPEventModel;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following masks are applied on certain platforms to NPNV and
|
||||||
|
* NPPV selectors that pass around pointers to COM interfaces. Newer
|
||||||
|
* compilers on some platforms may generate vtables that are not
|
||||||
|
* compatible with older compilers. To prevent older plugins from
|
||||||
|
* not understanding a new browser's ABI, these masks change the
|
||||||
|
* values of those selectors on those platforms. To remain backwards
|
||||||
|
* compatible with different versions of the browser, plugins can
|
||||||
|
* use these masks to dynamically determine and use the correct C++
|
||||||
|
* ABI that the browser is expecting. This does not apply to Windows
|
||||||
|
* as Microsoft's COM ABI will likely not change.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NP_ABI_GCC3_MASK 0x10000000
|
||||||
|
/*
|
||||||
|
* gcc 3.x generated vtables on UNIX and OSX are incompatible with
|
||||||
|
* previous compilers.
|
||||||
|
*/
|
||||||
|
#if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
|
||||||
|
#define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
|
||||||
|
#else
|
||||||
|
#define _NP_ABI_MIXIN_FOR_GCC3 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
#define NP_ABI_MACHO_MASK 0x01000000
|
||||||
|
#define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK
|
||||||
|
#else
|
||||||
|
#define _NP_ABI_MIXIN_FOR_MACHO 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of variable names for which NPP_GetValue shall be implemented
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
NPPVpluginNameString = 1,
|
||||||
|
NPPVpluginDescriptionString,
|
||||||
|
NPPVpluginWindowBool,
|
||||||
|
NPPVpluginTransparentBool,
|
||||||
|
NPPVjavaClass,
|
||||||
|
NPPVpluginWindowSize,
|
||||||
|
NPPVpluginTimerInterval,
|
||||||
|
NPPVpluginScriptableInstance = (10 | NP_ABI_MASK),
|
||||||
|
NPPVpluginScriptableIID = 11,
|
||||||
|
NPPVjavascriptPushCallerBool = 12,
|
||||||
|
NPPVpluginKeepLibraryInMemory = 13,
|
||||||
|
NPPVpluginNeedsXEmbed = 14,
|
||||||
|
|
||||||
|
/* Get the NPObject for scripting the plugin. Introduced in NPAPI minor version 14.
|
||||||
|
*/
|
||||||
|
NPPVpluginScriptableNPObject = 15,
|
||||||
|
|
||||||
|
/* Get the plugin value (as \0-terminated UTF-8 string data) for
|
||||||
|
* form submission if the plugin is part of a form. Use
|
||||||
|
* NPN_MemAlloc() to allocate memory for the string data. Introduced
|
||||||
|
* in NPAPI minor version 15.
|
||||||
|
*/
|
||||||
|
NPPVformValue = 16,
|
||||||
|
|
||||||
|
NPPVpluginUrlRequestsDisplayedBool = 17,
|
||||||
|
|
||||||
|
/* Checks if the plugin is interested in receiving the http body of
|
||||||
|
* all http requests (including failed ones, http status != 200).
|
||||||
|
*/
|
||||||
|
NPPVpluginWantsAllNetworkStreams = 18,
|
||||||
|
|
||||||
|
/* Browsers can retrieve a native ATK accessibility plug ID via this variable. */
|
||||||
|
NPPVpluginNativeAccessibleAtkPlugId = 19,
|
||||||
|
|
||||||
|
/* Checks to see if the plug-in would like the browser to load the "src" attribute. */
|
||||||
|
NPPVpluginCancelSrcStream = 20,
|
||||||
|
|
||||||
|
NPPVsupportsAdvancedKeyHandling = 21,
|
||||||
|
|
||||||
|
NPPVpluginUsesDOMForCursorBool = 22
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
/* Used for negotiating drawing models */
|
||||||
|
, NPPVpluginDrawingModel = 1000
|
||||||
|
/* Used for negotiating event models */
|
||||||
|
, NPPVpluginEventModel = 1001
|
||||||
|
/* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */
|
||||||
|
, NPPVpluginCoreAnimationLayer = 1003
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
|
||||||
|
, NPPVpluginWindowlessLocalBool = 2002
|
||||||
|
#endif
|
||||||
|
} NPPVariable;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of variable names for which NPN_GetValue should be implemented.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
NPNVxDisplay = 1,
|
||||||
|
NPNVxtAppContext,
|
||||||
|
NPNVnetscapeWindow,
|
||||||
|
NPNVjavascriptEnabledBool,
|
||||||
|
NPNVasdEnabledBool,
|
||||||
|
NPNVisOfflineBool,
|
||||||
|
|
||||||
|
NPNVserviceManager = (10 | NP_ABI_MASK),
|
||||||
|
NPNVDOMElement = (11 | NP_ABI_MASK),
|
||||||
|
NPNVDOMWindow = (12 | NP_ABI_MASK),
|
||||||
|
NPNVToolkit = (13 | NP_ABI_MASK),
|
||||||
|
NPNVSupportsXEmbedBool = 14,
|
||||||
|
|
||||||
|
/* Get the NPObject wrapper for the browser window. */
|
||||||
|
NPNVWindowNPObject = 15,
|
||||||
|
|
||||||
|
/* Get the NPObject wrapper for the plugins DOM element. */
|
||||||
|
NPNVPluginElementNPObject = 16,
|
||||||
|
|
||||||
|
NPNVSupportsWindowless = 17,
|
||||||
|
|
||||||
|
NPNVprivateModeBool = 18,
|
||||||
|
|
||||||
|
NPNVsupportsAdvancedKeyHandling = 21
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
/* Used for negotiating drawing models */
|
||||||
|
, NPNVpluginDrawingModel = 1000
|
||||||
|
#ifndef NP_NO_QUICKDRAW
|
||||||
|
, NPNVsupportsQuickDrawBool = 2000
|
||||||
|
#endif
|
||||||
|
, NPNVsupportsCoreGraphicsBool = 2001
|
||||||
|
, NPNVsupportsOpenGLBool = 2002
|
||||||
|
, NPNVsupportsCoreAnimationBool = 2003
|
||||||
|
, NPNVsupportsInvalidatingCoreAnimationBool = 2004
|
||||||
|
#ifndef NP_NO_CARBON
|
||||||
|
, NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */
|
||||||
|
#endif
|
||||||
|
, NPNVsupportsCocoaBool = 3001 /* TRUE if the browser supports the Cocoa event model */
|
||||||
|
, NPNVsupportsUpdatedCocoaTextInputBool = 3002 /* TRUE if the browser supports the updated
|
||||||
|
Cocoa text input specification. */
|
||||||
|
, NPNVsupportsCompositingCoreAnimationPluginsBool = 74656 /* TRUE if the browser supports
|
||||||
|
CA model compositing */
|
||||||
|
#endif
|
||||||
|
#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
|
||||||
|
, NPNVSupportsWindowlessLocal = 2002
|
||||||
|
#endif
|
||||||
|
} NPNVariable;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NPNURLVCookie = 501,
|
||||||
|
NPNURLVProxy
|
||||||
|
} NPNURLVariable;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The type of Toolkit the widgets use
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
NPNVGtk12 = 1,
|
||||||
|
NPNVGtk2
|
||||||
|
} NPNToolkitType;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The type of a NPWindow - it specifies the type of the data structure
|
||||||
|
* returned in the window field.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
NPWindowTypeWindow = 1,
|
||||||
|
NPWindowTypeDrawable
|
||||||
|
} NPWindowType;
|
||||||
|
|
||||||
|
typedef struct _NPWindow
|
||||||
|
{
|
||||||
|
void* window; /* Platform specific window handle */
|
||||||
|
/* OS/2: x - Position of bottom left corner */
|
||||||
|
/* OS/2: y - relative to visible netscape window */
|
||||||
|
int32_t x; /* Position of top left corner relative */
|
||||||
|
int32_t y; /* to a netscape page. */
|
||||||
|
uint32_t width; /* Maximum window size */
|
||||||
|
uint32_t height;
|
||||||
|
NPRect clipRect; /* Clipping rectangle in port coordinates */
|
||||||
|
#if (defined(XP_UNIX) || defined(XP_SYMBIAN)) && !defined(XP_MACOSX)
|
||||||
|
void * ws_info; /* Platform-dependent additional data */
|
||||||
|
#endif /* XP_UNIX */
|
||||||
|
NPWindowType type; /* Is this a window or a drawable? */
|
||||||
|
} NPWindow;
|
||||||
|
|
||||||
|
typedef struct _NPImageExpose
|
||||||
|
{
|
||||||
|
char* data; /* image pointer */
|
||||||
|
int32_t stride; /* Stride of data image pointer */
|
||||||
|
int32_t depth; /* Depth of image pointer */
|
||||||
|
int32_t x; /* Expose x */
|
||||||
|
int32_t y; /* Expose y */
|
||||||
|
uint32_t width; /* Expose width */
|
||||||
|
uint32_t height; /* Expose height */
|
||||||
|
NPSize dataSize; /* Data buffer size */
|
||||||
|
float translateX; /* translate X matrix value */
|
||||||
|
float translateY; /* translate Y matrix value */
|
||||||
|
float scaleX; /* scale X matrix value */
|
||||||
|
float scaleY; /* scale Y matrix value */
|
||||||
|
} NPImageExpose;
|
||||||
|
|
||||||
|
typedef struct _NPFullPrint
|
||||||
|
{
|
||||||
|
NPBool pluginPrinted;/* Set TRUE if plugin handled fullscreen printing */
|
||||||
|
NPBool printOne; /* TRUE if plugin should print one copy to default
|
||||||
|
printer */
|
||||||
|
void* platformPrint; /* Platform-specific printing info */
|
||||||
|
} NPFullPrint;
|
||||||
|
|
||||||
|
typedef struct _NPEmbedPrint
|
||||||
|
{
|
||||||
|
NPWindow window;
|
||||||
|
void* platformPrint; /* Platform-specific printing info */
|
||||||
|
} NPEmbedPrint;
|
||||||
|
|
||||||
|
typedef struct _NPPrint
|
||||||
|
{
|
||||||
|
uint16_t mode; /* NP_FULL or NP_EMBED */
|
||||||
|
union
|
||||||
|
{
|
||||||
|
NPFullPrint fullPrint; /* if mode is NP_FULL */
|
||||||
|
NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
|
||||||
|
} print;
|
||||||
|
} NPPrint;
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
#ifndef NP_NO_CARBON
|
||||||
|
typedef EventRecord NPEvent;
|
||||||
|
#endif
|
||||||
|
#elif defined(XP_SYMBIAN)
|
||||||
|
typedef QEvent NPEvent;
|
||||||
|
#elif defined(XP_WIN)
|
||||||
|
typedef struct _NPEvent
|
||||||
|
{
|
||||||
|
uint16_t event;
|
||||||
|
uintptr_t wParam;
|
||||||
|
uintptr_t lParam;
|
||||||
|
} NPEvent;
|
||||||
|
#elif defined(XP_OS2)
|
||||||
|
typedef struct _NPEvent
|
||||||
|
{
|
||||||
|
uint32_t event;
|
||||||
|
uint32_t wParam;
|
||||||
|
uint32_t lParam;
|
||||||
|
} NPEvent;
|
||||||
|
#elif defined(XP_UNIX) && defined(MOZ_X11)
|
||||||
|
typedef XEvent NPEvent;
|
||||||
|
#else
|
||||||
|
typedef void* NPEvent;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
typedef void* NPRegion;
|
||||||
|
#ifndef NP_NO_QUICKDRAW
|
||||||
|
typedef RgnHandle NPQDRegion;
|
||||||
|
#endif
|
||||||
|
typedef CGPathRef NPCGRegion;
|
||||||
|
#elif defined(XP_WIN)
|
||||||
|
typedef HRGN NPRegion;
|
||||||
|
#elif defined(XP_UNIX) && defined(MOZ_X11)
|
||||||
|
typedef Region NPRegion;
|
||||||
|
#elif defined(XP_SYMBIAN)
|
||||||
|
typedef QRegion* NPRegion;
|
||||||
|
#else
|
||||||
|
typedef void *NPRegion;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _NPNSString NPNSString;
|
||||||
|
typedef struct _NPNSWindow NPNSWindow;
|
||||||
|
typedef struct _NPNSMenu NPNSMenu;
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
typedef NPNSMenu NPMenu;
|
||||||
|
#else
|
||||||
|
typedef void *NPMenu;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NPCoordinateSpacePlugin = 1,
|
||||||
|
NPCoordinateSpaceWindow,
|
||||||
|
NPCoordinateSpaceFlippedWindow,
|
||||||
|
NPCoordinateSpaceScreen,
|
||||||
|
NPCoordinateSpaceFlippedScreen
|
||||||
|
} NPCoordinateSpace;
|
||||||
|
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
|
||||||
|
#ifndef NP_NO_QUICKDRAW
|
||||||
|
typedef struct NP_Port
|
||||||
|
{
|
||||||
|
CGrafPtr port;
|
||||||
|
int32_t portx; /* position inside the topmost window */
|
||||||
|
int32_t porty;
|
||||||
|
} NP_Port;
|
||||||
|
#endif /* NP_NO_QUICKDRAW */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NP_CGContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelCoreGraphics
|
||||||
|
* as its drawing model.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct NP_CGContext
|
||||||
|
{
|
||||||
|
CGContextRef context;
|
||||||
|
void *window; /* A WindowRef under the Carbon event model. */
|
||||||
|
} NP_CGContext;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NP_GLContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelOpenGL as its
|
||||||
|
* drawing model.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct NP_GLContext
|
||||||
|
{
|
||||||
|
CGLContextObj context;
|
||||||
|
#ifdef NP_NO_CARBON
|
||||||
|
NPNSWindow *window;
|
||||||
|
#else
|
||||||
|
void *window; /* Can be either an NSWindow or a WindowRef depending on the event model */
|
||||||
|
#endif
|
||||||
|
} NP_GLContext;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NPCocoaEventDrawRect = 1,
|
||||||
|
NPCocoaEventMouseDown,
|
||||||
|
NPCocoaEventMouseUp,
|
||||||
|
NPCocoaEventMouseMoved,
|
||||||
|
NPCocoaEventMouseEntered,
|
||||||
|
NPCocoaEventMouseExited,
|
||||||
|
NPCocoaEventMouseDragged,
|
||||||
|
NPCocoaEventKeyDown,
|
||||||
|
NPCocoaEventKeyUp,
|
||||||
|
NPCocoaEventFlagsChanged,
|
||||||
|
NPCocoaEventFocusChanged,
|
||||||
|
NPCocoaEventWindowFocusChanged,
|
||||||
|
NPCocoaEventScrollWheel,
|
||||||
|
NPCocoaEventTextInput
|
||||||
|
} NPCocoaEventType;
|
||||||
|
|
||||||
|
typedef struct _NPCocoaEvent {
|
||||||
|
NPCocoaEventType type;
|
||||||
|
uint32_t version;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
uint32_t modifierFlags;
|
||||||
|
double pluginX;
|
||||||
|
double pluginY;
|
||||||
|
int32_t buttonNumber;
|
||||||
|
int32_t clickCount;
|
||||||
|
double deltaX;
|
||||||
|
double deltaY;
|
||||||
|
double deltaZ;
|
||||||
|
} mouse;
|
||||||
|
struct {
|
||||||
|
uint32_t modifierFlags;
|
||||||
|
NPNSString *characters;
|
||||||
|
NPNSString *charactersIgnoringModifiers;
|
||||||
|
NPBool isARepeat;
|
||||||
|
uint16_t keyCode;
|
||||||
|
} key;
|
||||||
|
struct {
|
||||||
|
CGContextRef context;
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
double width;
|
||||||
|
double height;
|
||||||
|
} draw;
|
||||||
|
struct {
|
||||||
|
NPBool hasFocus;
|
||||||
|
} focus;
|
||||||
|
struct {
|
||||||
|
NPNSString *text;
|
||||||
|
} text;
|
||||||
|
} data;
|
||||||
|
} NPCocoaEvent;
|
||||||
|
|
||||||
|
#ifndef NP_NO_CARBON
|
||||||
|
/* Non-standard event types that can be passed to HandleEvent */
|
||||||
|
enum NPEventType {
|
||||||
|
NPEventType_GetFocusEvent = (osEvt + 16),
|
||||||
|
NPEventType_LoseFocusEvent,
|
||||||
|
NPEventType_AdjustCursorEvent,
|
||||||
|
NPEventType_MenuCommandEvent,
|
||||||
|
NPEventType_ClippingChangedEvent,
|
||||||
|
NPEventType_ScrollingBeginsEvent = 1000,
|
||||||
|
NPEventType_ScrollingEndsEvent
|
||||||
|
};
|
||||||
|
#endif /* NP_NO_CARBON */
|
||||||
|
|
||||||
|
#endif /* XP_MACOSX */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values for mode passed to NPP_New:
|
||||||
|
*/
|
||||||
|
#define NP_EMBED 1
|
||||||
|
#define NP_FULL 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values for stream type passed to NPP_NewStream:
|
||||||
|
*/
|
||||||
|
#define NP_NORMAL 1
|
||||||
|
#define NP_SEEK 2
|
||||||
|
#define NP_ASFILE 3
|
||||||
|
#define NP_ASFILEONLY 4
|
||||||
|
|
||||||
|
#define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flags for NPP_ClearSiteData.
|
||||||
|
*/
|
||||||
|
#define NP_CLEAR_ALL 0
|
||||||
|
#define NP_CLEAR_CACHE (1 << 0)
|
||||||
|
|
||||||
|
#if !defined(__LP64__)
|
||||||
|
#if defined(XP_MACOSX)
|
||||||
|
#pragma options align=reset
|
||||||
|
#endif
|
||||||
|
#endif /* __LP64__ */
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* Error and Reason Code definitions */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values of type NPError:
|
||||||
|
*/
|
||||||
|
#define NPERR_BASE 0
|
||||||
|
#define NPERR_NO_ERROR (NPERR_BASE + 0)
|
||||||
|
#define NPERR_GENERIC_ERROR (NPERR_BASE + 1)
|
||||||
|
#define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2)
|
||||||
|
#define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3)
|
||||||
|
#define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4)
|
||||||
|
#define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5)
|
||||||
|
#define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6)
|
||||||
|
#define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7)
|
||||||
|
#define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8)
|
||||||
|
#define NPERR_INVALID_PARAM (NPERR_BASE + 9)
|
||||||
|
#define NPERR_INVALID_URL (NPERR_BASE + 10)
|
||||||
|
#define NPERR_FILE_NOT_FOUND (NPERR_BASE + 11)
|
||||||
|
#define NPERR_NO_DATA (NPERR_BASE + 12)
|
||||||
|
#define NPERR_STREAM_NOT_SEEKABLE (NPERR_BASE + 13)
|
||||||
|
#define NPERR_TIME_RANGE_NOT_SUPPORTED (NPERR_BASE + 14)
|
||||||
|
#define NPERR_MALFORMED_SITE (NPERR_BASE + 15)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values of type NPReason:
|
||||||
|
*/
|
||||||
|
#define NPRES_BASE 0
|
||||||
|
#define NPRES_DONE (NPRES_BASE + 0)
|
||||||
|
#define NPRES_NETWORK_ERR (NPRES_BASE + 1)
|
||||||
|
#define NPRES_USER_BREAK (NPRES_BASE + 2)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't use these obsolete error codes any more.
|
||||||
|
*/
|
||||||
|
#define NP_NOERR NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
|
||||||
|
#define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
|
||||||
|
#define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Version feature information
|
||||||
|
*/
|
||||||
|
#define NPVERS_HAS_STREAMOUTPUT 8
|
||||||
|
#define NPVERS_HAS_NOTIFICATION 9
|
||||||
|
#define NPVERS_HAS_LIVECONNECT 9
|
||||||
|
#define NPVERS_68K_HAS_LIVECONNECT 11
|
||||||
|
#define NPVERS_HAS_WINDOWLESS 11
|
||||||
|
#define NPVERS_HAS_XPCONNECT_SCRIPTING 13
|
||||||
|
#define NPVERS_HAS_NPRUNTIME_SCRIPTING 14
|
||||||
|
#define NPVERS_HAS_FORM_VALUES 15
|
||||||
|
#define NPVERS_HAS_POPUPS_ENABLED_STATE 16
|
||||||
|
#define NPVERS_HAS_RESPONSE_HEADERS 17
|
||||||
|
#define NPVERS_HAS_NPOBJECT_ENUM 18
|
||||||
|
#define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19
|
||||||
|
#define NPVERS_HAS_ALL_NETWORK_STREAMS 20
|
||||||
|
#define NPVERS_HAS_URL_AND_AUTH_INFO 21
|
||||||
|
#define NPVERS_HAS_PRIVATE_MODE 22
|
||||||
|
#define NPVERS_MACOSX_HAS_COCOA_EVENTS 23
|
||||||
|
#define NPVERS_HAS_ADVANCED_KEY_HANDLING 25
|
||||||
|
#define NPVERS_HAS_URL_REDIRECT_HANDLING 26
|
||||||
|
#define NPVERS_HAS_CLEAR_SITE_DATA 27
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* Function Prototypes */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
#define NP_LOADDS _System
|
||||||
|
#else
|
||||||
|
#define NP_LOADDS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* NPP_* functions are provided by the plugin and called by the navigator. */
|
||||||
|
|
||||||
|
#if defined(XP_UNIX)
|
||||||
|
const char* NPP_GetMIMEDescription(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
|
||||||
|
uint16_t mode, int16_t argc, char* argn[],
|
||||||
|
char* argv[], NPSavedData* saved);
|
||||||
|
NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
|
||||||
|
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
|
||||||
|
NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
|
||||||
|
NPStream* stream, NPBool seekable,
|
||||||
|
uint16_t* stype);
|
||||||
|
NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
|
||||||
|
NPReason reason);
|
||||||
|
int32_t NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
|
||||||
|
int32_t NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32_t offset,
|
||||||
|
int32_t len, void* buffer);
|
||||||
|
void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
|
||||||
|
const char* fname);
|
||||||
|
void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
|
||||||
|
int16_t NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
|
||||||
|
void NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
|
||||||
|
NPReason reason, void* notifyData);
|
||||||
|
NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
|
||||||
|
NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
|
||||||
|
NPBool NP_LOADDS NPP_GotFocus(NPP instance, NPFocusDirection direction);
|
||||||
|
void NP_LOADDS NPP_LostFocus(NPP instance);
|
||||||
|
void NP_LOADDS NPP_URLRedirectNotify(NPP instance, const char* url, int32_t status, void* notifyData);
|
||||||
|
NPError NP_LOADDS NPP_ClearSiteData(const char* site, uint64_t flags, uint64_t maxAge);
|
||||||
|
char** NP_LOADDS NPP_GetSitesWithData(void);
|
||||||
|
|
||||||
|
/* NPN_* functions are provided by the navigator and called by the plugin. */
|
||||||
|
void NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
|
||||||
|
int* netscape_major, int* netscape_minor);
|
||||||
|
NPError NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
|
||||||
|
const char* target, void* notifyData);
|
||||||
|
NPError NP_LOADDS NPN_GetURL(NPP instance, const char* url,
|
||||||
|
const char* target);
|
||||||
|
NPError NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
|
||||||
|
const char* target, uint32_t len,
|
||||||
|
const char* buf, NPBool file,
|
||||||
|
void* notifyData);
|
||||||
|
NPError NP_LOADDS NPN_PostURL(NPP instance, const char* url,
|
||||||
|
const char* target, uint32_t len,
|
||||||
|
const char* buf, NPBool file);
|
||||||
|
NPError NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
|
||||||
|
NPError NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
|
||||||
|
const char* target, NPStream** stream);
|
||||||
|
int32_t NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32_t len,
|
||||||
|
void* buffer);
|
||||||
|
NPError NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream,
|
||||||
|
NPReason reason);
|
||||||
|
void NP_LOADDS NPN_Status(NPP instance, const char* message);
|
||||||
|
const char* NP_LOADDS NPN_UserAgent(NPP instance);
|
||||||
|
void* NP_LOADDS NPN_MemAlloc(uint32_t size);
|
||||||
|
void NP_LOADDS NPN_MemFree(void* ptr);
|
||||||
|
uint32_t NP_LOADDS NPN_MemFlush(uint32_t size);
|
||||||
|
void NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
|
||||||
|
NPError NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable,
|
||||||
|
void *value);
|
||||||
|
NPError NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable,
|
||||||
|
void *value);
|
||||||
|
void NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
|
||||||
|
void NP_LOADDS NPN_InvalidateRegion(NPP instance,
|
||||||
|
NPRegion invalidRegion);
|
||||||
|
void NP_LOADDS NPN_ForceRedraw(NPP instance);
|
||||||
|
void NP_LOADDS NPN_PushPopupsEnabledState(NPP instance, NPBool enabled);
|
||||||
|
void NP_LOADDS NPN_PopPopupsEnabledState(NPP instance);
|
||||||
|
void NP_LOADDS NPN_PluginThreadAsyncCall(NPP instance,
|
||||||
|
void (*func) (void *),
|
||||||
|
void *userData);
|
||||||
|
NPError NP_LOADDS NPN_GetValueForURL(NPP instance, NPNURLVariable variable,
|
||||||
|
const char *url, char **value,
|
||||||
|
uint32_t *len);
|
||||||
|
NPError NP_LOADDS NPN_SetValueForURL(NPP instance, NPNURLVariable variable,
|
||||||
|
const char *url, const char *value,
|
||||||
|
uint32_t len);
|
||||||
|
NPError NP_LOADDS NPN_GetAuthenticationInfo(NPP instance,
|
||||||
|
const char *protocol,
|
||||||
|
const char *host, int32_t port,
|
||||||
|
const char *scheme,
|
||||||
|
const char *realm,
|
||||||
|
char **username, uint32_t *ulen,
|
||||||
|
char **password,
|
||||||
|
uint32_t *plen);
|
||||||
|
uint32_t NP_LOADDS NPN_ScheduleTimer(NPP instance, uint32_t interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32_t timerID));
|
||||||
|
void NP_LOADDS NPN_UnscheduleTimer(NPP instance, uint32_t timerID);
|
||||||
|
NPError NP_LOADDS NPN_PopUpContextMenu(NPP instance, NPMenu* menu);
|
||||||
|
NPBool NP_LOADDS NPN_ConvertPoint(NPP instance, double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
|
||||||
|
NPBool NP_LOADDS NPN_HandleEvent(NPP instance, void *event, NPBool handled);
|
||||||
|
NPBool NP_LOADDS NPN_UnfocusInstance(NPP instance, NPFocusDirection direction);
|
||||||
|
void NP_LOADDS NPN_URLRedirectResponse(NPP instance, void* notifyData, NPBool allow);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* end extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* RC_INVOKED */
|
||||||
|
#if defined(__OS2__)
|
||||||
|
#pragma pack()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* npapi_h_ */
|
322
browser-plugin/npapi/npfunctions.h
Normal file
@ -0,0 +1,322 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is mozilla.org code.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Netscape Communications Corporation.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
#ifndef npfunctions_h_
|
||||||
|
#define npfunctions_h_
|
||||||
|
|
||||||
|
#ifdef __OS2__
|
||||||
|
#pragma pack(1)
|
||||||
|
#define NP_LOADDS _System
|
||||||
|
#else
|
||||||
|
#define NP_LOADDS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "npapi.h"
|
||||||
|
#include "npruntime.h"
|
||||||
|
|
||||||
|
typedef NPError (* NP_LOADDS NPP_NewProcPtr)(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_DestroyProcPtr)(NPP instance, NPSavedData** save);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_SetWindowProcPtr)(NPP instance, NPWindow* window);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_NewStreamProcPtr)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_DestroyStreamProcPtr)(NPP instance, NPStream* stream, NPReason reason);
|
||||||
|
typedef int32_t (* NP_LOADDS NPP_WriteReadyProcPtr)(NPP instance, NPStream* stream);
|
||||||
|
typedef int32_t (* NP_LOADDS NPP_WriteProcPtr)(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer);
|
||||||
|
typedef void (* NP_LOADDS NPP_StreamAsFileProcPtr)(NPP instance, NPStream* stream, const char* fname);
|
||||||
|
typedef void (* NP_LOADDS NPP_PrintProcPtr)(NPP instance, NPPrint* platformPrint);
|
||||||
|
typedef int16_t (* NP_LOADDS NPP_HandleEventProcPtr)(NPP instance, void* event);
|
||||||
|
typedef void (* NP_LOADDS NPP_URLNotifyProcPtr)(NPP instance, const char* url, NPReason reason, void* notifyData);
|
||||||
|
/* Any NPObjects returned to the browser via NPP_GetValue should be retained
|
||||||
|
by the plugin on the way out. The browser is responsible for releasing. */
|
||||||
|
typedef NPError (* NP_LOADDS NPP_GetValueProcPtr)(NPP instance, NPPVariable variable, void *ret_value);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_SetValueProcPtr)(NPP instance, NPNVariable variable, void *value);
|
||||||
|
typedef NPBool (* NP_LOADDS NPP_GotFocusPtr)(NPP instance, NPFocusDirection direction);
|
||||||
|
typedef void (* NP_LOADDS NPP_LostFocusPtr)(NPP instance);
|
||||||
|
typedef void (* NP_LOADDS NPP_URLRedirectNotifyPtr)(NPP instance, const char* url, int32_t status, void* notifyData);
|
||||||
|
typedef NPError (* NP_LOADDS NPP_ClearSiteDataPtr)(const char* site, uint64_t flags, uint64_t maxAge);
|
||||||
|
typedef char** (* NP_LOADDS NPP_GetSitesWithDataPtr)(void);
|
||||||
|
|
||||||
|
typedef NPError (*NPN_GetValueProcPtr)(NPP instance, NPNVariable variable, void *ret_value);
|
||||||
|
typedef NPError (*NPN_SetValueProcPtr)(NPP instance, NPPVariable variable, void *value);
|
||||||
|
typedef NPError (*NPN_GetURLNotifyProcPtr)(NPP instance, const char* url, const char* window, void* notifyData);
|
||||||
|
typedef NPError (*NPN_PostURLNotifyProcPtr)(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file, void* notifyData);
|
||||||
|
typedef NPError (*NPN_GetURLProcPtr)(NPP instance, const char* url, const char* window);
|
||||||
|
typedef NPError (*NPN_PostURLProcPtr)(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file);
|
||||||
|
typedef NPError (*NPN_RequestReadProcPtr)(NPStream* stream, NPByteRange* rangeList);
|
||||||
|
typedef NPError (*NPN_NewStreamProcPtr)(NPP instance, NPMIMEType type, const char* window, NPStream** stream);
|
||||||
|
typedef int32_t (*NPN_WriteProcPtr)(NPP instance, NPStream* stream, int32_t len, void* buffer);
|
||||||
|
typedef NPError (*NPN_DestroyStreamProcPtr)(NPP instance, NPStream* stream, NPReason reason);
|
||||||
|
typedef void (*NPN_StatusProcPtr)(NPP instance, const char* message);
|
||||||
|
/* Browser manages the lifetime of the buffer returned by NPN_UserAgent, don't
|
||||||
|
depend on it sticking around and don't free it. */
|
||||||
|
typedef const char* (*NPN_UserAgentProcPtr)(NPP instance);
|
||||||
|
typedef void* (*NPN_MemAllocProcPtr)(uint32_t size);
|
||||||
|
typedef void (*NPN_MemFreeProcPtr)(void* ptr);
|
||||||
|
typedef uint32_t (*NPN_MemFlushProcPtr)(uint32_t size);
|
||||||
|
typedef void (*NPN_ReloadPluginsProcPtr)(NPBool reloadPages);
|
||||||
|
typedef void* (*NPN_GetJavaEnvProcPtr)(void);
|
||||||
|
typedef void* (*NPN_GetJavaPeerProcPtr)(NPP instance);
|
||||||
|
typedef void (*NPN_InvalidateRectProcPtr)(NPP instance, NPRect *rect);
|
||||||
|
typedef void (*NPN_InvalidateRegionProcPtr)(NPP instance, NPRegion region);
|
||||||
|
typedef void (*NPN_ForceRedrawProcPtr)(NPP instance);
|
||||||
|
typedef NPIdentifier (*NPN_GetStringIdentifierProcPtr)(const NPUTF8* name);
|
||||||
|
typedef void (*NPN_GetStringIdentifiersProcPtr)(const NPUTF8** names, int32_t nameCount, NPIdentifier* identifiers);
|
||||||
|
typedef NPIdentifier (*NPN_GetIntIdentifierProcPtr)(int32_t intid);
|
||||||
|
typedef bool (*NPN_IdentifierIsStringProcPtr)(NPIdentifier identifier);
|
||||||
|
typedef NPUTF8* (*NPN_UTF8FromIdentifierProcPtr)(NPIdentifier identifier);
|
||||||
|
typedef int32_t (*NPN_IntFromIdentifierProcPtr)(NPIdentifier identifier);
|
||||||
|
typedef NPObject* (*NPN_CreateObjectProcPtr)(NPP npp, NPClass *aClass);
|
||||||
|
typedef NPObject* (*NPN_RetainObjectProcPtr)(NPObject *obj);
|
||||||
|
typedef void (*NPN_ReleaseObjectProcPtr)(NPObject *obj);
|
||||||
|
typedef bool (*NPN_InvokeProcPtr)(NPP npp, NPObject* obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
|
||||||
|
typedef bool (*NPN_InvokeDefaultProcPtr)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
|
||||||
|
typedef bool (*NPN_EvaluateProcPtr)(NPP npp, NPObject *obj, NPString *script, NPVariant *result);
|
||||||
|
typedef bool (*NPN_GetPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName, NPVariant *result);
|
||||||
|
typedef bool (*NPN_SetPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName, const NPVariant *value);
|
||||||
|
typedef bool (*NPN_RemovePropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
|
||||||
|
typedef bool (*NPN_HasPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
|
||||||
|
typedef bool (*NPN_HasMethodProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
|
||||||
|
typedef void (*NPN_ReleaseVariantValueProcPtr)(NPVariant *variant);
|
||||||
|
typedef void (*NPN_SetExceptionProcPtr)(NPObject *obj, const NPUTF8 *message);
|
||||||
|
typedef void (*NPN_PushPopupsEnabledStateProcPtr)(NPP npp, NPBool enabled);
|
||||||
|
typedef void (*NPN_PopPopupsEnabledStateProcPtr)(NPP npp);
|
||||||
|
typedef bool (*NPN_EnumerateProcPtr)(NPP npp, NPObject *obj, NPIdentifier **identifier, uint32_t *count);
|
||||||
|
typedef void (*NPN_PluginThreadAsyncCallProcPtr)(NPP instance, void (*func)(void *), void *userData);
|
||||||
|
typedef bool (*NPN_ConstructProcPtr)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
|
||||||
|
typedef NPError (*NPN_GetValueForURLPtr)(NPP npp, NPNURLVariable variable, const char *url, char **value, uint32_t *len);
|
||||||
|
typedef NPError (*NPN_SetValueForURLPtr)(NPP npp, NPNURLVariable variable, const char *url, const char *value, uint32_t len);
|
||||||
|
typedef NPError (*NPN_GetAuthenticationInfoPtr)(NPP npp, const char *protocol, const char *host, int32_t port, const char *scheme, const char *realm, char **username, uint32_t *ulen, char **password, uint32_t *plen);
|
||||||
|
typedef uint32_t (*NPN_ScheduleTimerPtr)(NPP instance, uint32_t interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32_t timerID));
|
||||||
|
typedef void (*NPN_UnscheduleTimerPtr)(NPP instance, uint32_t timerID);
|
||||||
|
typedef NPError (*NPN_PopUpContextMenuPtr)(NPP instance, NPMenu* menu);
|
||||||
|
typedef NPBool (*NPN_ConvertPointPtr)(NPP instance, double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
|
||||||
|
typedef NPBool (*NPN_HandleEventPtr)(NPP instance, void *event, NPBool handled);
|
||||||
|
typedef NPBool (*NPN_UnfocusInstancePtr)(NPP instance, NPFocusDirection direction);
|
||||||
|
typedef void (*NPN_URLRedirectResponsePtr)(NPP instance, void* notifyData, NPBool allow);
|
||||||
|
|
||||||
|
typedef struct _NPPluginFuncs {
|
||||||
|
uint16_t size;
|
||||||
|
uint16_t version;
|
||||||
|
NPP_NewProcPtr newp;
|
||||||
|
NPP_DestroyProcPtr destroy;
|
||||||
|
NPP_SetWindowProcPtr setwindow;
|
||||||
|
NPP_NewStreamProcPtr newstream;
|
||||||
|
NPP_DestroyStreamProcPtr destroystream;
|
||||||
|
NPP_StreamAsFileProcPtr asfile;
|
||||||
|
NPP_WriteReadyProcPtr writeready;
|
||||||
|
NPP_WriteProcPtr write;
|
||||||
|
NPP_PrintProcPtr print;
|
||||||
|
NPP_HandleEventProcPtr event;
|
||||||
|
NPP_URLNotifyProcPtr urlnotify;
|
||||||
|
void* javaClass;
|
||||||
|
NPP_GetValueProcPtr getvalue;
|
||||||
|
NPP_SetValueProcPtr setvalue;
|
||||||
|
NPP_GotFocusPtr gotfocus;
|
||||||
|
NPP_LostFocusPtr lostfocus;
|
||||||
|
NPP_URLRedirectNotifyPtr urlredirectnotify;
|
||||||
|
NPP_ClearSiteDataPtr clearsitedata;
|
||||||
|
NPP_GetSitesWithDataPtr getsiteswithdata;
|
||||||
|
} NPPluginFuncs;
|
||||||
|
|
||||||
|
typedef struct _NPNetscapeFuncs {
|
||||||
|
uint16_t size;
|
||||||
|
uint16_t version;
|
||||||
|
NPN_GetURLProcPtr geturl;
|
||||||
|
NPN_PostURLProcPtr posturl;
|
||||||
|
NPN_RequestReadProcPtr requestread;
|
||||||
|
NPN_NewStreamProcPtr newstream;
|
||||||
|
NPN_WriteProcPtr write;
|
||||||
|
NPN_DestroyStreamProcPtr destroystream;
|
||||||
|
NPN_StatusProcPtr status;
|
||||||
|
NPN_UserAgentProcPtr uagent;
|
||||||
|
NPN_MemAllocProcPtr memalloc;
|
||||||
|
NPN_MemFreeProcPtr memfree;
|
||||||
|
NPN_MemFlushProcPtr memflush;
|
||||||
|
NPN_ReloadPluginsProcPtr reloadplugins;
|
||||||
|
NPN_GetJavaEnvProcPtr getJavaEnv;
|
||||||
|
NPN_GetJavaPeerProcPtr getJavaPeer;
|
||||||
|
NPN_GetURLNotifyProcPtr geturlnotify;
|
||||||
|
NPN_PostURLNotifyProcPtr posturlnotify;
|
||||||
|
NPN_GetValueProcPtr getvalue;
|
||||||
|
NPN_SetValueProcPtr setvalue;
|
||||||
|
NPN_InvalidateRectProcPtr invalidaterect;
|
||||||
|
NPN_InvalidateRegionProcPtr invalidateregion;
|
||||||
|
NPN_ForceRedrawProcPtr forceredraw;
|
||||||
|
NPN_GetStringIdentifierProcPtr getstringidentifier;
|
||||||
|
NPN_GetStringIdentifiersProcPtr getstringidentifiers;
|
||||||
|
NPN_GetIntIdentifierProcPtr getintidentifier;
|
||||||
|
NPN_IdentifierIsStringProcPtr identifierisstring;
|
||||||
|
NPN_UTF8FromIdentifierProcPtr utf8fromidentifier;
|
||||||
|
NPN_IntFromIdentifierProcPtr intfromidentifier;
|
||||||
|
NPN_CreateObjectProcPtr createobject;
|
||||||
|
NPN_RetainObjectProcPtr retainobject;
|
||||||
|
NPN_ReleaseObjectProcPtr releaseobject;
|
||||||
|
NPN_InvokeProcPtr invoke;
|
||||||
|
NPN_InvokeDefaultProcPtr invokeDefault;
|
||||||
|
NPN_EvaluateProcPtr evaluate;
|
||||||
|
NPN_GetPropertyProcPtr getproperty;
|
||||||
|
NPN_SetPropertyProcPtr setproperty;
|
||||||
|
NPN_RemovePropertyProcPtr removeproperty;
|
||||||
|
NPN_HasPropertyProcPtr hasproperty;
|
||||||
|
NPN_HasMethodProcPtr hasmethod;
|
||||||
|
NPN_ReleaseVariantValueProcPtr releasevariantvalue;
|
||||||
|
NPN_SetExceptionProcPtr setexception;
|
||||||
|
NPN_PushPopupsEnabledStateProcPtr pushpopupsenabledstate;
|
||||||
|
NPN_PopPopupsEnabledStateProcPtr poppopupsenabledstate;
|
||||||
|
NPN_EnumerateProcPtr enumerate;
|
||||||
|
NPN_PluginThreadAsyncCallProcPtr pluginthreadasynccall;
|
||||||
|
NPN_ConstructProcPtr construct;
|
||||||
|
NPN_GetValueForURLPtr getvalueforurl;
|
||||||
|
NPN_SetValueForURLPtr setvalueforurl;
|
||||||
|
NPN_GetAuthenticationInfoPtr getauthenticationinfo;
|
||||||
|
NPN_ScheduleTimerPtr scheduletimer;
|
||||||
|
NPN_UnscheduleTimerPtr unscheduletimer;
|
||||||
|
NPN_PopUpContextMenuPtr popupcontextmenu;
|
||||||
|
NPN_ConvertPointPtr convertpoint;
|
||||||
|
NPN_HandleEventPtr handleevent;
|
||||||
|
NPN_UnfocusInstancePtr unfocusinstance;
|
||||||
|
NPN_URLRedirectResponsePtr urlredirectresponse;
|
||||||
|
} NPNetscapeFuncs;
|
||||||
|
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
/*
|
||||||
|
* Mac OS X version(s) of NP_GetMIMEDescription(const char *)
|
||||||
|
* These can be called to retreive MIME information from the plugin dynamically
|
||||||
|
*
|
||||||
|
* Note: For compatibility with Quicktime, BPSupportedMIMEtypes is another way
|
||||||
|
* to get mime info from the plugin only on OSX and may not be supported
|
||||||
|
* in furture version -- use NP_GetMIMEDescription instead
|
||||||
|
*/
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
kBPSupportedMIMETypesStructVers_1 = 1
|
||||||
|
};
|
||||||
|
typedef struct _BPSupportedMIMETypes
|
||||||
|
{
|
||||||
|
SInt32 structVersion; /* struct version */
|
||||||
|
Handle typeStrings; /* STR# formated handle, allocated by plug-in */
|
||||||
|
Handle infoStrings; /* STR# formated handle, allocated by plug-in */
|
||||||
|
} BPSupportedMIMETypes;
|
||||||
|
OSErr BP_GetSupportedMIMETypes(BPSupportedMIMETypes *mimeInfo, UInt32 flags);
|
||||||
|
#define NP_GETMIMEDESCRIPTION_NAME "NP_GetMIMEDescription"
|
||||||
|
typedef const char* (*NP_GetMIMEDescriptionProcPtr)(void);
|
||||||
|
typedef OSErr (*BP_GetSupportedMIMETypesProcPtr)(BPSupportedMIMETypes*, UInt32);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define OSCALL WINAPI
|
||||||
|
#else
|
||||||
|
#if defined(__OS2__)
|
||||||
|
#define OSCALL _System
|
||||||
|
#else
|
||||||
|
#define OSCALL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_UNIX)
|
||||||
|
/* GCC 3.3 and later support the visibility attribute. */
|
||||||
|
#if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
|
||||||
|
#define NP_VISIBILITY_DEFAULT __attribute__((visibility("default")))
|
||||||
|
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||||
|
#define NP_VISIBILITY_DEFAULT __global
|
||||||
|
#else
|
||||||
|
#define NP_VISIBILITY_DEFAULT
|
||||||
|
#endif
|
||||||
|
#define NP_EXPORT(__type) NP_VISIBILITY_DEFAULT __type
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32) || defined (__OS2__)
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
/* plugin meta member functions */
|
||||||
|
#if defined(__OS2__)
|
||||||
|
typedef struct _NPPluginData { /* Alternate OS2 Plugin interface */
|
||||||
|
char *pMimeTypes;
|
||||||
|
char *pFileExtents;
|
||||||
|
char *pFileOpenTemplate;
|
||||||
|
char *pProductName;
|
||||||
|
char *pProductDescription;
|
||||||
|
unsigned long dwProductVersionMS;
|
||||||
|
unsigned long dwProductVersionLS;
|
||||||
|
} NPPluginData;
|
||||||
|
typedef NPError (*NP_GetPluginDataFunc)(NPPluginData*);
|
||||||
|
NPError OSCALL NP_GetPluginData(NPPluginData * pPluginData);
|
||||||
|
#endif
|
||||||
|
typedef NPError (*NP_GetEntryPointsFunc)(NPPluginFuncs*);
|
||||||
|
NPError OSCALL NP_GetEntryPoints(NPPluginFuncs* pFuncs);
|
||||||
|
typedef NPError (*NP_InitializeFunc)(NPNetscapeFuncs*);
|
||||||
|
NPError OSCALL NP_Initialize(NPNetscapeFuncs* bFuncs);
|
||||||
|
typedef NPError (*NP_ShutdownFunc)(void);
|
||||||
|
NPError OSCALL NP_Shutdown(void);
|
||||||
|
typedef const char* (*NP_GetMIMEDescriptionFunc)(void);
|
||||||
|
const char* NP_GetMIMEDescription(void);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
#pragma pack()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef XP_UNIX
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
typedef char* (*NP_GetPluginVersionFunc)(void);
|
||||||
|
NP_EXPORT(char*) NP_GetPluginVersion(void);
|
||||||
|
typedef const char* (*NP_GetMIMEDescriptionFunc)(void);
|
||||||
|
NP_EXPORT(const char*) NP_GetMIMEDescription(void);
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
typedef NPError (*NP_InitializeFunc)(NPNetscapeFuncs*);
|
||||||
|
NP_EXPORT(NPError) NP_Initialize(NPNetscapeFuncs* bFuncs);
|
||||||
|
typedef NPError (*NP_GetEntryPointsFunc)(NPPluginFuncs*);
|
||||||
|
NP_EXPORT(NPError) NP_GetEntryPoints(NPPluginFuncs* pFuncs);
|
||||||
|
#else
|
||||||
|
typedef NPError (*NP_InitializeFunc)(NPNetscapeFuncs*, NPPluginFuncs*);
|
||||||
|
NP_EXPORT(NPError) NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs);
|
||||||
|
#endif
|
||||||
|
typedef NPError (*NP_ShutdownFunc)(void);
|
||||||
|
NP_EXPORT(NPError) NP_Shutdown(void);
|
||||||
|
typedef NPError (*NP_GetValueFunc)(void *, NPPVariable, void *);
|
||||||
|
NP_EXPORT(NPError) NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* npfunctions_h_ */
|
393
browser-plugin/npapi/npruntime.h
Normal file
@ -0,0 +1,393 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2004, Apple Computer, Inc. and The Mozilla Foundation.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla
|
||||||
|
* Foundation ("Mozilla") nor the names of their contributors may be used
|
||||||
|
* to endorse or promote products derived from this software without
|
||||||
|
* specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS
|
||||||
|
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR
|
||||||
|
* THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef _NP_RUNTIME_H_
|
||||||
|
#define _NP_RUNTIME_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "nptypes.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
This API is used to facilitate binding code written in C to script
|
||||||
|
objects. The API in this header does not assume the presence of a
|
||||||
|
user agent. That is, it can be used to bind C code to scripting
|
||||||
|
environments outside of the context of a user agent.
|
||||||
|
|
||||||
|
However, the normal use of the this API is in the context of a
|
||||||
|
scripting environment running in a browser or other user agent.
|
||||||
|
In particular it is used to support the extended Netscape
|
||||||
|
script-ability API for plugins (NP-SAP). NP-SAP is an extension
|
||||||
|
of the Netscape plugin API. As such we have adopted the use of
|
||||||
|
the "NP" prefix for this API.
|
||||||
|
|
||||||
|
The following NP{N|P}Variables were added to the Netscape plugin
|
||||||
|
API (in npapi.h):
|
||||||
|
|
||||||
|
NPNVWindowNPObject
|
||||||
|
NPNVPluginElementNPObject
|
||||||
|
NPPVpluginScriptableNPObject
|
||||||
|
|
||||||
|
These variables are exposed through NPN_GetValue() and
|
||||||
|
NPP_GetValue() (respectively) and are used to establish the
|
||||||
|
initial binding between the user agent and native code. The DOM
|
||||||
|
objects in the user agent can be examined and manipulated using
|
||||||
|
the NPN_ functions that operate on NPObjects described in this
|
||||||
|
header.
|
||||||
|
|
||||||
|
To the extent possible the assumptions about the scripting
|
||||||
|
language used by the scripting environment have been minimized.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NP_BEGIN_MACRO do {
|
||||||
|
#define NP_END_MACRO } while (0)
|
||||||
|
|
||||||
|
/*
|
||||||
|
Objects (non-primitive data) passed between 'C' and script is
|
||||||
|
always wrapped in an NPObject. The 'interface' of an NPObject is
|
||||||
|
described by an NPClass.
|
||||||
|
*/
|
||||||
|
typedef struct NPObject NPObject;
|
||||||
|
typedef struct NPClass NPClass;
|
||||||
|
|
||||||
|
typedef char NPUTF8;
|
||||||
|
typedef struct _NPString {
|
||||||
|
const NPUTF8 *UTF8Characters;
|
||||||
|
uint32_t UTF8Length;
|
||||||
|
} NPString;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
NPVariantType_Void,
|
||||||
|
NPVariantType_Null,
|
||||||
|
NPVariantType_Bool,
|
||||||
|
NPVariantType_Int32,
|
||||||
|
NPVariantType_Double,
|
||||||
|
NPVariantType_String,
|
||||||
|
NPVariantType_Object
|
||||||
|
} NPVariantType;
|
||||||
|
|
||||||
|
typedef struct _NPVariant {
|
||||||
|
NPVariantType type;
|
||||||
|
union {
|
||||||
|
bool boolValue;
|
||||||
|
int32_t intValue;
|
||||||
|
double doubleValue;
|
||||||
|
NPString stringValue;
|
||||||
|
NPObject *objectValue;
|
||||||
|
} value;
|
||||||
|
} NPVariant;
|
||||||
|
|
||||||
|
/*
|
||||||
|
NPN_ReleaseVariantValue is called on all 'out' parameters
|
||||||
|
references. Specifically it is to be called on variants that own
|
||||||
|
their value, as is the case with all non-const NPVariant*
|
||||||
|
arguments after a successful call to any methods (except this one)
|
||||||
|
in this API.
|
||||||
|
|
||||||
|
After calling NPN_ReleaseVariantValue, the type of the variant
|
||||||
|
will be NPVariantType_Void.
|
||||||
|
*/
|
||||||
|
void NPN_ReleaseVariantValue(NPVariant *variant);
|
||||||
|
|
||||||
|
#define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void)
|
||||||
|
#define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null)
|
||||||
|
#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
|
||||||
|
#define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32)
|
||||||
|
#define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double)
|
||||||
|
#define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String)
|
||||||
|
#define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object)
|
||||||
|
|
||||||
|
#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
|
||||||
|
#define NPVARIANT_TO_INT32(_v) ((_v).value.intValue)
|
||||||
|
#define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue)
|
||||||
|
#define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue)
|
||||||
|
#define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue)
|
||||||
|
|
||||||
|
#define VOID_TO_NPVARIANT(_v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Void; \
|
||||||
|
(_v).value.objectValue = NULL; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define NULL_TO_NPVARIANT(_v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Null; \
|
||||||
|
(_v).value.objectValue = NULL; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define BOOLEAN_TO_NPVARIANT(_val, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Bool; \
|
||||||
|
(_v).value.boolValue = !!(_val); \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define INT32_TO_NPVARIANT(_val, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Int32; \
|
||||||
|
(_v).value.intValue = _val; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define DOUBLE_TO_NPVARIANT(_val, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Double; \
|
||||||
|
(_v).value.doubleValue = _val; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define STRINGZ_TO_NPVARIANT(_val, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_String; \
|
||||||
|
NPString str = { _val, (uint32_t)(strlen(_val)) }; \
|
||||||
|
(_v).value.stringValue = str; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define STRINGN_TO_NPVARIANT(_val, _len, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_String; \
|
||||||
|
NPString str = { _val, (uint32_t)(_len) }; \
|
||||||
|
(_v).value.stringValue = str; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
#define OBJECT_TO_NPVARIANT(_val, _v) \
|
||||||
|
NP_BEGIN_MACRO \
|
||||||
|
(_v).type = NPVariantType_Object; \
|
||||||
|
(_v).value.objectValue = _val; \
|
||||||
|
NP_END_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Type mappings (JavaScript types have been used for illustration
|
||||||
|
purposes):
|
||||||
|
|
||||||
|
JavaScript to C (NPVariant with type:)
|
||||||
|
undefined NPVariantType_Void
|
||||||
|
null NPVariantType_Null
|
||||||
|
Boolean NPVariantType_Bool
|
||||||
|
Number NPVariantType_Double or NPVariantType_Int32
|
||||||
|
String NPVariantType_String
|
||||||
|
Object NPVariantType_Object
|
||||||
|
|
||||||
|
C (NPVariant with type:) to JavaScript
|
||||||
|
NPVariantType_Void undefined
|
||||||
|
NPVariantType_Null null
|
||||||
|
NPVariantType_Bool Boolean
|
||||||
|
NPVariantType_Int32 Number
|
||||||
|
NPVariantType_Double Number
|
||||||
|
NPVariantType_String String
|
||||||
|
NPVariantType_Object Object
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef void *NPIdentifier;
|
||||||
|
|
||||||
|
/*
|
||||||
|
NPObjects have methods and properties. Methods and properties are
|
||||||
|
identified with NPIdentifiers. These identifiers may be reflected
|
||||||
|
in script. NPIdentifiers can be either strings or integers, IOW,
|
||||||
|
methods and properties can be identified by either strings or
|
||||||
|
integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be
|
||||||
|
compared using ==. In case of any errors, the requested
|
||||||
|
NPIdentifier(s) will be NULL. NPIdentifier lifetime is controlled
|
||||||
|
by the browser. Plugins do not need to worry about memory management
|
||||||
|
with regards to NPIdentifiers.
|
||||||
|
*/
|
||||||
|
NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name);
|
||||||
|
void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount,
|
||||||
|
NPIdentifier *identifiers);
|
||||||
|
NPIdentifier NPN_GetIntIdentifier(int32_t intid);
|
||||||
|
bool NPN_IdentifierIsString(NPIdentifier identifier);
|
||||||
|
|
||||||
|
/*
|
||||||
|
The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed.
|
||||||
|
*/
|
||||||
|
NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Get the integer represented by identifier. If identifier is not an
|
||||||
|
integer identifier, the behaviour is undefined.
|
||||||
|
*/
|
||||||
|
int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
|
||||||
|
|
||||||
|
/*
|
||||||
|
NPObject behavior is implemented using the following set of
|
||||||
|
callback functions.
|
||||||
|
|
||||||
|
The NPVariant *result argument of these functions (where
|
||||||
|
applicable) should be released using NPN_ReleaseVariantValue().
|
||||||
|
*/
|
||||||
|
typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass);
|
||||||
|
typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj);
|
||||||
|
typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj);
|
||||||
|
typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name);
|
||||||
|
typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name,
|
||||||
|
const NPVariant *args, uint32_t argCount,
|
||||||
|
NPVariant *result);
|
||||||
|
typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj,
|
||||||
|
const NPVariant *args,
|
||||||
|
uint32_t argCount,
|
||||||
|
NPVariant *result);
|
||||||
|
typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
|
||||||
|
typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
|
||||||
|
NPVariant *result);
|
||||||
|
typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
|
||||||
|
const NPVariant *value);
|
||||||
|
typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj,
|
||||||
|
NPIdentifier name);
|
||||||
|
typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value,
|
||||||
|
uint32_t *count);
|
||||||
|
typedef bool (*NPConstructFunctionPtr)(NPObject *npobj,
|
||||||
|
const NPVariant *args,
|
||||||
|
uint32_t argCount,
|
||||||
|
NPVariant *result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
NPObjects returned by create, retain, invoke, and getProperty pass
|
||||||
|
a reference count to the caller. That is, the callee adds a
|
||||||
|
reference count which passes to the caller. It is the caller's
|
||||||
|
responsibility to release the returned object.
|
||||||
|
|
||||||
|
NPInvokeFunctionPtr function may return 0 to indicate a void
|
||||||
|
result.
|
||||||
|
|
||||||
|
NPInvalidateFunctionPtr is called by the scripting environment
|
||||||
|
when the native code is shutdown. Any attempt to message a
|
||||||
|
NPObject instance after the invalidate callback has been
|
||||||
|
called will result in undefined behavior, even if the native code
|
||||||
|
is still retaining those NPObject instances. (The runtime
|
||||||
|
will typically return immediately, with 0 or NULL, from an attempt
|
||||||
|
to dispatch to a NPObject, but this behavior should not be
|
||||||
|
depended upon.)
|
||||||
|
|
||||||
|
The NPEnumerationFunctionPtr function may pass an array of
|
||||||
|
NPIdentifiers back to the caller. The callee allocs the memory of
|
||||||
|
the array using NPN_MemAlloc(), and it's the caller's responsibility
|
||||||
|
to release it using NPN_MemFree().
|
||||||
|
*/
|
||||||
|
struct NPClass
|
||||||
|
{
|
||||||
|
uint32_t structVersion;
|
||||||
|
NPAllocateFunctionPtr allocate;
|
||||||
|
NPDeallocateFunctionPtr deallocate;
|
||||||
|
NPInvalidateFunctionPtr invalidate;
|
||||||
|
NPHasMethodFunctionPtr hasMethod;
|
||||||
|
NPInvokeFunctionPtr invoke;
|
||||||
|
NPInvokeDefaultFunctionPtr invokeDefault;
|
||||||
|
NPHasPropertyFunctionPtr hasProperty;
|
||||||
|
NPGetPropertyFunctionPtr getProperty;
|
||||||
|
NPSetPropertyFunctionPtr setProperty;
|
||||||
|
NPRemovePropertyFunctionPtr removeProperty;
|
||||||
|
NPEnumerationFunctionPtr enumerate;
|
||||||
|
NPConstructFunctionPtr construct;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NP_CLASS_STRUCT_VERSION 3
|
||||||
|
|
||||||
|
#define NP_CLASS_STRUCT_VERSION_ENUM 2
|
||||||
|
#define NP_CLASS_STRUCT_VERSION_CTOR 3
|
||||||
|
|
||||||
|
#define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass) \
|
||||||
|
((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM)
|
||||||
|
|
||||||
|
#define NP_CLASS_STRUCT_VERSION_HAS_CTOR(npclass) \
|
||||||
|
((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_CTOR)
|
||||||
|
|
||||||
|
struct NPObject {
|
||||||
|
NPClass *_class;
|
||||||
|
uint32_t referenceCount;
|
||||||
|
/*
|
||||||
|
* Additional space may be allocated here by types of NPObjects
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
If the class has an allocate function, NPN_CreateObject invokes
|
||||||
|
that function, otherwise a NPObject is allocated and
|
||||||
|
returned. This method will initialize the referenceCount member of
|
||||||
|
the NPObject to 1.
|
||||||
|
*/
|
||||||
|
NPObject *NPN_CreateObject(NPP npp, NPClass *aClass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Increment the NPObject's reference count.
|
||||||
|
*/
|
||||||
|
NPObject *NPN_RetainObject(NPObject *npobj);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Decremented the NPObject's reference count. If the reference
|
||||||
|
count goes to zero, the class's destroy function is invoke if
|
||||||
|
specified, otherwise the object is freed directly.
|
||||||
|
*/
|
||||||
|
void NPN_ReleaseObject(NPObject *npobj);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Functions to access script objects represented by NPObject.
|
||||||
|
|
||||||
|
Calls to script objects are synchronous. If a function returns a
|
||||||
|
value, it will be supplied via the result NPVariant
|
||||||
|
argument. Successful calls will return true, false will be
|
||||||
|
returned in case of an error.
|
||||||
|
|
||||||
|
Calls made from plugin code to script must be made from the thread
|
||||||
|
on which the plugin was initialized.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool NPN_Invoke(NPP npp, NPObject *npobj, NPIdentifier methodName,
|
||||||
|
const NPVariant *args, uint32_t argCount, NPVariant *result);
|
||||||
|
bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args,
|
||||||
|
uint32_t argCount, NPVariant *result);
|
||||||
|
bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script,
|
||||||
|
NPVariant *result);
|
||||||
|
bool NPN_GetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName,
|
||||||
|
NPVariant *result);
|
||||||
|
bool NPN_SetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName,
|
||||||
|
const NPVariant *value);
|
||||||
|
bool NPN_RemoveProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
|
||||||
|
bool NPN_HasProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
|
||||||
|
bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName);
|
||||||
|
bool NPN_Enumerate(NPP npp, NPObject *npobj, NPIdentifier **identifier,
|
||||||
|
uint32_t *count);
|
||||||
|
bool NPN_Construct(NPP npp, NPObject *npobj, const NPVariant *args,
|
||||||
|
uint32_t argCount, NPVariant *result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
NPN_SetException may be called to trigger a script exception upon
|
||||||
|
return from entry points into NPObjects. Typical usage:
|
||||||
|
|
||||||
|
NPN_SetException (npobj, message);
|
||||||
|
*/
|
||||||
|
void NPN_SetException(NPObject *npobj, const NPUTF8 *message);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
121
browser-plugin/npapi/nptypes.h
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is mozilla.org code.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* mozilla.org.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 2004
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
* Johnny Stenback <jst@mozilla.org> (Original author)
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
#ifndef nptypes_h_
|
||||||
|
#define nptypes_h_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header file for ensuring that C99 types ([u]int32_t, [u]int64_t and bool) and
|
||||||
|
* true/false macros are available.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(WIN32) || defined(OS2)
|
||||||
|
/*
|
||||||
|
* Win32 and OS/2 don't know C99, so define [u]int_16/32/64 here. The bool
|
||||||
|
* is predefined tho, both in C and C++.
|
||||||
|
*/
|
||||||
|
typedef short int16_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef int int32_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
typedef long long int64_t;
|
||||||
|
typedef unsigned long long uint64_t;
|
||||||
|
#elif defined(_AIX) || defined(__sun) || defined(__osf__) || defined(IRIX) || defined(HPUX)
|
||||||
|
/*
|
||||||
|
* AIX and SunOS ship a inttypes.h header that defines [u]int32_t,
|
||||||
|
* but not bool for C.
|
||||||
|
*/
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
typedef int bool;
|
||||||
|
#define true 1
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
#elif defined(bsdi) || defined(FREEBSD) || defined(OPENBSD)
|
||||||
|
/*
|
||||||
|
* BSD/OS, FreeBSD, and OpenBSD ship sys/types.h that define int32_t and
|
||||||
|
* u_int32_t.
|
||||||
|
*/
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BSD/OS ships no header that defines uint32_t, nor bool (for C)
|
||||||
|
*/
|
||||||
|
#if defined(bsdi)
|
||||||
|
typedef u_int32_t uint32_t;
|
||||||
|
typedef u_int64_t uint64_t;
|
||||||
|
|
||||||
|
#if !defined(__cplusplus)
|
||||||
|
typedef int bool;
|
||||||
|
#define true 1
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* FreeBSD and OpenBSD define uint32_t and bool.
|
||||||
|
*/
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#endif
|
||||||
|
#elif defined(BEOS)
|
||||||
|
#include <inttypes.h>
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* For those that ship a standard C99 stdint.h header file, include
|
||||||
|
* it. Can't do the same for stdbool.h tho, since some systems ship
|
||||||
|
* with a stdbool.h file that doesn't compile!
|
||||||
|
*/
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#if !defined(__GNUC__) || (__GNUC__ > 2 || __GNUC_MINOR__ > 95)
|
||||||
|
#include <stdbool.h>
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* GCC 2.91 can't deal with a typedef for bool, but a #define
|
||||||
|
* works.
|
||||||
|
*/
|
||||||
|
#define bool int
|
||||||
|
#define true 1
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* nptypes_h_ */
|
@ -13,9 +13,6 @@
|
|||||||
/* Define to 1 if you have the `mallinfo' function. */
|
/* Define to 1 if you have the `mallinfo' function. */
|
||||||
#mesondefine HAVE_MALLINFO
|
#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. */
|
/* Define to 1 fi you have the <sys/resource.h> header file. */
|
||||||
#mesondefine HAVE_SYS_RESOURCE_H
|
#mesondefine HAVE_SYS_RESOURCE_H
|
||||||
|
|
||||||
|
@ -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,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()
|
|
@ -1,6 +1,5 @@
|
|||||||
dbus_interfaces = [
|
dbus_interfaces = [
|
||||||
'org.gnome.Shell.Extensions.xml',
|
'org.gnome.Shell.Extensions.xml',
|
||||||
'org.gnome.Shell.Introspect.xml',
|
|
||||||
'org.gnome.Shell.PadOsd.xml',
|
'org.gnome.Shell.PadOsd.xml',
|
||||||
'org.gnome.Shell.Screencast.xml',
|
'org.gnome.Shell.Screencast.xml',
|
||||||
'org.gnome.Shell.Screenshot.xml',
|
'org.gnome.Shell.Screenshot.xml',
|
||||||
|
@ -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,46 +1,5 @@
|
|||||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
|
||||||
|
|
||||||
<node>
|
<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">
|
<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"/>
|
<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>
|
</interface>
|
||||||
</node>
|
</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>
|
|
@ -20,12 +20,6 @@
|
|||||||
<method name="ListSessions">
|
<method name="ListSessions">
|
||||||
<arg name="sessions" type="a(susso)" direction="out"/>
|
<arg name="sessions" type="a(susso)" direction="out"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="CanRebootToBootLoaderMenu">
|
|
||||||
<arg type="s" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="SetRebootToBootLoaderMenu">
|
|
||||||
<arg type="t" direction="in"/>
|
|
||||||
</method>
|
|
||||||
<signal name="PrepareForSleep">
|
<signal name="PrepareForSleep">
|
||||||
<arg type="b" direction="out"/>
|
<arg type="b" direction="out"/>
|
||||||
</signal>
|
</signal>
|
||||||
|
26
data/dbus-interfaces/org.gnome.Magnifier.ZoomRegion.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<node>
|
||||||
|
<interface name="org.gnome.Magnifier.ZoomRegion">
|
||||||
|
<method name="setMagFactor">
|
||||||
|
<arg type="d" direction="in"/>
|
||||||
|
<arg type="d" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getMagFactor">
|
||||||
|
<arg type="d" direction="out"/>
|
||||||
|
<arg type="d" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="setRoi">
|
||||||
|
<arg type="ai" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getRoi">
|
||||||
|
<arg type="ai" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="shiftContentsTo">
|
||||||
|
<arg type="i" direction="in"/>
|
||||||
|
<arg type="i" direction="in"/>
|
||||||
|
<arg type="b" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="moveResize">
|
||||||
|
<arg type="ai" direction="in"/>
|
||||||
|
</method>
|
||||||
|
</interface>
|
||||||
|
</node>
|
54
data/dbus-interfaces/org.gnome.Magnifier.xml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<node>
|
||||||
|
<interface name="org.gnome.Magnifier">
|
||||||
|
<method name="setActive">
|
||||||
|
<arg type="b" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="isActive">
|
||||||
|
<arg type="b" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="showCursor"/>
|
||||||
|
<method name="hideCursor"/>
|
||||||
|
<method name="createZoomRegion">
|
||||||
|
<arg type="d" direction="in"/>
|
||||||
|
<arg type="d" direction="in"/>
|
||||||
|
<arg type="ai" direction="in"/>
|
||||||
|
<arg type="ai" direction="in"/>
|
||||||
|
<arg type="o" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="addZoomRegion">
|
||||||
|
<arg type="o" direction="in"/>
|
||||||
|
<arg type="b" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="getZoomRegions">
|
||||||
|
<arg type="ao" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="clearAllZoomRegions"/>
|
||||||
|
<method name="fullScreenCapable">
|
||||||
|
<arg type="b" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireSize">
|
||||||
|
<arg type="i" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireSize">
|
||||||
|
<arg type="i" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireLength">
|
||||||
|
<arg type="i" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireLength">
|
||||||
|
<arg type="i" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireClip">
|
||||||
|
<arg type="b" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireClip">
|
||||||
|
<arg type="b" direction="out"/>
|
||||||
|
</method>
|
||||||
|
<method name="setCrosswireColor">
|
||||||
|
<arg type="u" direction="in"/>
|
||||||
|
</method>
|
||||||
|
<method name="getCrosswireColor">
|
||||||
|
<arg type="u" direction="out"/>
|
||||||
|
</method>
|
||||||
|
</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>
|
|
@ -3,9 +3,6 @@
|
|||||||
<method name="GetAppId">
|
<method name="GetAppId">
|
||||||
<arg type="s" direction="out"/>
|
<arg type="s" direction="out"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="GetFlags">
|
|
||||||
<arg type="u" direction="out"/>
|
|
||||||
</method>
|
|
||||||
<method name="GetReason">
|
<method name="GetReason">
|
||||||
<arg type="s" direction="out"/>
|
<arg type="s" direction="out"/>
|
||||||
</method>
|
</method>
|
||||||
|
@ -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>
|
|
@ -173,78 +173,22 @@
|
|||||||
<arg type="s" direction="in" name="uuid"/>
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
</method>
|
</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:
|
LaunchExtensionPrefs:
|
||||||
Deprecated for OpenExtensionPrefs
|
@uuid: The UUID of the extension
|
||||||
|
|
||||||
|
Launch preferences of an extension.
|
||||||
-->
|
-->
|
||||||
<method name="LaunchExtensionPrefs">
|
<method name="LaunchExtensionPrefs">
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
<arg type="s" direction="in" name="uuid"/>
|
||||||
</method>
|
</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:
|
CheckForUpdates:
|
||||||
Update all extensions for which updates are available
|
Update all extensions for which updates are available
|
||||||
-->
|
-->
|
||||||
<method name="CheckForUpdates"/>
|
<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">
|
<signal name="ExtensionStatusChanged">
|
||||||
<arg type="s" name="uuid"/>
|
<arg type="s" name="uuid"/>
|
||||||
<arg type="i" name="state"/>
|
<arg type="i" name="state"/>
|
||||||
@ -257,11 +201,5 @@
|
|||||||
-->
|
-->
|
||||||
<property name="ShellVersion" type="s" access="read"/>
|
<property name="ShellVersion" type="s" access="read"/>
|
||||||
|
|
||||||
<!--
|
|
||||||
UserExtensionsEnabled:
|
|
||||||
Whether user extensions are enabled
|
|
||||||
-->
|
|
||||||
<property name="UserExtensionsEnabled" type="b" access="readwrite"/>
|
|
||||||
|
|
||||||
</interface>
|
</interface>
|
||||||
</node>
|
</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,16 +0,0 @@
|
|||||||
<node>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
org.gnome.Shell.WeatherIntegration:
|
|
||||||
@short_description: Weather integration interface
|
|
||||||
|
|
||||||
The interface used for exporting location settings to GNOME Shell's
|
|
||||||
weather integration.
|
|
||||||
-->
|
|
||||||
<interface name="org.gnome.Shell.WeatherIntegration">
|
|
||||||
|
|
||||||
<property name="AutomaticLocation" type="b" access="read"/>
|
|
||||||
<property name="Locations" type="av" access="read"/>
|
|
||||||
|
|
||||||
</interface>
|
|
||||||
</node>
|
|
@ -10,6 +10,9 @@
|
|||||||
<arg type="a{sv}" direction="in" name="params"/>
|
<arg type="a{sv}" direction="in" name="params"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="ShowMonitorLabels">
|
<method name="ShowMonitorLabels">
|
||||||
|
<arg type="a{uv}" direction="in" name="params"/>
|
||||||
|
</method>
|
||||||
|
<method name="ShowMonitorLabels2">
|
||||||
<arg type="a{sv}" direction="in" name="params"/>
|
<arg type="a{sv}" direction="in" name="params"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="HideMonitorLabels"/>
|
<method name="HideMonitorLabels"/>
|
||||||
@ -19,22 +22,17 @@
|
|||||||
<method name="ShowApplications"/>
|
<method name="ShowApplications"/>
|
||||||
<method name="GrabAccelerator">
|
<method name="GrabAccelerator">
|
||||||
<arg type="s" direction="in" name="accelerator"/>
|
<arg type="s" direction="in" name="accelerator"/>
|
||||||
<arg type="u" direction="in" name="modeFlags"/>
|
<arg type="u" direction="in" name="flags"/>
|
||||||
<arg type="u" direction="in" name="grabFlags"/>
|
|
||||||
<arg type="u" direction="out" name="action"/>
|
<arg type="u" direction="out" name="action"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="GrabAccelerators">
|
<method name="GrabAccelerators">
|
||||||
<arg type="a(suu)" direction="in" name="accelerators"/>
|
<arg type="a(su)" direction="in" name="accelerators"/>
|
||||||
<arg type="au" direction="out" name="actions"/>
|
<arg type="au" direction="out" name="actions"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="UngrabAccelerator">
|
<method name="UngrabAccelerator">
|
||||||
<arg type="u" direction="in" name="action"/>
|
<arg type="u" direction="in" name="action"/>
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/>
|
||||||
</method>
|
</method>
|
||||||
<method name="UngrabAccelerators">
|
|
||||||
<arg type="au" direction="in" name="action"/>
|
|
||||||
<arg type="b" direction="out" name="success"/>
|
|
||||||
</method>
|
|
||||||
<signal name="AcceleratorActivated">
|
<signal name="AcceleratorActivated">
|
||||||
<arg name="action" type="u"/>
|
<arg name="action" type="u"/>
|
||||||
<arg name="parameters" type="a{sv}"/>
|
<arg name="parameters" type="a{sv}"/>
|
||||||
|
15740
data/emoji.json
@ -1,10 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<gresources>
|
<gresources>
|
||||||
<gresource prefix="/org/gnome/shell/dbus-interfaces">
|
<gresource prefix="/org/gnome/shell/dbus-interfaces">
|
||||||
<file preprocess="xml-stripblanks">net.hadess.PowerProfiles.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
|
<file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
|
||||||
<file preprocess="xml-stripblanks">net.reactivated.Fprint.Device.xml</file>
|
<file preprocess="xml-stripblanks">net.hadess.SwitcherooControl.xml</file>
|
||||||
<file preprocess="xml-stripblanks">net.reactivated.Fprint.Manager.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">org.freedesktop.Application.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.Application.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Device.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Device.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Manager.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Manager.xml</file>
|
||||||
@ -29,7 +27,8 @@
|
|||||||
<file preprocess="xml-stripblanks">org.freedesktop.realmd.Service.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.realmd.Service.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.freedesktop.UPower.Device.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.UPower.Device.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.freedesktop.UPower.xml</file>
|
<file preprocess="xml-stripblanks">org.freedesktop.UPower.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Mutter.ScreenCast.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Magnifier.xml</file>
|
||||||
|
<file preprocess="xml-stripblanks">org.gnome.Magnifier.ZoomRegion.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.ScreenSaver.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.ScreenSaver.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.SessionManager.EndSessionDialog.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.SessionManager.EndSessionDialog.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.SessionManager.Inhibitor.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.SessionManager.Inhibitor.xml</file>
|
||||||
@ -40,17 +39,13 @@
|
|||||||
<file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Rfkill.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Rfkill.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Wacom.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Wacom.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.AudioDeviceSelection.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.AudioDeviceSelection.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.CalendarServer.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.ClocksIntegration.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.Extensions.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.Extensions.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.Introspect.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.HotplugSniffer.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.HotplugSniffer.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.PerfHelper.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.PerfHelper.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.PortalHelper.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.PortalHelper.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.Screencast.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.Screencast.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.Screenshot.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.Screenshot.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.Wacom.PadOsd.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.Wacom.PadOsd.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.WeatherIntegration.xml</file>
|
|
||||||
<file preprocess="xml-stripblanks">org.gnome.Shell.xml</file>
|
<file preprocess="xml-stripblanks">org.gnome.Shell.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.Gtk.MountOperationHandler.xml</file>
|
<file preprocess="xml-stripblanks">org.Gtk.MountOperationHandler.xml</file>
|
||||||
<file preprocess="xml-stripblanks">org.gtk.Notifications.xml</file>
|
<file preprocess="xml-stripblanks">org.gtk.Notifications.xml</file>
|
||||||
|
12
data/gnome-shell-extension-prefs.desktop.in.in
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Shell Extensions
|
||||||
|
Comment=Configure GNOME Shell Extensions
|
||||||
|
Exec=@bindir@/gnome-shell-extension-prefs %u
|
||||||
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Component=extensions
|
||||||
|
X-GNOME-Bugzilla-Version=@VERSION@
|
||||||
|
Categories=GNOME;GTK;
|
||||||
|
OnlyShowIn=GNOME;
|
||||||
|
NoDisplay=true
|
@ -6,7 +6,6 @@
|
|||||||
<file>be.json</file>
|
<file>be.json</file>
|
||||||
<file>bg.json</file>
|
<file>bg.json</file>
|
||||||
<file>by.json</file>
|
<file>by.json</file>
|
||||||
<file>ca.json</file>
|
|
||||||
<file>cz.json</file>
|
<file>cz.json</file>
|
||||||
<file>de.json</file>
|
<file>de.json</file>
|
||||||
<file>dk.json</file>
|
<file>dk.json</file>
|
||||||
@ -55,6 +54,5 @@
|
|||||||
<file>us.json</file>
|
<file>us.json</file>
|
||||||
<file>vn.json</file>
|
<file>vn.json</file>
|
||||||
<file>za.json</file>
|
<file>za.json</file>
|
||||||
<file>emoji.json</file>
|
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
4
data/gnome-shell-overrides.convert
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[org.gnome.shell.overrides]
|
||||||
|
attach-modal-dialogs = /desktop/gnome/shell/windows/attach_modal_dialogs
|
||||||
|
edge-tiling = /desktop/gnome/shell/windows/edge_tiling
|
||||||
|
workspaces-only-on-primary = /desktop/gnome/shell/windows/workspaces_only_on_primary
|
@ -2,41 +2,30 @@
|
|||||||
<gresources>
|
<gresources>
|
||||||
<gresource prefix="/org/gnome/shell/theme">
|
<gresource prefix="/org/gnome/shell/theme">
|
||||||
<file>calendar-today.svg</file>
|
<file>calendar-today.svg</file>
|
||||||
<file alias="icons/scalable/status/carousel-arrow-next-24-symbolic.svg">carousel-arrow-next-24-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/carousel-arrow-back-24-symbolic.svg">carousel-arrow-back-24-symbolic.svg</file>
|
|
||||||
<file>checkbox-focused.svg</file>
|
<file>checkbox-focused.svg</file>
|
||||||
<file>checkbox-off-focused.svg</file>
|
<file>checkbox-off-focused.svg</file>
|
||||||
<file>checkbox-off.svg</file>
|
<file>checkbox-off.svg</file>
|
||||||
<file>checkbox.svg</file>
|
<file>checkbox.svg</file>
|
||||||
<file alias="icons/scalable/actions/color-pick.svg">color-pick.svg</file>
|
<file>dash-placeholder.svg</file>
|
||||||
<file>gnome-shell.css</file>
|
<file>gnome-shell.css</file>
|
||||||
<file>gnome-shell-high-contrast.css</file>
|
<file>gnome-shell-high-contrast.css</file>
|
||||||
<file>gnome-shell-start.svg</file>
|
<file>key-enter.svg</file>
|
||||||
<file alias="icons/scalable/status/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
|
<file>key-hide.svg</file>
|
||||||
|
<file>key-layout.svg</file>
|
||||||
|
<file>key-shift.svg</file>
|
||||||
|
<file>key-shift-uppercase.svg</file>
|
||||||
|
<file>key-shift-latched-uppercase.svg</file>
|
||||||
|
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
|
||||||
<file>no-events.svg</file>
|
<file>no-events.svg</file>
|
||||||
<file>no-notifications.svg</file>
|
<file>no-notifications.svg</file>
|
||||||
|
<file>noise-texture.png</file>
|
||||||
<file>pad-osd.css</file>
|
<file>pad-osd.css</file>
|
||||||
<file alias="icons/scalable/status/eye-open-negative-filled-symbolic.svg">eye-open-negative-filled-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/eye-not-looking-symbolic.svg">eye-not-looking-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/actions/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/actions/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/actions/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/actions/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/actions/preview-close-symbolic.svg">window-close-24-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/keyboard-caps-lock-filled-symbolic.svg">keyboard-caps-lock-filled-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/keyboard-enter-symbolic.svg">keyboard-enter-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/keyboard-hide-symbolic.svg">keyboard-hide-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/keyboard-layout-filled-symbolic.svg">keyboard-layout-filled-symbolic.svg</file>
|
|
||||||
<file alias="icons/scalable/status/keyboard-shift-filled-symbolic.svg">keyboard-shift-filled-symbolic.svg</file>
|
|
||||||
<file>process-working.svg</file>
|
<file>process-working.svg</file>
|
||||||
<file alias="icons/scalable/status/screen-privacy-disabled-symbolic.svg">screen-privacy-disabled-symbolic.svg</file>
|
<file>toggle-off-us.svg</file>
|
||||||
<file alias="icons/scalable/status/screen-privacy-symbolic.svg">screen-privacy-symbolic.svg</file>
|
<file>toggle-off-intl.svg</file>
|
||||||
<file>toggle-off.svg</file>
|
|
||||||
<file>toggle-off-dark.svg</file>
|
|
||||||
<file>toggle-off-hc.svg</file>
|
<file>toggle-off-hc.svg</file>
|
||||||
<file>toggle-on.svg</file>
|
<file>toggle-on-us.svg</file>
|
||||||
<file>toggle-on-dark.svg</file>
|
<file>toggle-on-intl.svg</file>
|
||||||
<file>toggle-on-hc.svg</file>
|
<file>toggle-on-hc.svg</file>
|
||||||
<file>workspace-placeholder.svg</file>
|
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
5
data/gnome-shell-wayland.target
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell (wayland sync point)
|
||||||
|
After=gnome-shell.service
|
||||||
|
BindsTo=gnome-shell.service
|
||||||
|
Conflicts=gnome-shell-x11.target
|
5
data/gnome-shell-x11.target
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell (x11 sync point)
|
||||||
|
After=gnome-shell.service
|
||||||
|
BindsTo=gnome-shell.service
|
||||||
|
Conflicts=gnome-shell-wayland.target
|
@ -1,4 +1,4 @@
|
|||||||
[portal]
|
[portal]
|
||||||
DBusName=org.gnome.Shell.Portal
|
DBusName=org.freedesktop.impl.portal.desktop.gnome
|
||||||
Interfaces=org.freedesktop.impl.portal.Access
|
Interfaces=org.freedesktop.impl.portal.Access
|
||||||
UseIn=gnome
|
UseIn=gnome
|
||||||
|
11
data/gnome-shell.service.in
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell
|
||||||
|
Wants=gnome-session.service
|
||||||
|
After=graphical-session-pre.target gnome-session-bus.target
|
||||||
|
PartOf=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=dbus
|
||||||
|
ExecStart=@bindir@/gnome-shell
|
||||||
|
Restart=on-failure
|
||||||
|
BusName=org.gnome.Shell
|
Before Width: | Height: | Size: 6.1 KiB |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6.5 1.031c-.371 0-.742-.035-1.11.016-.367.05-.73.203-.972.476-.125.141-.215.309-.266.485-.047.18-.054.367-.02.55.032.184.102.356.192.516.09.164.203.309.317.457L5 4H2a1.8 1.8 0 00-.41.035.791.791 0 00-.36.195.791.791 0 00-.195.36C1 4.723 1 4.863 1 5v2.75l.77-.344c.265-.117.542-.23.832-.242.289-.016.586.074.812.254.227.18.383.441.465.723.082.277.101.57.121.859.02.316.04.637-.016.95-.058.312-.199.616-.43.831a1.264 1.264 0 01-.874.32c-.317-.007-.618-.128-.91-.257L1 10.5V14c0 .137.004.277.035.41a.791.791 0 00.195.36c.098.097.227.16.36.195.133.035.273.035.41.035h3l-.328-.68c-.14-.293-.274-.597-.29-.922-.015-.32.095-.652.31-.894.214-.242.523-.39.84-.453.316-.067.644-.059.968-.059.324 0 .652-.008.969.059.316.062.625.21.84.453.214.242.324.574.308.894-.015.325-.148.63-.289.922L8 15h3a1.8 1.8 0 00.41-.035.791.791 0 00.36-.195.791.791 0 00.195-.36C12 14.277 12 14.137 12 14v-3.563l.703.297c.29.125.59.239.902.246.313.004.63-.101.864-.308.238-.203.386-.496.46-.8C15 9.565 15 9.25 15 8.937c0-.313 0-.63-.07-.934-.075-.305-.223-.598-.461-.8a1.288 1.288 0 00-.864-.31c-.312.008-.613.122-.902.247L12 7.437V5a1.8 1.8 0 00-.035-.41.791.791 0 00-.195-.36.791.791 0 00-.36-.195C11.277 4 11.137 4 11 4H8l.36-.469c.113-.148.226-.293.316-.457.09-.16.16-.332.191-.515a1.248 1.248 0 00-.02-.551 1.256 1.256 0 00-.265-.485c-.242-.273-.605-.425-.973-.476-.367-.05-.738-.016-1.109-.016zm0 0" fill="#474747"/></svg>
|
|
Before Width: | Height: | Size: 1.4 KiB |
@ -1 +0,0 @@
|
|||||||
install_subdir('hicolor', install_dir: icondir)
|
|
@ -1,6 +1,6 @@
|
|||||||
desktop_files = [
|
desktop_files = [
|
||||||
'org.gnome.Shell.desktop',
|
'org.gnome.Shell.desktop',
|
||||||
'org.gnome.Shell.Extensions.desktop',
|
'gnome-shell-extension-prefs.desktop'
|
||||||
]
|
]
|
||||||
service_files = []
|
service_files = []
|
||||||
|
|
||||||
@ -13,8 +13,7 @@ desktopconf = configuration_data()
|
|||||||
# We substitute in bindir so it works as an autostart
|
# We substitute in bindir so it works as an autostart
|
||||||
# file when built in a non-system prefix
|
# file when built in a non-system prefix
|
||||||
desktopconf.set('bindir', bindir)
|
desktopconf.set('bindir', bindir)
|
||||||
desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false')
|
desktopconf.set('VERSION', meson.project_version())
|
||||||
|
|
||||||
foreach desktop_file : desktop_files
|
foreach desktop_file : desktop_files
|
||||||
i18n.merge_file('desktop',
|
i18n.merge_file('desktop',
|
||||||
input: configure_file(
|
input: configure_file(
|
||||||
@ -23,7 +22,7 @@ foreach desktop_file : desktop_files
|
|||||||
configuration: desktopconf
|
configuration: desktopconf
|
||||||
),
|
),
|
||||||
output: desktop_file,
|
output: desktop_file,
|
||||||
po_dir: po_dir,
|
po_dir: '../po',
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: desktopdir,
|
install_dir: desktopdir,
|
||||||
type: 'desktop'
|
type: 'desktop'
|
||||||
@ -41,10 +40,8 @@ foreach service_file : service_files
|
|||||||
)
|
)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
theme_deps = []
|
|
||||||
|
|
||||||
subdir('dbus-interfaces')
|
subdir('dbus-interfaces')
|
||||||
subdir('icons')
|
|
||||||
subdir('theme')
|
subdir('theme')
|
||||||
|
|
||||||
data_resources = [
|
data_resources = [
|
||||||
@ -73,13 +70,9 @@ configure_file(
|
|||||||
install_dir: pkgdatadir
|
install_dir: pkgdatadir
|
||||||
)
|
)
|
||||||
|
|
||||||
keybinding_files = [
|
|
||||||
'50-gnome-shell-launchers.xml',
|
|
||||||
'50-gnome-shell-system.xml',
|
|
||||||
]
|
|
||||||
|
|
||||||
install_data('gnome-shell.portal', install_dir: portaldir)
|
install_data('gnome-shell.portal', install_dir: portaldir)
|
||||||
install_data(keybinding_files, install_dir: keysdir)
|
install_data('50-gnome-shell-system.xml', install_dir: keysdir)
|
||||||
|
|
||||||
|
|
||||||
schemaconf = configuration_data()
|
schemaconf = configuration_data()
|
||||||
@ -105,22 +98,15 @@ if have_systemd
|
|||||||
unitconf = configuration_data()
|
unitconf = configuration_data()
|
||||||
unitconf.set('bindir', bindir)
|
unitconf.set('bindir', bindir)
|
||||||
|
|
||||||
configure_file(
|
unit = configure_file(
|
||||||
input: 'org.gnome.Shell@x11.service.in',
|
input: 'gnome-shell.service.in',
|
||||||
output: 'org.gnome.Shell@x11.service',
|
output: 'gnome-shell.service',
|
||||||
configuration: unitconf,
|
configuration: unitconf,
|
||||||
install_dir: systemduserunitdir
|
install_dir: systemduserunitdir
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
units = files('gnome-shell-wayland.target',
|
||||||
input: 'org.gnome.Shell@wayland.service.in',
|
'gnome-shell-x11.target')
|
||||||
output: 'org.gnome.Shell@wayland.service',
|
|
||||||
configuration: unitconf,
|
|
||||||
install_dir: systemduserunitdir
|
|
||||||
)
|
|
||||||
|
|
||||||
units = files('org.gnome.Shell.target',
|
|
||||||
'org.gnome.Shell-disable-extensions.service')
|
|
||||||
|
|
||||||
install_data(units, install_dir: systemduserunitdir)
|
install_data(units, install_dir: systemduserunitdir)
|
||||||
endif
|
endif
|
||||||
@ -131,3 +117,5 @@ custom_target('compile-schemas',
|
|||||||
output: 'gschemas.compiled',
|
output: 'gschemas.compiled',
|
||||||
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
|
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
|
||||||
build_by_default: true)
|
build_by_default: true)
|
||||||
|
|
||||||
|
install_data('gnome-shell-overrides.convert', install_dir: convertdir)
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Disable GNOME Shell extensions after failure
|
|
||||||
# Note that this unit must not conflict with anything, and must
|
|
||||||
# be able to run in parallel with the gnome-session-shutdown.target.
|
|
||||||
DefaultDependencies=no
|
|
||||||
|
|
||||||
# We want to disable extensions only if gnome-shell has flagged the extensions
|
|
||||||
# to be a likely cause of trouble.
|
|
||||||
ConditionPathExists=%t/gnome-shell-disable-extensions
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
# Disable extensions
|
|
||||||
ExecStart=gsettings set org.gnome.shell disable-user-extensions true
|
|
||||||
Restart=no
|
|
@ -1,10 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
# Keep in sync with subprojects/extensions-app
|
|
||||||
Name=Extensions
|
|
||||||
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
Icon=org.gnome.Shell.Extensions
|
|
||||||
# Never launch this, just provide name+icon to portal dialog
|
|
||||||
Exec=false
|
|
||||||
OnlyShowIn=GNOME;
|
|
||||||
NoDisplay=true
|
|
@ -3,6 +3,10 @@ Type=Application
|
|||||||
Name=GNOME Shell
|
Name=GNOME Shell
|
||||||
Comment=Window management and application launching
|
Comment=Window management and application launching
|
||||||
Exec=@bindir@/gnome-shell
|
Exec=@bindir@/gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
|
X-GNOME-Bugzilla-Product=gnome-shell
|
||||||
|
X-GNOME-Bugzilla-Component=general
|
||||||
|
X-GNOME-Bugzilla-Version=@VERSION@
|
||||||
Categories=GNOME;GTK;Core;
|
Categories=GNOME;GTK;Core;
|
||||||
OnlyShowIn=GNOME;
|
OnlyShowIn=GNOME;
|
||||||
NoDisplay=true
|
NoDisplay=true
|
||||||
@ -10,4 +14,3 @@ X-GNOME-Autostart-Phase=DisplayServer
|
|||||||
X-GNOME-Provides=panel;windowmanager;
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
X-GNOME-Autostart-Notify=true
|
X-GNOME-Autostart-Notify=true
|
||||||
X-GNOME-AutoRestart=false
|
X-GNOME-AutoRestart=false
|
||||||
X-GNOME-HiddenUnderSystemd=@systemd_hidden@
|
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=GNOME Shell
|
|
||||||
DefaultDependencies=no
|
|
||||||
|
|
||||||
Requisite=gnome-session-initialized.target
|
|
||||||
PartOf=gnome-session-initialized.target
|
|
||||||
Before=gnome-session-initialized.target
|
|
||||||
|
|
||||||
Wants=org.gnome.Shell@wayland.service
|
|
||||||
Wants=org.gnome.Shell@x11.service
|
|
@ -1,34 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=GNOME Shell on Wayland
|
|
||||||
# On wayland, force a session shutdown
|
|
||||||
OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-shutdown.target
|
|
||||||
OnFailureJobMode=replace-irreversibly
|
|
||||||
CollectMode=inactive-or-failed
|
|
||||||
RefuseManualStart=on
|
|
||||||
RefuseManualStop=on
|
|
||||||
|
|
||||||
After=gnome-session-manager.target
|
|
||||||
|
|
||||||
Requisite=gnome-session-initialized.target
|
|
||||||
PartOf=gnome-session-initialized.target
|
|
||||||
Before=gnome-session-initialized.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Slice=session.slice
|
|
||||||
Type=notify
|
|
||||||
# NOTE: This can be replaced with ConditionEnvironment=XDG_SESSION_TYPE=%I in
|
|
||||||
# the [Unit] section with systemd >= 246. Also, the current solution is
|
|
||||||
# kind of painful as systemd had a bug where it retries the condition.
|
|
||||||
# Only start if the template instance matches the session type.
|
|
||||||
ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" = "%I" || exit 2'
|
|
||||||
ExecStart=@bindir@/gnome-shell
|
|
||||||
# Exit code 1 means we are probably *not* dealing with an extension failure
|
|
||||||
SuccessExitStatus=1
|
|
||||||
|
|
||||||
# unset some environment variables that were set by the shell and won't work now that the shell is gone
|
|
||||||
ExecStopPost=-/bin/sh -c 'test "$SERVICE_RESULT" != "exec-condition" && systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY'
|
|
||||||
|
|
||||||
# On wayland we cannot restart
|
|
||||||
Restart=no
|
|
||||||
# Kill any stubborn child processes after this long
|
|
||||||
TimeoutStopSec=5
|
|
@ -1,39 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=GNOME Shell on X11
|
|
||||||
# On X11, try to show the GNOME Session Failed screen
|
|
||||||
OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-failed.target
|
|
||||||
OnFailureJobMode=replace
|
|
||||||
CollectMode=inactive-or-failed
|
|
||||||
RefuseManualStart=on
|
|
||||||
RefuseManualStop=on
|
|
||||||
|
|
||||||
After=gnome-session-manager.target
|
|
||||||
|
|
||||||
Requisite=gnome-session-initialized.target
|
|
||||||
PartOf=gnome-session-initialized.target
|
|
||||||
Before=gnome-session-initialized.target
|
|
||||||
|
|
||||||
# Limit startup frequency more than the default
|
|
||||||
StartLimitIntervalSec=15s
|
|
||||||
StartLimitBurst=3
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Slice=session.slice
|
|
||||||
Type=notify
|
|
||||||
# NOTE: This can be replaced with ConditionEnvironment=XDG_SESSION_TYPE=%I in
|
|
||||||
# the [Unit] section with systemd >= 246. Also, the current solution is
|
|
||||||
# kind of painful as systemd had a bug where it retries the condition.
|
|
||||||
# Only start if the template instance matches the session type.
|
|
||||||
ExecCondition=/bin/sh -c 'test "$XDG_SESSION_TYPE" = "%I" || exit 2'
|
|
||||||
ExecStart=@bindir@/gnome-shell
|
|
||||||
# Exit code 1 means we are probably *not* dealing with an extension failure
|
|
||||||
SuccessExitStatus=1
|
|
||||||
|
|
||||||
# On X11 we do not need to unset any variables
|
|
||||||
|
|
||||||
# On X11 we want to restart on-success (Alt+F2 + r) and on-failure.
|
|
||||||
Restart=always
|
|
||||||
# Do not wait before restarting the shell
|
|
||||||
RestartSec=0ms
|
|
||||||
# Kill any stubborn child processes after this long
|
|
||||||
TimeoutStopSec=5
|
|
@ -21,17 +21,6 @@
|
|||||||
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
|
EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="disabled-extensions" type="as">
|
|
||||||
<default>[]</default>
|
|
||||||
<summary>UUIDs of extensions to force disabling</summary>
|
|
||||||
<description>
|
|
||||||
GNOME Shell extensions have a UUID property; this key lists extensions
|
|
||||||
which should be disabled, even if loaded as part of the current mode.
|
|
||||||
You can also manipulate this list with the EnableExtension and
|
|
||||||
DisableExtension D-Bus methods on org.gnome.Shell.
|
|
||||||
This key takes precedence over the “enabled-extensions” setting.
|
|
||||||
</description>
|
|
||||||
</key>
|
|
||||||
<key name="disable-user-extensions" type="b">
|
<key name="disable-user-extensions" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<summary>Disable user extensions</summary>
|
<summary>Disable user extensions</summary>
|
||||||
@ -41,7 +30,7 @@
|
|||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="disable-extension-version-validation" type="b">
|
<key name="disable-extension-version-validation" type="b">
|
||||||
<default>false</default>
|
<default>true</default>
|
||||||
<summary>Disables the validation of extension version compatibility</summary>
|
<summary>Disables the validation of extension version compatibility</summary>
|
||||||
<description>
|
<description>
|
||||||
GNOME Shell will only load extensions that claim to support the current
|
GNOME Shell will only load extensions that claim to support the current
|
||||||
@ -50,13 +39,20 @@
|
|||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="favorite-apps" type="as">
|
<key name="favorite-apps" type="as">
|
||||||
<default>[ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
|
<default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
|
||||||
<summary>List of desktop file IDs for favorite applications</summary>
|
<summary>List of desktop file IDs for favorite applications</summary>
|
||||||
<description>
|
<description>
|
||||||
The applications corresponding to these identifiers
|
The applications corresponding to these identifiers
|
||||||
will be displayed in the favorites area.
|
will be displayed in the favorites area.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key name="app-picker-view" type="u">
|
||||||
|
<default>0</default>
|
||||||
|
<summary>App Picker View</summary>
|
||||||
|
<description>
|
||||||
|
Index of the currently selected view in the application picker.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
<key name="command-history" type="as">
|
<key name="command-history" type="as">
|
||||||
<default>[]</default>
|
<default>[]</default>
|
||||||
<summary>History for command (Alt-F2) dialog</summary>
|
<summary>History for command (Alt-F2) dialog</summary>
|
||||||
@ -94,52 +90,8 @@
|
|||||||
adapter is ever seen not to have devices associated to it.
|
adapter is ever seen not to have devices associated to it.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="welcome-dialog-last-shown-version" type="s">
|
|
||||||
<default>''</default>
|
|
||||||
<summary>The last version the “Welcome to GNOME” dialog was shown for</summary>
|
|
||||||
<description>
|
|
||||||
This key determines for which version the “Welcome to GNOME” dialog was
|
|
||||||
last shown. An empty string represents the oldest possible version, and
|
|
||||||
a huge number will represent versions that do not exist yet. This huge
|
|
||||||
number can be used to effectively disable the dialog.
|
|
||||||
</description>
|
|
||||||
</key>
|
|
||||||
<key name="app-picker-layout" type="aa{sv}">
|
|
||||||
<default><![CDATA[
|
|
||||||
[{
|
|
||||||
'org.gnome.Geary.desktop': <{'position': <0>}>,
|
|
||||||
'org.gnome.Contacts.desktop': <{'position': <1>}>,
|
|
||||||
'org.gnome.Weather.desktop': <{'position': <2>}>,
|
|
||||||
'org.gnome.clocks.desktop': <{'position': <3>}>,
|
|
||||||
'org.gnome.Maps.desktop': <{'position': <4>}>,
|
|
||||||
'org.gnome.Books.desktop': <{'position': <5>}>,
|
|
||||||
'org.gnome.Photos.desktop': <{'position': <6>}>,
|
|
||||||
'org.gnome.Totem.desktop': <{'position': <7>}>,
|
|
||||||
'org.gnome.Calculator.desktop': <{'position': <8>}>,
|
|
||||||
'org.gnome.gedit.desktop': <{'position': <9>}>,
|
|
||||||
'simple-scan.desktop': <{'position': <10>}>,
|
|
||||||
'gnome-control-center.desktop': <{'position': <11>}>,
|
|
||||||
'gnome-system-monitor.desktop': <{'position': <12>}>,
|
|
||||||
'org.gnome.Boxes.desktop': <{'position': <13>}>,
|
|
||||||
'org.gnome.Terminal.desktop': <{'position': <14>}>,
|
|
||||||
'Utilities': <{'position': <15>}>,
|
|
||||||
'org.gnome.Characters.desktop': <{'position': <16>}>,
|
|
||||||
'yelp.desktop': <{'position': <17>}>,
|
|
||||||
'org.gnome.Screenshot.desktop': <{'position': <18>}>,
|
|
||||||
'org.gnome.Cheese.desktop': <{'position': <19>}>,
|
|
||||||
'org.gnome.font-viewer.desktop': <{'position': <20>}>
|
|
||||||
}]
|
|
||||||
]]></default>
|
|
||||||
<summary>Layout of the app picker</summary>
|
|
||||||
<description>
|
|
||||||
Layout of the app picker. Each entry in the array is a page. Pages are
|
|
||||||
stored in the order they appear in GNOME Shell. Each page contains an
|
|
||||||
“application id” → 'data' pair. Currently, the following values are
|
|
||||||
stored as 'data':
|
|
||||||
• “position”: the position of the application icon in the page
|
|
||||||
</description>
|
|
||||||
</key>
|
|
||||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
|
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
||||||
@ -151,20 +103,6 @@
|
|||||||
Keybinding to open the application menu.
|
Keybinding to open the application menu.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="shift-overview-up" type="as">
|
|
||||||
<default>["<Super><Alt>Up"]</default>
|
|
||||||
<summary>Keybinding to shift between overview states</summary>
|
|
||||||
<description>
|
|
||||||
Keybinding to shift between session, window picker and app grid
|
|
||||||
</description>
|
|
||||||
</key>
|
|
||||||
<key name="shift-overview-down" type="as">
|
|
||||||
<default>["<Super><Alt>Down"]</default>
|
|
||||||
<summary>Keybinding to shift between overview states</summary>
|
|
||||||
<description>
|
|
||||||
Keybinding to shift between app grid, window picker and session
|
|
||||||
</description>
|
|
||||||
</key>
|
|
||||||
<key name="toggle-application-view" type="as">
|
<key name="toggle-application-view" type="as">
|
||||||
<default>["<Super>a"]</default>
|
<default>["<Super>a"]</default>
|
||||||
<summary>Keybinding to open the “Show Applications” view</summary>
|
<summary>Keybinding to open the “Show Applications” view</summary>
|
||||||
@ -194,49 +132,21 @@
|
|||||||
Keybinding to focus the active notification.
|
Keybinding to focus the active notification.
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<key name="switch-to-application-1" type="as">
|
<key name="pause-resume-tweens" type="as">
|
||||||
<default>["<Super>1"]</default>
|
<default>[]</default>
|
||||||
<summary>Switch to application 1</summary>
|
<summary>Keybinding that pauses and resumes all running tweens, for debugging purposes</summary>
|
||||||
|
<description></description>
|
||||||
</key>
|
</key>
|
||||||
<key name="switch-to-application-2" type="as">
|
</schema>
|
||||||
<default>["<Super>2"]</default>
|
|
||||||
<summary>Switch to application 2</summary>
|
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
||||||
</key>
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
<key name="switch-to-application-3" type="as">
|
<key name="keyboard-type" type="s">
|
||||||
<default>["<Super>3"]</default>
|
<default>'touch'</default>
|
||||||
<summary>Switch to application 3</summary>
|
<summary>Which keyboard to use</summary>
|
||||||
</key>
|
<description>
|
||||||
<key name="switch-to-application-4" type="as">
|
The type of keyboard to use.
|
||||||
<default>["<Super>4"]</default>
|
</description>
|
||||||
<summary>Switch to application 4</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-to-application-5" type="as">
|
|
||||||
<default>["<Super>5"]</default>
|
|
||||||
<summary>Switch to application 5</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-to-application-6" type="as">
|
|
||||||
<default>["<Super>6"]</default>
|
|
||||||
<summary>Switch to application 6</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-to-application-7" type="as">
|
|
||||||
<default>["<Super>7"]</default>
|
|
||||||
<summary>Switch to application 7</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-to-application-8" type="as">
|
|
||||||
<default>["<Super>8"]</default>
|
|
||||||
<summary>Switch to application 8</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-to-application-9" type="as">
|
|
||||||
<default>["<Super>9"]</default>
|
|
||||||
<summary>Switch to application 9</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-realm" type="as">
|
|
||||||
<default><![CDATA[['<Super>Tab']]]></default>
|
|
||||||
<summary>Open Realm Switcher</summary>
|
|
||||||
</key>
|
|
||||||
<key name="switch-realm-backward" type="as">
|
|
||||||
<default><![CDATA[['<Super><Shift>Tab']]]></default>
|
|
||||||
<summary>Open Realm Switcher Backwards</summary>
|
|
||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
@ -280,36 +190,6 @@
|
|||||||
</key>
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.world-clocks" path="/org/gnome/shell/world-clocks/"
|
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
|
||||||
<key name="locations" type="av">
|
|
||||||
<summary>Locations</summary>
|
|
||||||
<description>
|
|
||||||
The locations to show in world clocks
|
|
||||||
</description>
|
|
||||||
<default>[]</default>
|
|
||||||
</key>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<schema id="org.gnome.shell.weather" path="/org/gnome/shell/weather/"
|
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
|
||||||
<key name="automatic-location" type="b">
|
|
||||||
<summary>Automatic location</summary>
|
|
||||||
<description>
|
|
||||||
Whether to fetch the current location or not
|
|
||||||
</description>
|
|
||||||
<default>false</default>
|
|
||||||
</key>
|
|
||||||
|
|
||||||
<key name="locations" type="av">
|
|
||||||
<summary>Location</summary>
|
|
||||||
<description>
|
|
||||||
The location for which to show a forecast
|
|
||||||
</description>
|
|
||||||
<default>[]</default>
|
|
||||||
</key>
|
|
||||||
</schema>
|
|
||||||
|
|
||||||
<!-- unused, change 00_org.gnome.shell.gschema.override instead -->
|
<!-- unused, change 00_org.gnome.shell.gschema.override instead -->
|
||||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
||||||
gettext-domain="@GETTEXT_PACKAGE@">
|
gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
|
@ -1,599 +0,0 @@
|
|||||||
{
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"level": "",
|
|
||||||
"mode": "default",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"q"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"w"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"e",
|
|
||||||
"é",
|
|
||||||
"è",
|
|
||||||
"ê",
|
|
||||||
"ë",
|
|
||||||
"%",
|
|
||||||
"ę",
|
|
||||||
"ė",
|
|
||||||
"ē"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"r"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"t"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"y",
|
|
||||||
"%",
|
|
||||||
"ÿ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"u",
|
|
||||||
"ù",
|
|
||||||
"û",
|
|
||||||
"%",
|
|
||||||
"ü",
|
|
||||||
"ú",
|
|
||||||
"ū"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"i",
|
|
||||||
"î",
|
|
||||||
"%",
|
|
||||||
"ï",
|
|
||||||
"ì",
|
|
||||||
"í",
|
|
||||||
"į",
|
|
||||||
"ī"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"o",
|
|
||||||
"ô",
|
|
||||||
"œ",
|
|
||||||
"%",
|
|
||||||
"ö",
|
|
||||||
"ò",
|
|
||||||
"ó",
|
|
||||||
"õ",
|
|
||||||
"ø",
|
|
||||||
"ō",
|
|
||||||
"º"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"p"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"a",
|
|
||||||
"à",
|
|
||||||
"â",
|
|
||||||
"%",
|
|
||||||
"æ",
|
|
||||||
"á",
|
|
||||||
"ä",
|
|
||||||
"ã",
|
|
||||||
"å",
|
|
||||||
"ā",
|
|
||||||
"ª"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"s"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"d"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"f"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"g"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"h"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"j"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"k"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"l"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"z"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"x"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"c",
|
|
||||||
"ç",
|
|
||||||
"ć",
|
|
||||||
"č"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"v"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"b"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"n"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"m"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"#",
|
|
||||||
"!",
|
|
||||||
",",
|
|
||||||
"?",
|
|
||||||
"-",
|
|
||||||
":",
|
|
||||||
"'",
|
|
||||||
"@"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "shift",
|
|
||||||
"mode": "latched",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"Q"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"W"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"E",
|
|
||||||
"É",
|
|
||||||
"È",
|
|
||||||
"Ê",
|
|
||||||
"Ë",
|
|
||||||
"%",
|
|
||||||
"Ę",
|
|
||||||
"Ė",
|
|
||||||
"Ē"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"R"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"T"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Y",
|
|
||||||
"%",
|
|
||||||
"Ÿ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"U",
|
|
||||||
"Ù",
|
|
||||||
"Û",
|
|
||||||
"%",
|
|
||||||
"Ü",
|
|
||||||
"Ú",
|
|
||||||
"Ū"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"I",
|
|
||||||
"Î",
|
|
||||||
"%",
|
|
||||||
"Ï",
|
|
||||||
"Ì",
|
|
||||||
"Í",
|
|
||||||
"Į",
|
|
||||||
"Ī"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"O",
|
|
||||||
"Ô",
|
|
||||||
"Œ",
|
|
||||||
"%",
|
|
||||||
"Ö",
|
|
||||||
"Ò",
|
|
||||||
"Ó",
|
|
||||||
"Õ",
|
|
||||||
"Ø",
|
|
||||||
"Ō",
|
|
||||||
"º"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"P"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"A",
|
|
||||||
"À",
|
|
||||||
"Â",
|
|
||||||
"%",
|
|
||||||
"Æ",
|
|
||||||
"Á",
|
|
||||||
"Ä",
|
|
||||||
"Ã",
|
|
||||||
"Å",
|
|
||||||
"Ā",
|
|
||||||
"ª"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"S"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"D"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"F"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"G"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"H"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"J"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"K"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"L"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"Z"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"X"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"C",
|
|
||||||
"Ç",
|
|
||||||
"Ć",
|
|
||||||
"Č"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"V"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"B"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"N"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"M"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"#",
|
|
||||||
"!",
|
|
||||||
",",
|
|
||||||
"?",
|
|
||||||
"-",
|
|
||||||
":",
|
|
||||||
"'",
|
|
||||||
"@"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"1",
|
|
||||||
"¹",
|
|
||||||
"½",
|
|
||||||
"⅓",
|
|
||||||
"¼",
|
|
||||||
"⅛"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"2",
|
|
||||||
"²",
|
|
||||||
"⅔"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"3",
|
|
||||||
"³",
|
|
||||||
"¾",
|
|
||||||
"⅜"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"4",
|
|
||||||
"⁴"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"5",
|
|
||||||
"⅝"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"6"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"7",
|
|
||||||
"⅞"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"8"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"9"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"0",
|
|
||||||
"ⁿ",
|
|
||||||
"∅"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"@"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"#"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"$",
|
|
||||||
"¢",
|
|
||||||
"£",
|
|
||||||
"€",
|
|
||||||
"¥",
|
|
||||||
"₱"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"%",
|
|
||||||
"‰"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"&"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"-",
|
|
||||||
"_",
|
|
||||||
"–",
|
|
||||||
"—",
|
|
||||||
"·"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"+",
|
|
||||||
"±"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"(",
|
|
||||||
"<",
|
|
||||||
"{",
|
|
||||||
"["
|
|
||||||
],
|
|
||||||
[
|
|
||||||
")",
|
|
||||||
">",
|
|
||||||
"}",
|
|
||||||
"]"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"*",
|
|
||||||
"†",
|
|
||||||
"‡",
|
|
||||||
"★"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"\"",
|
|
||||||
"“",
|
|
||||||
"”",
|
|
||||||
"«",
|
|
||||||
"»"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"'",
|
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
":"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
";"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"!",
|
|
||||||
"¡"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"?",
|
|
||||||
"¿"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"_"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"/"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"…"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "opt+shift",
|
|
||||||
"mode": "locked",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"~"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"`"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"|"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"•",
|
|
||||||
"♪",
|
|
||||||
"♥",
|
|
||||||
"♠",
|
|
||||||
"♦",
|
|
||||||
"♣"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"√"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Π",
|
|
||||||
"π"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"÷"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"×"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¶",
|
|
||||||
"§"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"∆"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"£"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"€"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¥"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"^",
|
|
||||||
"↑",
|
|
||||||
"↓",
|
|
||||||
"←",
|
|
||||||
"→"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"°",
|
|
||||||
"′",
|
|
||||||
"″"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"=",
|
|
||||||
"≠",
|
|
||||||
"≈",
|
|
||||||
"∞"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"{"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"}"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"\\"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"©"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"®"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"™"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"℅"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"["
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"]"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"<",
|
|
||||||
"‹",
|
|
||||||
"≤",
|
|
||||||
"«"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
">",
|
|
||||||
"›",
|
|
||||||
"≥",
|
|
||||||
"»"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"…"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"locale": "fr-CA",
|
|
||||||
"name": "French Canada"
|
|
||||||
}
|
|
@ -6,20 +6,10 @@
|
|||||||
"rows": [
|
"rows": [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"a",
|
"q"
|
||||||
"à",
|
|
||||||
"â",
|
|
||||||
"%",
|
|
||||||
"æ",
|
|
||||||
"á",
|
|
||||||
"ä",
|
|
||||||
"ã",
|
|
||||||
"å",
|
|
||||||
"ā",
|
|
||||||
"ª"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"z"
|
"w"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"e",
|
"e",
|
||||||
@ -81,7 +71,17 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"q"
|
"a",
|
||||||
|
"à",
|
||||||
|
"â",
|
||||||
|
"%",
|
||||||
|
"æ",
|
||||||
|
"á",
|
||||||
|
"ä",
|
||||||
|
"ã",
|
||||||
|
"å",
|
||||||
|
"ā",
|
||||||
|
"ª"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"s"
|
"s"
|
||||||
@ -106,14 +106,11 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"l"
|
"l"
|
||||||
],
|
|
||||||
[
|
|
||||||
"m"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"w"
|
"z"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"x"
|
"x"
|
||||||
@ -134,11 +131,7 @@
|
|||||||
"n"
|
"n"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"'",
|
"m"
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -168,20 +161,10 @@
|
|||||||
"rows": [
|
"rows": [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"A",
|
"Q"
|
||||||
"À",
|
|
||||||
"Â",
|
|
||||||
"%",
|
|
||||||
"Æ",
|
|
||||||
"Á",
|
|
||||||
"Ä",
|
|
||||||
"Ã",
|
|
||||||
"Å",
|
|
||||||
"Ā",
|
|
||||||
"ª"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Z"
|
"W"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"E",
|
"E",
|
||||||
@ -243,7 +226,17 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"Q"
|
"A",
|
||||||
|
"À",
|
||||||
|
"Â",
|
||||||
|
"%",
|
||||||
|
"Æ",
|
||||||
|
"Á",
|
||||||
|
"Ä",
|
||||||
|
"Ã",
|
||||||
|
"Å",
|
||||||
|
"Ā",
|
||||||
|
"ª"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"S"
|
"S"
|
||||||
@ -268,14 +261,11 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"L"
|
"L"
|
||||||
],
|
|
||||||
[
|
|
||||||
"M"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"W"
|
"Z"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"X"
|
"X"
|
||||||
@ -296,11 +286,7 @@
|
|||||||
"N"
|
"N"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"'",
|
"M"
|
||||||
"‘",
|
|
||||||
"’",
|
|
||||||
"‹",
|
|
||||||
"›"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -383,10 +369,10 @@
|
|||||||
"#"
|
"#"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"€",
|
"$",
|
||||||
"¢",
|
"¢",
|
||||||
"£",
|
"£",
|
||||||
"$",
|
"€",
|
||||||
"¥",
|
"¥",
|
||||||
"₱"
|
"₱"
|
||||||
],
|
],
|
||||||
@ -524,16 +510,15 @@
|
|||||||
[
|
[
|
||||||
"£"
|
"£"
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
"¢"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"€"
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"¥"
|
"¥"
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"$",
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"^",
|
"^",
|
||||||
"↑",
|
"↑",
|
||||||
@ -609,6 +594,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"locale": "fr",
|
"locale": "fr-CA",
|
||||||
"name": "French"
|
"name": "French Canada"
|
||||||
}
|
}
|
@ -12,9 +12,7 @@
|
|||||||
"w"
|
"w"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"e",
|
"e"
|
||||||
"é",
|
|
||||||
"ë"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"r"
|
"r"
|
||||||
@ -23,58 +21,30 @@
|
|||||||
"t"
|
"t"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"y",
|
"y"
|
||||||
"ý",
|
|
||||||
"ÿ"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"u",
|
"u"
|
||||||
"ú",
|
|
||||||
"ü",
|
|
||||||
"û",
|
|
||||||
"ù",
|
|
||||||
"ū"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"i",
|
"i"
|
||||||
"í",
|
|
||||||
"ï"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"o",
|
"o"
|
||||||
"ó",
|
|
||||||
"ô",
|
|
||||||
"ò",
|
|
||||||
"õ",
|
|
||||||
"œ",
|
|
||||||
"ō"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"p"
|
"p"
|
||||||
],
|
|
||||||
[
|
|
||||||
"å"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"a",
|
"a"
|
||||||
"á",
|
|
||||||
"ä",
|
|
||||||
"à",
|
|
||||||
"â",
|
|
||||||
"ã",
|
|
||||||
"ā"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"s",
|
"s"
|
||||||
"ß",
|
|
||||||
"ś",
|
|
||||||
"š"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"d",
|
"d"
|
||||||
"ð"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"f"
|
"f"
|
||||||
@ -92,16 +62,7 @@
|
|||||||
"k"
|
"k"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"l",
|
"l"
|
||||||
"ł"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ø",
|
|
||||||
"ö"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"æ",
|
|
||||||
"ä"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -121,9 +82,7 @@
|
|||||||
"b"
|
"b"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"n",
|
"n"
|
||||||
"ñ",
|
|
||||||
"ń"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"m"
|
"m"
|
||||||
@ -162,9 +121,7 @@
|
|||||||
"W"
|
"W"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"E",
|
"E"
|
||||||
"É",
|
|
||||||
"Ë"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"R"
|
"R"
|
||||||
@ -173,58 +130,30 @@
|
|||||||
"T"
|
"T"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Y",
|
"Y"
|
||||||
"Ý",
|
|
||||||
"Ÿ"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"U",
|
"U"
|
||||||
"Ú",
|
|
||||||
"Ü",
|
|
||||||
"Û",
|
|
||||||
"Ù",
|
|
||||||
"Ū"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"I",
|
"I"
|
||||||
"Í",
|
|
||||||
"Ï"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"O",
|
"O"
|
||||||
"Ó",
|
|
||||||
"Ô",
|
|
||||||
"Ò",
|
|
||||||
"Õ",
|
|
||||||
"Œ",
|
|
||||||
"Ō"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"P"
|
"P"
|
||||||
],
|
|
||||||
[
|
|
||||||
"Å"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"A",
|
"A"
|
||||||
"Á",
|
|
||||||
"Ä",
|
|
||||||
"À",
|
|
||||||
"Â",
|
|
||||||
"Ã",
|
|
||||||
"Ā"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"S",
|
"S"
|
||||||
"SS",
|
|
||||||
"Ś",
|
|
||||||
"Š"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"D",
|
"D"
|
||||||
"Ð"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"F"
|
"F"
|
||||||
@ -242,16 +171,7 @@
|
|||||||
"K"
|
"K"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"L",
|
"L"
|
||||||
"Ł"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Ø",
|
|
||||||
"Ö"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Æ",
|
|
||||||
"Ä"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -271,9 +191,7 @@
|
|||||||
"B"
|
"B"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"N",
|
"N"
|
||||||
"Ñ",
|
|
||||||
"Ń"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"M"
|
"M"
|
||||||
@ -359,10 +277,10 @@
|
|||||||
"#"
|
"#"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"€",
|
"$",
|
||||||
"¢",
|
"¢",
|
||||||
"£",
|
"£",
|
||||||
"$",
|
"€",
|
||||||
"¥",
|
"¥",
|
||||||
"₱"
|
"₱"
|
||||||
],
|
],
|
||||||
@ -500,16 +418,15 @@
|
|||||||
[
|
[
|
||||||
"£"
|
"£"
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
"¢"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"€"
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"¥"
|
"¥"
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"$",
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"^",
|
"^",
|
||||||
"↑",
|
"↑",
|
||||||
|
@ -176,186 +176,7 @@
|
|||||||
"-",
|
"-",
|
||||||
":",
|
":",
|
||||||
"'",
|
"'",
|
||||||
"@",
|
"@"
|
||||||
" ๎",
|
|
||||||
"๏",
|
|
||||||
"๛",
|
|
||||||
"๚"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"level": "shift",
|
|
||||||
"mode": "latched",
|
|
||||||
"rows": [
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"+"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๑"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๒"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๓"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๔"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ู"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"฿"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๕"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๖"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๗"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๘"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๙"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"๐"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"\""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฎ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฑ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ธ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ํ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๊"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ณ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฯ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ญ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฐ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
","
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"ฤ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฆ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฏ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"โ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฌ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"็"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"๋"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ษ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ศ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ซ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฅ"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
"("
|
|
||||||
],
|
|
||||||
[
|
|
||||||
")"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฉ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฮ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฺ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"์"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"?"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฒ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฬ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"ฦ"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
","
|
|
||||||
],
|
|
||||||
[
|
|
||||||
" "
|
|
||||||
],
|
|
||||||
[
|
|
||||||
".",
|
|
||||||
"#",
|
|
||||||
"!",
|
|
||||||
",",
|
|
||||||
"?",
|
|
||||||
"-",
|
|
||||||
":",
|
|
||||||
"'",
|
|
||||||
"@",
|
|
||||||
" ๎",
|
|
||||||
"๏",
|
|
||||||
"๛",
|
|
||||||
"๚"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<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"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24.000001"
|
|
||||||
version="1.1"
|
|
||||||
id="svg19258">
|
|
||||||
<defs
|
|
||||||
id="defs19252" />
|
|
||||||
<metadata
|
|
||||||
id="metadata19255">
|
|
||||||
<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>
|
|
||||||
<g
|
|
||||||
id="g834"
|
|
||||||
transform="rotate(-90,-246.75894,471.75774)"
|
|
||||||
style="fill:#241f31">
|
|
||||||
<path
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 213.0007,724.40348 -10.3711,7.3945 v 0 a 1.5,1.5 0 0 0 -0.6308,1.2187 v 1.5 h 1.5 a 1.5,1.5 0 0 0 0.8711,-0.2793 l 8.6289,-6.1523 8.6289,6.1523 a 1.5,1.5 0 0 0 0.8711,0.2793 h 1.5 v -1.5 a 1.5,1.5 0 0 0 -0.6309,-1.2187 v 0 z"
|
|
||||||
id="path832" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.3 KiB |
@ -1,36 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<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"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24.000001"
|
|
||||||
version="1.1"
|
|
||||||
id="svg19258">
|
|
||||||
<defs
|
|
||||||
id="defs19252" />
|
|
||||||
<metadata
|
|
||||||
id="metadata19255">
|
|
||||||
<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>
|
|
||||||
<g
|
|
||||||
id="g872"
|
|
||||||
transform="matrix(0,-1,-1,0,742.51668,224.9988)"
|
|
||||||
style="fill:#241f31">
|
|
||||||
<path
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 213.0007,724.40348 -10.3711,7.3945 v 0 a 1.5,1.5 0 0 0 -0.6308,1.2187 v 1.5 h 1.5 a 1.5,1.5 0 0 0 0.8711,-0.2793 l 8.6289,-6.1523 8.6289,6.1523 a 1.5,1.5 0 0 0 0.8711,0.2793 h 1.5 v -1.5 a 1.5,1.5 0 0 0 -0.6309,-1.2187 v 0 z"
|
|
||||||
id="path870" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.3 KiB |
@ -1,94 +0,0 @@
|
|||||||
<?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="5.4116011mm"
|
|
||||||
height="5.1374583mm"
|
|
||||||
viewBox="0 0 5.4116011 5.1374583"
|
|
||||||
version="1.1"
|
|
||||||
id="svg5595"
|
|
||||||
inkscape:version="0.92.4 (unknown)"
|
|
||||||
sodipodi:docname="color-pick.svg">
|
|
||||||
<defs
|
|
||||||
id="defs5589">
|
|
||||||
<filter
|
|
||||||
inkscape:collect="always"
|
|
||||||
x="-0.10291173"
|
|
||||||
width="1.2058235"
|
|
||||||
y="-0.065432459"
|
|
||||||
height="1.1308649"
|
|
||||||
id="filter5601"
|
|
||||||
style="color-interpolation-filters:sRGB">
|
|
||||||
<feGaussianBlur
|
|
||||||
inkscape:collect="always"
|
|
||||||
stdDeviation="0.610872"
|
|
||||||
id="feGaussianBlur5603" />
|
|
||||||
</filter>
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="15.839192"
|
|
||||||
inkscape:cx="39.387731"
|
|
||||||
inkscape:cy="12.554326"
|
|
||||||
inkscape:document-units="mm"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1016"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0" />
|
|
||||||
<metadata
|
|
||||||
id="metadata5592">
|
|
||||||
<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>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-103.12753,-146.26461)">
|
|
||||||
<circle
|
|
||||||
r="8.4810486"
|
|
||||||
cy="9.82623"
|
|
||||||
cx="10.226647"
|
|
||||||
id="circle7584"
|
|
||||||
style="color:#000000;display:inline;overflow:visible;opacity:0.6;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter5601)"
|
|
||||||
transform="matrix(0.26458333,0,0,0.26458333,103.12753,146.26461)" />
|
|
||||||
<path
|
|
||||||
style="color:#000000;display:inline;overflow:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.26399338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
|
||||||
d="m 108.07728,148.64122 c 0,1.2393 -1.00465,2.24394 -2.24395,2.24394 -1.23929,0 -2.24716,-1.00465 -2.25221,-2.24394 l -0.009,-2.24458 2.26136,6.4e-4 c 1.2393,3.4e-4 2.24395,1.00464 2.24395,2.24394 z"
|
|
||||||
id="path7523-7"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ssscss" />
|
|
||||||
<circle
|
|
||||||
style="color:#000000;display:inline;overflow:visible;opacity:1;vector-effect:none;fill:#50dbb5;fill-opacity:1;stroke:none;stroke-width:0.36885914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
|
||||||
id="path7482-1"
|
|
||||||
cx="105.83707"
|
|
||||||
cy="148.64352"
|
|
||||||
r="1.844296" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.7 KiB |
@ -1,4 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
|
|
||||||
<path d="M13.98 1.99a1 1 0 0 0-.687.303l-.984.984A8 8 0 0 0 8 2 8 8 0 0 0 .262 8.01a8 8 0 0 0 2.943 4.37l-.912.913a1 1 0 1 0 1.414 1.414l11-11a1 1 0 0 0-.727-1.717zM8 4a4 4 0 0 1 2.611.974l-1.42 1.42A2 2 0 0 0 8 6a2 2 0 0 0-2 2 2 2 0 0 0 .396 1.19l-1.42 1.42A4 4 0 0 1 4 8a4 4 0 0 1 4-4zm7.03 2.209l-3.344 3.343a4 4 0 0 1-2.127 2.127l-2.28 2.28a8 8 0 0 0 .721.04 8 8 0 0 0 7.738-6.01 8 8 0 0 0-.709-1.78zm-7.53.79a.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5.5.5 0 0 1 .5-.5z" fill="#2e3436"/>
|
|
||||||
</svg>
|
|
||||||
|
|
Before Width: | Height: | Size: 572 B |
@ -1,27 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" 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" width="16" viewBox="0 0 16 16" version="1.1" id="svg7384" height="16">
|
|
||||||
<metadata id="metadata90">
|
|
||||||
<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>Gnome Symbolic Icon Theme</dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<title id="title9167">Gnome Symbolic Icon Theme</title>
|
|
||||||
<defs id="defs7386">
|
|
||||||
<linearGradient osb:paint="solid" id="linearGradient7212">
|
|
||||||
<stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7214"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<g transform="translate(-341.0002,-13.000323)" style="display:inline" id="layer9"/>
|
|
||||||
<g transform="translate(-100,-380.00032)" id="layer1"/>
|
|
||||||
<g transform="translate(-100,-380.00032)" style="display:inline" id="layer10">
|
|
||||||
<path d="m 108,382 a 8,8 0 0 0 -7.73828,6.00977 A 8,8 0 0 0 108,394 8,8 0 0 0 115.73828,387.99023 8,8 0 0 0 108,382 Z m 0,2 a 4,4 0 0 1 4,4 4,4 0 0 1 -4,4 4,4 0 0 1 -4,-4 4,4 0 0 1 4,-4 z" id="path2314" style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"/>
|
|
||||||
<path id="path2318" d="m 110,388.00003 a 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 2,2 0 0 1 2,2 z" style="vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
|
|
||||||
</g>
|
|
||||||
<g transform="translate(-100,-380.00032)" id="g6387"/>
|
|
||||||
<g transform="translate(-100,-380.00032)" id="layer11"/>
|
|
||||||
</svg>
|
|
||||||
|
|
Before Width: | Height: | Size: 2.1 KiB |
@ -1,42 +1,14 @@
|
|||||||
$variant: 'dark';
|
|
||||||
|
|
||||||
@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
|
@import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors
|
||||||
@import "gnome-shell-sass/_drawing";
|
@import "gnome-shell-sass/_drawing";
|
||||||
@import "gnome-shell-sass/_common";
|
@import "gnome-shell-sass/_common";
|
||||||
@import "gnome-shell-sass/_widgets";
|
|
||||||
|
|
||||||
//force symbolic icons
|
//force symbolic icons
|
||||||
stage {
|
stage {
|
||||||
-st-icon-style: symbolic;
|
-st-icon-style: symbolic;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-switch { width: 48px; }
|
.toggle-switch { width: 48px; }
|
||||||
.toggle-switch {
|
.toggle-switch-us, .toggle-switch-intl {
|
||||||
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
|
background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg");
|
||||||
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
&:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
//force opaque panel
|
|
||||||
#panel {
|
|
||||||
&.login-screen,
|
|
||||||
&.unlock-screen,
|
|
||||||
&:overview {
|
|
||||||
background-color: #000;
|
|
||||||
|
|
||||||
.panel-corner {
|
|
||||||
-panel-corner-opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-button {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//thumbnail app icons no dropshadow and forced color
|
|
||||||
.window-picker .icon-dropshadow {
|
|
||||||
icon-shadow: none;
|
|
||||||
background-color: $osd_bg_color;
|
|
||||||
padding: $base_padding * 2;
|
|
||||||
border-radius: $modal_radius;
|
|
||||||
}
|
|
||||||
|
@ -11,6 +11,6 @@ will then be synchronized periodically before releases.
|
|||||||
GNOME Shell Sass is distributed under the terms of the GNU General Public
|
GNOME Shell Sass is distributed under the terms of the GNU General Public
|
||||||
License, version 2 or later. See the [COPYING][license] file for details.
|
License, version 2 or later. See the [COPYING][license] file for details.
|
||||||
|
|
||||||
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/HEAD/data/theme/gnome-shell-sass
|
[shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/data/theme/gnome-shell-sass
|
||||||
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
|
[sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass
|
||||||
[license]: COPYING
|
[license]: COPYING
|
||||||
|
@ -1,39 +1,39 @@
|
|||||||
// When color definition differs for dark and light variant,
|
// When color definition differs for dark and light variant,
|
||||||
// it gets @if ed depending on $variant
|
// it gets @if ed depending on $variant
|
||||||
|
|
||||||
$base_color: if($variant == 'light', #fff, lighten(desaturate(#241f31, 20%), 2%));
|
|
||||||
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
|
|
||||||
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
|
|
||||||
|
|
||||||
$selected_fg_color: #fff;
|
$base_color: if($variant =='light', #ffffff, #292929);
|
||||||
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
|
$bg_color: if($variant =='light', #ededed, #393f3f);
|
||||||
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
|
$fg_color: if($variant =='light', #2e3436, #eeeeec);
|
||||||
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
|
|
||||||
$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
|
$selected_fg_color: #ffffff;
|
||||||
$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
|
$selected_bg_color: if($variant == 'light', #4a90d9, darken(#4a90d9,20%));
|
||||||
$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
|
$selected_borders_color: if($variant=='light', darken($selected_bg_color, 30%),
|
||||||
|
darken($selected_bg_color, 20%));
|
||||||
|
$borders_color: if($variant =='light', darken($bg_color,30%), darken($bg_color,12%));
|
||||||
|
$borders_edge: if($variant =='light', white, transparentize($fg_color, 0.9));
|
||||||
|
$link_color: if($variant == 'light', darken($selected_bg_color,10%),
|
||||||
|
lighten($selected_bg_color,20%));
|
||||||
|
$link_visited_color: if($variant == 'light', darken($selected_bg_color,20%),
|
||||||
|
lighten($selected_bg_color,10%));
|
||||||
$top_hilight: $borders_edge;
|
$top_hilight: $borders_edge;
|
||||||
|
|
||||||
$warning_color: #f57900;
|
$warning_color: #f57900;
|
||||||
$error_color: #ff8080;
|
$error_color: #cc0000;
|
||||||
$success_color: if($variant == 'light', #33d17a, darken(#33d17a, 10%));
|
$success_color: if($variant =='light', #73d216, darken(#73d216,10%));
|
||||||
$destructive_color: if($variant == 'light', #e01b24, darken(#e01b24, 10%));
|
$destructive_color: if($variant =='light', #ef2929, darken(#ef2929,10%));
|
||||||
|
|
||||||
$osd_fg_color: #eeeeec;
|
$osd_fg_color: #eeeeec;
|
||||||
$osd_text_color: white;
|
$osd_bg_color: #2e3436;
|
||||||
$osd_bg_color: transparentize(darken(desaturate(#3d3846, 100%), 12%),0.04);
|
|
||||||
$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
|
|
||||||
$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
|
|
||||||
$osd_borders_color: transparentize(black, 0.3);
|
$osd_borders_color: transparentize(black, 0.3);
|
||||||
$osd_outer_borders_color: transparentize(white, 0.84);
|
$osd_outer_borders_color: transparentize(white, 0.9);
|
||||||
|
|
||||||
$shadow_color: if($variant == 'light', rgba(0,0,0,0.1), rgba(0,0,0,0.2));
|
$tooltip_borders_color: $osd_outer_borders_color;
|
||||||
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
|
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
|
$insensitive_bg_color: mix($bg_color, $base_color, 60%);
|
||||||
$insensitive_borders_color: mix($borders_color, $base_color, 60%);
|
$insensitive_borders_color: $borders_color;
|
||||||
|
|
||||||
//colors for the backdrop state, derived from the main colors.
|
//colors for the backdrop state, derived from the main colors.
|
||||||
$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
|
$backdrop_base_color: if($variant =='light', darken($base_color,1%), lighten($base_color,1%));
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// generic drawing of more complex things
|
// generic drawing of more complex things
|
||||||
|
|
||||||
@function draw_widget_edge($c:$borders_edge) {
|
@function _widget_edge($c:$borders_edge) {
|
||||||
// outer highlight "used" on most widgets
|
// outer highlight "used" on most widgets
|
||||||
@return 0 1px $c;
|
@return 0 1px $c;
|
||||||
}
|
}
|
||||||
@ -13,7 +13,7 @@
|
|||||||
//font-size: ($size / $base) * 1rem;
|
//font-size: ($size / $base) * 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin draw_shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
|
@mixin _shadows($shadow1, $shadow2:none, $shadow3:none, $shadow4:none) {
|
||||||
//
|
//
|
||||||
// Helper function to stack up to 4 box-shadows;
|
// Helper function to stack up to 4 box-shadows;
|
||||||
//
|
//
|
||||||
@ -31,22 +31,25 @@
|
|||||||
//
|
//
|
||||||
// $t: entry type
|
// $t: entry type
|
||||||
// $fc: focus color
|
// $fc: focus color
|
||||||
// $edge: set to none to not draw the bottom edge or specify a color to not use the default one
|
// $edge: set to none to not draw the bottom edge or specify a color to not
|
||||||
|
// use the default one
|
||||||
//
|
//
|
||||||
// possible $t values:
|
// possible $t values:
|
||||||
// normal, focus, insensitive
|
// normal, focus, insensitive
|
||||||
//
|
//
|
||||||
|
$_inner_shadows: inset 0 2px 4px transparentize(black, 0.6);
|
||||||
|
|
||||||
@if $t==normal {
|
@if $t==normal {
|
||||||
background-color: $base_color;
|
background-color: $base_color;
|
||||||
border-color: $borders_color;
|
border-color: $borders_color;
|
||||||
|
@include _shadows($_inner_shadows);
|
||||||
|
|
||||||
}
|
}
|
||||||
@if $t==focus {
|
@if $t==focus {
|
||||||
|
@include _shadows($_inner_shadows);
|
||||||
border-color: if($fc==$selected_bg_color,
|
border-color: if($fc==$selected_bg_color,
|
||||||
$selected_borders_color,
|
$selected_borders_color,
|
||||||
darken($fc,35%));
|
darken($fc,35%));
|
||||||
box-shadow: inset 0 0 0 2px $fc;
|
|
||||||
}
|
}
|
||||||
@if $t==hover { }
|
@if $t==hover { }
|
||||||
@if $t==insensitive {
|
@if $t==insensitive {
|
||||||
@ -58,39 +61,36 @@
|
|||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
|
|
||||||
@function draw_border_color ($c) {
|
@function _border_color ($c) { @return darken($c,25%); } // colored buttons want
|
||||||
//
|
// the border form the
|
||||||
// colored buttons want the border form the base color
|
// base color
|
||||||
//
|
|
||||||
@return if($variant == 'light', darken($c, 18%), darken($c, 4%));
|
|
||||||
}
|
|
||||||
|
|
||||||
@function draw_text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
|
@function _text_shadow_color ($tc:$fg_color, $bg:$bg_color) {
|
||||||
//
|
//
|
||||||
// calculate the color of text shadows
|
// calculate the color of text shadows
|
||||||
//
|
//
|
||||||
// $tc is the text color
|
// $tc is the text color
|
||||||
// $bg is the background color
|
// $bg is the background color
|
||||||
//
|
//
|
||||||
$lbg: lightness($bg)/100%;
|
$_lbg: lightness($bg)/100%;
|
||||||
@if lightness($tc)<50% { @return rgba(255,255,255,$lbg/($lbg*1.3)); }
|
@if lightness($tc)<50% { @return transparentize(white,1-$_lbg/($_lbg*1.3)); }
|
||||||
@else { @return rgba(0,0,0,1-$lbg*0.8); }
|
@else { @return transparentize(black,$_lbg*0.8); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@function draw_button_hilight_color($c) {
|
@function _button_hilight_color($c) {
|
||||||
//
|
//
|
||||||
// calculate the right top highlight color for buttons
|
// calculate the right top hilight color for buttons
|
||||||
//
|
//
|
||||||
// $c: base color;
|
// $c: base color;
|
||||||
//
|
//
|
||||||
@if lightness($c)>90% { @return white; }
|
@if lightness($c)>90% { @return white; }
|
||||||
@else if lightness($c)>80% { @return rgba(255,255,255, 0.7); }
|
@else if lightness($c)>80% { @return transparentize(white, 0.3); }
|
||||||
@else if lightness($c)>50% { @return rgba(255,255,255, 0.5); }
|
@else if lightness($c)>50% { @return transparentize(white, 0.5); }
|
||||||
@else if lightness($c)>40% { @return rgba(255,255,255, 0.3); }
|
@else if lightness($c)>40% { @return transparentize(white, 0.7); }
|
||||||
@else { @return rgba(255,255,255, 0.1); }
|
@else { @return transparentize(white, 0.9); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin draw_button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
|
@mixin _button_text_shadow ($tc:$fg_color, $bg:$bg_color) {
|
||||||
//
|
//
|
||||||
// helper function for the text emboss effect
|
// helper function for the text emboss effect
|
||||||
//
|
//
|
||||||
@ -99,19 +99,19 @@
|
|||||||
// TODO: this functions needs a way to deal with special cases
|
// TODO: this functions needs a way to deal with special cases
|
||||||
//
|
//
|
||||||
|
|
||||||
$shadow: draw_text_shadow_color($tc, $bg);
|
$_shadow: _text_shadow_color($tc, $bg);
|
||||||
|
|
||||||
@if lightness($tc)<50% {
|
@if lightness($tc)<50% {
|
||||||
text-shadow: 0 1px $shadow;
|
text-shadow: 0 1px $_shadow;
|
||||||
icon-shadow: 0 1px $shadow;
|
icon-shadow: 0 1px $_shadow;
|
||||||
}
|
}
|
||||||
@else {
|
@else {
|
||||||
text-shadow: 0 -1px $shadow;
|
text-shadow: 0 -1px $_shadow;
|
||||||
icon-shadow: 0 -1px $shadow;
|
icon-shadow: 0 -1px $_shadow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin button($t, $c:$bg_color, $tc:$fg_color, $edge: $borders_edge, $shadow: $shadow_color) {
|
@mixin button($t, $c:$osd_bg_color, $tc:$fg_color, $edge: $borders_edge) {
|
||||||
//
|
//
|
||||||
// Button drawing function
|
// Button drawing function
|
||||||
//
|
//
|
||||||
@ -120,8 +120,6 @@
|
|||||||
// $tc: optional text color for colored* types
|
// $tc: optional text color for colored* types
|
||||||
// $edge: set to none to not draw the bottom edge or specify a color to not
|
// $edge: set to none to not draw the bottom edge or specify a color to not
|
||||||
// use the default one
|
// use the default one
|
||||||
// $shadow: set to none to not draw the drop shadow or specify a color to not
|
|
||||||
// use the default one
|
|
||||||
//
|
//
|
||||||
// possible $t values:
|
// possible $t values:
|
||||||
// normal, hover, active, insensitive, insensitive-active,
|
// normal, hover, active, insensitive, insensitive-active,
|
||||||
@ -129,104 +127,95 @@
|
|||||||
// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
|
// osd, osd-hover, osd-active, osd-insensitive, osd-backdrop, undecorated
|
||||||
//
|
//
|
||||||
|
|
||||||
$hilight_color: draw_button_hilight_color($c);
|
$_hilight_color: _button_hilight_color($c);
|
||||||
$button_edge: if($edge == none, none, draw_widget_edge($edge));
|
$_button_edge: if($edge == none, none, _widget_edge($edge));
|
||||||
$blank_edge: if($edge == none, none, draw_widget_edge(transparentize($edge,1)));
|
$_blank_edge: if($edge == none, none, _widget_edge(transparentize($edge,1)));
|
||||||
$button_shadow: if($shadow == none, none, 0 1px 1px 0 $shadow);
|
|
||||||
|
|
||||||
// normal button
|
|
||||||
@if $t==normal {
|
@if $t==normal {
|
||||||
color: $tc;
|
//
|
||||||
background-color: lighten($c, 3%);
|
// normal button
|
||||||
border-color: draw_border_color($c);
|
//
|
||||||
@include draw_shadows($button_shadow);
|
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.5),
|
||||||
// box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
|
$osd_bg_color);
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// focused button
|
color: $osd_fg_color;
|
||||||
|
background-color: $_bg;
|
||||||
|
border-color: $osd_borders_color;
|
||||||
|
box-shadow: inset 0 1px lighten($osd_bg_color,10%);
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
}
|
||||||
@if $t==focus {
|
@if $t==focus {
|
||||||
color: $tc;
|
//
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
// focused button
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
//
|
||||||
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
|
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
|
||||||
//border-color: $selected_bg_color;
|
lighten($osd_bg_color,3%));
|
||||||
|
|
||||||
|
color: $osd_fg_color;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 1px $selected_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
// hover button
|
|
||||||
@else if $t==hover {
|
@else if $t==hover {
|
||||||
color: $tc;
|
//
|
||||||
background-color: lighten($c, if($variant == 'light', 8%, 5%));
|
// active osd button
|
||||||
border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), draw_border_color($c));
|
//
|
||||||
@include draw_shadows($button_shadow);
|
$_bg: if($c!=$osd_bg_color, transparentize($c, 0.3),
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
lighten($osd_bg_color,3%));
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// active button
|
color: white;
|
||||||
|
border-color: $osd_borders_color;
|
||||||
|
background-color: $_bg;
|
||||||
|
box-shadow: inset 0 1px lighten($osd_bg_color,20%);
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
|
||||||
|
}
|
||||||
@else if $t==active {
|
@else if $t==active {
|
||||||
color: $tc;
|
//
|
||||||
background-color: darken($c,3%);
|
// active osd button
|
||||||
border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
|
//
|
||||||
|
$_bg: if($c!=$bg_color, $c, $osd_borders_color);
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
border-color: $osd_borders_color;
|
||||||
|
background-color: $selected_bg_color;
|
||||||
|
// This should be none, but it's creating some issues with borders, so to
|
||||||
|
// workaround it for now, use inset wich goes through a different code path.
|
||||||
|
// see https://bugzilla.gnome.org/show_bug.cgi?id=752934
|
||||||
|
box-shadow: inset 0 0 black;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
box-shadow: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// insensitive button
|
|
||||||
@else if $t==insensitive {
|
@else if $t==insensitive {
|
||||||
|
//
|
||||||
|
// insensitive osd button
|
||||||
|
//
|
||||||
|
$_bg: transparentize(mix($insensitive_fg_color,$osd_bg_color,20%),0.3);
|
||||||
|
|
||||||
color: $insensitive_fg_color;
|
color: $insensitive_fg_color;
|
||||||
border-color: $insensitive_borders_color;
|
border-color: $osd_borders_color;
|
||||||
background-color: $insensitive_bg_color;
|
background-color: $_bg;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset
|
|
||||||
@else if $t==undecorated {
|
@else if $t==undecorated {
|
||||||
|
//
|
||||||
|
// reset
|
||||||
|
//
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
@include draw_shadows(inset 0 1px rgba(255,255,255,0),$blank_edge);
|
|
||||||
|
@include _shadows(inset 0 1px transparentize(white,1),
|
||||||
|
$_blank_edge);
|
||||||
|
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// overview icons
|
|
||||||
@mixin overview-icon($color) {
|
|
||||||
.overview-icon {
|
|
||||||
@extend %icon_tile;
|
|
||||||
color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:selected {
|
|
||||||
.overview-icon {
|
|
||||||
background-color: transparentize($color, .9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
.overview-icon {
|
|
||||||
background-color: transparentize($color, .7);
|
|
||||||
// border-color: $selected_bg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:drop {
|
|
||||||
.overview-icon {
|
|
||||||
border: 2px solid $selected_bg_color; //already 2px transparent so no jumping
|
|
||||||
background-color: transparentize($selected_bg_color, .8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,
|
|
||||||
&:checked {
|
|
||||||
.overview-icon {
|
|
||||||
background-color: transparentize(darken($osd_bg_color, 10%), .5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -22,11 +22,10 @@ $destructive_color: darken(#ef2929,10%);
|
|||||||
|
|
||||||
$osd_fg_color: #eeeeec;
|
$osd_fg_color: #eeeeec;
|
||||||
$osd_bg_color: #2e3436;
|
$osd_bg_color: #2e3436;
|
||||||
$osd_borders_color: rgba(0,0,0, 0.7);
|
$osd_borders_color: transparentize(black, 0.3);
|
||||||
$osd_outer_borders_color: rgba(255,255,255, 0.1);
|
$osd_outer_borders_color: transparentize(white, 0.9);
|
||||||
|
|
||||||
$shadow_color: rgba(0,0,0, 0.1);
|
$tooltip_borders_color: $osd_outer_borders_color;
|
||||||
$system_bg_color: desaturate(#241f31,100%); //neutralize the HIG color
|
|
||||||
|
|
||||||
//insensitive state derived colors
|
//insensitive state derived colors
|
||||||
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
//
|
|
||||||
// Shell widgets stylesheets are placed in separate .scss files
|
|
||||||
// in 'widgets' and imported into the main stylesheet in this file.
|
|
||||||
// To create or update a widget for the shell modify the list below.
|
|
||||||
//
|
|
||||||
|
|
||||||
/* WIDGETS */
|
|
||||||
|
|
||||||
// Primary widgets
|
|
||||||
@import 'widgets/base';
|
|
||||||
@import 'widgets/entries';
|
|
||||||
@import 'widgets/buttons';
|
|
||||||
@import 'widgets/check-box';
|
|
||||||
@import 'widgets/switches';
|
|
||||||
@import 'widgets/slider';
|
|
||||||
@import 'widgets/scrollbars';
|
|
||||||
// Popovers
|
|
||||||
@import 'widgets/popovers';
|
|
||||||
@import 'widgets/calendar';
|
|
||||||
@import 'widgets/message-list';
|
|
||||||
@import 'widgets/ibus-popup';
|
|
||||||
// Notifications
|
|
||||||
@import 'widgets/notifications';
|
|
||||||
@import 'widgets/hotplug';
|
|
||||||
// Dialogs
|
|
||||||
@import 'widgets/dialogs';
|
|
||||||
@import 'widgets/network-dialog';
|
|
||||||
// OSDs
|
|
||||||
@import 'widgets/osd';
|
|
||||||
@import 'widgets/switcher-popup';
|
|
||||||
@import 'widgets/workspace-switcher';
|
|
||||||
// Panel
|
|
||||||
@import 'widgets/panel';
|
|
||||||
@import 'widgets/corner-ripple';
|
|
||||||
// Overview
|
|
||||||
@import 'widgets/overview';
|
|
||||||
@import 'widgets/window-picker';
|
|
||||||
@import 'widgets/search-entry';
|
|
||||||
@import 'widgets/search-results';
|
|
||||||
@import 'widgets/dash';
|
|
||||||
@import 'widgets/app-grid';
|
|
||||||
@import 'widgets/workspace-thumbnails';
|
|
||||||
// A11y / misc
|
|
||||||
@import 'widgets/a11y';
|
|
||||||
@import 'widgets/misc';
|
|
||||||
@import 'widgets/tiled-previews';
|
|
||||||
@import 'widgets/keyboard';
|
|
||||||
@import 'widgets/looking-glass';
|
|
||||||
// Lock / login screens
|
|
||||||
@import 'widgets/login-dialog';
|
|
||||||
@import 'widgets/screen-shield';
|
|
||||||
|
|
||||||
@import 'widgets/realms';
|
|
@ -1,24 +0,0 @@
|
|||||||
// Pointer location
|
|
||||||
.ripple-pointer-location {
|
|
||||||
width: $ripple_size;
|
|
||||||
height: $ripple_size;
|
|
||||||
border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve
|
|
||||||
background-color: lighten(transparentize($selected_bg_color, 0.7), 30%);
|
|
||||||
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pointer accessibility notifications
|
|
||||||
.pie-timer {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
-pie-border-width: 3px;
|
|
||||||
-pie-border-color: $selected_bg_color;
|
|
||||||
-pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Screen zoom/Magnifier
|
|
||||||
.magnifier-zoom-region {
|
|
||||||
border: 2px solid $selected_bg_color;
|
|
||||||
|
|
||||||
&.full-screen { border-width: 0; }
|
|
||||||
}
|
|
@ -1,167 +0,0 @@
|
|||||||
/* App Grid */
|
|
||||||
|
|
||||||
$app_icon_size: 96px;
|
|
||||||
|
|
||||||
// app icons
|
|
||||||
.icon-grid {
|
|
||||||
row-spacing: $base_spacing * 2;
|
|
||||||
column-spacing: $base_spacing * 2;
|
|
||||||
max-row-spacing: $base_spacing * 12;
|
|
||||||
max-column-spacing: $base_spacing * 12;
|
|
||||||
page-padding-top: $base_padding * 4;
|
|
||||||
page-padding-bottom: $base_padding * 4;
|
|
||||||
page-padding-left: $base_padding * 2;
|
|
||||||
page-padding-right: $base_padding * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* App Icons */
|
|
||||||
|
|
||||||
$app_grid_fg_color: #fff;
|
|
||||||
|
|
||||||
// Icon tiles in the app grid
|
|
||||||
.app-well-app,
|
|
||||||
%app-well-app {
|
|
||||||
@include overview-icon($app_grid_fg_color);
|
|
||||||
|
|
||||||
.overview-icon.overview-icon-with-label {
|
|
||||||
padding: 10px 8px 5px 8px;
|
|
||||||
|
|
||||||
> StBoxLayout {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* App Folders */
|
|
||||||
.app-well-app.app-folder {
|
|
||||||
background-color: $dash_background_color;
|
|
||||||
border-radius: $base_border_radius + 4px; // same as %icon_tile
|
|
||||||
}
|
|
||||||
|
|
||||||
// expanded folder
|
|
||||||
.app-folder-dialog { //style like the dash
|
|
||||||
border-radius: $modal_radius * 1.5;
|
|
||||||
background-color: $dash_background_color;
|
|
||||||
padding: 12px 0px 12px 0px;
|
|
||||||
|
|
||||||
& .folder-name-container {
|
|
||||||
padding: 24px 36px 0;
|
|
||||||
spacing: 12px;
|
|
||||||
|
|
||||||
& .folder-name-label,
|
|
||||||
& .folder-name-entry {
|
|
||||||
font-size: 18pt;
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
|
|
||||||
& .folder-name-entry { width: 300px }
|
|
||||||
|
|
||||||
/* FIXME: this is to keep the label in sync with the entry */
|
|
||||||
& .folder-name-label { padding: 5px 7px; color: $osd_fg_color; }
|
|
||||||
|
|
||||||
& .edit-folder-button {
|
|
||||||
@extend %button;
|
|
||||||
|
|
||||||
padding: 0;
|
|
||||||
width: 36px;
|
|
||||||
height: 36px;
|
|
||||||
border-radius: 18px;
|
|
||||||
|
|
||||||
& > StIcon { icon-size: 16px }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& .icon-grid {
|
|
||||||
row-spacing: $base_spacing * 2;
|
|
||||||
column-spacing: $base_spacing * 5;
|
|
||||||
page-padding-top: 0;
|
|
||||||
page-padding-bottom: 0;
|
|
||||||
page-padding-left: 0;
|
|
||||||
page-padding-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
& .page-indicators {
|
|
||||||
margin-bottom: 18px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.app-folder-dialog-container {
|
|
||||||
padding: 12px;
|
|
||||||
width: 620px;
|
|
||||||
height: 620px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Running app indicator (also shown in dash)
|
|
||||||
.app-well-app-running-dot {
|
|
||||||
height: 5px;
|
|
||||||
width: 5px;
|
|
||||||
border-radius:5px;
|
|
||||||
background-color: $osd_fg_color;
|
|
||||||
margin-bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rename popup for app folders
|
|
||||||
.rename-folder-popup {
|
|
||||||
.rename-folder-popup-item {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
&:ltr, &:rtl { padding: 0 $base_padding * 2; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// right-click app menu
|
|
||||||
.app-menu {
|
|
||||||
max-width: 27.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
// App Grid pagination indicators
|
|
||||||
.page-indicator {
|
|
||||||
padding: $base_padding $base_padding * 2 0;
|
|
||||||
|
|
||||||
.page-indicator-icon {
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
border-radius: 10px; // the same as height&width
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.apps-scroll-view {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// shutdown and other actions in the grid
|
|
||||||
.system-action-icon {
|
|
||||||
background-color: rgba(0,0,0,0.8);
|
|
||||||
color: #fff;
|
|
||||||
border-radius: 99px;
|
|
||||||
icon-size: $app_icon_size * 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-navigation-hint {
|
|
||||||
width: 300px;
|
|
||||||
|
|
||||||
&.dnd {
|
|
||||||
background: rgba(255, 255, 255, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.next:ltr,
|
|
||||||
&.previous:rtl {
|
|
||||||
background-gradient-start: rgba(255, 255, 255, 0.05);
|
|
||||||
background-gradient-end: transparent;
|
|
||||||
background-gradient-direction: horizontal;
|
|
||||||
border-radius: 15px 0px 0px 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.previous:ltr,
|
|
||||||
&.next:rtl {
|
|
||||||
background-gradient-start: transparent;
|
|
||||||
background-gradient-end: rgba(255, 255, 255, 0.05);
|
|
||||||
background-gradient-direction: horizontal;
|
|
||||||
border-radius: 0px 15px 15px 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-navigation-arrow {
|
|
||||||
margin: 6px;
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
// Links
|
|
||||||
.shell-link {
|
|
||||||
color: $link_color;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: lighten($link_color, 10%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Outline for low res icons
|
|
||||||
.lowres-icon {
|
|
||||||
icon-shadow: 0 1px 2px rgba(black, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dropshadow for large icons
|
|
||||||
.icon-dropshadow {
|
|
||||||
icon-shadow: 0 1px 5px rgba(black, 0.8);
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
/* Buttons */
|
|
||||||
|
|
||||||
.button {
|
|
||||||
@extend %button; // that's it
|
|
||||||
}
|
|
@ -1,291 +0,0 @@
|
|||||||
/* Date/Time Menu */
|
|
||||||
|
|
||||||
.clock-display-box {
|
|
||||||
spacing: 2px;
|
|
||||||
|
|
||||||
.clock {
|
|
||||||
padding-left: $base_padding * 2;
|
|
||||||
padding-right: $base_padding * 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// overall menu
|
|
||||||
#calendarArea {
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calendar menu side column
|
|
||||||
.datemenu-calendar-column {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
border: 0 solid $bubble_borders_color;
|
|
||||||
padding: 0 $base_padding * 2;
|
|
||||||
|
|
||||||
&:ltr {margin-right: $base_margin * 2; border-left-width: 1px; }
|
|
||||||
&:rtl {margin-left: $base_margin * 2; border-right-width: 1px; }
|
|
||||||
|
|
||||||
.datemenu-displays-section {
|
|
||||||
}
|
|
||||||
|
|
||||||
.datemenu-displays-box {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.events-section-title {
|
|
||||||
@include notification_bubble($flat: true);
|
|
||||||
color: desaturate(darken($fg_color,40%), 10%);
|
|
||||||
font-weight: bold;
|
|
||||||
padding: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* today button (the date) */
|
|
||||||
.datemenu-today-button {
|
|
||||||
@include notification_bubble($flat: true);
|
|
||||||
padding: $base_padding * 1.5;
|
|
||||||
|
|
||||||
// weekday label
|
|
||||||
.day-label {
|
|
||||||
@include fontsize($base_font_size+1);
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
// date label
|
|
||||||
.date-label {
|
|
||||||
@include fontsize($base_font_size+7);
|
|
||||||
font-weight: 1000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calendar */
|
|
||||||
.calendar {
|
|
||||||
@include notification_bubble;
|
|
||||||
padding: $base_padding;
|
|
||||||
|
|
||||||
// month
|
|
||||||
.calendar-month-label {
|
|
||||||
color: lighten($fg_color,5%);
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 8px 0;
|
|
||||||
&:focus {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// prev/next month icons
|
|
||||||
.calendar-change-month-back StIcon,
|
|
||||||
.calendar-change-month-forward StIcon {
|
|
||||||
icon-size: $base_icon_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pager-button {
|
|
||||||
background-color: transparent;
|
|
||||||
height: 32px;
|
|
||||||
width: 32px;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
&:hover, &:focus { background-color: lighten($hover_bg_color, 5%); }
|
|
||||||
&:active { background-color: $active_bg_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$calendar_day_size: 32px;
|
|
||||||
|
|
||||||
.calendar-day-base {
|
|
||||||
@include fontsize($base_font_size - 3);
|
|
||||||
text-align: center;
|
|
||||||
width: $calendar_day_size;
|
|
||||||
height: $calendar_day_size;
|
|
||||||
padding: 0;
|
|
||||||
margin: 2px;
|
|
||||||
border-radius: $calendar_day_size * 0.5 + 2px;
|
|
||||||
border: 1px solid transparent; //avoid jumparound due to today
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
&:hover, &:focus { background-color: $hover_bg_color; }
|
|
||||||
&:active,&:selected {
|
|
||||||
color: lighten($fg_color,10%);
|
|
||||||
background-color: darken($bg_color,5%);
|
|
||||||
}
|
|
||||||
|
|
||||||
// day of week heading
|
|
||||||
&.calendar-day-heading {
|
|
||||||
color: lighten($fg_color,10%);
|
|
||||||
margin-top: 1em;
|
|
||||||
@include fontsize($base_font_size - 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-day { //border collapse hack - see calendar.js
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-day-top {
|
|
||||||
border-top-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-day-left {
|
|
||||||
border-left-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-work-day {}
|
|
||||||
|
|
||||||
.calendar-nonwork-day {
|
|
||||||
color: $insensitive_fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Today
|
|
||||||
.calendar-today {
|
|
||||||
font-weight: bold;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
|
|
||||||
&:hover,&:focus {
|
|
||||||
background-color:lighten($selected_bg_color, 3%);
|
|
||||||
color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,&:selected {
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
|
|
||||||
&:hover,&:focus {
|
|
||||||
background-color:lighten($selected_bg_color, 3%);
|
|
||||||
color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-day-with-events {
|
|
||||||
background-image: url("resource:///org/gnome/shell/theme/calendar-today.svg");
|
|
||||||
&.calendar-work-day {
|
|
||||||
color: lighten($fg_color,10%);
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-other-month-day {
|
|
||||||
color: transparentize($fg_color ,0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.calendar-week-number {
|
|
||||||
@include fontsize($base_font_size - 4);
|
|
||||||
font-weight: bold;
|
|
||||||
height: 1.8em;
|
|
||||||
width: 2.3em;
|
|
||||||
border-radius: 2px;
|
|
||||||
margin: 6px;
|
|
||||||
background-color: darken($bg_color, 2%);
|
|
||||||
color: lighten($fg_color, 5%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Events */
|
|
||||||
.events-button {
|
|
||||||
@include notification_bubble;
|
|
||||||
padding: $base_padding * 2;
|
|
||||||
|
|
||||||
.events-box {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.events-list {
|
|
||||||
spacing: 2 * $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.events-title {
|
|
||||||
color: desaturate(darken($fg_color,40%), 10%);
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: $base_margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
.event-time {
|
|
||||||
color: darken($fg_color,20%);
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* World clocks */
|
|
||||||
.world-clocks-button {
|
|
||||||
@include notification_bubble;
|
|
||||||
padding: $base_padding * 2;
|
|
||||||
|
|
||||||
.world-clocks-grid {
|
|
||||||
spacing-rows: $base_spacing;
|
|
||||||
spacing-columns: $base_spacing * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// title
|
|
||||||
.world-clocks-header {
|
|
||||||
color: desaturate(darken($fg_color,40%), 10%);
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
// city label
|
|
||||||
.world-clocks-city {
|
|
||||||
color: $fg_color;
|
|
||||||
@include fontsize($base_font_size);
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
// timezone time
|
|
||||||
.world-clocks-time {
|
|
||||||
font-weight: bold;
|
|
||||||
color: $fg_color;
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
@include fontsize($base_font_size);
|
|
||||||
|
|
||||||
&:ltr { text-align: right; }
|
|
||||||
&:rtl { text-align: left; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// timezone offset label
|
|
||||||
.world-clocks-timezone {
|
|
||||||
color: darken($fg_color,20%);
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Weather */
|
|
||||||
.weather-button {
|
|
||||||
@include notification_bubble;
|
|
||||||
padding: $base_padding * 2;
|
|
||||||
|
|
||||||
.weather-box {
|
|
||||||
spacing: $base_spacing + $base_margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-header-box {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-header {
|
|
||||||
color: desaturate(darken($fg_color,40%), 10%);
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
&.location {
|
|
||||||
font-weight: normal;
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-grid {
|
|
||||||
spacing-rows: $base_spacing;
|
|
||||||
spacing-columns: $base_spacing * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-forecast-time {
|
|
||||||
color: darken($fg_color,30%);
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
@include fontsize($base_font_size - 2);
|
|
||||||
font-weight: normal;
|
|
||||||
padding-top: 0.2em;
|
|
||||||
padding-bottom: 0.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-forecast-icon {
|
|
||||||
icon-size: $base_icon_size * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-forecast-temp {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
/* Check Boxes */
|
|
||||||
|
|
||||||
// these are equal to the size of the SVG assets
|
|
||||||
$check_height: 22px;
|
|
||||||
$check_width: 24px;
|
|
||||||
|
|
||||||
|
|
||||||
.check-box {
|
|
||||||
StBoxLayout { spacing: .8em; }
|
|
||||||
StBin {
|
|
||||||
width: $check_width;
|
|
||||||
height: $check_height;
|
|
||||||
background-image: url("resource:///org/gnome/shell/theme/checkbox-off.svg");
|
|
||||||
}
|
|
||||||
&:focus StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"); }
|
|
||||||
&:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); }
|
|
||||||
&:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); }
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
/* Activities Ripple */
|
|
||||||
|
|
||||||
$ripple_size: 50px;
|
|
||||||
|
|
||||||
.ripple-box {
|
|
||||||
background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
|
|
||||||
box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
|
|
||||||
// plus + 2px for the border (box-shadow)
|
|
||||||
width: $ripple_size + 2px;
|
|
||||||
height: $ripple_size + 2px;
|
|
||||||
border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve
|
|
||||||
|
|
||||||
// just a simple change to the border radius position
|
|
||||||
&:rtl { border-radius: 0 0 0 $ripple_size + 2px; }
|
|
||||||
}
|
|