Compare commits
40 Commits
citadel
...
uajain/ada
Author | SHA1 | Date | |
---|---|---|---|
|
05bed41dd1 | ||
|
e56f81b29c | ||
|
01c2313c16 | ||
|
92b57ee992 | ||
|
468fde932a | ||
|
05719ce674 | ||
|
d7befc5875 | ||
|
ca046cd29b | ||
|
4c288bd122 | ||
|
24d36e13ec | ||
|
3387c8787c | ||
|
47d3203622 | ||
|
852cefb6fc | ||
|
cfce9550a4 | ||
|
15692b618a | ||
|
ce1b4b9f43 | ||
|
cb89b7c0c4 | ||
|
cb914b8095 | ||
|
806d3b37cd | ||
|
803a6dcfb0 | ||
|
d2111d1bb3 | ||
|
4a62c072d2 | ||
|
8395f8bad5 | ||
|
37c41af1b7 | ||
|
262b600490 | ||
|
c937103071 | ||
|
a3a00434b1 | ||
|
28f85a3308 | ||
|
2a1ea497c0 | ||
|
e64c12dd27 | ||
|
a6897c5f90 | ||
|
e3f87bac23 | ||
|
57cff9a48b | ||
|
7274ed52dd | ||
|
5e8943340d | ||
|
044ef27c7e | ||
|
ef716a7eb5 | ||
|
0cead8c074 | ||
|
b41ae733a9 | ||
|
768193ab20 |
@ -1,8 +1,3 @@
|
|||||||
extends:
|
extends:
|
||||||
- ./lint/eslintrc-gjs.yml
|
- ./lint/eslintrc-gjs.yml
|
||||||
- ./lint/eslintrc-shell.yml
|
- ./lint/eslintrc-shell.yml
|
||||||
overrides:
|
|
||||||
- files:
|
|
||||||
- js/ui/init.js
|
|
||||||
parserOptions:
|
|
||||||
sourceType: module
|
|
3
.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
|
||||||
|
356
.gitlab-ci.yml
@ -1,288 +1,98 @@
|
|||||||
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:
|
stages:
|
||||||
- pre_review
|
- review
|
||||||
- prep
|
- build
|
||||||
- review
|
- test
|
||||||
- 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:
|
variables:
|
||||||
FDO_UPSTREAM_REPO: GNOME/gnome-shell
|
JS_LOG: "js-report.txt"
|
||||||
BUNDLE: "extensions-git.flatpak"
|
POT_LOG: "pot-update.txt"
|
||||||
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
|
.only_default: &only_default
|
||||||
|
only:
|
||||||
workflow:
|
- branches
|
||||||
rules:
|
- tags
|
||||||
- if: '$CI_MERGE_REQUEST_IID'
|
- merge_requests
|
||||||
- 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:
|
check_commit_log:
|
||||||
extends:
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
|
||||||
- .fdo.ci-fairy
|
stage: review
|
||||||
stage: pre_review
|
variables:
|
||||||
variables:
|
GIT_DEPTH: "100"
|
||||||
GIT_DEPTH: "100"
|
script:
|
||||||
script:
|
- ./.gitlab-ci/check-commit-log.sh
|
||||||
- if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ;
|
only:
|
||||||
then
|
- merge_requests
|
||||||
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:
|
js_check:
|
||||||
extends:
|
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
|
||||||
- .fdo.distribution-image@fedora
|
stage: review
|
||||||
- .gnome-shell.fedora:34
|
script:
|
||||||
stage: review
|
- find js -name '*.js' -exec js60 -c -s '{}' ';' 2>&1 | tee $JS_LOG
|
||||||
script:
|
- (! grep -q . $JS_LOG)
|
||||||
- find js -name '*.js' $(printf "! -wholename %s " $(cat .jscheckignore)) -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG
|
<<: *only_default
|
||||||
- (! grep -q . $JS_LOG)
|
artifacts:
|
||||||
artifacts:
|
paths:
|
||||||
paths:
|
- ${JS_LOG}
|
||||||
- ${JS_LOG}
|
when: on_failure
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
eslint:
|
eslint:
|
||||||
extends:
|
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
|
||||||
- .fdo.distribution-image@fedora
|
stage: review
|
||||||
- .gnome-shell.fedora:34
|
script:
|
||||||
stage: review
|
- ./.gitlab-ci/run-eslint.sh
|
||||||
script:
|
<<: *only_default
|
||||||
- export NODE_PATH=$(npm root -g)
|
artifacts:
|
||||||
- ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit
|
paths:
|
||||||
artifacts:
|
- reports
|
||||||
reports:
|
when: always
|
||||||
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:
|
build:
|
||||||
stage: build
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
|
||||||
needs: ["check_commit_log"]
|
stage: build
|
||||||
before_script:
|
before_script:
|
||||||
- .gitlab-ci/checkout-mutter.sh
|
- .gitlab-ci/checkout-mutter.sh
|
||||||
- meson mutter mutter/build --prefix=/usr
|
- meson mutter mutter/build --prefix=/usr -Dtests=false
|
||||||
- meson install -C mutter/build
|
- ninja -C mutter/build install
|
||||||
script:
|
script:
|
||||||
- meson . build -Dbuildtype=debugoptimized -Dman=false --werror
|
- meson . build -Dbuiltype=debugoptimized -Dman=false --werror
|
||||||
- meson compile -C build
|
- ninja -C build
|
||||||
- meson install -C build
|
- ninja -C build install
|
||||||
artifacts:
|
<<: *only_default
|
||||||
expire_in: 1 day
|
artifacts:
|
||||||
paths:
|
expire_in: 1 day
|
||||||
- mutter
|
paths:
|
||||||
- build
|
- mutter
|
||||||
|
- build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
stage: test
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
|
||||||
needs: ["build"]
|
stage: test
|
||||||
variables:
|
variables:
|
||||||
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
|
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
|
||||||
NO_AT_BRIDGE: "1"
|
NO_AT_BRIDGE: "1"
|
||||||
before_script:
|
before_script:
|
||||||
- meson install -C mutter/build
|
- ninja -C mutter/build install
|
||||||
script:
|
script:
|
||||||
- dbus-run-session -- xvfb-run meson test -C build --no-rebuild
|
- dbus-run-session -- xvfb-run meson test -C build --no-rebuild
|
||||||
artifacts:
|
<<: *only_default
|
||||||
expire_in: 1 day
|
artifacts:
|
||||||
paths:
|
expire_in: 1 day
|
||||||
- build/meson-logs/testlog.txt
|
paths:
|
||||||
reports:
|
- build/meson-logs/testlog.txt
|
||||||
junit: build/meson-logs/testlog.junit.xml
|
when: on_failure
|
||||||
when: on_failure
|
|
||||||
|
|
||||||
test-coverity:
|
test-pot:
|
||||||
rules:
|
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
|
||||||
- if: '$CI_PIPELINE_SOURCE == "schedule" && $GNOME_SHELL_SCHEDULED_JOB == "coverity"'
|
stage: test
|
||||||
when: always
|
before_script:
|
||||||
- when: manual
|
- ninja -C mutter/build install
|
||||||
needs: ["build"]
|
script:
|
||||||
stage: analyze
|
# Check that pot files are generated correctly:
|
||||||
allow_failure: true
|
# https://savannah.gnu.org/bugs/?50920#comment5
|
||||||
before_script:
|
- ninja -C build gnome-shell-pot 2>&1 | awk '
|
||||||
- meson install -C mutter/build
|
BEGIN { start=0; }
|
||||||
script:
|
start==1 { print $0; }
|
||||||
- .gitlab-ci/download-coverity-tarball.sh
|
/gnome-shell-pot/ { start=1; }
|
||||||
- CC=clang meson coverity-build -Dman=false
|
' | tee $POT_LOG
|
||||||
- ./coverity/cov-analysis-linux64-*/bin/cov-build --fs-capture-search js --dir cov-int meson compile -C coverity-build
|
- (! grep -q . $POT_LOG)
|
||||||
- tar czf cov-int.tar.gz cov-int
|
<<: *only_default
|
||||||
- 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'
|
|
||||||
|
18
.gitlab-ci/Dockerfile.extension-ci
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
FROM registry.fedoraproject.org/fedora:latest
|
||||||
|
|
||||||
|
RUN dnf -y update && dnf -y upgrade && \
|
||||||
|
dnf install -y 'dnf-command(copr)' git && \
|
||||||
|
|
||||||
|
# For syntax checks with `find . -name '*.js' -exec js60 -c -s '{}' ';'`
|
||||||
|
dnf install -y findutils mozjs60-devel && \
|
||||||
|
|
||||||
|
# For static analysis with eslint
|
||||||
|
dnf install -y nodejs && \
|
||||||
|
npm install -g eslint && \
|
||||||
|
|
||||||
|
# Shameless plug for my own tooling; useful for generating zip
|
||||||
|
dnf copr enable -y fmuellner/gnome-shell-ci && \
|
||||||
|
dnf install -y gnome-extensions-tool meson && \
|
||||||
|
|
||||||
|
dnf clean all && \
|
||||||
|
rm -rf /var/cache/dnf
|
31
.gitlab-ci/check-commit-log.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
||||||
|
echo Cannot review non-merge request
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||||
|
|
||||||
|
branch_point=$(git merge-base HEAD FETCH_HEAD)
|
||||||
|
|
||||||
|
commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA)
|
||||||
|
|
||||||
|
if [ -z "$commits" ]; then
|
||||||
|
echo Commit range empty
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function commit_message_has_url() {
|
||||||
|
commit=$1
|
||||||
|
commit_message=$(git show -s --format='format:%b' $commit)
|
||||||
|
echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
for commit in $commits; do
|
||||||
|
if ! commit_message_has_url $commit; then
|
||||||
|
echo "Missing merge request or issue URL on commit $(echo $commit | cut -c -8)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
@ -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,19 +1,11 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
fetch() {
|
|
||||||
local remote=$1
|
|
||||||
local ref=$2
|
|
||||||
|
|
||||||
git fetch --quiet --depth=1 $remote $ref 2>/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
mutter_target=
|
mutter_target=
|
||||||
|
|
||||||
echo -n Cloning into mutter ...
|
git clone https://gitlab.gnome.org/GNOME/mutter.git
|
||||||
if git clone --quiet --depth=1 https://gitlab.gnome.org/GNOME/mutter.git; then
|
|
||||||
echo \ done
|
if [ $? -ne 0 ]; then
|
||||||
else
|
echo Checkout failed
|
||||||
echo \ failed
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -23,33 +15,19 @@ if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
|
|||||||
merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter}
|
merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter}
|
||||||
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
|
||||||
|
|
||||||
echo -n Looking for $merge_request_branch on remote ...
|
echo Looking for $merge_request_branch on remote ...
|
||||||
if fetch $merge_request_remote $merge_request_branch; then
|
if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
|
||||||
echo \ found
|
|
||||||
mutter_target=FETCH_HEAD
|
mutter_target=FETCH_HEAD
|
||||||
else
|
else
|
||||||
echo \ not found
|
mutter_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||||
|
|
||||||
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
|
echo Using $mutter_target instead
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "$mutter_target" ]; then
|
||||||
|
mutter_target=$(git branch -r -l origin/$CI_COMMIT_REF_NAME)
|
||||||
|
mutter_target=${mutter_target:-origin/master}
|
||||||
|
echo Using $mutter_target instead
|
||||||
|
fi
|
||||||
|
|
||||||
git checkout -q $mutter_target
|
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);
|
|
||||||
});
|
|
114
.gitlab-ci/run-eslint.sh
Executable file
@ -0,0 +1,114 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
OUTPUT_REGULAR=reports/lint-regular-report.txt
|
||||||
|
OUTPUT_LEGACY=reports/lint-legacy-report.txt
|
||||||
|
OUTPUT_FINAL=reports/lint-common-report.txt
|
||||||
|
|
||||||
|
OUTPUT_MR=reports/lint-mr-report.txt
|
||||||
|
|
||||||
|
LINE_CHANGES=changed-lines.txt
|
||||||
|
|
||||||
|
is_empty() {
|
||||||
|
(! grep -q . $1)
|
||||||
|
}
|
||||||
|
|
||||||
|
run_eslint() {
|
||||||
|
ARGS_LEGACY='--config lint/eslintrc-legacy.yml'
|
||||||
|
|
||||||
|
local extra_args=ARGS_$1
|
||||||
|
local output_var=OUTPUT_$1
|
||||||
|
local output=${!output_var}
|
||||||
|
|
||||||
|
# ensure output exists even if eslint doesn't report any errors
|
||||||
|
mkdir -p $(dirname $output)
|
||||||
|
touch $output
|
||||||
|
|
||||||
|
eslint -f unix ${!extra_args} -o $output js
|
||||||
|
}
|
||||||
|
|
||||||
|
list_commit_range_additions() {
|
||||||
|
# Turn raw context-less git-diff into a list of
|
||||||
|
# filename:lineno pairs of new (+) lines
|
||||||
|
git diff -U0 "$@" -- js |
|
||||||
|
awk '
|
||||||
|
BEGIN { file=""; }
|
||||||
|
/^+++ b/ { file=substr($0,7); }
|
||||||
|
/^@@ / {
|
||||||
|
len = split($3,a,",")
|
||||||
|
start=a[1]
|
||||||
|
count=(len > 1) ? a[2] : 1
|
||||||
|
|
||||||
|
for (line=start; line<start+count; line++)
|
||||||
|
printf "%s/%s:%d:\n",ENVIRON["PWD"],file,line;
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_matched_lines() {
|
||||||
|
local source=$1
|
||||||
|
local matches=$2
|
||||||
|
local target=$3
|
||||||
|
|
||||||
|
echo -n > $target
|
||||||
|
for l in $(<$matches); do
|
||||||
|
grep $l $source >> $target
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
create_common() {
|
||||||
|
# comm requires sorted input;
|
||||||
|
# we also strip the error message to make the following a "common" error:
|
||||||
|
# regular:
|
||||||
|
# file.js:42:23 Indentation of 55, expected 42
|
||||||
|
# legacy:
|
||||||
|
# file.js:42:23 Indentation of 55, extected 24
|
||||||
|
prepare() {
|
||||||
|
sed 's: .*::' $1 | sort
|
||||||
|
}
|
||||||
|
|
||||||
|
comm -12 <(prepare $OUTPUT_REGULAR) <(prepare $OUTPUT_LEGACY) >$OUTPUT_FINAL.tmp
|
||||||
|
|
||||||
|
# Now add back the stripped error messages
|
||||||
|
copy_matched_lines $OUTPUT_REGULAR $OUTPUT_FINAL.tmp $OUTPUT_FINAL
|
||||||
|
rm $OUTPUT_FINAL.tmp
|
||||||
|
}
|
||||||
|
|
||||||
|
# Disable MR handling for now. We aren't ready to enforce
|
||||||
|
# non-legacy style just yet ...
|
||||||
|
unset CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||||
|
|
||||||
|
REMOTE=${1:-$CI_MERGE_REQUEST_PROJECT_URL.git}
|
||||||
|
BRANCH_NAME=${2:-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
|
||||||
|
|
||||||
|
if [ "$BRANCH_NAME" ]; then
|
||||||
|
git fetch $REMOTE $BRANCH_NAME
|
||||||
|
branch_point=$(git merge-base HEAD FETCH_HEAD)
|
||||||
|
commit_range=$branch_point...HEAD
|
||||||
|
|
||||||
|
list_commit_range_additions $commit_range > $LINE_CHANGES
|
||||||
|
|
||||||
|
# Don't bother with running lint when no JS changed
|
||||||
|
if is_empty $LINE_CHANGES; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Generating lint report using regular configuration
|
||||||
|
run_eslint REGULAR
|
||||||
|
echo Generating lint report using legacy configuration
|
||||||
|
run_eslint LEGACY
|
||||||
|
echo Done.
|
||||||
|
create_common
|
||||||
|
|
||||||
|
if ! is_empty $OUTPUT_FINAL; then
|
||||||
|
cat $OUTPUT_FINAL
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Just show the report and succeed when not testing a MR
|
||||||
|
if [ -z "$BRANCH_NAME" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
copy_matched_lines $OUTPUT_REGULAR $LINE_CHANGES $OUTPUT_MR
|
||||||
|
cat $OUTPUT_MR
|
||||||
|
is_empty $OUTPUT_MR
|
@ -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
|
|
10
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);
|
||||||
}
|
}
|
||||||
@ -101,8 +102,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) {
|
||||||
@ -131,7 +133,7 @@ whenever possible, that is when not inheriting from GObjects.
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
For GObject inheritance, we use the GObject.registerClass() function provided
|
For GObject inheritence, we use the GObject.registerClass() function provided
|
||||||
by gjs.
|
by gjs.
|
||||||
```javascript
|
```javascript
|
||||||
var MyActor = GObject.registerClass(
|
var MyActor = GObject.registerClass(
|
||||||
@ -250,7 +252,7 @@ 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();
|
let closure1 = () => { this._fnorbate(); };
|
||||||
let closure2 = this._fnorbate.bind(this);
|
let closure2 = this._fnorbate.bind(this);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
777
NEWS
@ -1,764 +1,3 @@
|
|||||||
41.1
|
|
||||||
====
|
|
||||||
* Fix icon updates while hidden [Marco; !1983]
|
|
||||||
* Fix erratic scrolling in GTK apps [Christian, Carlos; !1993, #4647]
|
|
||||||
* Fix GTK color picker support [Florian; !1990]
|
|
||||||
* Fix sound-file support in notifications [Florian; !1991]
|
|
||||||
* Fix high-contrast switches [Florian; !2000]
|
|
||||||
* Only allow one extension prefs dialog at a time [Florian; #4564]
|
|
||||||
* Fixed crashes [Ray, Sebastian; !2004, !2014]
|
|
||||||
* Misc. bug fixes and cleanups [Jonas, Florian, Jakub, Carlos; !1985, !1998,
|
|
||||||
!1996, !1979, !2007, !2010]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Marco Trevisan (Treviño), Carlos Garnacho, Christian Hergert,
|
|
||||||
Sebastian Keller, Florian Müllner, Jakub Steiner, Ray Strode, Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Марко Костић [sr], Ngọc Quân Trần [vi], Emin Tufan Çetin [tr],
|
|
||||||
Yaron Shahrabani [he], Sveinn í Felli [is], Goran Vidović [hr],
|
|
||||||
Marek Černocký [cs], Selyan Slimane AMIRI [kab], Rūdolfs Mazurs [lv],
|
|
||||||
eshagh shahidani [fa], Yuri Chornoivan [uk], Matej Urbančič [sl],
|
|
||||||
Anders Jonsson [sv], Rafael Fontenelle [pt_BR], Kukuh Syafaat [id],
|
|
||||||
Hugo Carvalho [pt], Aleksandr Melman [ru], Christian Kirbach [de]
|
|
||||||
|
|
||||||
41.0
|
|
||||||
====
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Goran Vidović [hr], Jordi Mas [ca], Aman Alam [pa], Balázs Úr [hu],
|
|
||||||
Piotr Drąg [pl], Nathan Follens [nl], Quentin PAGÈS [oc], Jiri Grönroos [fi],
|
|
||||||
Alexander Shopov [bg], Alan Mortensen [da], Efstathios Iosifidis [el]
|
|
||||||
|
|
||||||
41.rc.1
|
|
||||||
=======
|
|
||||||
* Make tests optional [Florian; !1975]
|
|
||||||
* Misc. bug fixes [Florian; !1974]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Florian Müllner
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Șerbănescu [ro]
|
|
||||||
|
|
||||||
41.rc
|
|
||||||
=====
|
|
||||||
* Optimize rendering of fullscreen zoom [Daniel; !1899]
|
|
||||||
* Fix glitchy launch animations when leaving overview [Daniel; !1440]
|
|
||||||
* Show low priority notifications only in message list [Florian; #4265]
|
|
||||||
* Support Soup 3 instead of 2.4 [Florian; !1940, !1966]
|
|
||||||
* Set log domain for extensions that use console.log() [Evan; !1958]
|
|
||||||
* Fix wrong separator position in dash [Raghuveer; !1804]
|
|
||||||
* Fix OSK not registering button presses on X11 [Sebastian; !1955]
|
|
||||||
* Fix work area getting messed up by hidden panels [Florian; #4569]
|
|
||||||
* Fix IM candidate popover position [Florian; #4593]
|
|
||||||
* Restrict callers of private D-Bus APIs [Florian; !1970]
|
|
||||||
* Support committing preedit string on focus loss [Carlos; !1929]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Ivan, Sebastian, José, Robert; !1956,
|
|
||||||
!1949, !1937, !1961, !1962, !1871, !1964, !1946, !1957, !1959, !1879, !1968]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
José Expósito, Carlos Garnacho, Raghuveer Kasaraneni, Sebastian Keller,
|
|
||||||
Robert Mader, Ivan Molodetskikh, Florian Müllner, Daniel van Vugt, Evan Welsh
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Yuri Chornoivan [uk], Quentin PAGÈS [oc], Asier Sarasua Garmendia [eu],
|
|
||||||
Hugo Carvalho [pt], Rafael Fontenelle [pt_BR], Jordi Mas [ca],
|
|
||||||
Alexey Rubtsov [ru], Danial Behzadi [fa], Kukuh Syafaat [id],
|
|
||||||
Marek Černocký [cs], Fran Dieguez [gl], Daniel Mustieles [es],
|
|
||||||
Źmicier Turok [be], Jiri Grönroos [fi], Emin Tufan Çetin [tr],
|
|
||||||
Baurzhan Muftakhidinov [kk], Bruce Cowan [en_GB], Philipp Kiemle [de],
|
|
||||||
Matej Urbančič [sl], Dušan Kazik [sk], Charles Monzat [fr],
|
|
||||||
Luna Jernberg [sv], Aurimas Černius [lt], Boyuan Yang [zh_CN],
|
|
||||||
Changwoo Ryu [ko]
|
|
||||||
|
|
||||||
41.beta
|
|
||||||
=======
|
|
||||||
* Unbreak Xwayland apps when not using systemd in user session [Olivier; !1850]
|
|
||||||
* extension-tool: Always print location on successful creation [Leleat; !1856]
|
|
||||||
* Fix distributed man pages [Florian; !1859]
|
|
||||||
* Immediately start app grid drags for non-touch devices [Georges; !1866]
|
|
||||||
* Avoid unnecessary icon shadow changes [Daniel; !1869]
|
|
||||||
* Handle screencast failures more gracefully [Florian; !1878]
|
|
||||||
* Fix glitch in app grid → session transition [Harshad; !1886]
|
|
||||||
* Use symbolic icons in looking glass toolbar [Chris; !1671]
|
|
||||||
* Fix IM popup visibility when in fullscreen [Florian; !1900]
|
|
||||||
* magnifier: Fix view jumps when using caret tracking [Lee; !1823]
|
|
||||||
* Fix shadow rendering glitches [Daniel; !1897]
|
|
||||||
* Allow overriding super+number shortcuts in Settings [Florian; #1250]
|
|
||||||
* Fix vertical scrollbars in RTL locales [Florian; !1910]
|
|
||||||
* Don't include hidden search results in keynav [Florian; #4470]
|
|
||||||
* Use anaccelerated deltas in swipe tracker [Alexander; !1763]
|
|
||||||
* status/network: Do not disable on login screen [Florian; !1874]
|
|
||||||
* Always take workarea into account when allocating workspaces [Marco; !1892]
|
|
||||||
* location: Split out geoclue agent from indicator [Ian; !1919]
|
|
||||||
* Add focus indication for switches [vanadiae; !1920]
|
|
||||||
* Honor switch-user lockdown settings in unlock screen [Ray; !1833]
|
|
||||||
* Fix glitch when dragging window preview in overview [Sebastian; #4292]
|
|
||||||
* Lock down "Show Text" in password entries [Ray; !687]
|
|
||||||
* Add power mode selection to status menu [Florian; !1907]
|
|
||||||
* workspace: Handle skip-taskbar changes [Daniel; !1925]
|
|
||||||
* status/network: Use WWan settings panel for GSM/LTE modems [Mohammed; !1942]
|
|
||||||
* extensionUtils: Add gettext convenience helpers [Florian; !1941]
|
|
||||||
* screenShield: Fix suspend inhibitor accounting [Sebastian; !1927, !1952]
|
|
||||||
* Unify app context menus [Florian; !1948]
|
|
||||||
* Use consistent terminology in window menu [nitinosiris; !1834]
|
|
||||||
* Fixed crashes [Gustavo, Florian; !1848, !1885, !1935]
|
|
||||||
* Misc. bug fixes and cleanups [Jonas Å., Florian, Georges, Daniel, Olivier,
|
|
||||||
Carlos, Robert, Sebastian, Jakub, Jonas D., Fionn; !1838, !1854, !1860,
|
|
||||||
!1872, !1876, !1880, !1888, !1890, !1891, !1894, !1902, !1901, !1903,
|
|
||||||
!1841, !1904, !1786, !1906, !1909, !1908, !1840, !1913, !1917, !1914,
|
|
||||||
!1857, !1922, !1924, !1931, !1926, !953, !1932, !1939, !1938, !1944,
|
|
||||||
!1936, !1947, !1945, !1950]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho,
|
|
||||||
Harshad Gavali, Tjipke van der Heide, Fionn Kelleher, Sebastian Keller, Lee,
|
|
||||||
Leleat, Robert Mader, Chris Mayo, Alexander Mikhaylenko, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, nitinosiris, Mohammed Sadiq, Ian Douglas Scott,
|
|
||||||
Gustavo Noronha Silva, Jakub Steiner, Ray Strode, Daniel van Vugt, vanadiae,
|
|
||||||
Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Quentin PAGÈS [oc], Cheng-Chia Tseng [zh_TW], Jordi Mas [ca],
|
|
||||||
Hugo Carvalho [pt], Julia Dronova [ru], Efstathios Iosifidis [el],
|
|
||||||
Alexander Shopov [bg], Florentina Mușat [ro], Yuri Chornoivan [uk],
|
|
||||||
Alexey Rubtsov [ru], Rafael Fontenelle [pt_BR], Yaron Shahrabani [he],
|
|
||||||
Daniel Mustieles [es], Matej Urbančič [sl], Danial Behzadi [fa],
|
|
||||||
Kukuh Syafaat [id], Fran Dieguez [gl], Boyuan Yang [zh_CN], Fabio Tomat [fur],
|
|
||||||
Tjipke van der Heide [fy], Emin Tufan Çetin [tr], Luna Jernberg [sv],
|
|
||||||
Daniel Șerbănescu [ro]
|
|
||||||
|
|
||||||
40.1
|
|
||||||
====
|
|
||||||
* Fix keyboard preview for IM that use 'default' layout [Peng; !1756]
|
|
||||||
* extensions: Fix copying technical details on prefs crash [Jan; !1795, !1796]
|
|
||||||
* Make window previews as large as possible [Jonas D.; !1670, !1813]
|
|
||||||
* Fix PgUp/PgDown handling in overview [Florian; !1798]
|
|
||||||
* Fix scroll view following keyboard focus [Andrew; !1802]
|
|
||||||
* Fix word suggestions in on-screen keyboard [Jia; !1806]
|
|
||||||
* Support animated backgrounds set via the wallpaper portal [Alexander; !1816]
|
|
||||||
* Fix freeze after cancelling (some) system-modal dialogs [Florian; !1819]
|
|
||||||
* Support double-super when animations are disabled [Florian; !1811]
|
|
||||||
* gdm: Allow timed login with disabled user list [Ray; !1809]
|
|
||||||
* status: Report real battery percentage when full [Prajna; !1787]
|
|
||||||
* Allow tap-drag-release to select variants in OSK [Carlos; !1789]
|
|
||||||
* Fix password authentication after fingerprint failure [Ray, Benjamin; !1821]
|
|
||||||
* Fix screen blanking on idle [Florian; !1824]
|
|
||||||
* Fix oversized system action icons in search [Sebastian; !1777]
|
|
||||||
* Only show 'Open Windows' in app menus if there are multiple [Leleat; !1827]
|
|
||||||
* Fix duplicated workspaces in minimap [Sebastian; !1828]
|
|
||||||
* Fix repeated letters in type-to-find overview search [Sebastian; !1828]
|
|
||||||
* Improve workspace placeholder in overview minimap [Joonas; !1801]
|
|
||||||
* screencasts: Improve default gstreamer pipeline [Jonas D.; !1633]
|
|
||||||
* Leave overview when activating app via shortcut [Nishal; !1839]
|
|
||||||
* Fix invisible scroll bars in faded views [Florian; !1831]
|
|
||||||
* Correct arrow navigation in alt-tab switcher in RTL locales [Leleat; !1835]
|
|
||||||
* Improve touch interaction of app grid actions [Carlos; !1774]
|
|
||||||
* Fixed crashes [Jonas Å., Sebastian; !1810, !1817]
|
|
||||||
* Misc. bug fixes and cleanups [Carlos, Yuri, Sebastian, Suryashankar, Zander,
|
|
||||||
arushsharma24, Florian, Georges, Jonas D., Frederic, Leleat, Jakub,
|
|
||||||
theRealPadster, Simon, Olivier; !1770, !1781, !1782, !1775, !1769, !1791,
|
|
||||||
!1764, !1793, !1799, !1805, !1484, !1815, !1820, !1807, !1825, !1822, !1800,
|
|
||||||
!1818, !1830, !1790, !1812, !1771, !1844, !1845, !1837, !1842]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, arushsharma24, Benjamin Berg, Zander Brown, Jia Chao,
|
|
||||||
Frederic Crozat, Suryashankar Das, Jonas Dreßler, Olivier Fourdan,
|
|
||||||
Carlos Garnacho, Joonas Henriksson, Sebastian Keller, Yuri Konotopov,
|
|
||||||
Nishal Kulkarni, Leleat, Alexander Mikhaylenko, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Prajna Sariputra, Simon Schneegans,
|
|
||||||
Jakub Steiner, Ray Strode, theRealPadster, Jan Tojnar, Peng Wu, Andrew Zaech
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Timo Jyrinki [fi], Boyuan Yang [zh_CN], Hannie Dumoleyn [nl], Dz Chen [zh_CN],
|
|
||||||
Ngọc Quân Trần [vi], Hugo Carvalho [pt], Yosef Or Boczko [he],
|
|
||||||
Yaron Shahrabani [he], Nathan Follens [nl], Cédric Valmary [oc],
|
|
||||||
Carmen Bianca BAKKER [eo], Emin Tufan Çetin [tr], Dušan Kazik [sk],
|
|
||||||
Stas Solovey [ru], Pawan Chitrakar [ne], Jordi Mas [ca], Quentin PAGÈS [oc]
|
|
||||||
|
|
||||||
40.0
|
|
||||||
====
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Zander Brown [en_GB], Dušan Kazik [sk]
|
|
||||||
|
|
||||||
40.rc
|
|
||||||
=====
|
|
||||||
* Define default app grid arrangement [Allan; !1700]
|
|
||||||
* Fix shading behind system modal dialogs [Florian; !1712]
|
|
||||||
* Only show logout-inhibiting apps in end-session dialog [Michael; !1424]
|
|
||||||
* Fix minimap previews on multi-monitor systems [Florian; !1721]
|
|
||||||
* Drop strict extension version match for unstable releases [Florian; !1719]
|
|
||||||
* Fix missing app menu after overview gesture [Florian; !1726]
|
|
||||||
* Improve app folder appearance [Jakub; !1714]
|
|
||||||
* Fix window previews becoming undraggable after workspace switch
|
|
||||||
[Sebastian; !1717]
|
|
||||||
* Fix dragging icons to a different page in RTL locales [Carlos; !1734]
|
|
||||||
* Support double super for opening app grid [Florian; !1736]
|
|
||||||
* Improve workspace handling on secondary monitors [Florian; !1735]
|
|
||||||
* Improve interaction when dragging between app grid pages [Carlos; !1630]
|
|
||||||
* Fix launching on requested workspace on wayland [Florian; !1316]
|
|
||||||
* Make wifi strength indicator consistent with icons in Settings [Remi; !1432]
|
|
||||||
* Start session in overview [Georges; !1678]
|
|
||||||
* Tweak window preview layout in overview [Jonas D.; !1702, !1737]
|
|
||||||
* Improve overview performance [Jonas D.; !1713, !1733, !1743, !1755]
|
|
||||||
* Fix new workspaces being invisible in minimap [Florian; !1716]
|
|
||||||
* Fix glitch after dragging window preview from second monitor [Ivan; !1727]
|
|
||||||
* Do not switch workspaces when scrolling during super-tab [Florian; !1746]
|
|
||||||
* Make OSK shifting up windows more reliable [Jonas D.; !1728, !1760]
|
|
||||||
* Fix swipe gesture glitches [Alexander; !1731]
|
|
||||||
* Fix mis-scaled preview icons in window picker [Sebastian; !1751]
|
|
||||||
* Fix unintended app grid changes during icon DND in dash [Sebastian; !1767]
|
|
||||||
* Fix missing X11 fallback icons [Florian; !1761]
|
|
||||||
* Fixed crashes [Sebastian; !1718]
|
|
||||||
* Misc. bug fixes and cleanups [Jonas Å., Sebastian, Abderrahim, Florian,
|
|
||||||
Alexander, Felix, Ivan, Jonas D., Jakub, Daniel; !1710, !1707, !1720, !1722,
|
|
||||||
!1724, !1732, !1246, !1738, !1740] !1742, !1741, !1745, !1748, !1749, !1765,
|
|
||||||
!1766, !1757, !1758]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, arushsharma24, Allan Day, Felix Divo, Jonas Dreßler,
|
|
||||||
Carlos Garnacho, Sebastian Keller, Abderrahim Kitouni, Alexander Mikhaylenko,
|
|
||||||
Ivan Molodetskikh, Florian Müllner, Georges Basile Stavracas Neto,
|
|
||||||
Remi Salmon, Jakub Steiner, Michael Terry, Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fran Dieguez [gl], Balázs Meskó [hu], Baurzhan Muftakhidinov [kk],
|
|
||||||
Goran Vidović [hr], Christian Kirbach [de], Марко Костић [sr],
|
|
||||||
Asier Sarasua Garmendia [eu], Guillaume Bernard [fr], Tim Sabsch [de],
|
|
||||||
Philipp Kiemle [de], Danial Behzadi [fa], Piotr Drąg [pl],
|
|
||||||
Rūdolfs Mazurs [lv], Daniel Mustieles [es], Marek Černocký [cs],
|
|
||||||
Fabio Tomat [fur], Changwoo Ryu [ko], Kjartan Maraas [nb], A S Alam [pa],
|
|
||||||
Milo Casagrande [it]
|
|
||||||
|
|
||||||
40.beta
|
|
||||||
=======
|
|
||||||
* Overview redesign
|
|
||||||
- Move dash to the bottom [Georges, Abderrahim, Jakub; !1559]
|
|
||||||
- Do not duplicate dash icons in app grid [Florian; !1580]
|
|
||||||
- Separate favorites from running apps in dash [Florian; !1606, !1610, !1659]
|
|
||||||
- Change to a horizontal workspace layout [Georges; !1593, !1603]
|
|
||||||
- Move background to workspaces [Georges, Florian, Jakub; !1599]
|
|
||||||
- Overhaul window preview style [Florian, Jakub; !1605, !1654, !1657]
|
|
||||||
- Rework workspace switching animation [Alexander; !1326]
|
|
||||||
- Show workspace side-by-side [Georges; !1613]
|
|
||||||
- Allow switching workspaces with super+scroll on wayland [Florian; !1612]
|
|
||||||
- Allow swiping through more than one workspace at a time [Alexander; !1647]
|
|
||||||
- Extend active dash area to the screen edge [Florian; !1660]
|
|
||||||
- Change overall overview layout [Georges, Florian; !1624]
|
|
||||||
- Refine workspace activation in overview [Georges; !1645]
|
|
||||||
- Add vertical swipe gesture to shift through overview [Carlos; !1643]
|
|
||||||
- Add shortcuts for shifting through overview [Florian; !1695]
|
|
||||||
- Round background corners in overview [Jonas D.; !1651, !1697]
|
|
||||||
- Hide workspace minimap when using less than two workspaces [Florian; !1696]
|
|
||||||
- Scale down backgrounds in window picker [Georges; !1691]
|
|
||||||
- Minor improvements and bug fixes [Florian, Abderrahim, Georges, Sebastian,
|
|
||||||
Jakub, Pascal, Jonas D.; !1594, !1609, !1608, !1620, !1629, !1625, !1634,
|
|
||||||
!1640, #3669, !1636, !1655, !1656, !1665, !1667, !1638, !1680, !1682, !1684,
|
|
||||||
!1681, !1687, !1693, !1694, !1692]
|
|
||||||
* Fix glitch in app folder icons on smaller displays [Sebastian; !1581]
|
|
||||||
* Remove arrows from top bar menus [Doan, Florian, Razze; !1583, !1618, !1615]
|
|
||||||
* Fix stuck grab after failed area screenshots [Sebastian; !1600]
|
|
||||||
* Prefer image-data hint over app-icon in notifications [Guilherme; !1616]
|
|
||||||
* Fix drag actor position when animations are turned off [Sebastian; !1627]
|
|
||||||
* Improve spacing in MPRIS notifications with small text [Sebastian; !1632]
|
|
||||||
* Add Welcome dialog after major updates [Bastien; !1619]
|
|
||||||
* Do not save empty commands in run dialog history [Lucas; !1442, !1653]
|
|
||||||
* Consider device type for fingerprint hint on login screen [Razze; !1572]
|
|
||||||
* Add tooltip to Extensions app to view unellipsized description [Leleat; !1663]
|
|
||||||
* Fix stuck polkit dialog when using non-password auth [Florian; !1662]
|
|
||||||
* Provide screenshot feedback (flash, shutter) before writing file to disk
|
|
||||||
[Brion, Jonas; !1658]
|
|
||||||
* Improve Thai layout in on-screen keyboard [Panawat; !1427]
|
|
||||||
* Improve error handling for fingerprint auth [Marco; !1652]
|
|
||||||
* Handle a large number of window previews more gracefully [Sebastian; !1685]
|
|
||||||
* Follow swipe gesture when bringing up on-screen keyboard [Carlos; !1668]
|
|
||||||
* Disable out-of-date extensions by default (again) [Evan; !1706]
|
|
||||||
* Fixed crashes [Jonas D., Carlos; !1673, !1672]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Sebastian, Razze, Georges, Daniel,
|
|
||||||
Robert, Jonas D., Jonas Å., Marco, Bastien, TerraAr, Carlos; !1575, !1579,
|
|
||||||
!1577, !1578, !1585, !1587, !1588, !1590, !1591, !1592, !1595, !1596, !1597,
|
|
||||||
!1598, !1582, !1589, !1617, !1611, !1637, !1635, !1641, !1646, !1546, !1648,
|
|
||||||
!1650, !1649, !1644, !1661, !1622, !1075, !1674, !1556, !1686, !1683, !1688,
|
|
||||||
!1699, !1698, !1701, !1709]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Jonas Dreßler, Carlos Garnacho, Sebastian Keller,
|
|
||||||
Abderrahim Kitouni, Leleat, Robert Mader, Alexander Mikhaylenko,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, Pascal Nowack,
|
|
||||||
Razze, Guilherme Silva, Jakub Steiner, TerraAr, Marco Trevisan (Treviño),
|
|
||||||
Brion Vibber, Doan Nam Long Vu, Daniel van Vugt, Evan Welsh,
|
|
||||||
Lucas Werkmeister, Panawat Wong-kleaw
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Balázs Úr [hu], Danial Behzadi [fa], Rafael Fontenelle [pt_BR], A S Alam [pa],
|
|
||||||
Anders Jonsson [sv], Yuri Chornoivan [uk], Marek Černocký [cs],
|
|
||||||
Hugo Carvalho [pt], Fran Dieguez [gl], Daniel Șerbănescu [ro],
|
|
||||||
Florentina Mușat [ro], Daniel Mustieles [es], Jordi Mas [ca],
|
|
||||||
Matej Urbančič [sl], Kukuh Syafaat [id], Bruno Lopes da Silva [pt_BR],
|
|
||||||
Аляксей [be], Balázs Meskó [hu], Марко Костић [sr], Enrico Nicoletto [pt_BR],
|
|
||||||
Emin Tufan Çetin [tr], Jiri Grönroos [fi], Aurimas Černius [lt]
|
|
||||||
|
|
||||||
40.alpha.1.1
|
|
||||||
============
|
|
||||||
* Adapt to settings moving to gsettings-desktop-schemas [Florian; !1573]
|
|
||||||
* Misc. bug fixes [Georges, Florian; !1571, !1574]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Марко Костић [sr], Marek Černocký [cs], Fabio Tomat [fur]
|
|
||||||
|
|
||||||
40.alpha.1
|
|
||||||
==========
|
|
||||||
* Restore app picker fade during swipes [Georges, Florian; !1519, !1569]
|
|
||||||
* Sort extensions in Looking Glass alphabetically [Florijan; !1516]
|
|
||||||
* Fix screenshots of unredirected fullscreen windows on X11
|
|
||||||
[Jonas Å., LuK1337; !1534, !1549]
|
|
||||||
* Use GPU to render (most) shadows [Georges; !1539]
|
|
||||||
* Refine avatar styling [Joonas; !1490]
|
|
||||||
* Fix storing VPN secrets [Sebastian; !1535]
|
|
||||||
* Don't depend on asciidoc and sassc when building from tarball
|
|
||||||
[Florian; !1553, !1555]
|
|
||||||
* Use horizontal pages in app picker [Georges; !1554]
|
|
||||||
* Avoid costly icon theme lookups unless when needed [Ivan; !1558]
|
|
||||||
* Properly expose locked state to logind [Florian; !1561]
|
|
||||||
* Use 3 fingers for system swipe gestures [Georges; !1562]
|
|
||||||
* Fix glitches in overview transitions [Jonas Å., Ivan; !1545, !1550]
|
|
||||||
* Improve login screen accessibility [Mike; !1567]
|
|
||||||
* Overhaul top bar styling [Jonas D.; !1397]
|
|
||||||
* Allow changing input volume by scrolling over microphone icon [Razze; !1566]
|
|
||||||
* Port Extensions app and portal to GTK4 [Florian; !1495]
|
|
||||||
* Fixed crashes [Jonas Å.; !1527]
|
|
||||||
* Misc. bug fixes and cleanups [Georges, Florian, Tom, Hans, Jonas D., Ivan,
|
|
||||||
Sebastian, Daniel; !1518, !1521, !1523, !1525, !1520, !1526, !1472, !1339,
|
|
||||||
!1529, !1531, !1532, !1533, !1528, !1350] !1542, !1537, !1548, !1551, !1557,
|
|
||||||
!1543, !1560, !1544, !1565]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Jonas Dreßler, Mike Gerow, Florijan Hamzic, Joonas Henriksson,
|
|
||||||
Sebastian Keller, Tom Levy, LuK1337, Ivan Molodetskikh, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Hans Ulrich Niedermann, Razze, Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Florentina Mușat [ro], Fabio Tomat [fur], Hugo Carvalho [pt],
|
|
||||||
Jordi Mas i Hernandez [ca], Philipp Kiemle [de], Fran Dieguez [gl],
|
|
||||||
Jordi Mas [ca], Kukuh Syafaat [id], Kjartan Maraas [nb],
|
|
||||||
Daniel Șerbănescu [ro], Matej Urbančič [sl]
|
|
||||||
|
|
||||||
40.alpha
|
|
||||||
========
|
|
||||||
* Handle @content properties in ease() functions [Andre; !1461]
|
|
||||||
* Fix screencast indicator on Xorg [Jonas Å.; !1466]
|
|
||||||
* Expand ellipsized app picker labels on hover [Georges; !1477, !1496]
|
|
||||||
* Fix inline-replies in chat notifications [Florian; #3226]
|
|
||||||
* Refine MPRIS notification layout [Harry; !1480]
|
|
||||||
* Improve do-not-disturb support [Florian; #2873, !1511]
|
|
||||||
* Fix mobile broadband support [Popax21; #3203]
|
|
||||||
* Add extension filtering in Extensions app [Florian; #3382]
|
|
||||||
* Improve app picker spacing on larger resolutions [Georges; !1510]
|
|
||||||
* Plugged leaks [Ray; !1460, !1459]
|
|
||||||
* Fixed crashes [Daniel, Florian; !1453, #3258, !1507]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Georges, Carlos, Joonas, Jan,
|
|
||||||
Jonas Å., Robert, Jonas D., Ian, Daniel, Sebastian, Jordan; !1456, !1436,
|
|
||||||
!1405, !1421, #3252, !1464, !1469, !1465, !1473, !1475, #3307, !1479,
|
|
||||||
!1482, !1470, !1486, #3335, #3342, #3388, !1497, !1498, !1491, !1501,
|
|
||||||
!1492, !1489, !1502, !1505, !1504, !1506, !1503, !1483, !1508, !1481,
|
|
||||||
!1509, !1512, !1417, !1517]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Dreßler, Carlos Garnacho, Joonas Henriksson, Sebastian Keller,
|
|
||||||
Robert Mader, Andre Moreira Magalhaes, Daniel García Moreno, Harry Míchal,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Jordan Petridis, Popax21,
|
|
||||||
Ian Douglas Scott, Ray Strode, Jan Tojnar, Olav Vitters, Daniel van Vugt,
|
|
||||||
Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Juliano de Souza Camargo [pt], Fabio Tomat [fur], Akarshan Biswas [bn_IN],
|
|
||||||
Carmen Bianca BAKKER [eo], Daniel Mustieles [es],
|
|
||||||
Asier Sarasua Garmendia [eu], Ask Hjorth Larsen [da], Yuri Chornoivan [uk],
|
|
||||||
Anders Jonsson [sv], Kjartan Maraas [nb]
|
|
||||||
|
|
||||||
3.38.1
|
|
||||||
======
|
|
||||||
* Add screen recordings to recent items [Florian; #3171]
|
|
||||||
* Tweak peek-password feature [Florian; #3138]
|
|
||||||
* Fix workspace glitches in overview [Florian; #3208, #3211]
|
|
||||||
* Improve DND behavior in app picker [Georges; !1447]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Daniel, Georges, Bastien, Christopher,
|
|
||||||
yun341, Carlos; #3169, !1434, !1441, !1444, !379, !1443, #2230, !1448,
|
|
||||||
!1451, #3209]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Yacine Bouklif, Christopher Davis, Carlos Garnacho, Daniel García Moreno,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera, yun341
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Juliano de Souza Camargo [pt], Yacine Bouklif [kab], Charles Monzat [fr],
|
|
||||||
Cheng-Chia Tseng [zh_TW], Yosef Or Boczko [he]
|
|
||||||
|
|
||||||
3.38.0
|
|
||||||
======
|
|
||||||
* Misc. bug fixes and cleanups [Andy, Florian; #3147, !1438]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Andy Holmes, Florian Müllner
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Anders Jonsson [sv], Balázs Úr [hu], Dušan Kazik [sk], Alan Mortensen [da],
|
|
||||||
Tim Sabsch [de], Claude Paroz [fr], Jiri Grönroos [fi], Juliano Camargo [pt],
|
|
||||||
Milo Casagrande [it], Aron Xu [zh_CN], Rūdolfs Mazurs [lv]
|
|
||||||
|
|
||||||
3.37.92
|
|
||||||
=======
|
|
||||||
* Fix screen recorder shortcut [Florian; #3097]
|
|
||||||
* Support cycle-group cycling only over windows in the workspac3 [Mitar; #3116]
|
|
||||||
* Misc. bug fixes and cleanups [Georges, Daniel, Carlos; !1428, !1423,
|
|
||||||
!1311, #2968]
|
|
||||||
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Carlos Garnacho, Mitar, Florian Müllner, Georges Basile Stavracas Neto,
|
|
||||||
Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Yuri Chornoivan [uk], Zander Brown [en_GB], Rafael Fontenelle [pt_BR],
|
|
||||||
Nathan Follens [nl], Danial Behzadi [fa], Kukuh Syafaat [id],
|
|
||||||
Aurimas Černius [lt], Marek Černocký [cs], Fabio Tomat [fur],
|
|
||||||
Changwoo Ryu [ko], Марко Костић [sr], Daniel Mustieles [es], Dušan Kazik [sk],
|
|
||||||
Thibault Martin [fr], Jordi Mas [ca]
|
|
||||||
|
|
||||||
3.37.91
|
|
||||||
=======
|
|
||||||
* Fix potential stack overflow in libcroco [Michael; !1404]
|
|
||||||
* Fix page removal in app picker [Georges; !1406]
|
|
||||||
* Fix "old style" VPN authentication [Florian; !1407]
|
|
||||||
* Fix X11 session login [Benjamin; !1418]
|
|
||||||
* Fix week number alignment when using font-scaling [Joonas; !1415]
|
|
||||||
* Fix lock screen on systems without GLSL shader support [Zephaniah; #3071]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Jonas, Georges, Andre, Will, Björn;
|
|
||||||
!1396, !1359, !1408, !1409, !1414, !1413, !1416, #3073]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Björn Daase, Joonas Henriksson,
|
|
||||||
Zephaniah E. Loss-Cutler-Hull, Andre Moreira Magalhaes, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Will Thompson
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fran Dieguez [gl], Jordi Mas [ca], Daniel Mustieles [es],
|
|
||||||
Florentina Mușat [ro], Akarshan Biswas [bn_IN], Baurzhan Muftakhidinov [kk],
|
|
||||||
Piotr Drąg [pl], Rafael Fontenelle [pt_BR], Emin Tufan Çetin [tr],
|
|
||||||
sicklylife [ja], Danial Behzadi [fa], Jiri Grönroos [fi], Goran Vidović [hr],
|
|
||||||
Matej Urbančič [sl], Boyuan Yang [zh_CN]
|
|
||||||
|
|
||||||
3.37.90
|
|
||||||
=======
|
|
||||||
* Fix extension updates when many extensions are installed [Jeremias; !1363]
|
|
||||||
* Fix missing icons in on-screen keyboard [Emre; #2631, #3007]
|
|
||||||
* Fix delay when showing calendar events [Sebastian; #2992]
|
|
||||||
* Allow rearranging items in app picker [Georges; !1284]
|
|
||||||
* Fix top bar navigation when NumLock is active [Olivier; #550]
|
|
||||||
* Delay login animation until wallpaper has loaded [Michael; #734996]
|
|
||||||
* Reset auth prompt on login screen on VT switch before fade in [Ray; #2997]
|
|
||||||
* Move screencasting into a separate service [Jonas Å.; !1372]
|
|
||||||
* Replace loaded terms with more descriptive one [Olivier; !1393]
|
|
||||||
* Add "Boot Options" support to restart dialog [Hans; !199]
|
|
||||||
* Move "Restart" into a separate menu item/dialog [Florian; #2202]
|
|
||||||
* Default to not installing updates on low battery [Michael; #2717]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Daniel V., Georges, Jonas Å.,
|
|
||||||
Daniel G., Carlos, Benjamin, Piotr, Andre, Jonas D., Andy; !1357, !1356,
|
|
||||||
#2969, #2969, !1358, !1371, #3005, !1380, #3022, !1381, !895, !1387, !1386,
|
|
||||||
!1385, #3037, !1389, !1390, !1391, !1383, !1399, #2983, !1403]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Benjamin Berg, Michael Catanzaro, Piotr Drąg, Jonas Dreßler,
|
|
||||||
Olivier Fourdan, Carlos Garnacho, Hans de Goede, Andy Holmes,
|
|
||||||
Sebastian Keller, Andre Moreira Magalhaes, Daniel García Moreno,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Jeremias Ortega, Ray Strode,
|
|
||||||
Emre Uyguroglu, Daniel van Vugt
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Tim Sabsch [de], Boyuan Yang [zh_CN], Fabio Tomat [fur],
|
|
||||||
Efstathios Iosifidis [el], Rafael Fontenelle [pt_BR], Yuri Chornoivan [uk],
|
|
||||||
Daniel Șerbănescu [ro], Jordi Mas [ca], Daniel Mustieles [es],
|
|
||||||
Emin Tufan Çetin [tr], Asier Sarasua Garmendia [eu]
|
|
||||||
|
|
||||||
3.37.3
|
|
||||||
======
|
|
||||||
* Refactor and clean up window picker
|
|
||||||
[Jonas D., Florian; !1297, !1298, !1305, !1345, !1353]
|
|
||||||
* Move calendar events out of notifications list [Florian; !1282]
|
|
||||||
* Refine app folder dialogs [Georges; !1301]
|
|
||||||
* Hide switch-user button on lock screen if unsupported [Chingkai; #2687]
|
|
||||||
* Refactor and clean up app picker pagination [Georges; !1271]
|
|
||||||
* Add API to retrieve specified mimetypes from clipboards [Carlos; !1321]
|
|
||||||
* Support prepending workspace with horizontal layouts [Florian; #2916]
|
|
||||||
* Update microphone icon on input volume changes [fludixx; #2902]
|
|
||||||
* Cache labels on GPU [Daniel; !1329]
|
|
||||||
* Fix regressions in redesigned modal dialogs [Florian, Jonas D.; #2491, !1336]
|
|
||||||
* Use GIcon for all application icons [Florian; !1342]
|
|
||||||
* Support pre-authenticated logins in vmware environments [yun341; #1983]
|
|
||||||
* Better support sandboxed apps with multiple .desktop files [Florian; #219]
|
|
||||||
* Fix on-screen keyboard size in portrait orientation [Florian; #2349]
|
|
||||||
* Plugged leaks [Sebastian, Daniel, Florian; !1306, !1319, !1341]
|
|
||||||
* Misc. bug fixes and cleanups [Jonas D., Georges, Marco, Florian, Sebastian,
|
|
||||||
MOZGIII, Daniel, Mariana, Jonas Å.; !1296, !1295, #2643, !1300, !1309,
|
|
||||||
!1119, #2901, !1313, !1251, !1285, !1307, !1318, !1310, !1320, !1327, !1315,
|
|
||||||
!1289, !1331, !1332, !1333, !1334, !1340, !1287, !1308, !1346, !1299, !1343,
|
|
||||||
!1351, !1352, !1322]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Marco Trevisan (Treviño), Chingkai, Jonas Dreßler, Carlos Garnacho,
|
|
||||||
Sebastian Keller, MOZGIII, Florian Müllner, Georges Basile Stavracas Neto,
|
|
||||||
Mariana Picolo, Daniel van Vugt, fludixx, yun341, Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Mustieles [es], Boyuan Yang [zh_CN], Yuri Chornoivan [uk],
|
|
||||||
Jordi Mas [ca], sicklylife [ja], Emin Tufan Çetin [tr],
|
|
||||||
Baurzhan Muftakhidinov [kk], Florentina Mușat [ro], Aurimas Černius [lt],
|
|
||||||
Rūdolfs Mazurs [lv]
|
|
||||||
|
|
||||||
3.37.2
|
|
||||||
======
|
|
||||||
* Add support for "PrefersNonDefaultGPU" desktop key [Bastien; !1226]
|
|
||||||
* Only start systemd units when running under systemd
|
|
||||||
[Carlos, Florian; #2755, !1242, !1252]
|
|
||||||
* Fix "ghost" media controls [Bryan; #2776]
|
|
||||||
* Fix zombie sockets from extensions downloader [Michael; #2774]
|
|
||||||
* Update world clocks offsets when timezone changes [Bryan; #2209]
|
|
||||||
* Support scrolling anywhere in slider menu items [Peter; #2795]
|
|
||||||
* Fix "Do Not Disturb" setting getting reset on startup [Florian; #2804]
|
|
||||||
* Only allow updates for extensions that aren't cached [Florian; !1248]
|
|
||||||
* Fix matching notifications by PID [Florian; #2592]
|
|
||||||
* Indicate extension errors in Extensions app [Florian; #2337]
|
|
||||||
* Add clipboard API for querying supported mimetypes [Andy; #2819]
|
|
||||||
* Add preview to color picker [Florian; #451]
|
|
||||||
* Improve world clocks styling [PrOF-kk; #2825]
|
|
||||||
* Remove Frequent view from app picker [Georges; !880]
|
|
||||||
* Fix pad OSD glitches [Carlos; !1290]
|
|
||||||
* Expose actor tree in looking glass [Georges; !1292]
|
|
||||||
* Fixed crashes [Jonas D., Florian; #2709, #2757]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, AsciiWolf, Michael, Piotr, Ting-Wei,
|
|
||||||
Amr, Alexander, Bryan, Georges, Jonas D., Andy, Björn, Koki, Carlos; !1229,
|
|
||||||
!1231, !1233, !1235, #2578, #2735, #2751, #2602, #2777, !1249, #2796, !1268,
|
|
||||||
!1269, !1265, !1245, !1273, #2816, !1274, !1263, !1188, !1276, #2652, !1277,
|
|
||||||
!1281, #2286, !1267, !1286, !1279, !1288, !1293, !1294, !1291]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
AsciiWolf, Michael Catanzaro, Björn Daase, Jonas Dreßler, Bryan Dunsmore,
|
|
||||||
Koki Fukuda, Carlos Garnacho, Andy Holmes, Amr Ibrahim, Soslan Khubulov,
|
|
||||||
Ting-Wei Lan, Michael Lass, Alexander Mikhaylenko, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Bastien Nocera, PrOF-kk, Peter Simonyi
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk],
|
|
||||||
Dušan Kazik [sk], Piotr Drąg [pl], Soslan Khubulov [os],
|
|
||||||
Daniel Mustieles [es], Nathan Follens [nl], Bruce Cowan [en_GB],
|
|
||||||
Florentina Mușat [ro], Milo Casagrande [it], Anders Jonsson [sv],
|
|
||||||
Charles Monzat [fr], Danial Behzadi [fa], sicklylife [ja], Kukuh Syafaat [id],
|
|
||||||
Jordi Mas [ca], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Марко Костић [sr],
|
|
||||||
Christian Kirbach [de], Changwoo Ryu [ko], Matej Urbančič [sl]
|
|
||||||
|
|
||||||
3.37.1
|
|
||||||
======
|
|
||||||
* Improve bluetooth submenu title [Mariana; #2340]
|
|
||||||
* Add openPrefs() convenience method for extensions [Florian; !1163]
|
|
||||||
* Bring back support for empty StIcons [Andre, Jonas D.; !1173, !1178]
|
|
||||||
* Wake up screen when unlocking programmatically [Florian; !1158]
|
|
||||||
* Improve extensions tool error reporting [Florian; #2391]
|
|
||||||
* Improve handling of scale-factor changes [Georges; !1176]
|
|
||||||
* Tone down weekend days with events in calendar [Jakub; #2588]
|
|
||||||
* Fix showing bluetooth submenu when devices were set up [Florian; !1174]
|
|
||||||
* Add support for parental controls filtering [Philip W.; !465]
|
|
||||||
* Provide alternative extension templates [Florian; !812]
|
|
||||||
* Improve weather section's empty state [Mariana; #2179]
|
|
||||||
* Fix translations of folder names [Florian; #2623]
|
|
||||||
* Drop Tweener [Jonas Å.; !1200]
|
|
||||||
* Match ASCII alternatives of system actions [Will; #2688]
|
|
||||||
* Fix delay on lock screen after entering wrong password [Jonas D.; #2655]
|
|
||||||
* Use globalThis instead of window [Andy; #2322]
|
|
||||||
* Inhibit remote access when disabled by session mode [Jonas Å.; !1210]
|
|
||||||
* Improve calendar-server performance [Milan; #1875]
|
|
||||||
* Add gnome-shell-extension-prefs wrapper for compatibility [Florian; !1220]
|
|
||||||
* Fix stuck lock screen after unlock [Jonas D., Florian; #2446]
|
|
||||||
* Fixed crashes [Jonas D., Florian, Carlos; #2584, #2625, !1223, !1218]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Jonas Å., Marco, Andre, Georges,
|
|
||||||
Jonas D., Jan, Philip Ch.,, Xiaoguang, Will, Jordan, Matthew, qarmin;
|
|
||||||
!1126, !1155, !1156, !1165, !1168, !1169, #2551, #2563, !1172, !1175, !1179,
|
|
||||||
!1160, #2562, #2578, !1184, #2559, !1186, #2607, !1191, !1194, !1199, !1203,
|
|
||||||
#2649, #2628, !1205, !1206, !1208, !1207, !1211, !1214, !1213, !1192, !1217,
|
|
||||||
!1219, #1615, #2691, !1094, !1177]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Marco Trevisan (Treviño), Philip Chimento, Milan Crha, Jonas Dreßler,
|
|
||||||
Carlos Garnacho, Andy Holmes, Matthew Leeds, Andre Moreira Magalhaes,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Jordan Petridis,
|
|
||||||
Mariana Picolo, Jakub Steiner, Will Thompson, Jan Tojnar, Xiaoguang Wang,
|
|
||||||
Philip Withnall, qarmin, Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Danial Behzadi [fa],
|
|
||||||
Jiri Grönroos [fi], Ibai Oihanguren Sala [eu], Марко Костић [sr],
|
|
||||||
Rūdolfs Mazurs [lv], Yuri Chornoivan [uk], Carmen Bianca BAKKER [eo],
|
|
||||||
Dingzhong Chen [zh_CN], Rafael Fontenelle [pt_BR], Petr Kovář [cs],
|
|
||||||
Asier Sarasua Garmendia [eu], Daniel Mustieles [es], Emin Tufan Çetin [tr]
|
|
||||||
|
|
||||||
3.36.0
|
|
||||||
======
|
|
||||||
* Fix off-by-1900 error in date conversions [Florian; !1061]
|
|
||||||
* Fix crash on startup with topIcons* extension enabled [Florian; #2308]
|
|
||||||
* Don't require gsd-xsettings for X11 support on wayland [Olivier; !1065]
|
|
||||||
* Fix ibus support in Xorg session [Carlos; #1690]
|
|
||||||
* Improve Extensions D-Bus API [Florian; !1074]
|
|
||||||
* Allow session modes to specify alternative resource name [Marco; !1063]
|
|
||||||
* Fix link to location settings in aggregate menu [Sebastian; #2316]
|
|
||||||
* Fix illegible app folder titles with light theme [ub; !1059]
|
|
||||||
* Really fix visual glitch in sliders [Jonas; #1569]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho,
|
|
||||||
Sebastian Keller, Florian Müllner, ub
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Aman Alam [pa], Goran Vidović [hr], Aurimas Černius [lt],
|
|
||||||
Milo Casagrande [it], Daniel Korostil [uk], sicklylife [ja],
|
|
||||||
Marek Černocký [cs], Nathan Follens [nl]
|
|
||||||
|
|
||||||
3.35.92
|
|
||||||
=======
|
|
||||||
* Plug a memory leak [Jonas D.; !1015]
|
|
||||||
* Fix missing "back" button on login screen [Florian; #2228]
|
|
||||||
* Fix width of window preview titles in overview [Jonas D.; #58]
|
|
||||||
* Fix looking glass text with light style variant [Feichtmeier; !1023]
|
|
||||||
* Center unlock entry [Florian; !1021]
|
|
||||||
* Hide overlay scrollbars in notification popup [Jonas D.; !1013]
|
|
||||||
* Work around add_actor() slowness in icon spring animation [Daniel; !1002]
|
|
||||||
* Add disable-animations heuristics [Jonas Å.; !757]
|
|
||||||
* Fix visual glitches in on-screen keyboard [Carlos; #2214]
|
|
||||||
* Fix clearing changed textures from cache [Florian; #2244]
|
|
||||||
* Fix visual glitch in sliders [Daniel; #1569]
|
|
||||||
* Stop using dedicated lock screen background [Florian; !1001]
|
|
||||||
* Fix entries disappearing after authentication errors [Florian; #2236]
|
|
||||||
* Fix crash when animations are disabled [Florian; #2255]
|
|
||||||
* Fix passing pointer events to clients when magnified [Jonas D.; !993]
|
|
||||||
* Fix keynav on new lock screen [Florian; #2210]
|
|
||||||
* Avoid short-lived allocations on actor removal [Christian; #2263]
|
|
||||||
* Fix super-sized default avatars in user list [Florian, Sam; #2242]
|
|
||||||
* Leave overview when locking the screen [Jonas D.; !1043]
|
|
||||||
* Hide message list on login screen [Florian; #2241]
|
|
||||||
* Avoid IO on the main thread [Christian, Florian; !1050, !1051]
|
|
||||||
* Fix window animations getting stuck when client doesn't respond [Jonas; !1055]
|
|
||||||
* Only subscribe to touchpad events for touchpad gestures [Daniel; !925]
|
|
||||||
* Start X11 session services before Xwayland clients [Carlos; !836, !1056]
|
|
||||||
* Only show switch-user button with unlock prompt [Florian; !1029]
|
|
||||||
* Misc. bug fixes and cleanups [Jonas D., Florian, Georges, Jonas Å., Daniel,
|
|
||||||
Jakub, Philippe; !1018, !1020, !1024, !1027, !1026, !1022, !1031, !1035,
|
|
||||||
!1032, !1025, !1039, #2157, !1037, !1042, !1047, !1048, #2270, !1046,
|
|
||||||
!167, !1016]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Dreßler, Feichtmeier, Carlos Garnacho, Christian Hergert, Sam Hewitt,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Philippe Troin,
|
|
||||||
Daniel van Vugt, Jonas Ådahl
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Danial Behzadi [fa], Efstathios Iosifidis [el], Daniel Mustieles [es],
|
|
||||||
Sabri Ünal [tr], sicklylife [ja], Piotr Drąg [pl], Jordi Mas [ca],
|
|
||||||
Anders Jonsson [sv], Chao-Hsiung Liao [zh_TW], Asier Sarasua Garmendia [eu],
|
|
||||||
Rafael Fontenelle [pt_BR], Марко Костић [sr], Changwoo Ryu [ko],
|
|
||||||
Charles Monzat [fr], Jiri Grönroos [fi], Jor Teron [mjw], Bruce Cowan [en_GB],
|
|
||||||
Emin Tufan Çetin [tr], Alan Mortensen [da], Balázs Úr [hu], Fran Dieguez [gl],
|
|
||||||
Kukuh Syafaat [id]
|
|
||||||
|
|
||||||
3.35.91
|
|
||||||
=======
|
|
||||||
* Improve magnifier [Carlos; !984]
|
|
||||||
* Only enable OSK automatically if touch-mode is enabled [Carlos; #872]
|
|
||||||
* Merge screen shield and unlock dialog to new lock screen [Georges; !872]
|
|
||||||
* Improve ShellBlur effect [Jonas; !991]
|
|
||||||
* Adapt user avatar for new lock screen [Umang, Georges; !922]
|
|
||||||
* Animate prompt transition on lock screen [Florian; !972]
|
|
||||||
* Reduce font-size in dialog titles if text doesn't fit [Jonas; !1012]
|
|
||||||
* Various lock screen improvements and bug fixes [Jakub, Florian, Georges;
|
|
||||||
!996, !997, !999, #2212, !998, !1006, #2215, #2213]
|
|
||||||
* Misc. bug fixes and cleanups [Daniel, Florian, Jakub, nana-4, Jonas; #2170,
|
|
||||||
#2167, !936, !988, #2187, !994, !995, !938, #2194, #2203, !1004, !977, !1014]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Dreßler, Carlos Garnacho, Umang Jain, Daniel Mustieles, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Jakub Steiner, Daniel van Vugt, nana-4
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Mustieles [es, pt_BR], Rafael Fontenelle [pt_BR], Danial Behzadi [fa],
|
|
||||||
Anders Jonsson [sv], Asier Sarasua Garmendia [eu], Aurimas Černius [lt],
|
|
||||||
Bruce Cowan [en_GB], sicklylife [ja], Fran Dieguez [gl], Kukuh Syafaat [id],
|
|
||||||
Emin Tufan Çetin [tr], Jiri Grönroos [fi], Jordi Mas [ca], Claude Paroz [fr],
|
|
||||||
Ask Hjorth Larsen [da], Марко Костић [sr], Piotr Drąg [pl],
|
|
||||||
Charles Monzat [fr], Balázs Úr [hu]
|
|
||||||
|
|
||||||
3.35.90
|
|
||||||
=======
|
|
||||||
* Update default favorite apps [Michael; !907]
|
|
||||||
* Add Shell.Blur effect [Georges; !864, !924]
|
|
||||||
* Overhaul scroll/swipe gestures [Alexander; !821, !825, !826]
|
|
||||||
* Fix VPN connections when delaying request [Florian; #2008]
|
|
||||||
* Overhaul theme [Sam, Jakub, nana-4; !904, !931, !957]
|
|
||||||
* Improve visual appearance of Weather integration [Florian; #1143]
|
|
||||||
* Implement new system dialog designs [Jonas; #1343]
|
|
||||||
* Animate position changes of app icons [Georges; !882]
|
|
||||||
* Add St.Viewport [Georges; !929]
|
|
||||||
* Make app folders behave as dialogs [Georges; !896]
|
|
||||||
* Add do-not-disturb functionality to calendar popup [Florian; #239]
|
|
||||||
* Show hint actor in focused entries [Jonas; !944]
|
|
||||||
* Switch screen-recorder back to VP8 [Björn; #256]
|
|
||||||
* Allow to run perf-tool as wayland compositor [Olivier; !941]
|
|
||||||
* Handle extension updates [Florian; !945]
|
|
||||||
* Animate showing and hiding caps-lock warning [Jonas; !952]
|
|
||||||
* Support "auto" lengths in CSS [Florian; !971]
|
|
||||||
* Turn extension-prefs into the official Extensions app [Florian; #1968]
|
|
||||||
* Sandbox the portal helper [Michael; !983]
|
|
||||||
* Misc. bug fixes and cleanups [Florian, Björn, Jakub, Alexander, Daniel V.,
|
|
||||||
Jonas, nana-4, Carlos, Sebastian, Daniel G., Georges, Piotr; !918, !917,
|
|
||||||
!919, !920, #763, #791659, !927, #2091, !930, !926, !888, !934, !168, #2133,
|
|
||||||
#682, #2142, #2131, !943, #2132, #1958, #2146, !951, #1779, #2130, !964,
|
|
||||||
!965, !948, #2151, #1746, !967, !760, !968, !970, !973, #2169, #2176, !978,
|
|
||||||
!980, !979, #2177, !981, #2180, !974]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Michael Catanzaro, Björn Daase, Jonas Dreßler, Piotr Drąg, Olivier Fourdan,
|
|
||||||
Carlos Garnacho, Sam Hewitt, Sebastian Keller, Andre Klapper,
|
|
||||||
Alexander Mikhaylenko, Daniel García Moreno, Florian Müllner,
|
|
||||||
Georges Basile Stavracas Neto, Jakub Steiner, Daniel van Vugt, nana-4
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Asier Sarasua Garmendia [eu], Daniel Mustieles [es], Andrej Shadura [sk],
|
|
||||||
Carmen Bianca BAKKER [eo], Sucipto [id], Dušan Kazik [sk], Goran Vidović [hr],
|
|
||||||
sicklylife [ja], Kukuh Syafaat [id], Yi-Jyun Pan [zh_TW],
|
|
||||||
Rafael Fontenelle [pt_BR], Jordi Mas [ca], Jiri Grönroos [fi],
|
|
||||||
Fabio Tomat [fur], Umarzuki Bin Mochlis Moktar [ms], Daniel Korostil [uk],
|
|
||||||
Jor Teron [mjw], Anders Jonsson [sv], Aurimas Černius [lt]
|
|
||||||
|
|
||||||
3.35.3
|
|
||||||
======
|
|
||||||
* Add discrete GPU support for NVidia drivers [Bastien; #1810]
|
|
||||||
* Fix DND of window previews with tablet devices [Carlos; !897]
|
|
||||||
* Update pad OSD actions dynamically on mode changes [Carlos; !898]
|
|
||||||
* st: Add dedicated PasswordEntry widget [Umang; !619]
|
|
||||||
* Allow stand-alone builds of gnome-extensions tool [Florian; !877]
|
|
||||||
* extension-tool: Don't treat missing .js handler as error [Chuck; !905]
|
|
||||||
* Disallow top bar menus without top bar [Florian; #2002]
|
|
||||||
* Misc. bug fixes and cleanups [Georges, Florian, Robert, Umang; !901,
|
|
||||||
#789937, !909, !910, !911, !913, !916]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Michael Catanzaro, Chuck, Carlos Garnacho, Umang Jain, Robert Mader,
|
|
||||||
Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Fabio Tomat [fur], Fran Dieguez [gl], Jordi Mas [ca], Daniel Mustieles [es]
|
|
||||||
|
|
||||||
3.35.2
|
3.35.2
|
||||||
======
|
======
|
||||||
* Fix unredirection after cancelled animations [Florian; #1788]
|
* Fix unredirection after cancelled animations [Florian; #1788]
|
||||||
@ -1006,7 +245,7 @@ Translators:
|
|||||||
======
|
======
|
||||||
* Fix keeping actors visible in scrollviews [Marco; #1061]
|
* Fix keeping actors visible in scrollviews [Marco; #1061]
|
||||||
* Move some chrome above popup windows [Jonas D.; !358]
|
* Move some chrome above popup windows [Jonas D.; !358]
|
||||||
* Include 'sandboxed-app-id' in window introspection info [Florian; #1289]
|
* Include 'sandboxed-app-id' in winodw introspection info [Florian; #1289]
|
||||||
* Port to libecal-2.0 [Milan; !501]
|
* Port to libecal-2.0 [Milan; !501]
|
||||||
* Support TCRYPT in mount password dialog [segfault; !126]
|
* Support TCRYPT in mount password dialog [segfault; !126]
|
||||||
* Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499,
|
* Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499,
|
||||||
@ -1555,7 +794,7 @@ Translations:
|
|||||||
* gdm: Fix "Not listed" focus indication [Florian; #784040]
|
* gdm: Fix "Not listed" focus indication [Florian; #784040]
|
||||||
* Fix missing icons in freedesktop notifications [Florian; #784245]
|
* Fix missing icons in freedesktop notifications [Florian; #784245]
|
||||||
* gdm: Disable user list when empty [Xiaoguang; #731320]
|
* gdm: Disable user list when empty [Xiaoguang; #731320]
|
||||||
* gdm: Allow empty response to PAM messages [Ray; #784360]
|
* gdm: Allow empty reponse to PAM messages [Ray; #784360]
|
||||||
* Fix blocked clicks in shutdown dialog [Florian; #781738]
|
* Fix blocked clicks in shutdown dialog [Florian; #781738]
|
||||||
* Show OSD popup when changing volume via scroll wheel [Florian; #781028]
|
* Show OSD popup when changing volume via scroll wheel [Florian; #781028]
|
||||||
* Refine list search results [Rares; #749957]
|
* Refine list search results [Rares; #749957]
|
||||||
@ -3015,7 +2254,7 @@ Translations:
|
|||||||
* Merge the wayland branch [Giovanni, Neil; #707467]
|
* Merge the wayland branch [Giovanni, Neil; #707467]
|
||||||
* Make search entry behave better in RTL locales [Matthias, Florian; #705779]
|
* Make search entry behave better in RTL locales [Matthias, Florian; #705779]
|
||||||
* Allow to change app pages with pageUp/pageDown keys [Carlos; #707979]
|
* Allow to change app pages with pageUp/pageDown keys [Carlos; #707979]
|
||||||
* Set appropriate a11y states on expandable menu items [Alejandro; #708038]
|
* Set approriate a11y states on expandable menu items [Alejandro; #708038]
|
||||||
* Improve page indicator animation [Carlos; #707565]
|
* Improve page indicator animation [Carlos; #707565]
|
||||||
* Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen,
|
* Misc bug fixes and cleanups [Florian, Olivier, Jasper, Giovanni, Magdalen,
|
||||||
Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600,
|
Adel, Carlos, Rico, Joanmarie; #707308, #707430, #707508, #707557, #707600,
|
||||||
@ -4299,7 +3538,7 @@ Translations:
|
|||||||
* Update the calendar code to use ECalClient [Giovanni; #671177]
|
* Update the calendar code to use ECalClient [Giovanni; #671177]
|
||||||
* Update jhbuild script to use the main moduleset [Owen, Will; #668440]
|
* Update jhbuild script to use the main moduleset [Owen, Will; #668440]
|
||||||
* StTextureCache: code cleanup, evict unused icons, merge together
|
* StTextureCache: code cleanup, evict unused icons, merge together
|
||||||
simultaneous requests for the same icon [Jasper; #670771, #671656, #672273]
|
simulataneous requests for the same icon [Jasper; #670771, #671656, #672273]
|
||||||
* Clean up St for recent Clutter changes and fix bugs. StContainer and
|
* Clean up St for recent Clutter changes and fix bugs. StContainer and
|
||||||
StGroup are removed [Jasper, Florian; #670034, #670640, #670904]
|
StGroup are removed [Jasper, Florian; #670034, #670640, #670904]
|
||||||
* Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103]
|
* Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103]
|
||||||
@ -4434,7 +3673,7 @@ Translations:
|
|||||||
[Stefano; #664201]
|
[Stefano; #664201]
|
||||||
- Delay rearranging windows in the overview as long as the pointer
|
- Delay rearranging windows in the overview as long as the pointer
|
||||||
is over a window [Vit; #645325]
|
is over a window [Vit; #645325]
|
||||||
* Add a GConf => DConf migration file for overridden Mutter settings
|
* Add a GConf => DConf migration file for overriden Mutter settings
|
||||||
[Florian; #667636]
|
[Florian; #667636]
|
||||||
* When a VPN connection is active, show that as the network icon
|
* When a VPN connection is active, show that as the network icon
|
||||||
[Giovanni; #665115]
|
[Giovanni; #665115]
|
||||||
@ -4681,7 +3920,7 @@ Translations:
|
|||||||
- Add fingerprint reader support [Ray; #657823]
|
- Add fingerprint reader support [Ray; #657823]
|
||||||
- Add a power button offering the choice of Suspend/Restart/Power off
|
- Add a power button offering the choice of Suspend/Restart/Power off
|
||||||
[Ray; #657822]
|
[Ray; #657822]
|
||||||
- Remove the option to view the current keyboard layout [Matthias; #659164]
|
- Remove the option to view the current keyboad layout [Matthias; #659164]
|
||||||
- Make Control-Alt-Tab work for full keyboard access [Ray; #659177]
|
- Make Control-Alt-Tab work for full keyboard access [Ray; #659177]
|
||||||
* Frequently initiate a full garbage collection; Spidermonkey isn't very good
|
* Frequently initiate a full garbage collection; Spidermonkey isn't very good
|
||||||
at tracking the amount of resources we have allocated so this hopefully will
|
at tracking the amount of resources we have allocated so this hopefully will
|
||||||
@ -4898,7 +4137,7 @@ Translations:
|
|||||||
* Fix selection highlighting for light-on-dark entries [Jasper; #643768]
|
* Fix selection highlighting for light-on-dark entries [Jasper; #643768]
|
||||||
* Make control-Return in the overview open a new window [Maxim]
|
* Make control-Return in the overview open a new window [Maxim]
|
||||||
* Delay showing the alt-Tab switcher to reduce visual noise when
|
* Delay showing the alt-Tab switcher to reduce visual noise when
|
||||||
flipping between windows [Dan; #652346]
|
flipping betweeen windows [Dan; #652346]
|
||||||
* When we have vertically stacked monitors, put the message tray
|
* When we have vertically stacked monitors, put the message tray
|
||||||
on the bottom one [Dan; #636963]
|
on the bottom one [Dan; #636963]
|
||||||
* Fix various problems with keynav and the Activities button
|
* Fix various problems with keynav and the Activities button
|
||||||
@ -5049,7 +4288,7 @@ Translations:
|
|||||||
- Fix missing device descriptions with multiple devices of the
|
- Fix missing device descriptions with multiple devices of the
|
||||||
same type [Giovanni]
|
same type [Giovanni]
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=646074
|
https://bugzilla.gnome.org/show_bug.cgi?id=646074
|
||||||
- Label ad-hoc networks with an appropriate icon [Dan]
|
- Label ad-hoc neworks with an appropriate icon [Dan]
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=646141
|
https://bugzilla.gnome.org/show_bug.cgi?id=646141
|
||||||
- Fix displaying some devices states as "invalid" [Dan]
|
- Fix displaying some devices states as "invalid" [Dan]
|
||||||
https://bugzilla.gnome.org/show_bug.cgi?id=646946
|
https://bugzilla.gnome.org/show_bug.cgi?id=646946
|
||||||
|
17
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,7 +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
|
## Contributing
|
||||||
|
|
||||||
@ -20,24 +19,10 @@ Commit messages should follow the [GNOME commit message
|
|||||||
guidelines](https://wiki.gnome.org/Git/CommitMessages). We require an URL
|
guidelines](https://wiki.gnome.org/Git/CommitMessages). We require an URL
|
||||||
to either an issue or a merge request in each commit.
|
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,
|
||||||
version 2 or later. See the [COPYING][license] file for details.
|
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
|
||||||
|
@ -123,7 +123,7 @@ def locale_to_xkb(locale, name):
|
|||||||
if xkb:
|
if xkb:
|
||||||
return xkb
|
return xkb
|
||||||
else:
|
else:
|
||||||
raise KeyError("layout %s explicitly disabled in overrides"
|
raise KeyError("layout %s explicitely disabled in overrides"
|
||||||
% locale)
|
% locale)
|
||||||
xkb_names = sorted(name_to_xkb.keys())
|
xkb_names = sorted(name_to_xkb.keys())
|
||||||
if name in xkb_names:
|
if name in xkb_names:
|
||||||
@ -161,16 +161,12 @@ def convert_file(source_file, destination_path):
|
|||||||
try:
|
try:
|
||||||
xkb_name = locale_to_xkb(root["locale"], root["name"])
|
xkb_name = locale_to_xkb(root["locale"], root["name"])
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
logging.warning(e)
|
logging.warn(e)
|
||||||
return False
|
return False
|
||||||
destination_file = os.path.join(destination_path, xkb_name + ".json")
|
destination_file = os.path.join(destination_path, xkb_name + ".json")
|
||||||
|
|
||||||
try:
|
with open(destination_file, 'w', encoding="utf-8") as dest_fd:
|
||||||
with open(destination_file, 'x', encoding="utf-8") as dest_fd:
|
json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True)
|
||||||
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)
|
logging.debug("written %s", destination_file)
|
||||||
|
|
@ -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,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,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 +1,12 @@
|
|||||||
<node>
|
<node>
|
||||||
<interface name="org.gnome.Shell.CalendarServer">
|
<interface name="org.gnome.Shell.CalendarServer">
|
||||||
<method name="SetTimeRange">
|
<method name="GetEvents">
|
||||||
<arg type="x" name="since" direction="in"/>
|
<arg type="x" direction="in" />
|
||||||
<arg type="x" name="until" direction="in"/>
|
<arg type="x" direction="in" />
|
||||||
<arg type="b" name="force_reload" direction="in"/>
|
<arg type="b" direction="in" />
|
||||||
|
<arg type="a(sssbxxa{sv})" direction="out" />
|
||||||
</method>
|
</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" />
|
<property name="HasCalendars" type="b" access="read" />
|
||||||
|
<signal name="Changed" />
|
||||||
</interface>
|
</interface>
|
||||||
</node>
|
</node>
|
||||||
|
@ -180,10 +180,10 @@
|
|||||||
|
|
||||||
Enable an extension.
|
Enable an extension.
|
||||||
-->
|
-->
|
||||||
<method name="EnableExtension">
|
<method name="EnableExtension"> \
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
<arg type="s" direction="in" name="uuid"/> \
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/> \
|
||||||
</method>
|
</method> \
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
DisableExtension:
|
DisableExtension:
|
||||||
@ -192,44 +192,21 @@
|
|||||||
|
|
||||||
Disable an extension.
|
Disable an extension.
|
||||||
-->
|
-->
|
||||||
<method name="DisableExtension">
|
<method name="DisableExtension"> \
|
||||||
<arg type="s" direction="in" name="uuid"/>
|
<arg type="s" direction="in" name="uuid"/> \
|
||||||
<arg type="b" direction="out" name="success"/>
|
<arg type="b" direction="out" name="success"/> \
|
||||||
</method>
|
</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
|
||||||
@ -257,11 +234,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>
|
||||||
|
@ -57,27 +57,5 @@
|
|||||||
<method name="GetWindows">
|
<method name="GetWindows">
|
||||||
<arg name="windows" direction="out" type="a{ta{sv}}" />
|
<arg name="windows" direction="out" type="a{ta{sv}}" />
|
||||||
</method>
|
</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>
|
</interface>
|
||||||
</node>
|
</node>
|
||||||
|
@ -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>
|
||||||
|
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
|
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,34 @@
|
|||||||
<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/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
|
||||||
<file alias="icons/scalable/status/eye-not-looking-symbolic.svg">eye-not-looking-symbolic.svg</file>
|
<file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
|
||||||
<file alias="icons/scalable/actions/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
|
<file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
|
||||||
<file alias="icons/scalable/actions/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
|
<file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-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 alias="icons/scalable/status/screen-privacy-symbolic.svg">screen-privacy-symbolic.svg</file>
|
|
||||||
<file>toggle-off.svg</file>
|
<file>toggle-off.svg</file>
|
||||||
<file>toggle-off-dark.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.svg</file>
|
||||||
<file>toggle-on-dark.svg</file>
|
<file>toggle-on-dark.svg</file>
|
||||||
<file>toggle-on-hc.svg</file>
|
<file>toggle-on-hc.svg</file>
|
||||||
<file>workspace-placeholder.svg</file>
|
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
27
data/gnome-shell-wayland.service.in
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell on Wayland
|
||||||
|
# On wayland, force a session shutdown
|
||||||
|
OnFailure=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
|
||||||
|
|
||||||
|
# The units already conflict because they use the same BusName
|
||||||
|
#Conflicts=gnome-shell-x11.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=@bindir@/gnome-shell
|
||||||
|
# Exit code 1 means we are probably *not* dealing with an extension failure
|
||||||
|
SuccessExitStatus=1
|
||||||
|
# On wayland we cannot restart
|
||||||
|
Restart=no
|
||||||
|
# Kill any stubborn child processes after this long
|
||||||
|
TimeoutStopSec=5
|
10
data/gnome-shell-wayland.target
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=GNOME Shell on Wayland
|
||||||
|
DefaultDependencies=no
|
||||||
|
|
||||||
|
Requisite=gnome-session-initialized.target
|
||||||
|
PartOf=gnome-session-initialized.target
|
||||||
|
Before=gnome-session-initialized.target
|
||||||
|
|
||||||
|
Requires=gnome-shell-wayland.service
|
||||||
|
After=gnome-shell-wayland.service
|
@ -1,7 +1,7 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=GNOME Shell on X11
|
Description=GNOME Shell on X11
|
||||||
# On X11, try to show the GNOME Session Failed screen
|
# On X11, try to show the GNOME Session Failed screen
|
||||||
OnFailure=org.gnome.Shell-disable-extensions.service gnome-session-failed.target
|
OnFailure=gnome-shell-disable-extensions.service gnome-session-failed.target
|
||||||
OnFailureJobMode=replace
|
OnFailureJobMode=replace
|
||||||
CollectMode=inactive-or-failed
|
CollectMode=inactive-or-failed
|
||||||
RefuseManualStart=on
|
RefuseManualStart=on
|
||||||
@ -13,24 +13,18 @@ Requisite=gnome-session-initialized.target
|
|||||||
PartOf=gnome-session-initialized.target
|
PartOf=gnome-session-initialized.target
|
||||||
Before=gnome-session-initialized.target
|
Before=gnome-session-initialized.target
|
||||||
|
|
||||||
|
# The units already conflict because they use the same BusName
|
||||||
|
#Conflicts=gnome-shell-wayland.service
|
||||||
|
|
||||||
# Limit startup frequency more than the default
|
# Limit startup frequency more than the default
|
||||||
StartLimitIntervalSec=15s
|
StartLimitIntervalSec=15s
|
||||||
StartLimitBurst=3
|
StartLimitBurst=3
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Slice=session.slice
|
|
||||||
Type=notify
|
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
|
ExecStart=@bindir@/gnome-shell
|
||||||
# Exit code 1 means we are probably *not* dealing with an extension failure
|
# Exit code 1 means we are probably *not* dealing with an extension failure
|
||||||
SuccessExitStatus=1
|
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.
|
# On X11 we want to restart on-success (Alt+F2 + r) and on-failure.
|
||||||
Restart=always
|
Restart=always
|
||||||
# Do not wait before restarting the shell
|
# Do not wait before restarting the shell
|
@ -1,10 +1,10 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=GNOME Shell
|
Description=GNOME Shell on X11
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
|
|
||||||
Requisite=gnome-session-initialized.target
|
Requisite=gnome-session-initialized.target
|
||||||
PartOf=gnome-session-initialized.target
|
PartOf=gnome-session-initialized.target
|
||||||
Before=gnome-session-initialized.target
|
Before=gnome-session-initialized.target
|
||||||
|
|
||||||
Wants=org.gnome.Shell@wayland.service
|
Requires=gnome-shell-x11.service
|
||||||
Wants=org.gnome.Shell@x11.service
|
After=gnome-shell-x11.service
|
@ -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
|
||||||
|
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,6 +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('VERSION', meson.project_version())
|
||||||
desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false')
|
desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false')
|
||||||
|
|
||||||
foreach desktop_file : desktop_files
|
foreach desktop_file : desktop_files
|
||||||
@ -41,10 +42,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 +72,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()
|
||||||
@ -106,21 +101,22 @@ if have_systemd
|
|||||||
unitconf.set('bindir', bindir)
|
unitconf.set('bindir', bindir)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'org.gnome.Shell@x11.service.in',
|
input: 'gnome-shell-x11.service.in',
|
||||||
output: 'org.gnome.Shell@x11.service',
|
output: 'gnome-shell-x11.service',
|
||||||
configuration: unitconf,
|
configuration: unitconf,
|
||||||
install_dir: systemduserunitdir
|
install_dir: systemduserunitdir
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input: 'org.gnome.Shell@wayland.service.in',
|
input: 'gnome-shell-wayland.service.in',
|
||||||
output: 'org.gnome.Shell@wayland.service',
|
output: 'gnome-shell-wayland.service',
|
||||||
configuration: unitconf,
|
configuration: unitconf,
|
||||||
install_dir: systemduserunitdir
|
install_dir: systemduserunitdir
|
||||||
)
|
)
|
||||||
|
|
||||||
units = files('org.gnome.Shell.target',
|
units = files('gnome-shell-x11.target',
|
||||||
'org.gnome.Shell-disable-extensions.service')
|
'gnome-shell-wayland.target',
|
||||||
|
'gnome-shell-disable-extensions.service')
|
||||||
|
|
||||||
install_data(units, install_dir: systemduserunitdir)
|
install_data(units, install_dir: systemduserunitdir)
|
||||||
endif
|
endif
|
||||||
@ -131,3 +127,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,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
|
||||||
|
@ -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
|
|
@ -41,7 +41,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 +50,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', 'org.gnome.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,49 +101,12 @@
|
|||||||
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">
|
<key name="introspect" type="b">
|
||||||
<default>''</default>
|
<default>false</default>
|
||||||
<summary>The last version the “Welcome to GNOME” dialog was shown for</summary>
|
<summary>Enable introspection API</summary>
|
||||||
<description>
|
<description>
|
||||||
This key determines for which version the “Welcome to GNOME” dialog was
|
Enables a D-Bus API that allows to introspect the application state of
|
||||||
last shown. An empty string represents the oldest possible version, and
|
the shell.
|
||||||
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>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||||
@ -151,20 +121,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>
|
||||||
@ -230,14 +186,6 @@
|
|||||||
<default>["<Super>9"]</default>
|
<default>["<Super>9"]</default>
|
||||||
<summary>Switch to application 9</summary>
|
<summary>Switch to application 9</summary>
|
||||||
</key>
|
</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>
|
|
||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.app-switcher"
|
<schema id="org.gnome.shell.app-switcher"
|
||||||
|
@ -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 @@
|
|||||||
[
|
[
|
||||||
"£"
|
"£"
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
"¢"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"€"
|
||||||
|
],
|
||||||
[
|
[
|
||||||
"¥"
|
"¥"
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"$",
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"¢"
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"^",
|
"^",
|
||||||
"↑",
|
"↑",
|
||||||
@ -587,4 +504,4 @@
|
|||||||
],
|
],
|
||||||
"locale": "nb",
|
"locale": "nb",
|
||||||
"name": "Norwegian Bokmål"
|
"name": "Norwegian Bokmål"
|
||||||
}
|
}
|
@ -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,16 @@
|
|||||||
$variant: 'dark';
|
$variant: 'light';
|
||||||
|
|
||||||
@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,15 +1,16 @@
|
|||||||
// 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%));
|
|
||||||
|
$base_color: if($variant == 'light', #ffffff, lighten(desaturate(#241f31, 20%), 2%));
|
||||||
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
|
$bg_color: if($variant == 'light', #f6f5f4, darken(desaturate(#3d3846, 100%), 4%));
|
||||||
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
|
$fg_color: if($variant == 'light', #2e3436, #eeeeec);
|
||||||
|
|
||||||
$selected_fg_color: #fff;
|
$selected_fg_color: #ffffff;
|
||||||
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
|
$selected_bg_color: if($variant == 'light', #3584e4, darken(#3584e4, 10%));
|
||||||
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
|
$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
|
||||||
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 8%));
|
$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
|
||||||
$borders_edge: if($variant == 'light', rgba(255,255,255,0.8), transparentize($fg_color, 0.93));
|
$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
|
||||||
$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
|
$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%));
|
$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
|
||||||
$top_hilight: $borders_edge;
|
$top_hilight: $borders_edge;
|
||||||
@ -27,13 +28,13 @@ $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.84);
|
||||||
|
|
||||||
$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
|
$shadow_color: transparentize(black, 0.9);
|
||||||
|
|
||||||
//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,7 +31,8 @@
|
|||||||
//
|
//
|
||||||
// $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
|
||||||
@ -44,9 +45,8 @@
|
|||||||
}
|
}
|
||||||
@if $t==focus {
|
@if $t==focus {
|
||||||
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 +58,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 +96,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:$bg_color, $tc:$fg_color, $edge: $borders_edge) {
|
||||||
//
|
//
|
||||||
// Button drawing function
|
// Button drawing function
|
||||||
//
|
//
|
||||||
@ -120,8 +117,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,53 +124,59 @@
|
|||||||
// 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);
|
$_button_shadow: 0 1px 2px transparentize($shadow_color, 0.03);
|
||||||
|
|
||||||
// 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);
|
|
||||||
// box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
|
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// focused button
|
|
||||||
@if $t==focus {
|
|
||||||
color: $tc;
|
color: $tc;
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
background-color: $c;
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
border-color: $borders_color;
|
||||||
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
|
box-shadow: $_button_shadow;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
}
|
||||||
|
@if $t==focus {
|
||||||
|
//
|
||||||
|
// focused button
|
||||||
|
//
|
||||||
|
color: $tc;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
icon-shadow: 0 1px black;
|
||||||
|
box-shadow: inset 0px 0px 0px 2px $selected_bg_color;
|
||||||
//border-color: $selected_bg_color;
|
//border-color: $selected_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
// hover button
|
|
||||||
@else if $t==hover {
|
@else if $t==hover {
|
||||||
|
//
|
||||||
|
// active osd button
|
||||||
|
//
|
||||||
color: $tc;
|
color: $tc;
|
||||||
background-color: lighten($c, if($variant == 'light', 8%, 5%));
|
border-color: $borders_color;
|
||||||
border-color: if($variant == 'light', draw_border_color(lighten($c, 7%)), draw_border_color($c));
|
background-color: $c;
|
||||||
@include draw_shadows($button_shadow);
|
box-shadow: $_button_shadow;
|
||||||
text-shadow: 0 1px $text_shadow_color;
|
text-shadow: 0 1px black;
|
||||||
icon-shadow: 0 1px $text_shadow_color;
|
icon-shadow: 0 1px black;
|
||||||
}
|
|
||||||
|
|
||||||
// active button
|
}
|
||||||
@else if $t==active {
|
@else if $t==active {
|
||||||
|
//
|
||||||
|
// active osd button
|
||||||
|
//
|
||||||
color: $tc;
|
color: $tc;
|
||||||
background-color: darken($c,3%);
|
border-color: $borders_color;
|
||||||
border-color: draw_border_color(if($variant == 'light', $c, darken($c,7%)));
|
background-color: $c;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
icon-shadow: none;
|
icon-shadow: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// insensitive button
|
|
||||||
@else if $t==insensitive {
|
@else if $t==insensitive {
|
||||||
|
|
||||||
color: $insensitive_fg_color;
|
color: $insensitive_fg_color;
|
||||||
border-color: $insensitive_borders_color;
|
border-color: $insensitive_borders_color;
|
||||||
background-color: $insensitive_bg_color;
|
background-color: $insensitive_bg_color;
|
||||||
@ -183,50 +184,19 @@
|
|||||||
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,11 @@ $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
|
$shadow_color: transparentize(black, 0.9);
|
||||||
|
|
||||||
//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; }
|
|
||||||
}
|
|
@ -1,73 +0,0 @@
|
|||||||
/* Dash */
|
|
||||||
|
|
||||||
$dash_background_color: #3b3b3b;
|
|
||||||
$dash_placeholder_size: 32px;
|
|
||||||
$dash_padding: $base_padding + 4px; // 10px
|
|
||||||
$dash_spacing: $base_padding / 4;
|
|
||||||
|
|
||||||
$dash_bottom_margin: $base_margin * 4;
|
|
||||||
|
|
||||||
$dash_border_radius: $modal_radius * 1.5;
|
|
||||||
|
|
||||||
#dash {
|
|
||||||
@include fontsize($base_font_size - 2);
|
|
||||||
margin-top: $base_spacing * 3;
|
|
||||||
padding: 0 $dash_padding;
|
|
||||||
|
|
||||||
.placeholder {
|
|
||||||
// background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
|
|
||||||
background-image:none;
|
|
||||||
background-size: contain;
|
|
||||||
height: $dash_placeholder_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-dash-drop-target {
|
|
||||||
width: $dash_placeholder_size;
|
|
||||||
height: $dash_placeholder_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overview-icon {
|
|
||||||
padding: $dash_padding / 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.dash-background {
|
|
||||||
background-color: $dash_background_color;
|
|
||||||
margin-bottom: $dash_bottom_margin;
|
|
||||||
padding: $dash_padding;
|
|
||||||
border-radius: $dash_border_radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dash Items
|
|
||||||
.dash-item-container .app-well-app, .show-apps {
|
|
||||||
padding: $dash_padding $dash_spacing $dash_padding + $dash_bottom_margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dash-separator {
|
|
||||||
width: 1px;
|
|
||||||
margin: 0 ($dash_spacing + ($dash_padding / 2)) $dash_bottom_margin;
|
|
||||||
background-color: transparentize($osd_fg_color,0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
// OSD Tooltip
|
|
||||||
.dash-label {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
background-color: $osd_bg_color;
|
|
||||||
border-radius: 99px;
|
|
||||||
padding: $base_padding $base_padding * 2;
|
|
||||||
text-align: center;
|
|
||||||
-y-offset: $base_margin * 3; // distance from the dash edge
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show apps button
|
|
||||||
.show-apps {
|
|
||||||
@include overview-icon($osd_fg_color);
|
|
||||||
|
|
||||||
&:focus,
|
|
||||||
&:checked {
|
|
||||||
.overview-icon {
|
|
||||||
background-color: transparentize($osd_bg_color,0.5);
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,173 +0,0 @@
|
|||||||
/* Modal Dialogs */
|
|
||||||
|
|
||||||
.headline {
|
|
||||||
@include fontsize($base_font_size + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-dialog {
|
|
||||||
border-radius: $modal_radius;
|
|
||||||
@extend %bubble_panel;
|
|
||||||
|
|
||||||
.modal-dialog-content-box {
|
|
||||||
margin: 32px 40px;
|
|
||||||
spacing: 32px;
|
|
||||||
max-width: 28em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-dialog-linked-button {
|
|
||||||
@extend %bubble_button;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* End Session Dialog */
|
|
||||||
.end-session-dialog {
|
|
||||||
width: 30em;
|
|
||||||
|
|
||||||
.end-session-dialog-battery-warning,
|
|
||||||
.dialog-list-title {
|
|
||||||
color: $warning_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Message Dialog */
|
|
||||||
.message-dialog-content {
|
|
||||||
spacing: 18px;
|
|
||||||
|
|
||||||
.message-dialog-title {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 18pt;
|
|
||||||
font-weight: 800;
|
|
||||||
|
|
||||||
&.lightweight {
|
|
||||||
font-size: 13pt;
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.message-dialog-description { text-align: center; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dialog List */
|
|
||||||
.dialog-list {
|
|
||||||
spacing: 18px;
|
|
||||||
|
|
||||||
.dialog-list-title {
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-list-scrollview { max-height: 200px; }
|
|
||||||
.dialog-list-box {
|
|
||||||
spacing: 1em;
|
|
||||||
|
|
||||||
.dialog-list-item {
|
|
||||||
spacing: 1em;
|
|
||||||
|
|
||||||
.dialog-list-item-title { font-weight: bold; }
|
|
||||||
.dialog-list-item-description {
|
|
||||||
color: darken($fg_color,5%);
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Run Dialog */
|
|
||||||
.run-dialog {
|
|
||||||
.modal-dialog-content-box {
|
|
||||||
margin-top: 24px;
|
|
||||||
margin-bottom: 14px;
|
|
||||||
}
|
|
||||||
.run-dialog-entry { width: 20em; }
|
|
||||||
.run-dialog-description {
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
text-align: center;
|
|
||||||
color: darken($fg_color, 20%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Password or Authentication Dialog */
|
|
||||||
|
|
||||||
.prompt-dialog {
|
|
||||||
width: 28em;
|
|
||||||
|
|
||||||
.modal-dialog-content-box {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-password-grid {
|
|
||||||
spacing-rows: 8px;
|
|
||||||
spacing-columns: 4px;
|
|
||||||
|
|
||||||
.prompt-dialog-password-entry {
|
|
||||||
width: auto;
|
|
||||||
|
|
||||||
// 4px (spacing) + 16px (spinner-width)
|
|
||||||
&:ltr { margin-left: 20px; }
|
|
||||||
&:rtl { margin-right: 20px; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-password-layout {
|
|
||||||
spacing: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-password-entry {
|
|
||||||
width: 20em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-error-label,
|
|
||||||
.prompt-dialog-info-label,
|
|
||||||
.prompt-dialog-null-label {
|
|
||||||
text-align: center;
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.prompt-dialog-error-label {
|
|
||||||
color: $warning_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Polkit Dialog */
|
|
||||||
|
|
||||||
.polkit-dialog-user-layout {
|
|
||||||
text-align: center;
|
|
||||||
spacing: 8px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
|
|
||||||
.polkit-dialog-user-root-label { color: $warning_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Audio selection dialog */
|
|
||||||
.audio-device-selection-dialog {
|
|
||||||
.modal-dialog-content-box { margin-bottom: 28px; }
|
|
||||||
.audio-selection-box { spacing: 20px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-selection-device {
|
|
||||||
border: 1px solid $bubble_borders_color;
|
|
||||||
border-radius: 12px;
|
|
||||||
&:hover,&:focus { background-color: $hover_bg_color; }
|
|
||||||
&:active {
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-selection-device-box {
|
|
||||||
padding: 20px;
|
|
||||||
spacing: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-selection-device-icon {
|
|
||||||
icon-size: $base_icon_size * 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Welcome dialog */
|
|
||||||
.welcome-dialog-image {
|
|
||||||
background-image: url("resource:///org/gnome/shell/theme/gnome-shell-start.svg");
|
|
||||||
background-size: contain;
|
|
||||||
/* Reasonable maximum dimensions */
|
|
||||||
height: 300px;
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
/* Entries */
|
|
||||||
|
|
||||||
StEntry {
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
padding: 8px;
|
|
||||||
border-width: 0;
|
|
||||||
color: $fg_color;
|
|
||||||
@include entry(normal);
|
|
||||||
//&:hover { @include entry(hover);}
|
|
||||||
&:focus { @include entry(focus);}
|
|
||||||
&:insensitive { @include entry(insensitive);}
|
|
||||||
selection-background-color: $selected_bg_color;
|
|
||||||
selected-color: $selected_fg_color;
|
|
||||||
StIcon.capslock-warning {
|
|
||||||
icon-size: 16px;
|
|
||||||
warning-color: $warning_color;
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
||||||
StIcon.peek-password {
|
|
||||||
icon-size: $base_icon_size;
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
||||||
StLabel.hint-text {
|
|
||||||
margin-left: 2px;
|
|
||||||
color: transparentize($fg_color, 0.3);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
// hotplug
|
|
||||||
|
|
||||||
.hotplug-notification-item {
|
|
||||||
@extend %bubble_button;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hotplug-notification-item-icon {
|
|
||||||
icon-size: 24px;
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
// IBus Candidate Popup
|
|
||||||
|
|
||||||
.candidate-popup-boxpointer {
|
|
||||||
@extend .popup-menu-boxpointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-popup-content {
|
|
||||||
padding: 0.5em;
|
|
||||||
spacing: 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-index {
|
|
||||||
padding: 0 0.5em 0 0;
|
|
||||||
color: darken($fg_color,10%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-box {
|
|
||||||
padding: 0.3em 0.5em 0.3em 0.5em;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
&:selected,&:hover { background-color: $selected_bg_color; color: $selected_fg_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-page-button-box {
|
|
||||||
height: 2em;
|
|
||||||
.vertical & { padding-top: 0.5em; }
|
|
||||||
.horizontal & { padding-left: 0.5em; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-page-button {
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0; }
|
|
||||||
.candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px; }
|
|
||||||
.candidate-page-button-icon { icon-size: 1em; }
|
|
@ -1,115 +0,0 @@
|
|||||||
/* On-screen Keyboard */
|
|
||||||
|
|
||||||
$key_size: 1.2em;
|
|
||||||
$key_border_radius: $base_border_radius + 3px;
|
|
||||||
$key_bg_color: $bg_color;
|
|
||||||
// $default_key_bg_color: darken($key_bg_color, 4%);
|
|
||||||
$default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten($osd_bg_color, 2%));
|
|
||||||
|
|
||||||
|
|
||||||
// draw keys using button function
|
|
||||||
#keyboard {
|
|
||||||
background-color: transparentize(if($variant=='light', darken($bg_color, 5%), darken($bg_color, 8%)), 0.1);
|
|
||||||
box-shadow: inset 0 1px 0 0 $osd_outer_borders_color;
|
|
||||||
|
|
||||||
.page-indicator {
|
|
||||||
padding: $base_padding;
|
|
||||||
|
|
||||||
.page-indicator-icon {
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the container for individual keys
|
|
||||||
.key-container {
|
|
||||||
padding: $base_margin;
|
|
||||||
spacing: $base_margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the keys
|
|
||||||
.keyboard-key {
|
|
||||||
|
|
||||||
@include button(normal, $c:$key_bg_color);
|
|
||||||
|
|
||||||
&:focus { @include button(focus);}
|
|
||||||
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
|
|
||||||
&:active { @include button(active, $c: $key_bg_color); }
|
|
||||||
|
|
||||||
@include fontsize($base_font_size + 5);
|
|
||||||
min-height: $key_size;
|
|
||||||
min-width: $key_size;
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-radius: $key_border_radius;
|
|
||||||
|
|
||||||
&:grayed { //FIXMEy
|
|
||||||
background-color: darken($bg_color, 3%);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
border-color: $osd_borders_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// non-character keys
|
|
||||||
&.default-key {
|
|
||||||
@include button(normal, $c:$default_key_bg_color);
|
|
||||||
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
|
|
||||||
&:active { @include button(active, $c: $default_key_bg_color);}
|
|
||||||
}
|
|
||||||
|
|
||||||
// enter key is suggested-action
|
|
||||||
&.enter-key {
|
|
||||||
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
|
||||||
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
|
|
||||||
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.shift-key-uppercase { color: $selected_bg_color }
|
|
||||||
|
|
||||||
StIcon { icon-size: 1.125em; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// long press on a key popup
|
|
||||||
.keyboard-subkeys {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
-arrow-border-radius: $modal_radius;
|
|
||||||
-arrow-background-color: $osd_bg_color;
|
|
||||||
-arrow-border-width: 1px;
|
|
||||||
-arrow-border-color: lighten($osd_bg_color, 9%);
|
|
||||||
-arrow-base: 20px;
|
|
||||||
-arrow-rise: 10px;
|
|
||||||
-boxpointer-gap: $base_spacing;
|
|
||||||
|
|
||||||
.keyboard-key {
|
|
||||||
@include button(normal, $c:$key_bg_color);
|
|
||||||
|
|
||||||
&:focus { @include button(focus);}
|
|
||||||
&:hover, &:checked { @include button(hover, $c: $key_bg_color);}
|
|
||||||
&:active { @include button(active, $c: $key_bg_color); }
|
|
||||||
|
|
||||||
border-radius:$base_border_radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// emoji
|
|
||||||
.emoji-page {
|
|
||||||
.keyboard-key {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
color: initial;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.emoji-panel {
|
|
||||||
.keyboard-key:latched {
|
|
||||||
border-color: lighten($selected_bg_color, 5%);
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// suggestions
|
|
||||||
.word-suggestions {
|
|
||||||
@include fontsize($base_font_size + 3);
|
|
||||||
spacing: 12px;
|
|
||||||
min-height: 20pt;
|
|
||||||
}
|
|
@ -1,174 +0,0 @@
|
|||||||
/* Login Dialog */
|
|
||||||
|
|
||||||
.login-dialog-banner-view {
|
|
||||||
padding-top: 24px;
|
|
||||||
max-width: 23em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog,
|
|
||||||
.unlock-dialog {
|
|
||||||
//reset
|
|
||||||
border: none;
|
|
||||||
background-color: transparent;
|
|
||||||
|
|
||||||
$_gdm_bg: $system_bg_color;
|
|
||||||
|
|
||||||
StEntry {
|
|
||||||
@if $variant=='dark' {
|
|
||||||
$_gdm_entry_bg: darken($system_bg_color, 3%);
|
|
||||||
background-color: $_gdm_entry_bg;
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-dialog-button-box { spacing: 3px; }
|
|
||||||
.modal-dialog-button {
|
|
||||||
padding: 4px 18px;
|
|
||||||
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
|
|
||||||
background-color: darken($system_bg_color, 3%);
|
|
||||||
border-color: darken($system_bg_color, 3%);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
|
|
||||||
$_hover_c: lighten($_gdm_bg, 5%);
|
|
||||||
&:hover, &:focus {
|
|
||||||
background-color: $_hover_c;
|
|
||||||
border-color: $_hover_c;
|
|
||||||
}
|
|
||||||
&:active {
|
|
||||||
$_active_c: darken($_gdm_bg, 5%);
|
|
||||||
box-shadow: none;
|
|
||||||
background-color: $_active_c;
|
|
||||||
border-color: $_active_c;
|
|
||||||
}
|
|
||||||
&:insensitive {
|
|
||||||
@include button(insensitive);
|
|
||||||
border-color: darken($_gdm_bg, 5%);
|
|
||||||
background-color: darken($_gdm_bg, 5%);
|
|
||||||
color: transparentize($osd_fg_color, 0.3);
|
|
||||||
}
|
|
||||||
&:default {
|
|
||||||
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
|
|
||||||
border-color: $selected_bg_color;
|
|
||||||
&:hover, &:focus {
|
|
||||||
@include button(hover,$c:$selected_bg_color, $tc:$selected_fg_color);
|
|
||||||
$_def_hover_c: lighten($selected_bg_color, 5%);
|
|
||||||
background-color: $_def_hover_c;
|
|
||||||
border-color: $_def_hover_c;
|
|
||||||
}
|
|
||||||
&:active {
|
|
||||||
@include button(active,$c:$selected_bg_color, $tc:$selected_fg_color);
|
|
||||||
$_def_active_c: darken($selected_bg_color, 5%);
|
|
||||||
background-color: $_def_active_c;
|
|
||||||
border-color: $_def_active_c;
|
|
||||||
}
|
|
||||||
&:insensitive {
|
|
||||||
@include button(insensitive);
|
|
||||||
border-color: darken($selected_bg_color, 10%);
|
|
||||||
background-color: darken($selected_bg_color, 10%);
|
|
||||||
color: transparentize($selected_fg_color, 0.3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.cancel-button,
|
|
||||||
.switch-user-button,
|
|
||||||
.login-dialog-session-list-button {
|
|
||||||
padding: 0;
|
|
||||||
border-radius: 99px;
|
|
||||||
width: $base_icon_size * 2;
|
|
||||||
height: $base_icon_size * 2;
|
|
||||||
border-color: darken($system_bg_color, 3%);
|
|
||||||
background-color: darken($system_bg_color, 3%);
|
|
||||||
|
|
||||||
StIcon { icon-size: $base_icon_size; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.caps-lock-warning-label,
|
|
||||||
.login-dialog-message-warning {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-logo-bin { padding: 24px 0px; }
|
|
||||||
.login-dialog-banner { color: darken($osd_fg_color,10%); }
|
|
||||||
.login-dialog-button-box { width: 23em; spacing: 5px; }
|
|
||||||
.login-dialog-message { text-align: center; }
|
|
||||||
.login-dialog-user-selection-box { padding: 100px 0px; }
|
|
||||||
.login-dialog-not-listed-label {
|
|
||||||
padding-left: 2px;
|
|
||||||
.login-dialog-not-listed-button:focus &,
|
|
||||||
.login-dialog-not-listed-button:hover & {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-not-listed-label {
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
font-weight: bold;
|
|
||||||
color: darken($osd_fg_color,30%);
|
|
||||||
padding-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-user-list-view { -st-vfade-offset: 1em; }
|
|
||||||
.login-dialog-user-list {
|
|
||||||
spacing: 12px;
|
|
||||||
width: 23em;
|
|
||||||
&:expanded .login-dialog-user-list-item:selected { background-color: $selected_bg_color; color: $selected_fg_color; }
|
|
||||||
&:expanded .login-dialog-user-list-item:logged-in { border-right: 2px solid $selected_bg_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-user-list-item {
|
|
||||||
border-radius: $base_border_radius + 4px;
|
|
||||||
padding: 6px;
|
|
||||||
color: darken($osd_fg_color,30%);
|
|
||||||
&:ltr .user-widget { padding-right: 1em; }
|
|
||||||
&:rtl .user-widget { padding-left: 1em; }
|
|
||||||
.login-dialog-timed-login-indicator {
|
|
||||||
height: 2px;
|
|
||||||
margin-top: 6px;
|
|
||||||
background-color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
&:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-widget-label {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-widget.horizontal .user-widget-label {
|
|
||||||
@include fontsize($base_font_size + 2);
|
|
||||||
font-weight: bold;
|
|
||||||
padding-left: 15px;
|
|
||||||
|
|
||||||
&:ltr { padding-left: 14px; text-align: left; }
|
|
||||||
&:rtl { padding-right: 14px; text-align: right; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-widget.vertical .user-widget-label {
|
|
||||||
@include fontsize($base_font_size + 5);
|
|
||||||
text-align: center;
|
|
||||||
font-weight: normal;
|
|
||||||
padding-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-timed-login-indicator {
|
|
||||||
height: 2px;
|
|
||||||
background-color: darken($fg_color,40%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-prompt-layout {
|
|
||||||
padding-top: 24px;
|
|
||||||
padding-bottom: 12px;
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
width: 23em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-prompt-entry {
|
|
||||||
height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-dialog-prompt-label {
|
|
||||||
color: darken($osd_fg_color, 20%);
|
|
||||||
@include fontsize($base_font_size + 1);
|
|
||||||
padding-top: 1em;
|
|
||||||
}
|
|
@ -1,109 +0,0 @@
|
|||||||
/* Looking Glass */
|
|
||||||
|
|
||||||
$text_fg_color: #ccc;
|
|
||||||
|
|
||||||
// Dialog
|
|
||||||
#LookingGlassDialog {
|
|
||||||
background-color: $osd_bg_color;
|
|
||||||
spacing: $base_spacing;
|
|
||||||
padding: 4px;
|
|
||||||
border: 1px solid transparentize($osd_fg_color, 0.8);
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
color: $osd_fg_color;
|
|
||||||
|
|
||||||
& > #Toolbar {
|
|
||||||
border: none;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
background-color: $osd_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.labels { spacing: $base_spacing; }
|
|
||||||
.notebook-tab {
|
|
||||||
-natural-hpadding: $base_padding * 2;
|
|
||||||
-minimum-hpadding: 6px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: darken($osd_fg_color, 15%);
|
|
||||||
transition-duration: 100ms;
|
|
||||||
padding-left: .3em;
|
|
||||||
padding-right: .3em;
|
|
||||||
border-bottom-width: 2px;
|
|
||||||
&:hover {
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
&:selected {
|
|
||||||
border-bottom-width: 2px;
|
|
||||||
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
|
|
||||||
StBoxLayout#ResultsArea { spacing: $base_spacing; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-dialog {
|
|
||||||
StEntry {
|
|
||||||
background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
border-color: transparentize($osd_fg_color, 0.8);
|
|
||||||
min-height: 22px;
|
|
||||||
selection-background-color: $selected_bg_color;
|
|
||||||
selected-color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
.shell-link {
|
|
||||||
color: $link_color;
|
|
||||||
&:hover { color: lighten($link_color, 10%); }
|
|
||||||
&:active { color: darken($link_color, 10%); }
|
|
||||||
}
|
|
||||||
.actor-link {
|
|
||||||
color: $text_fg_color;
|
|
||||||
&:hover { color: lighten($text_fg_color, 20%); }
|
|
||||||
&:active { color: darken($text_fg_color, 20%); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-completions-text {
|
|
||||||
font-size: .9em;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-obj-inspector-title {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-obj-inspector-button {
|
|
||||||
border: 1px solid $osd_borders_color;
|
|
||||||
padding: 4px;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
&:hover { border: 1px solid #ffffff; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extensions
|
|
||||||
#lookingGlassExtensions { padding: 4px; }
|
|
||||||
|
|
||||||
.lg-extensions-list {
|
|
||||||
padding: 4px;
|
|
||||||
spacing: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-extension {
|
|
||||||
border: 1px solid lighten($osd_borders_color, 5%);
|
|
||||||
background-color: lighten($osd_bg_color, 5%);
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-extension-name {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lg-extension-meta {
|
|
||||||
spacing: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inspector
|
|
||||||
#LookingGlassPropertyInspector {
|
|
||||||
background: $osd_bg_color;
|
|
||||||
border: 1px solid $osd_borders_color;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
padding: 6px;
|
|
||||||
}
|
|
@ -1,150 +0,0 @@
|
|||||||
/* Message List */
|
|
||||||
// a.k.a. notifications in the menu
|
|
||||||
|
|
||||||
// main list
|
|
||||||
.message-list {
|
|
||||||
width: 31.5em;
|
|
||||||
padding: 0 $base_padding * 2;
|
|
||||||
|
|
||||||
.message-list-placeholder { spacing: 12px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-list-sections {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
margin: 0 $base_margin * 4; // to account for scrollbar
|
|
||||||
}
|
|
||||||
|
|
||||||
.message-list-section,
|
|
||||||
.message-list-section-list {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
// do-not-disturb + clear button
|
|
||||||
.message-list-controls {
|
|
||||||
margin: ($base_margin * 2) ($base_margin * 4) 0;
|
|
||||||
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
|
|
||||||
padding: $base_margin;
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
|
|
||||||
.dnd-button {
|
|
||||||
// We need this because the focus outline isn't inset like for the buttons
|
|
||||||
// so the dnd button would grow when it gets focus if we didn't change only
|
|
||||||
// its color when focusing.
|
|
||||||
border-width: 2px;
|
|
||||||
border-color: transparent;
|
|
||||||
border-radius: 99px;
|
|
||||||
border-style: solid;
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
border-color: transparentize($selected_bg_color, 0.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// message bubbles
|
|
||||||
.message {
|
|
||||||
@include notification_bubble;
|
|
||||||
|
|
||||||
// icon container
|
|
||||||
.message-icon-bin {
|
|
||||||
padding: ($base_padding * 3) 0 ($base_padding * 3) ($base_padding * 2);
|
|
||||||
|
|
||||||
&:rtl {
|
|
||||||
padding: ($base_padding * 3) ($base_padding * 2) ($base_padding * 3) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// icon size and color
|
|
||||||
> StIcon {
|
|
||||||
icon-size: $base_icon_size*2; // 32px
|
|
||||||
-st-icon-style: symbolic;
|
|
||||||
}
|
|
||||||
|
|
||||||
// fallback
|
|
||||||
> .fallback-app-icon {
|
|
||||||
width: $base_icon_size;
|
|
||||||
height: $base_icon_size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// content
|
|
||||||
.message-content {
|
|
||||||
padding: $base_padding + $base_margin * 2;
|
|
||||||
spacing: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// title
|
|
||||||
.message-title {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
// secondary container in title box
|
|
||||||
.message-secondary-bin {
|
|
||||||
padding: 0 $base_margin * 2;
|
|
||||||
|
|
||||||
// notification time stamp
|
|
||||||
> .event-time {
|
|
||||||
color: transparentize($fg_color, 0.5);
|
|
||||||
@include fontsize($base_font_size - 2);
|
|
||||||
/* HACK: the label should be baseline-aligned with a 1em label, fake this with some bottom padding */
|
|
||||||
padding-bottom: 0.13em;
|
|
||||||
|
|
||||||
&:ltr { text-align: right };
|
|
||||||
&:rtl { text-align: left };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// close button
|
|
||||||
.message-close-button {
|
|
||||||
color: lighten($fg_color, 15%);
|
|
||||||
&:hover { color: if($variant=='light', lighten($fg_color, 30%), darken($fg_color, 10%)); }
|
|
||||||
&:active { color: if($variant=='light', lighten($fg_color, 40%), darken($fg_color, 20%)); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// body
|
|
||||||
.message-body {
|
|
||||||
color: darken($fg_color, 10%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// URLs in messages
|
|
||||||
.url-highlighter {
|
|
||||||
link-color: $link_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Media Controls */
|
|
||||||
.message-media-control {
|
|
||||||
padding: $base_padding * 2 1.64em; // $base_padding * 4 = 24px
|
|
||||||
color: darken($fg_color, 15%);
|
|
||||||
|
|
||||||
// uses $hover_bg_color since the media controls are in a notification_bubble
|
|
||||||
&:hover {
|
|
||||||
background-color: lighten($hover_bg_color, 5%);
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
background-color: darken($hover_bg_color, 2%);
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:insensitive { color: darken($fg_color,40%); }
|
|
||||||
|
|
||||||
// fix border-radius for last button
|
|
||||||
&:last-child:ltr { border-radius: 0 $base_border_radius+2 $base_border_radius+2 0; }
|
|
||||||
&:last-child:rtl { border-radius: $base_border_radius+2 0 0 $base_border_radius+2; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// album-art
|
|
||||||
.media-message-cover-icon {
|
|
||||||
icon-size: $base_icon_size*2 !important; // 48px
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
|
|
||||||
// when there is no artwork
|
|
||||||
&.fallback {
|
|
||||||
color: darken($fg_color, 17%);
|
|
||||||
background-color: $bg_color;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: $base_border_radius;
|
|
||||||
icon-size: $base_icon_size * 2 !important;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
// Rubberband for select-area screenshots
|
|
||||||
.select-area-rubberband {
|
|
||||||
background-color: transparentize($selected_bg_color,0.7);
|
|
||||||
border: 1px solid $selected_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// User icon
|
|
||||||
.user-icon {
|
|
||||||
background-size: contain;
|
|
||||||
color: $osd_fg_color;
|
|
||||||
border-radius: 99px;
|
|
||||||
icon-size: $base_icon_size * 4; // 64px
|
|
||||||
&:hover {
|
|
||||||
color: lighten($osd_fg_color,30%);
|
|
||||||
}
|
|
||||||
|
|
||||||
& StIcon {
|
|
||||||
background-color: transparentize($osd_fg_color,0.95);
|
|
||||||
border-radius: 99px;
|
|
||||||
padding: $base_padding * 2 ; // 12px
|
|
||||||
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.user-avatar {
|
|
||||||
border: 2px $osd_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-widget.vertical .user-icon {
|
|
||||||
icon-size: $base_icon_size * 6; // 128px
|
|
||||||
|
|
||||||
& StIcon {
|
|
||||||
padding: $base_padding * 3 + 2px; // 20px
|
|
||||||
padding-top: $base_padding * 3; // 18 px
|
|
||||||
padding-bottom: $base_padding * 3 + 4px; // 22px
|
|
||||||
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.lightbox { background-color: black; }
|
|
||||||
.flashspot { background-color: white; }
|
|
||||||
|
|
||||||
|
|
||||||
// Hidden
|
|
||||||
.hidden { color: rgba(0,0,0,0);}
|
|
||||||
|
|
||||||
// Caps-lock warning
|
|
||||||
.caps-lock-warning-label {
|
|
||||||
text-align: center;
|
|
||||||
padding-bottom: 8px;
|
|
||||||
@include fontsize($base_font_size - 1);
|
|
||||||
color: $warning_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Workspace animation */
|
|
||||||
|
|
||||||
.workspace-animation {
|
|
||||||
background-color: $system_bg_color;
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/* Network Dialogs */
|
|
||||||
.nm-dialog {
|
|
||||||
max-height: 34em;
|
|
||||||
min-height: 31em;
|
|
||||||
min-width: 32em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nm-dialog-content {
|
|
||||||
spacing: 20px;
|
|
||||||
padding: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nm-dialog-airplane-box { spacing: 12px; }
|
|
||||||
|
|
||||||
.nm-dialog-airplane-headline {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nm-dialog-airplane-text { color: $fg_color; }
|
|
||||||
|
|
||||||
// header
|
|
||||||
.nm-dialog-header {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.nm-dialog-header-icon {
|
|
||||||
icon-size: $base_icon_size * 2;
|
|
||||||
}
|
|
||||||
.nm-dialog-header-hbox { spacing: 10px; }
|
|
||||||
|
|
||||||
// list of networks
|
|
||||||
.nm-dialog-scroll-view {
|
|
||||||
border: 1px solid $borders_color;
|
|
||||||
padding:0;
|
|
||||||
background-color: darken($bg_color, 3%);
|
|
||||||
}
|
|
||||||
|
|
||||||
// list item
|
|
||||||
.nm-dialog-item {
|
|
||||||
@include fontsize($base_font_size);
|
|
||||||
border-bottom: 1px solid $borders_color;
|
|
||||||
padding: $base_padding * 2;
|
|
||||||
spacing: 0px;
|
|
||||||
&:selected {
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// icons in list
|
|
||||||
.nm-dialog-icon { icon-size: $base_icon_size; }
|
|
||||||
.nm-dialog-icons { spacing: $base_spacing * 2; }
|
|
||||||
|
|
||||||
// no networks
|
|
||||||
.no-networks-label { color: $insensitive_fg_color; }
|
|
||||||
.no-networks-box { spacing: $base_padding; }
|
|
@ -1,57 +0,0 @@
|
|||||||
/* Notifications & Message Tray */
|
|
||||||
|
|
||||||
$notification_banner_height: 64px;
|
|
||||||
$notification_banner_width: 34em;
|
|
||||||
|
|
||||||
// Banner notifications
|
|
||||||
.notification-banner {
|
|
||||||
min-height: $notification_banner_height;
|
|
||||||
width: $notification_banner_width;
|
|
||||||
|
|
||||||
.notification-actions {
|
|
||||||
spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification-button {
|
|
||||||
@extend %bubble_button;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// counter
|
|
||||||
.summary-source-counter {
|
|
||||||
font-size: $base_font_size - 1pt;
|
|
||||||
font-weight: bold;
|
|
||||||
height: 1.6em;
|
|
||||||
width: 1.6em;
|
|
||||||
-shell-counter-overlap-x: 3px;
|
|
||||||
-shell-counter-overlap-y: 3px;
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
border: 2px solid $fg_color;
|
|
||||||
box-shadow: 0 2px 2px rgba(0,0,0,0.5);
|
|
||||||
border-radius: 0.9em; // should be 0.8 but whatever; wish I could do 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
// chat bubbles
|
|
||||||
.chat-body { spacing: 5px; }
|
|
||||||
.chat-response { margin: 5px; }
|
|
||||||
.chat-log-message { color: darken($fg_color,10%); }
|
|
||||||
.chat-new-group { padding-top: 1em; }
|
|
||||||
.chat-received {
|
|
||||||
padding-left: 4px;
|
|
||||||
&:rtl { padding-left: 0px; padding-right: 4px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.chat-sent {
|
|
||||||
padding-left: 18pt;
|
|
||||||
color: lighten($fg_color, 15%);
|
|
||||||
&:rtl { padding-left: 0; padding-right: 18pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.chat-meta-message {
|
|
||||||
padding-left: 4px;
|
|
||||||
@include fontsize($base_font_size - 2);
|
|
||||||
font-weight: bold;
|
|
||||||
color: lighten($fg_color,18%);
|
|
||||||
&:rtl { padding-left: 0; padding-right: 4px; }
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
/* OSD */
|
|
||||||
|
|
||||||
$osd_levelbar_height:8px;
|
|
||||||
|
|
||||||
.osd-window {
|
|
||||||
@extend %osd_panel;
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
|
||||||
spacing: $base_spacing * 2; // 12px
|
|
||||||
margin: $base_margin * 8; // 32px
|
|
||||||
min-width: 64px;
|
|
||||||
min-height: 64px;
|
|
||||||
|
|
||||||
StIcon {
|
|
||||||
icon-size:$base_icon_size * 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.osd-monitor-label { font-size: 3em; }
|
|
||||||
|
|
||||||
.level {
|
|
||||||
height: $osd_levelbar_height;
|
|
||||||
-barlevel-height: $osd_levelbar_height;
|
|
||||||
-barlevel-background-color: transparentize($osd_fg_color, if($variant=='light', 0.7, 0.9));
|
|
||||||
-barlevel-active-background-color: $osd_fg_color;
|
|
||||||
-barlevel-overdrive-color: $destructive_color;
|
|
||||||
-barlevel-overdrive-separator-width: 3px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Pad OSD */
|
|
||||||
.pad-osd-window {
|
|
||||||
padding: 32px;
|
|
||||||
background-color: transparentize(#000, 0.2);
|
|
||||||
|
|
||||||
.pad-osd-title-box { spacing: 12px; }
|
|
||||||
.pad-osd-title-menu-box { spacing: 6px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.combo-box-label {
|
|
||||||
width: 15em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resize-popup {
|
|
||||||
@extend %osd_panel;
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
/* OVERVIEW */
|
|
||||||
|
|
||||||
.controls-manager, .secondary-monitor-workspaces {
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#overviewGroup {
|
|
||||||
background-color: $system_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.overview-controls {
|
|
||||||
padding-bottom: 32px;
|
|
||||||
}
|
|
@ -1,135 +0,0 @@
|
|||||||
/* Top Bar */
|
|
||||||
// a.k.a. the panel
|
|
||||||
|
|
||||||
$panel_corner_radius: $base_border_radius+1;
|
|
||||||
$panel_bg_color: #000;
|
|
||||||
$panel_fg_color: #ddd;
|
|
||||||
$panel_height: 2.2em;
|
|
||||||
$panel_transition_duration: 250ms; // same as the overview transition duration
|
|
||||||
|
|
||||||
#panel {
|
|
||||||
background-color: $panel_bg_color;
|
|
||||||
font-weight: bold;
|
|
||||||
height: $panel_height;
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
transition-duration: $panel_transition_duration;
|
|
||||||
|
|
||||||
// transparent panel on lock & login screens
|
|
||||||
&.unlock-screen,
|
|
||||||
&.login-screen,
|
|
||||||
&:overview {
|
|
||||||
background-color: transparent;
|
|
||||||
|
|
||||||
.panel-corner {
|
|
||||||
-panel-corner-opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// the rounded outset corners
|
|
||||||
.panel-corner {
|
|
||||||
-panel-corner-radius: $panel_corner_radius;
|
|
||||||
-panel-corner-background-color: $panel_bg_color;
|
|
||||||
-panel-corner-border-width: 2px;
|
|
||||||
-panel-corner-border-color: transparent;
|
|
||||||
-panel-corner-opacity: 1;
|
|
||||||
transition-duration: $panel_transition_duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
// panel menus
|
|
||||||
.panel-button {
|
|
||||||
font-weight: bold;
|
|
||||||
color: $panel_fg_color;
|
|
||||||
-natural-hpadding: $base_padding * 2;
|
|
||||||
-minimum-hpadding: $base_padding;
|
|
||||||
transition-duration: 150ms;
|
|
||||||
border: 3px solid transparent;
|
|
||||||
border-radius: 99px;
|
|
||||||
|
|
||||||
&.clock-display {
|
|
||||||
.clock {
|
|
||||||
transition-duration: 150ms;
|
|
||||||
border: 3px solid transparent;
|
|
||||||
border-radius: 99px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover, &:active, &:overview, &:focus, &:checked {
|
|
||||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
|
|
||||||
|
|
||||||
// The clock display needs to have the background on .clock because
|
|
||||||
// we want to exclude the do-not-disturb indicator from the background
|
|
||||||
&.clock-display {
|
|
||||||
box-shadow: none;
|
|
||||||
|
|
||||||
.clock {
|
|
||||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// status area icons
|
|
||||||
.system-status-icon {
|
|
||||||
icon-size: $base_icon_size;
|
|
||||||
padding: $base_padding - 1px;
|
|
||||||
margin: 0 $base_margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-status-indicators-box .system-status-icon,
|
|
||||||
.panel-status-menu-box .system-status-icon {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// app menu icon
|
|
||||||
.app-menu-icon {
|
|
||||||
-st-icon-style: symbolic;
|
|
||||||
// dimensions of the icon are hardcoded
|
|
||||||
}
|
|
||||||
|
|
||||||
&#panelActivities {
|
|
||||||
-natural-hpadding: $base_padding * 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.unlock-screen,
|
|
||||||
&.login-screen,
|
|
||||||
&:overview {
|
|
||||||
.panel-button {
|
|
||||||
&:hover, &:active, &:overview, &:focus, &:checked {
|
|
||||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
|
|
||||||
|
|
||||||
&.clock-display {
|
|
||||||
box-shadow: none;
|
|
||||||
|
|
||||||
.clock {
|
|
||||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-status-indicators-box,
|
|
||||||
.panel-status-menu-box {
|
|
||||||
spacing: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// spacing between power icon and (optional) percentage label
|
|
||||||
.power-status.panel-status-indicators-box {
|
|
||||||
spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// indicator for active
|
|
||||||
.screencast-indicator,
|
|
||||||
.remote-access-indicator { color: $warning_color; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// App Menu
|
|
||||||
#appMenu {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
.label-shadow { color: transparent; }
|
|
||||||
}
|
|
||||||
|
|
||||||
#appMenu .panel-status-menu-box {
|
|
||||||
padding: 0 $base_padding;
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
/* Popovers/Menus */
|
|
||||||
|
|
||||||
$popover_arrow_height: 12px;
|
|
||||||
|
|
||||||
//.the popover itself
|
|
||||||
.popup-menu-boxpointer {
|
|
||||||
-arrow-border-radius: $base_border_radius+4;
|
|
||||||
-arrow-background-color: $bg_color;
|
|
||||||
-arrow-border-width: 1px;
|
|
||||||
-arrow-border-color: $borders_color;
|
|
||||||
-arrow-base: $popover_arrow_height * 2;
|
|
||||||
-arrow-rise: $popover_arrow_height;
|
|
||||||
-arrow-box-shadow: 0 1px 3px rgba(0,0,0,0.5); // dreaming bugzilla #689995
|
|
||||||
}
|
|
||||||
|
|
||||||
// container of the popover menu
|
|
||||||
.popup-menu {
|
|
||||||
min-width: 15em;
|
|
||||||
color: $fg_color;
|
|
||||||
|
|
||||||
//.popup-status-menu-item { font-weight: normal; color: pink; } //dunno what that is
|
|
||||||
&.panel-menu {
|
|
||||||
-boxpointer-gap: $base_margin; // distance from the panel
|
|
||||||
margin-bottom: 1.75em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-menu-content {
|
|
||||||
padding: $base_padding * 2 + $base_margin 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// menu items
|
|
||||||
.popup-menu-item {
|
|
||||||
spacing: $base_padding;
|
|
||||||
padding: $base_padding;
|
|
||||||
|
|
||||||
&:ltr { padding-right:1.75em; padding-left: 0; }
|
|
||||||
&:rtl { padding-right: 0; padding-left:1.75em; }
|
|
||||||
|
|
||||||
&:checked {
|
|
||||||
background-color: lighten($bg_color, 2%);
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.selected {
|
|
||||||
background-color: transparentize(white, if($variant=='light', 0.2, 0.9));
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
background-color: $selected_bg_color;
|
|
||||||
color: $selected_fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:insensitive { color: transparentize($fg_color,0.5);}
|
|
||||||
}
|
|
||||||
|
|
||||||
// all icons and other graphical elements
|
|
||||||
.popup-inactive-menu-item {
|
|
||||||
color: $fg_color;
|
|
||||||
|
|
||||||
&:insensitive { color: transparentize($fg_color,0.5); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// symbolic icons in popover
|
|
||||||
.popup-menu-arrow,
|
|
||||||
.popup-menu-icon { icon-size: $base_icon_size; }
|
|
||||||
|
|
||||||
// popover submenus
|
|
||||||
.popup-sub-menu {
|
|
||||||
background-color: darken($bg_color, 3%);
|
|
||||||
box-shadow: none;
|
|
||||||
border-top: 1px solid transparentize($borders_color, 0.2);
|
|
||||||
border-bottom: 1px solid transparentize($borders_color, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// container for radio and check boxes
|
|
||||||
.popup-menu-ornament {
|
|
||||||
width: 1.2em;
|
|
||||||
|
|
||||||
&:ltr { text-align: right };
|
|
||||||
&:rtl { text-align: left };
|
|
||||||
}
|
|
||||||
|
|
||||||
// separator
|
|
||||||
.popup-separator-menu-item {
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
.popup-separator-menu-item-separator {
|
|
||||||
//-margin-horizontal: 24px;
|
|
||||||
height: 1px; //not really the whole box
|
|
||||||
margin: 6px 64px;
|
|
||||||
background-color: lighten($borders_color, 2%);
|
|
||||||
.popup-sub-menu & { //submenu separators
|
|
||||||
margin: 0 64px 0 32px;
|
|
||||||
@if $variant == 'dark' {
|
|
||||||
background-color: lighten($bg_color,10%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// desktop background menu
|
|
||||||
.background-menu {
|
|
||||||
-boxpointer-gap: $base_margin;
|
|
||||||
-arrow-rise: 0px; // hide the beak on the menu
|
|
||||||
}
|
|
||||||
|
|
||||||
// system status menu
|
|
||||||
.aggregate-menu {
|
|
||||||
min-width: 21em;
|
|
||||||
|
|
||||||
// lock screen, shutdown, etc. buttons
|
|
||||||
.popup-menu-icon {
|
|
||||||
padding:0;
|
|
||||||
margin: 0 $base_margin;
|
|
||||||
-st-icon-style: symbolic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-sub-menu .popup-menu-item > :first-child {
|
|
||||||
// account for icons in submenus with padding
|
|
||||||
&:ltr {
|
|
||||||
padding-left: $base_padding + $base_margin * 2;
|
|
||||||
margin-left: $base_icon_size;
|
|
||||||
}
|
|
||||||
&:rtl {
|
|
||||||
padding-right: $base_padding + $base_margin * 2; ;
|
|
||||||
margin-right: $base_icon_size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
.realm-switch-label {
|
|
||||||
font-size: 36px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff;
|
|
||||||
background-color: rgba(10, 10, 10, 0.7);
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-frame-label {
|
|
||||||
font-size: 12pt;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realm-config-icon {
|
|
||||||
color: #8e8e80;
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
/* Screen Shield */
|
|
||||||
|
|
||||||
.unlock-dialog-clock {
|
|
||||||
color: white;
|
|
||||||
font-weight: 300;
|
|
||||||
text-align: center;
|
|
||||||
spacing: 24px;
|
|
||||||
padding-bottom: 2.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-clock-time {
|
|
||||||
font-size: 64pt;
|
|
||||||
padding-top: 42px;
|
|
||||||
font-feature-settings: "tnum";
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-clock-date {
|
|
||||||
font-size: 16pt;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-clock-hint {
|
|
||||||
font-weight: normal;
|
|
||||||
padding-top: 48px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-notifications-container {
|
|
||||||
margin: 12px 0;
|
|
||||||
spacing: 6px;
|
|
||||||
width: 23em;
|
|
||||||
background-color: transparent;
|
|
||||||
.summary-notification-stack-scrollview {
|
|
||||||
padding-top: 0;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification,
|
|
||||||
.unlock-dialog-notification-source {
|
|
||||||
padding: 12px 6px;
|
|
||||||
border: none;
|
|
||||||
background-color: transparentize($osd_bg_color,0.7);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
border-radius: $modal_radius;
|
|
||||||
|
|
||||||
&.critical { background-color: transparentize($osd_bg_color,0.1) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-notification-label {
|
|
||||||
padding: 0px 0px 0px 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unlock-dialog-notification-count-text {
|
|
||||||
weight: bold;
|
|
||||||
padding: 0 6px;
|
|
||||||
color: $osd_bg_color;
|
|
||||||
background-color: transparentize($osd_fg_color, 0.7);
|
|
||||||
border-radius: 99px;
|
|
||||||
margin-right: 12px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.screen-shield-background { //just the shadow, really
|
|
||||||
background: black;
|
|
||||||
box-shadow: 0px 2px 4px rgba(0,0,0,0.6);
|
|
||||||
}
|
|
||||||
|
|
||||||
#lockDialogGroup {
|
|
||||||
background-color: $system_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
#unlockDialogNotifications {
|
|
||||||
StButton#vhandle, StButton#hhandle {
|
|
||||||
background-color: transparentize($bg_color,0.7);
|
|
||||||
&:hover, &:focus { background-color: transparentize($bg_color,0.5); }
|
|
||||||
&:active { background-color: transparentize($selected_bg_color,0.5); }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
/* Scrollbars */
|
|
||||||
|
|
||||||
StScrollView {
|
|
||||||
&.vfade { -st-vfade-offset: 68px; }
|
|
||||||
&.hfade { -st-hfade-offset: 68px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
StScrollBar {
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
StScrollView & {
|
|
||||||
min-width: 14px;
|
|
||||||
min-height: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
StBin#trough {
|
|
||||||
border-radius: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
StButton#vhandle, StButton#hhandle {
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: mix($fg_color, $bg_color, 60%);
|
|
||||||
//border: 3px solid transparent; //would be nice to margin or at least to transparent
|
|
||||||
margin: 3px;
|
|
||||||
&:hover { background-color: mix($fg_color, $bg_color, 80%); }
|
|
||||||
&:active { background-color: $selected_bg_color; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
// Search entry
|
|
||||||
|
|
||||||
$search_entry_width: 320px;
|
|
||||||
$search_entry_height: 36px;
|
|
||||||
|
|
||||||
%search_entry,
|
|
||||||
.search-entry {
|
|
||||||
width: $search_entry_width;
|
|
||||||
padding: $base_padding+1 $base_padding+3;
|
|
||||||
border-radius: $search_entry_height * 0.5; // half the height
|
|
||||||
color: transparentize($fg_color,0.3);
|
|
||||||
background-color: $bg_color;
|
|
||||||
margin-top: $base_spacing * 2;
|
|
||||||
margin-bottom: $base_spacing;
|
|
||||||
border-width: 2px;
|
|
||||||
border-color: transparent;
|
|
||||||
&:hover {
|
|
||||||
background-color: $hover_bg_color;
|
|
||||||
color: $hover_fg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
border-style: solid;
|
|
||||||
border-color: $selected_bg_color;
|
|
||||||
color: $fg_color;
|
|
||||||
box-shadow: inset 0 1px 2px 1px rgba(0,0,0,0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-entry-icon {
|
|
||||||
icon-size: $base_icon_size;
|
|
||||||
padding: 0 4px;
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,108 +0,0 @@
|
|||||||
/* Search */
|
|
||||||
|
|
||||||
// search overview container
|
|
||||||
#searchResultsContent {
|
|
||||||
max-width: 1024px;
|
|
||||||
spacing: $base_margin * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// search results sections "the boxes"
|
|
||||||
.search-section {
|
|
||||||
// This should be equal to #searchResultsContent spacing
|
|
||||||
spacing: $base_margin * 2;
|
|
||||||
|
|
||||||
// separator
|
|
||||||
.search-section-separator {
|
|
||||||
// height: 1px;
|
|
||||||
// background-color: $osd_outer_borders_color;
|
|
||||||
height: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// content
|
|
||||||
.search-section-content {
|
|
||||||
background-color: transparentize(lighten($osd_bg_color, 5%), 0.2);
|
|
||||||
border-radius: $modal_radius+3;
|
|
||||||
border: 1px solid $osd_outer_borders_color;
|
|
||||||
box-shadow: 0 2px 4px 0 $shadow_color;
|
|
||||||
text-shadow: 0 1px if($variant == 'light', rgba(255,255,255,0.2), rgba(0,0,0,0.2));
|
|
||||||
color: $osd_fg_color;
|
|
||||||
padding: $base_padding * 3;
|
|
||||||
// This is the space between the provider icon and the results container
|
|
||||||
spacing: $base_margin * 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
%search-section-content-item {
|
|
||||||
@extend %icon_tile;
|
|
||||||
|
|
||||||
&:focus,
|
|
||||||
&:hover,
|
|
||||||
&:selected {
|
|
||||||
background-color: transparentize($osd_fg_color, .9);
|
|
||||||
transition-duration: 200ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,
|
|
||||||
&:checked {
|
|
||||||
background-color: transparentize(darken($osd_bg_color, 10%), .1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// "no results" text
|
|
||||||
.search-statustext {
|
|
||||||
@extend %status_text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid-search-results {
|
|
||||||
spacing: $base_spacing * 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search results with icons
|
|
||||||
.grid-search-result {
|
|
||||||
@extend %app-well-app;
|
|
||||||
}
|
|
||||||
|
|
||||||
// search result provider
|
|
||||||
.search-provider-icon {
|
|
||||||
@extend %search-section-content-item;
|
|
||||||
|
|
||||||
// content
|
|
||||||
.list-search-provider-content {
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
|
|
||||||
// provider labels
|
|
||||||
.list-search-provider-details {
|
|
||||||
width: 120px;
|
|
||||||
margin-top: 0;
|
|
||||||
color: darken($osd_fg_color, 8%);
|
|
||||||
// font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// search results list
|
|
||||||
.list-search-results {
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
// search result listitem
|
|
||||||
.list-search-result {
|
|
||||||
@extend %search-section-content-item;
|
|
||||||
|
|
||||||
// content
|
|
||||||
.list-search-result-content {
|
|
||||||
spacing: $base_padding;
|
|
||||||
}
|
|
||||||
|
|
||||||
// list item title (with leading icon)
|
|
||||||
.list-search-result-title {
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
// font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
// list item description
|
|
||||||
.list-search-result-description {
|
|
||||||
color: darken($osd_fg_color, 30%);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
/* Slider */
|
|
||||||
|
|
||||||
$slider_size: 15px;
|
|
||||||
|
|
||||||
.slider {
|
|
||||||
height: $slider_size;
|
|
||||||
// slider trough
|
|
||||||
-barlevel-height: 3px; // has to be an odd number
|
|
||||||
-barlevel-background-color: $borders_color; //background of the trough
|
|
||||||
-barlevel-border-width: 1px;
|
|
||||||
-barlevel-border-color: $borders_color; // trough border color
|
|
||||||
// fill style
|
|
||||||
-barlevel-active-background-color: $selected_bg_color; //active trough fill
|
|
||||||
-barlevel-active-border-color: if($variant == 'light', darken($selected_bg_color, 4%), lighten($selected_bg_color, 2%)); //active trough border
|
|
||||||
// overfill style (red in this case)
|
|
||||||
-barlevel-overdrive-color: $destructive_color;
|
|
||||||
-barlevel-overdrive-border-color: if($variant == 'light', darken($destructive_color, 4%), lighten($destructive_color, 2%)); //trough border when red;
|
|
||||||
-barlevel-overdrive-separator-width:1px;
|
|
||||||
// slider handler
|
|
||||||
-slider-handle-radius: $slider_size * 0.5; // half the size of the size
|
|
||||||
-slider-handle-border-width: 1px;
|
|
||||||
-slider-handle-border-color: if($variant == 'light', $borders_color, $fg_color);
|
|
||||||
|
|
||||||
color: if($variant == 'light', lighten($bg_color, 10%), $fg_color);
|
|
||||||
&:hover { color: $hover_bg_color; }
|
|
||||||
&:active { color: $active_bg_color; }
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
/* App Switcher */
|
|
||||||
|
|
||||||
.switcher-popup {
|
|
||||||
padding: 8px;
|
|
||||||
spacing: $base_spacing * 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
// switcher onscreen panel
|
|
||||||
.switcher-list {
|
|
||||||
@extend %osd_panel;
|
|
||||||
|
|
||||||
.item-box {
|
|
||||||
padding: 8px;
|
|
||||||
border-radius: $base_border_radius + 1px;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
|
|
||||||
&:outlined {
|
|
||||||
background-color: transparentize($osd_fg_color, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:selected {
|
|
||||||
background-color: transparentize($osd_fg_color, 0.7);
|
|
||||||
color: $osd_fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// window thumbnails
|
|
||||||
.thumbnail-box {
|
|
||||||
padding: 2px;
|
|
||||||
spacing: $base_spacing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.thumbnail {
|
|
||||||
width: 256px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.separator {
|
|
||||||
width: 1px;
|
|
||||||
background: $borders_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.switcher-list-item-container {
|
|
||||||
spacing: $base_spacing * 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.switcher-arrow {
|
|
||||||
border-color: rgba(0,0,0,0);
|
|
||||||
color: transparentize($fg_color,0.2);
|
|
||||||
&:highlighted {
|
|
||||||
color: $fg_color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Input Source Switcher
|
|
||||||
.input-source-switcher-symbol {
|
|
||||||
font-size: 34pt;
|
|
||||||
width: 96px;
|
|
||||||
height: 96px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Window cycler highlight
|
|
||||||
.cycler-highlight {
|
|
||||||
border: 5px solid $selected_bg_color;
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
/* Switches */
|
|
||||||
|
|
||||||
// these are equal to the size of the SVG assets
|
|
||||||
$switch_height: 22px;
|
|
||||||
$switch_width: 46px;
|
|
||||||
|
|
||||||
.toggle-switch {
|
|
||||||
color: $fg_color;
|
|
||||||
height: $switch_height;
|
|
||||||
width: $switch_width;
|
|
||||||
background-size: contain;
|
|
||||||
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off.svg"),url("resource:///org/gnome/shell/theme/toggle-off-dark.svg"));
|
|
||||||
&:checked {
|
|
||||||
background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on.svg"),url("resource:///org/gnome/shell/theme/toggle-on-dark.svg"));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
/* Tiled window previews */
|
|
||||||
$tile_corner_radius: $base_border_radius + 1px;
|
|
||||||
.tile-preview {
|
|
||||||
background-color: transparentize($selected_bg_color,0.5);
|
|
||||||
border: 1px solid $selected_bg_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tile-preview-left.on-primary {
|
|
||||||
border-radius: $tile_corner_radius 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tile-preview-right.on-primary {
|
|
||||||
border-radius: 0 $tile_corner_radius 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tile-preview-left.tile-preview-right.on-primary {
|
|
||||||
border-radius: $tile_corner_radius $tile_corner_radius 0 0;
|
|
||||||
}
|
|